В эпоху, когда централизованные мессенджеры вызывают всё больше вопросов касательно приватности данных и стабильности работы, протокол Matrix становится золотым стандартом для защищенных коммуникаций. Сердцем этой экосистемы является Synapse — эталонная реализация домашнего сервера (homeserver) от создателей протокола.
В этой статье разберем, что такое Synapse, почему он остается лучшим выбором для self-hosted решений, и как правильно его настроить с использованием современных практик (Docker, PostgreSQL, Nginx).
Что такое Matrix и Synapse?
Прежде чем переходить к настройке, важно понять архитектуру. Matrix — это не приложение, а открытый протокол для децентрализованного общения в реальном времени. Он поддерживает сквозное шифрование (E2EE), VoIP-звонки и обмен файлами.
Synapse — это server-side программное обеспечение, написанное на Python/Twisted командой Element (ранее New Vector). Это «движок», который хранит историю переписки, данные пользователей и общается с другими серверами в сети Matrix.
💡 Интересный факт: Synapse является «Reference Implementation». Это значит, что все новые функции протокола Matrix (например, MSC — Matrix Spec Change) появляются здесь раньше, чем в альтернативных серверах вроде Dendrite или Conduit.

Почему стоит выбрать Synapse
Несмотря на появление более легких альтернатив на Go (Dendrite) и Rust (Conduit), Synapse остается выбором номер 1 для продакшен-систем по нескольким причинам:
- Полнота функций: Поддержка 100% спецификаций Matrix.
- Стабильность: Проверен годами работы в крупнейших инсталляциях (включая сервер
matrix.org). - Экосистема Element: Лучшая совместимость с клиентами Element и новыми функциями, такими как Sliding Sync (для быстрого обновления чатов).
- Администрирование: Огромное количество инструментов для модерации и управления через API (Synapse Admin).
Архитектура развертывания
Современная практика развертывания Synapse, рекомендуемая сообществом, исключает установку «на живую» в систему. Мы будем использовать Docker и контейнеризацию.
Рекомендуемый стек:
- Synapse: Сам сервер приложений.
- PostgreSQL: База данных. Важно: Никогда не используйте SQLite для чего-то серьезнее тестирования — это приведет к падению производительности.
- Nginx (Reverse Proxy): Прокси-сервер для обработки SSL и маршрутизации.
- Redis (Опционально): Для кэширования и работы воркеров (актуально для серверов с большим трафиком).

