Установка и настройка сервера Matrix Synapse. Ubuntu18. Debian 10. Debian 11.
В этой статье рассмотрим установку и настройку собственного сервера Matrix Synapse ( Home server ) с возможностью осуществления аудио и видео звонков.
Установка.
Выполняем обновление системы:
# apt-get update
# apt-get upgrade
Ставим вспомогательные пакеты, утилиты:
# apt install net-tools mc aptitude htop apache2-utils lsb-release wget apt-transport-https
Matrix.org предоставляет пакеты Debian/Ubuntu для 64-разрядной архитектуры, которые находятся по адресу https://packages.matrix.org/debian/.
Подключаем репозиторий Matrix Synapse и устанавливаем Synapse Home server.
# wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg
# echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/matrix-org.list
# apt update
# apt install matrix-synapse-py3
В процессе установки нужно установить имя сервера:
Управление сервисом:
# systemctl stop matrix-synapse.service
— остановка
# systemctl start matrix-synapse.service
— запуск
# systemctl restart matrix-synapse.service
— перезагрузка
Конфигурирование.
Файлы конфигурации находятся в /etc/matrix-synapse
Сохраняем оригинальный конфиг:
# cp /etc/matrix-synapse/homeserver.yaml /etc/matrix-synapse/homeserver.yaml.org
В файле конфигурации обращаем внимание на следующие моменты:
Слушается порт 8008, сервис работает только на локальном интерфейсе, т.к. подключения будем проксировать через nginx ( о настройке проксирования ниже):
- port: 8008 tls: false type: http x_forwarded: true bind_addresses: ['::1', '127.0.0.1']
Устанавливается ограничение на размер загружаемых файлов:
max_upload_size: 50M
Запрещаем самостоятельную регистрацию пользователей:
enable_registration: false
В переменную registration_shared_secret прописываем длинное случайное значение:
registration_shared_secret = "AePee4xeemeeW7xangoos9xie3CahCai"
Разрешаем поиск пользователей в клиентах:
search_all_users: true prefer_local_users: true
Настройка работы с PostgreSQL.
По умолчанию Matrix хранит пользователей, информацию о чатах, историю переписки и прочее в sqlite. Это приемлемо для тестовых конфигураций и серверов с небольшой нагрузкой, для нагруженных серверов рекомендуется использовать PostgreSQL.
Ставим PG:
# apt install postgresql
# systemctl enable postgresql
# systemctl restart postgresql
Ставим библиотеки Python для работы с PostgreSQL:
# apt install python-pip python3-dev libpq-dev
# pip install psycopg2
Переключаемся на пользователя postgres и настраиваем базу данных для Matrix Synapse.
# su - postgres
$ createuser synapse_user
$ createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse
$ psql
postgres=# ALTER USER synapse_user with PASSWORD 'PassWord';
postgres=# \q
$ exit
В файле /etc/postgresql/10/main/postgresql.conf устанавливаем параметр listen_addresses = ‘localhost’ и рестартуем PG:
# systemctl restart postgresql
После этого вносим изменения в конфигурацию Matrix /etc/matrix-synapse/homeserver.yaml
1. Комментируем или удаляем всё, что относится к настройке подключения к SQLITE:
database: name: sqlite3 args: database: /var/lib/matrix-synapse/homeserver.db
2. Добавляем подключение к PG:
database: name: psycopg2 txn_limit: 10000 args: user: synapse_user password: PassWord database: synapse host: localhost port: 5432 cp_min: 5 cp_max: 10
После этого рестартуем сервис:
systemctl restart matrix-synapse.service
Если все настройки выполнены верно — matrix загрузится, будет слушать 127.0.0.1:8008, при первом старте сгенерирует структуру БД synapse в PostgreSQL.
Проксирование через NGINX.
Проксирование требуется для сокрытия портов и подключения SSL-сертификатов (клиенты сервера matrix работают только по протоколу https).
Устанавливаем nginx:
# apt install nginx
В каталоге /etc/nginx/sites-available
создаю файл конфигурации matrix.sysad.su
со следующим содержимым:
server { listen 80; server_name matrix.sysad.su; location / { proxy_pass http://localhost:8008; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; client_max_body_size 50M; } location ~* ^(\/_matrix|\/_synapse\/client) { proxy_pass http://localhost:8008; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; client_max_body_size 50M; } location /admin { root /var/www/admin; client_max_body_size 50M; } }
Создаём символьную ссылку:
# ln -s /etc/nginx/sites-available/matrix.sysyad.su /etc/nginx/sites-enabled/matrix.sysyad.su
и проверяем конфигурацию nginx на наличие ошибок:
# nginx -t
Если тестирование «is successful», рестартуем nginx и добавляем его в авто запуск:
# systemctl restart nginx
# systemctl enable nginx
Следующим этапом подключаем сертификат Lets Encrypt.
Устанавливаем certbot:
# apt-get install python3-certbot-nginx
и получаем сертификат для домена:
# certbot --nginx -d matrix.sysad.su
Отвечаем на вопросы и соглашаемся сделать редирект на https://, рестаруем nginx:
# systemctl restart nginx
С текущего момента Matrix Synapse вполне работоспособен, можно обмениваться текстовыми сообщениями и файлами.
Для тестирования в командной строке создаются пользователи:
# register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008
Клиенты для различных платформ скачиваются по ссылке https://matrix.org/docs/projects/try-matrix-now/#clients
Настройка аудио- и видео-звонков.
Для поддержки аудио/видео-звонков потребуется установка и настройка собственного TURN-сервера.
Ставим coturn:
# apt install coturn
В файле /etc/turnserver.conf прописываем опции
use-auth-secret
realm=matrix.sysad.su
В качестве параметра static-auth-secret указываем длинное текстовое значение (32-64 символа, желательно сгенерировать).
static-auth-secret=aiz4eibe2ebahx0ool ... eengeiS
Простейший рабочий файл конфигурации TURN-сервера:
listening-ip=YourServerIP listening-port=3478 fingerprint no-loopback-peers no-multicast-peers use-auth-secret static-auth-secret=aiz4eibe2ebahx0ool ... eepi6eM2cahqui1 realm=matrix.sysad.su # VoIP traffic is all UDP. There is no reason to let users connect to arbitrary TCP endpoints via the relay. no-tcp-relay # consider whether you want to limit the quota of relayed streams per user (or total) to avoid risk of DoS. user-quota=12 # 4 streams per video call, so 12 streams = 3 simultaneous relayed calls per user. total-quota=1200
В файле /etc/default/coturn раскомментируем строку #TURNSERVER_ENABLED=1
, если строка закомментарена — TURN-сервер не стартует.
После внесения изменений перезапускаем TURN-сервер:
# systemctl restart coturn
Настраиваем homeserver.yaml для работы c TURN-сервером. Добавляем(изменяем) следующие опции:
turn_uris: ["turn:matrix.sysad.su?transport=udp","turn:matrix.sysad.su?transport=tcp"]
— адрес TURN-сервера.
turn_shared_secret: "aiz4eibe2ebahx0ool ... eepi6eM2cahqui1"
— значение берём из static-auth-secret файла конфигурации coturn.
turn_user_lifetime: 86400000
systemctl restart matrix-synapse.service
Установка веб-админки для управления Matrix Synapse.
На гитхабе живёт единственная в своём роде панель управления сервером Matrix Synapse.
4 комментария