Как установить Matrix Synapse в Ubuntu 16.04

Вступление

Matrix - это открытый стандарт для децентрализованного общения. Это набор серверов и сервисов, используемых для обмена онлайн-сообщениями, которые используют стандартизированный API, который синхронизируется в режиме реального времени.

Matrix использует homeservers для хранения информации о вашей учетной записи и истории чата. Они работают аналогично тому, как почтовый клиент подключается к почтовым серверам через IMAP / SMTP. Как и электронная почта, вы можете использовать домашний сервер Matrix, размещенный кем-то другим, или свой собственный и управлять своей собственной информацией и коммуникациями.

Следуя этому руководству, вы установите Synapse, эталонную реализацию Matrix для домашних серверов. Когда вы закончите, вы сможете подключиться к своему домашнему серверу через любой Matrix клиент и общаться с другими пользователями через другие федеративные домашние серверы Matrix.

Предпосылки

Прежде чем начать это руководство, вам понадобится следующее:

  • Один сервер Ubuntu 16.04, настроенный по следующему https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-16-04 и брандмауэр.

  • Nginx установлен на вашем сервере (с учетом трафика HTTPS); Вы можете сделать это, следуя https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-16-04 ознакомлению с этим Nginx в учебнике по Ubuntu 16.04].

  • Зарегистрированное доменное имя, настроенное с соответствующими записями DNS, следуя thisutorial имя хоста. Какие DNS-записи вам нужны, зависит от того, как вы используете свой домен.

  • Если вы используете свой домен исключительно для Synapse или если вы будете использовать один и тот же сервер для размещения своего веб-сайта и Synapse, вам нужна только запись A с именем хоста + @ +.

  • Если вы будете устанавливать Synapse на отдельном сервере, вам потребуется запись A с именем хоста, для которого вы хотите использовать субдомен, например + matrix. +, И запись SRV с именем хоста + _matrix._tcp + указывает на тот же поддомен на порту + 8448 +, с приоритетом по умолчанию и весами 10 и 100 соответственно. Это скажет клиентам Matrix и домашним серверам, где найти вашу установку Synapse.

Шаг 1 - Установка Matrix Synapse

Для начала войдите на свой сервер как пользователь без полномочий root.

Перед началом установки убедитесь, что ваш локальный индекс пакета обновлен.

sudo apt-get update

Затем добавьте официальный репозиторий Matrix в APT.

sudo add-apt-repository https://matrix.org/packages/debian/

Чтобы ваш сервер оставался безопасным, вы должны добавить ключ хранилища. Он проверит, чтобы убедиться, что все установки и обновления были подписаны разработчиками, и предотвратит установку любых несанкционированных пакетов на ваш сервер.

wget -qO - https://matrix.org/packages/debian/repo-key.asc | sudo apt-key add -

Вы увидите следующий вывод:

OutputOK

После добавления репозитория обновите локальный индекс пакета, чтобы он включал новый репозиторий.

sudo apt-get update

После добавления репозитория установить Synapse так же просто, как запустить одну команду APT.

sudo apt-get install matrix-synapse

Во время установки вам будет предложено ввести имя сервера, которое должно быть вашим доменным именем. Вам также будет предложено выбрать, хотите ли вы отправить анонимную статистику о вашем домашнем сервере обратно в Matrix. Затем Synapse установится.

По завершении используйте + systemctl + для автоматического запуска Synapse при каждом запуске сервера.

sudo systemctl enable matrix-synapse

Эта команда запускает Synapse только при запуске всего сервера. Ваш сервер уже запущен, поэтому используйте + systemctl + вручную, чтобы запустить Synapse сейчас.

sudo systemctl start matrix-synapse

Synapse теперь установлен и работает на вашем сервере, но вам нужно будет создать пользователя, прежде чем вы сможете начать его использовать.

Шаг 2 - Создание пользователя для Synapse

Прежде чем вы сможете начать использовать Synapse, вам необходимо добавить учетную запись пользователя. Прежде чем вы сможете добавить нового пользователя, вам необходимо настроить общий секретный ключ. Shared secret - это строка, которую может использовать любой, кто ее знает, для регистрации, даже если регистрация отключена.