Пошаговая установка и настройка
Подготовка окружения (Docker Compose)
Создайте директорию для вашего сервера и файл docker-compose.yml.
version: '3.3'
services:
synapse:
image: matrixdotorg/synapse:latest
container_name: synapse
restart: unless-stopped
volumes:
- ./synapse-data:/data
environment:
- SYNAPSE_SERVER_NAME=your-domain.com
- SYNAPSE_REPORT_STATS=yes
ports:
# Порт 8008 открываем только для локального прокси
- 127.0.0.1:8008:8008
postgres:
image: postgres:15-alpine
container_name: synapse-db
restart: unless-stopped
environment:
- POSTGRES_USER=synapse
- POSTGRES_PASSWORD=StrongPasswordHere
- POSTGRES_DB=synapse
volumes:
- ./postgres-data:/var/lib/postgresql/dataГенерация конфигурации
Перед первым запуском необходимо сгенерировать файл конфигурации homeserver.yaml. Создайте каталог для данных:
mkdir synapse-dataЗапустите временный контейнер:
docker run -it --rm \
-v "$PWD/synapse-data:/data" \
-e SYNAPSE_SERVER_NAME=your-domain.com \
-e SYNAPSE_REPORT_STATS=yes \
matrixdotorg/synapse:latest generateТеперь в папке synapse-data отредактируйте homeserver.yaml. Найдите блок database и измените его с SQLite на Postgres:
database:
name: psycopg2
args:
user: synapse
password: StrongPasswordHere
database: synapse
host: postgres
cp_min: 5
cp_max: 10Reverse Proxy (Nginx) — Обязательный элемент
Разработчики Synapse настоятельно рекомендуют использовать Reverse Proxy (обратный прокси).
Зачем это нужно?
- Безопасность: Synapse не должен работать от root-пользователя для прослушивания порта 443.
- SSL/TLS: Nginx отлично справляется с сертификатами Let’s Encrypt.
- Производительность: Эффективная отдача статики и сжатие трафика.
Пример конфигурации Nginx (/etc/nginx/sites-available/matrix):
server {
listen 443 ssl http2;
server_name your-domain.com;
# SSL сертификаты (используйте Certbot)
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
# Проксирование запросов к Synapse
location /_matrix {
proxy_pass http://127.0.0.1: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 /.well-known/matrix/server {
return 200 '{"m.server": "your-domain.com:443"}';
add_header Content-Type application/json;
}
}
Запуск сервера
После того как конфигурация homeserver.yaml настроена, база данных прописана, а Nginx готов к работе, пора запускать боевую версию.
Выполните команду в папке с вашим docker-compose.yml:
docker compose up -dКлюч -d (detach) запустит контейнеры в фоновом режиме. Чтобы убедиться, что всё запустилось корректно, проверьте логи:
docker compose logs -f synapseЕсли вы видите сообщения вроде Synapse now listening on port 8008, значит сервер работает.
Создание администратора
По умолчанию в Synapse отключена свободная регистрация (и это правильно для безопасности). У вас нет веб-интерфейса для создания первого пользователя, поэтому это нужно сделать через командную строку внутри контейнера.
Выполните следующую команду, заменив myuser и mypassword на ваши данные:
docker compose exec synapse register_new_matrix_user \
-u myuser \
-p mypassword \
-a \
-c /data/homeserver.yaml-u: Имя пользователя (например,admin).-p: Пароль.-a: Делает пользователя администратором сервера (admin). Это критически важно для дальнейшего управления.-c: Указывает путь к конфигу внутри контейнера.
Проверка работоспособности
Теперь, когда сервер запущен и пользователь создан:
- Скачайте клиент Element (на телефон или ПК).
- При входе выберите «Изменить сервер» (Edit Homeserver).
- Введите адрес вашего домена:
https://your-domain.com. - Войдите под созданным логином и паролем.
Если вход выполнен успешно — поздравляем, ваш суверенный сервер Matrix работает!
Важные настройки
Федерация (Federation)
Чтобы общаться с пользователями других серверов (например, matrix.org), убедитесь, что порт 8448 открыт, или (лучше) используйте делегирование через .well-known, как показано в конфиге Nginx выше. Это позволяет использовать порт 443 для всего трафика.
Element X и Sliding Sync
Новый клиент Element X требует API «Sliding Sync». Synapse пока поддерживает его через дополнительный прокси (MSC3575). В Будущем ожидается полная нативная интеграция, но пока рекомендуется следить за обновлениями в репозитории Synapse, если вы планируете использовать мобильный клиент нового поколения.
Ресурсы
Synapse на Python требует достаточно много оперативной памяти. Для комфортной работы небольшой группы пользователей (5-50 человек) выделите минимум 2-4 GB RAM.
Заключение
Развертывание собственного сервера Matrix на базе Synapse — это инвестиция в цифровую независимость. Несмотря на кажущуюся сложность, использование Docker и Nginx делает процесс управляемым и масштабируемым.
Коротко о главном:
- Используйте Docker Compose.
- Обязательно подключайте PostgreSQL.
- Ставьте Nginx перед Synapse для SSL и безопасности.
- Следите за релизами на GitHub (Element HQ), так как протокол быстро развивается.

- Официальный репозиторий: github.com/element-hq/synapse
- Лицензия: GNU Affero General Public License v3.0
- Разработчик: Element
Читайте также
- SSH Pilot: Управление SSH-подключениями как с FTP — просто, удобно и безопасно
- Команда ‘cp’
- Systemd: архитектурные принципы, безопасность и оптимизация современных linux-систем
- Как SRE измеряет надежность и управляет рисками: стратегия SLO, бюджет ошибок и обсервабилити
- AlmaLinux: Фундамент вашей IT-Инфраструктуры
Было ли это полезно?
2 / 0