Установка и настройка сервера Matrix Synapse. Ubuntu18. Debian 10. Debian 11.

Установка и настройка сервера 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.

 

Nicko

4 комментария

Серебристый Опубликовано10:06 дп - 7 января, 2023

Инстркуция не рабочая, всё делал как указано, но уже после Настройка работы с PostgreSQL. и запуска команды systemctl restart postgresql выдаёт ошибку. Так что тут чтщ-то не так указано в инструкции((((

    Nicko Опубликовано3:11 дп - 9 января, 2023

    1. Инструкция рабочая.
    2. Если при запуске PostgreSQL ( systemctl restart postgresql ) выдаётся ошибка, то прежде всего рекомендую ознакомиться с лог-файлами PostgreSQL
    и разобраться в причинах ошибки. Скорее всего, проблема в недостатке ОЗУ, для устранения ошибки требуется изменить параметры файла конфигурации PotgreSQL.

Алексей Опубликовано2:57 пп - 22 июля, 2022

Напишите пожалуйста, как установить его в Астра Линукс.
При прописывании дистрибутива, ругается что нет релиза похожего. Подскажите что нужно прописать, чтобы Астра проглотила Debian пакет матрикса и начала устанавливать его.
Как ему подтащить руками debian10 релиз матрикса?

Спасибо.

admin1@chat:~$ sudo apt update
Сущ:1 https://security.debian.org/debian-security buster/updates InRelease
Игн:2 https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-main 1.7_x86-64 InRelease
Сущ:3 https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-base 1.7_x86-64 InRelease
Сущ:4 https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-extended 1.7_x86-64 InRelease
Сущ:5 https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-main 1.7_x86-64 Release
Игн:6 https://packages.matrix.org/debian 1.7_x86-64 InRelease
Сущ:7 https://deb.debian.org/debian buster InRelease
Ошб:8 https://packages.matrix.org/debian 1.7_x86-64 Release
404 Not Found [IP: 104.20.201.37 443]
Чтение списков пакетов… Готово
E: Репозиторий «https://packages.matrix.org/debian 1.7_x86-64 Release» не содержит файла Release.
N: Обновление из этого репозитория нельзя выполнить безопасным способом, поэтому по умолчанию он отключён.
N: Информацию о создании репозитория и настройках пользователя смотрите в справочной странице apt-secure(8).

    Алексей Опубликовано3:03 пп - 22 июля, 2022

    Все! Я лох! Вот что значит не работал никогда в линуксе.
    Надо в строчке репозитория прописать buster перед main

    deb https://packages.matrix.org/debian buster main

Добавить комментарий для Nicko Отменить ответ