Установка Synapse в Ubuntu 16.04

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

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

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

Требования

  • Сервер Ubuntu 16.04, настроенный согласно этому мануалу.
  • Nginx с поддержкой HTTPS (инструкции по установке можно найти здесь).
  • Зарегистрированное доменное имя и соответствующие DNS-записи. Если домен используется исключительно для Synapse (или веб-сайт и Synapse размещены на одном сервере), вам потребуется только запись A с именем хоста @. Если сервер Synapse будет установлен на отдельном сервере, вам понадобится запись A, где в качестве имени хоста указан поддомен (например matrix.example.com), и SRV-запись с именем хоста _matrix._tcp, указывающая на тот же поддомен и порт 8448 с приоритетом по умолчанию и весом 10 из 100.

1: Установка Synapse

Обновите индекс пакетов сервера:

sudo apt-get update

Добавьте в APT официальный репозиторий Matrix:

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

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

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

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

sudo apt-get install matrix-synapse

Теперь установить Synapse можно с помощью пакетного менеджера:

sudo apt-get install matrix-synapse

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

После установки можно запустить Synapse с помощью systemctl.

sudo systemctl enable matrix-synapse

Эта команда будет использоваться для запуска Synapse вместе с сервером. Если сервер уже запущен, запустите Synapse вручную с помощью команды:

sudo systemctl start matrix-synapse

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

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

Чтобы сгенерировать строку из 32 символов, введите:

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

Скопируйте результат, откройте конфигурационный файл Synapse в текстовом редакторе:

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

Найдите строку registration_shared_secret. В ней нужно указать скопированное только что значение в кавычках. Не забудьте раскомментировать строку.

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

. . .
## Registration ##
# Enable registration for new users.
enable_registration: False
# 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

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

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

Будет предложено выбрать имя пользователя и пароль. Также команда предложит сделать пользователя администратором. Решение зависит от вас, но в этом руководстве администратор не нужен.

3: Настройка Nginx и SSL

Клиенты Matrix отправляют запросы на https://example.com/_matrix/ для подключения к Synapse. Теперь нужно настроить Nginx для прослушивания этих запросов и передачи их на сервер Synapse, который локально прослушивается на порту 8008. Также можно защитить настройку с помощью SSL-сертификата от Let’s Encrypt.

Читайте также: Основы OpenSSL: SSL-сертификаты, закрытые ключи и запросы на подпись

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

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

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

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

server {
listen 80;
listen [::]:80;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location /_matrix {
proxy_pass http://localhost:8008;
}
location ~ /.well-known {
allow all;
}
}

Больше информации о виртуальных хостах Nginx можно найти в руководстве Настройка виртуальных хостов Nginx в Ubuntu 16.04.

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

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com

Проверьте ошибки в файле:

sudo nginx -t

Если команда вернула сообщения об ошибках, исправьте их и повторите проверку. Если ошибок нет, перезапустите Nginx с помощью systemctl.

sudo systemctl reload nginx

Чтобы защитить трафик Nginx с помощью сертификата Let’s Encrypt, обратитесь к мануалу Создание сертификата Let’s Encrypt для Nginx в Ubuntu 16.04. Вместо конфигурационного файла по умолчанию используйте /etc/nginx/sites-available/example.com.

4: Настройка брандмауэра

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

sudo ufw allow 8448

Проверьте состояние UFW:

sudo ufw status
Status: 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)

Теперь весь трафик проходит через брандмауэр.

5: Настойка SSL-сертификата

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

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

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

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

sudo crontab -e

Добавьте в файл такие строки:

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

Сохраните и закройте файл. Откройте конфигурационный файл Synapse.

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

Замените пути в этом файле путями к файлам сертификатов Let’s Encrypt.

. . .
tls_certificate_path: "/etc/matrix-synapse/fullchain.pem"
# PEM encoded private key for TLS
tls_private_key_path: "/etc/matrix-synapse/privkey.pem"
# PEM dh parameters for ephemeral keys
tls_dh_params_path: "/etc/ssl/certs/dhparam.pem"
. . .

Перезапустите Synapse:

sudo systemctl restart matrix-synapse

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

Заполните поля:

  • Matrix ID: @user:server_name (другие серверы смогут найти ваш homeserver).
  • Password: пароль текущего пользователя.
  • Home Server: имя сервера, которое вы установили в разделе 1.

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

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

Заключение

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

Tags: , , , ,