Как установить Matrix Synapse на Ubuntu 24.04
Дата публикации: 2025-02-19T17:56:26
Теги: ["ubuntu", "matrix", "synapse"]
Matrix является открытым стандартом для децентрализованной и сквозной зашифрованной связи. Он объединяется с помощью домашних серверов, которые общаются друг с другом через Интернет. Домашние серверы хранят данные о своих пользователях и историю чата созданных комнат (включая комнаты, происходящие от других домашних серверов). Из-за природы децентрализации, когда оригинальный домашний сервер, который создал комнату, отключается, другие домашние серверы могут продолжать общение без проблем. Из-за этой конструкции нет ни одной точки отказа.
В этой статье рассмотрим установку и настройку собственного сервера Matrix Synapse ( Home server ) с возможностью осуществления аудио и видео звонков.
Предпосылки
- Сервер с Ubuntu 24.04 в качестве ОС
- Права пользователя: пользователь root или обычный пользователь с привилегиями sudo.
Конвенции
# - данные команды должны выполняться с правами root либо непосредственно от имени пользователя root, либо с помощью команды sudo. $ - данные команды должны выполняться от имени обычного пользователя.
Шаг 1. Обновите систему
Свежая установка Ubuntu 24.04 требует обновления пакетов до последних доступных версий.
$ sudo apt update -y && sudo apt upgrade -y
Шаг 2. Установите Synapse
Подключаем репозиторий Matrix Synapse и устанавливаем Synapse Home server.
$ sudo 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" | sudo tee /etc/apt/sources.list.d/matrix-org.list
Установите Synapse.
$ sudo apt update $ sudo apt install matrix-synapse-py3
Во время установки введите имя сервера, который является частью вашего идентификатора матрицы. Вы можете изменить это позже в `/etc/matrix-synapse/conf.d/server_name.yaml`.
Управление сервисом.
$ sudo systemctl stop matrix-synapse.service — остановка $ sudo systemctl start matrix-synapse.service — запуск $ sudo systemctl restart matrix-synapse.service — перезагрузка
Шаг 3. Установите PostgreSQL
Хотя Synapse поддерживает использование SQLite в качестве базы данных, он не рекомендуется в производстве из-за проблем с производительностью.
sudo apt install postgresql
После установки PostgreSQL сервис автоматически запустится. Войдите в пользователь PostgreSQL.
$ sudo -i -u postgres
Создайте `synapse_user` пользователя и `synapse_db` базы данных для PostgreSQL.
$ createuser --pwprompt synapse_user $ createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse_db $ psql postgres=# ALTER USER synapse_user with PASSWORD 'YourStrongPasswordHere'; postgres=# \q $ exit
Шаг 4. Установка и настройка Nginx с помощью TLS
Synapse поддерживает автономное функционирование без обратного прокси, но в производстве это не рекомендуется.
Установите Nginx и Certbot.
$ sudo apt install nginx certbot python3-certbot-nginx
Откройте порты HTTP, HTTPS и Synapse в брандмауэре.
$ sudo ufw allow http $ sudo ufw allow https $ sudo ufw allow 8448
Получите сертификат TLS от Let's Encrypt.
$ sudo certbot certonly --nginx -d matrix.example.org -d example.org
Создайте новый файл конфигурации Nginx.
$ sudo nano /etc/nginx/sites-available/synapse.conf
Добавьте следующие строки в файл конфигурации.
server {
server_name matrix.example.org;
# Client port
listen 80;
listen [::]:80;
return 301 https://$host$request_uri;
}
server {
server_name matrix.example.org;
# Client port
listen 443 ssl http2;
listen [::]:443 ssl http2;
# Federation port
listen 8448 ssl;
listen [::]:8448 ssl;
# TLS configuration
ssl_certificate /etc/letsencrypt/live/matrix.example.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/matrix.example.org/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
location ~ ^(/_matrix|/_synapse/client) {
proxy_pass http://localhost:8008;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
# Default Synapse upload size.
# If you change max_upload_size in Synapse config, update it here too.
client_max_body_size 50M;
}
}
Замените `matrix.example.org` своим доменным именем или поддоменным именем, указывающим на IP-адрес вашего сервера. Затем сохраните файл и выйдите из редактора.
Включите конфигурацию.
$ sudo ln -s /etc/nginx/sites-available/synapse.conf /etc/nginx/sites-enabled/synapse.conf
Проверка конфигурации и перезагрузите службу Nginx.
$ sudo nginx -t $ sudo systemctl reload nginx.service
Шаг 5. Настройте Synapse
Вы можете редактировать файл конфигурации на `/etc/matrix-synapse/homeserver.yaml`, но вместо этого вы должны размещать изменения в `/etc/matrix-synapse/conf.d/`, чтобы apt не просил перезаписывать файл конфигурации после каждого обновления Synapse.
Создайте новый файл конфигурации базы данных.
$ sudo nano /etc/matrix-synapse/conf.d/database.yaml
Добавьте следующие строки в файл конфигурации. Замените значение пароля на пароль, установленный ранее для пользователя synapse PostgreSQL.
database:
name: psycopg2
args:
user: synapse_user
password: 'YourStrongPasswordHere'
database: synapse_db
host: localhost
port: 5432
cp_min: 5
cp_max: 10
Создайте секретный регистрационный ключ. Держите его в безопасности, потому что любой, у кого есть ключ, может зарегистрировать нового пользователя, даже если регистрация отключена.
$ echo "registration_shared_secret: '$(cat /dev/urandom | tr -cd '[:alnum:]' | fold -w 256 | head -n 1)'" | sudo tee /etc/matrix-synapse/conf.d/registration_shared_secret.yaml
По умолчанию Synapse позволяет использовать индикаторы присутствия, которые показывают, находится ли человек в сети. Это может привести к высокому использованию процессора, и многие домашние серверы отключают их. Для этого создайте новый файл конфигурации.
$ sudo nano /etc/matrix-synapse/conf.d/presence.yaml
Добавьте следующие строки в файл конфигурации.
presence: enabled: false
Перезагрузите Synapse для применения новой конфигурации.
$ sudo systemctl restart matrix-synapse.service
Для тестирования в командной строке создаются пользователи.
$ register_new_matrix_user -c /etc/matrix-synapse/conf.d/registration_shared_secret.yaml http://localhost:8008
Чтобы открыть публичную регистрацию, создайте новую конфигурацию.
$ sudo nano /etc/matrix-synapse/conf.d/registration.yaml
Добавьте следующие строки в файл конфигурации.
enable_registration: true
По умолчанию Synapse не разрешает регистрацию без проверки. Чтобы включить проверку электронной почты, добавьте следующие строки.
registrations_require_3pid: - email email: smtp_host: mail.example.org smtp_port: 587 # If mail server has no authentication, skip these 2 lines smtp_user: 'noreply@example.org' smtp_pass: 'password' # Optional, require encryption with STARTTLS require_transport_security: true app_name: 'Example Chat' # defines value for %(app)s in notif_from and email subject notif_from: "%(app)s"
Чтобы не иметь какой-либо формы проверки, добавьте следующую строку.
enable_registration_without_verification: true
Перезагрузите Synapse для применения новой конфигурации.
$ sudo systemctl restart matrix-synapse.service
Чтобы убедиться, что Synapse работает, откройте `/_matrix/static/` на вашем домене Matrix в вашем браузере. Например:
https://matrix.example.org/\_matrix/static/
Чтобы проверить, работает ли федерация с другими домашними серверами, откройте [тестер федерации](https://federationtester.matrix.org/), введите имя сервера Матрицы и нажмите «Перейти».
Шаг 6. Установите и настроите Coturn
Для поддержки голосовые и видеозвонки потребуется установка и настройка собственного TURN-сервера.
$ sudo apt install coturn
Откройте порты TURN и UDP.
$ sudo ufw allow 3478 $ sudo ufw allow 5349 $ sudo ufw allow 49152:65535/udp
Получите сертификат TLS от Let's Encrypt.
$ sudo certbot certonly --nginx -d turn.example.org
Создайте секрет аутентификации.
$ echo "static-auth-secret=$(cat /dev/urandom | tr -cd '[:alnum:]' | fold -w 256 | head -n 1)" | sudo tee /etc/turnserver.conf
Простейший рабочий файл конфигурации TURN-сервера.
$ sudo nano /etc/turnserver.conf
Добавьте следующие строки в файл конфигурации.
use-auth-secret realm=turn.example.org cert=/etc/letsencrypt/live/turn.example.org/fullchain.pem pkey=/etc/letsencrypt/live/turn.example.org/privkey.pem # VoIP — это UDP, нет необходимости в TCP no-tcp-relay # Не допускайте трафик в частные IP-диапазоны no-multicast-peers denied-peer-ip=0.0.0.0-0.255.255.255 denied-peer-ip=10.0.0.0-10.255.255.255 denied-peer-ip=100.64.0.0-100.127.255.255 denied-peer-ip=127.0.0.0-127.255.255.255 denied-peer-ip=169.254.0.0-169.254.255.255 denied-peer-ip=172.16.0.0-172.31.255.255 denied-peer-ip=192.0.0.0-192.0.0.255 denied-peer-ip=192.0.2.0-192.0.2.255 denied-peer-ip=192.88.99.0-192.88.99.255 denied-peer-ip=192.168.0.0-192.168.255.255 denied-peer-ip=198.18.0.0-198.19.255.255 denied-peer-ip=198.51.100.0-198.51.100.255 denied-peer-ip=203.0.113.0-203.0.113.255 denied-peer-ip=240.0.0.0-255.255.255.255 denied-peer-ip=::1 denied-peer-ip=64:ff9b::-64:ff9b::ffff:ffff denied-peer-ip=::ffff:0.0.0.0-::ffff:255.255.255.255 denied-peer-ip=100::-100::ffff:ffff:ffff:ffff denied-peer-ip=2001::-2001:1ff:ffff:ffff:ffff:ffff:ffff:ffff denied-peer-ip=2002::-2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff denied-peer-ip=fc00::-fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff denied-peer-ip=fe80::-febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff # Ограниченное количество сеансов на пользователя user-quota=12 # Ограничение общего числа сессий total-quota=1200
Перезагрузите Coturn для перезагрузки конфигурации.
$ sudo systemctl restart coturn.service
Создайте новый файл конфигурации Synapse.
$ sudo nano /etc/matrix-synapse/conf.d/turn.yaml
Добавьте следующие строки в файл конфигурации. Заменить значение `turn_shared_secret` значением `static-auth-secret` от `/etc/turnserver.conf`.
turn_uris: [ "turn:turn.example.org?transport=udp", "turn:turn.example.org?transport=tcp" ] turn_shared_secret: 'static-auth-secret' turn_user_lifetime: 86400000 turn_allow_guests: True
Перезагрузите Synapse для применения новой конфигурации.
$ sudo systemctl restart matrix-synapse.service
Шаг 7. Использование Matrix
Synapse теперь настроен, и вы можете использовать его с любым клиентом [Matrix](https://matrix.org/ecosystem/clients/). Element является самым популярным клиентом Matrix, который доступен в качестве размещенного веб-приложения.
Если вы хотите разместить свой собственный экземпляр элемента, ознакомьтесь с инструкциями по его установке и настройке.
Чтобы войти в свой клиент Matrix, введите полный идентификатор Matrix (например, `@bob:example.org`) в поле имени пользователя. Большинство клиентов, таких как Element, автоматически получают информацию о домашнем сервере. Если это не работает, проверьте, имеет ли URL-адрес `/.well-known/matrix/client/` на вашем сервере Matrix правильную информацию о домашнем сервере. Если это так, ваш клиент не поддерживает обнаружение домашнего сервера, и вам нужно вставить адрес домашнего сервера вручную.
Шаг 8. Установите Element
Установить jq.
$ sudo apt install jq
Создайте каталог для Element.
$ sudo mkdir -p /var/www/element
Создайте новый файл для получения новейшего выпуска Element.
$ sudo nano /var/www/element/update.sh
Добавьте в файл следующие строки.
#!/bin/sh
set -e
install_location="/var/www/element"
latest="$(curl -s https://api.github.com/repos/element-hq/element-web/releases/latest | jq -r .tag_name)"
cd "$install_location"
[ ! -d "archive" ] && mkdir -p "archive"
[ -d "archive/element-${latest}" ] && rm -r "archive/element-${latest}"
[ -f "archive/element-${latest}.tar.gz" ] && rm "archive/element-${latest}.tar.gz"
export latest="v1.11.109" && wget "https://github.com/element-hq/element-web/releases/download/${latest}/element-${latest}.tar.gz" -P "archive"
tar xf "archive/element-${latest}.tar.gz" -C "archive"
[ -L "${install_location}/current" ] && rm "${install_location}/current"
ln -sf "${install_location}/archive/element-${latest}" "${install_location}/current"
ln -sf "${install_location}/config.json" "${install_location}/current/config.json"
Сделайте файл как исполняемый.
$ sudo chmod +x /var/www/element/update.sh
Выполните файл для загрузки элемента.
$ sudo ./var/www/element/update.sh
Чтобы обновить Element в будущем, отредактируйте строку `export latest=`и перезапустите команду.
Шаг 9. Настройте Element
Скопируйте конфигурацию Element образца.
$ sudo cp /var/www/element/current/config.sample.json /var/www/element/config.json
Отредактируйте файл конфигурации.
$ sudo nano /var/www/element/config.json
Измените адрес домашней службы matrix.org по умолчанию на свой домашний сервер.
"m.homeserver": {
"base_url": "https://matrix.example.org",
"server_name": "example.org"
},
Если вы хотите использовать свое имя вместо Element в названии сайта и других местах, измените название бренда.
"brand": "My Example Chat",
Получите сертификат TLS от Let's Encrypt.
$ sudo certbot certonly --nginx -d element.example.org
Создайте новый файл конфигурации Nginx.
$ sudo nano /etc/nginx/sites-available/element.conf
Добавьте следующие строки в файл конфигурации.
server {
listen 80;
listen [::]:80;
server_name element.example.org;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name element.example.org;
root /var/www/element/current;
index index.html;
add_header Referrer-Policy "strict-origin" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
# TLS configuration
ssl_certificate /etc/letsencrypt/live/element.example.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/element.example.org/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
}
Включите конфигурацию.
$ sudo ln -s /etc/nginx/sites-available/element.conf /etc/nginx/sites-enabled/element.conf
Проверка конфигурации и перезагрузите службу Nginx.
$ sudo nginx -t $ sudo systemctl reload nginx.service
Теперь вы можете получить доступ к Элементу из поддомена элемента (например, `https://element.example.org`). Чтобы войти в систему, введите свое имя пользователя или полный идентификатор матрицы.
Завершение
Поздравляю! Вы успешно установили Matrix Synapse и Element на свой сервер Ubuntu 24.04.
Если вам понравился этот пост об установке Matrix Synapse и Element на Ubuntu 24.04, пожалуйста, поделитесь им со своими друзьями в социальных сетях, которым может быть интересна эта статья.