Используйте следующую команду для генерации 32-символьной строки.

cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1

Скопируйте созданную вами строку, затем откройте файл конфигурации Synapse с помощью + nano + или вашего любимого текстового редактора.

sudo nano /etc/matrix-synapse/homeserver.yaml

В разделе регистрации найдите ключ + registration_shared_secret +. Обновите его значение до случайной строки, которую вы скопировали, вставив ее в кавычки (" "). Не забудьте активировать ключ, раскомментировав строку (т.е. удаляя + # + в начале строки).

Если вы также хотите включить публичную регистрацию, вы можете обновить значение + enable_registration + до + True + здесь.

/etc/matrix-synapse/homeserver.yaml

. . .

## Registration ##

# Enable registration for new users.
enable_registration:

# If set, allows registration by anyone who also has the shared
# secret, even if registration is otherwise disabled.
registration_shared_secret: ""

. . .

Сохраните и закройте файл.

После изменения конфигурации вам необходимо перезапустить Synapse, чтобы изменения вступили в силу.

sudo systemctl restart matrix-synapse

После перезапуска используйте командную строку для создания нового пользователя. Флаг + -c + указывает файл конфигурации и использует локальный экземпляр Synapse, который прослушивает порт + 8448 +.

register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml https://localhost:8448

Вам будет предложено выбрать имя пользователя и пароль. Вас также спросят, хотите ли вы сделать пользователя администратором или нет; это зависит от вас, но администратор не нужен для этого урока.

Как только ваш пользователь создан, давайте удостоверимся, что веб-сервер может обслуживать запросы Synapse.

Шаг 3 - Настройка Nginx и SSL

Клиенты Matrix делают запросы к + https: /// _ matrix / + для подключения к Synapse. Вам необходимо настроить Nginx для прослушивания этих запросов и передачи их в Synapse, который прослушивает локально через порт + 8008 +. Вы также обезопасите свою настройку с помощью using SSL при поддержке Let Encrypt.

Для этого вы создадите пользовательский файл конфигурации Nginx для своего веб-сайта. Создайте этот новый файл конфигурации.

sudo nano /etc/nginx/sites-available/

Блок + location / _matrix + ниже определяет, как Nginx должен обрабатывать запросы от клиентов Matrix. В дополнение к обработке запросов блок + /. Well-known + делает каталог с тем же именем доступным для Let Encrypt.

Скопируйте и вставьте следующее в файл.

/etc/nginx/sites-available/example.com

server {
   listen 80;
   listen [::]:80;

   root /var/www/html;
   index index.html index.htm index.nginx-debian.html;

   server_name  www.;

   location /_matrix {
       proxy_pass http://localhost:8008;
   }

   location ~ /.well-known {
       allow all;
   }
}

Этот учебник по блокировке серверов Nginx содержит больше информации о как работают такие файлы. После настройки сервера вы можете сохранить и закрыть файл.

Чтобы включить эту конфигурацию, создайте символическую ссылку для этого файла в каталоге + / etc / nginx / sites-enabled +.

sudo ln -s /etc/nginx/sites-available/ /etc/nginx/sites-enabled/

Проверьте файл конфигурации на наличие синтаксических ошибок, выполнив команду.

sudo nginx -t

Исправьте синтаксис на основе вывода ошибок, если таковые имеются. Когда об ошибках не сообщается, используйте + systemctl + перезагрузите Nginx, чтобы изменения вступили в силу.

sudo systemctl reload nginx

Чтобы завершить защиту Nginx с помощью сертификата Let’s Encrypt, следуйте this Давайте зашифруем для Nginx в учебнике по Ubuntu 16.04. Не забудьте использовать + / etc / nginx / sites-available / + вместо файла конфигурации по умолчанию. Вы уже добавили блок + ~ / .well-known +, упомянутый в шаге 2 этого руководства.

После настройки Let Encrypt вы можете перейти к настройке брандмауэра, чтобы позволить трафику Synapse обмениваться данными с другими домашними серверами.

Шаг 4 - Разрешение Synapse через брандмауэр

Клиентский трафик подключается к Synapse через порт HTTPS + 443 + (который уже открыт в вашем брандмауэре из руководства Nginx). Однако трафик с других серверов напрямую подключается к Synapse через порт + 8448 + без прохождения через прокси-сервер Nginx, поэтому вам также необходимо разрешить этот трафик через брандмауэр.

sudo ufw allow 8448

Проверьте статус UFW.

sudo ufw status

Это должно выглядеть так:

OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx Full                 ALLOW       Anywhere
8448                       ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx Full (v6)            ALLOW       Anywhere (v6)
8448 (v6)                  ALLOW       Anywhere (v6)

Это означает, что весь необходимый трафик разрешен через ваш брандмауэр. Последний шаг, который вы должны сделать, - это повысить безопасность Synapse путем обновления его SSL-сертификатов.

Шаг 5 - Защита федерации с помощью SSL (рекомендуется)

Теперь, когда Synapse настроен и может взаимодействовать с другими домашними серверами, вы можете повысить его безопасность, используя те же SSL-сертификаты, которые вы запрашивали у Let Encrypt в конце шага 3. По умолчанию Synapse использует самозаверяющие сертификаты, которые выполняют эту работу, но, поскольку вы уже запросили сертификаты Let Encrypt, их легко использовать и повысить безопасность.

Скопируйте сертификаты в каталог Synapse:

sudo cp /etc/letsencrypt/live//fullchain.pem /etc/matrix-synapse/fullchain.pem
sudo cp /etc/letsencrypt/live//privkey.pem /etc/matrix-synapse/privkey.pem

Чтобы эти сертификаты обновлялись при их обновлении, вам нужно добавить эти команды на вкладку cron. Откройте его для редактирования.

sudo crontab -e

И добавьте следующие строки:

crontab entry35 2 * * 1 sudo cp /etc/letsencrypt/live//fullchain.pem /etc/matrix-synapse/fullchain.pem
35 2 * * 1 sudo cp /etc/letsencrypt/live//privkey.pem /etc/matrix-synapse/privkey.pem
36 2 * * 1 sudo systemctl restart matrix-synapse

Затем сохраните и закройте файл. Затем откройте файл конфигурации Synapse с помощью + nano + или вашего любимого текстового редактора.

sudo nano /etc/matrix-synapse/homeserver.yaml

Используя тот же сертификат, который вы запрашивали в Lets Encrypt на шаге 3, замените пути в файле конфигурации.

/etc/matrix-synapse/homeserver.yaml

. . .

tls_certificate_path: ""

# PEM encoded private key for TLS
tls_private_key_path: ""

# PEM dh parameters for ephemeral keys
tls_dh_params_path: ""

. . .

Перезапустите Synapse, чтобы изменения конфигурации вступили в силу.

sudo systemctl restart matrix-synapse

Все настроено, так что теперь вы можете подключиться к своему домашнему серверу с помощью любого клиента Matrix и начать общаться с другими. Например, вы можете использовать the клиент на веб-сайте Matrix.

Введите следующее для соответствующих полей:

  • Ваш * Matrix ID * имеет формат + @ user: имя_сервера + (например, + @ Сэмми: example.com +). Другие федеративные серверы используют это, чтобы найти, где размещен ваш домашний сервер.

  • Ваш * Пароль * - это безопасный пароль, который вы установили при создании этого пользователя.

  • Ваш * Домашний сервер * - это имя сервера, которое вы выбрали на шаге 1.

Если вы включили публичную регистрацию на шаге 2, вы также можете щелкнуть ссылку * Создать учетную запись *, чтобы создать новую учетную запись или разрешить другим создавать новую учетную запись на вашем домашнем сервере.

Оттуда вы можете войти в комнаты и начать общаться. Официальная комната поддержки Matrix - + # matrix: matrix.org +.

Заключение

В этом руководстве вы надежно установили Matrix Synapse с Nginx, подкрепленный сертификатами SSL от Let’s Encrypt. Есть many Matrix клиенты, которые вы можете использовать для подключения к своему домашнему серверу, и вы даже можете http://matrix.org/docs /guides/client-server.html[write ваш собственный клиент Matrix] или get, связанный с проектом другими способами.

Related