Как установить Matrix Synapse на Debian VPS

Оглавление
- Что такое протокол Matrix?
- Зачем использовать Matrix?
- Хостинг собственного сервера Matrix
- Установка Synapse
- Настройка Synapse и Nginx
- Настройка SSL для Synapse
- Создание пользователя в Synapse
- Критерии приёмки
- Безопасность и рекомендации по эксплуатации
- Альтернативные подходы
- Отладка и часто задаваемые вопросы
- Словарь терминов
- Контрольный список для ролей
- Короткая методика восстановления после инцидента
Что такое протокол Matrix?
Matrix — открытый набор сетевых протоколов для обмена сообщениями в реальном времени. Это похожий по идее открытый стандарт, как HTTP, но для федеративного обмена сообщениями. Ключевые элементы в одной строке:
- Synapse — эталонная реализация сервера (написана на Python). Служит отправной точкой для деплоя и разработки.
- Клиенты — приложения (веб, десктоп, мобильные), которые подключаются к серверу.
- Федерация — сервера разговаривают друг с другом, поэтому пользователи разных серверов могут обмениваться сообщениями.

Зачем использовать Matrix?
Кратко:
- Полный контроль над данными: вы владеете сервером и его базой.
- Федерация: возможность общения с пользователями других серверов.
- Безопасность: поддержка end-to-end шифрования (E2EE) в протоколе.
- Гибкость: можно выбрать клиент, интеграции и саму реализацию сервера.
Когда это полезно:
- Организациям, которым важен контроль над сообщениями и метаданными.
- Сообществам, требующим федерации и взаимодействия между доменами.
- Тем, кто хочет иметь автономный, отказоустойчивый сервис.
Хостинг собственного сервера Matrix
Требования перед установкой:
- Доменное имя (FQDN) для вашего экземпляра — Synapse ожидает валидный домен.
- Внешне доступный хост: VPS с публичным IP или хост в сети с проброшенным портом.
- Root-доступ или sudo на сервере для установки пакетов.
- Резервное копирование и мониторинг на будущее.
В этой инструкции мы рассматриваем Debian на VPS (пример — DigitalOcean). Приведённые команды рассчитаны на Debian/Ubuntu-подобную систему.
1. Установка Synapse
Подключитесь к VPS и установите зависимости:
sudo apt update
sudo apt install -y lsb-release wget apt-transport-https ca-certificates gnupgПо умолчанию в репозиториях Debian нет пакетов Synapse. Добавим официальный репозиторий Matrix и ключи разработчиков.
- Импортируйте GPG-ключ архива:
sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg- Добавьте репозиторий Synapse в APT sources:
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 (python3-версия):
sudo apt update
sudo apt install -y matrix-synapse-py3Во время установки установщик попросит вас указать доменное имя сервера (server_name). Укажите FQDN, например yetanothermatrixserver.xyz.
Также установщик предложит отправку статистики разработчикам. Для приватного сервера выберите «No».

2. Настройка Synapse и Nginx
Synapse по умолчанию слушает внутренний HTTP-порт (8008). Для внешнего доступа обычно ставят Nginx как обратный прокси, чтобы выполнить SSL-termination и обеспечить ACME-challenges для certbot.
- Установите Nginx:
sudo apt install -y nginx
- Создайте (или отредактируйте) конфигурацию для вашего домена. Если вы хотите редактировать файл по умолчанию:
sudo touch /etc/nginx/sites-available/default
sudo nano /etc/nginx/sites-available/defaultПример минимальной конфигурации обратного прокси для Synapse:
server {
server_name yetanothermatrixserver.xyz;
listen 80;
listen [::]:80;
location / {
proxy_pass http://localhost:8008;
}
location ~* ^(/_matrix|/_synapse/client) {
proxy_pass http://localhost:8008;
proxy_set_header X-Forwarded-For $remote_addr;
client_max_body_size 50M;
}
location /.well-known/matrix/server {
return 200 '{"m.homeserver": {"base_url": "https://yetanothermatrixserver.xyz"}}';
default_type application/json;
add_header Access-Control-Allow-Origin *;
}
}Объяснение ключевых мест:
- server_name — ваш FQDN.
- listen 80 / [::]:80 — прием IPv4 и IPv6.
- proxy_pass — перенаправление трафика на localhost:8008, где работает Synapse.
- /.well-known/matrix/server — запись, необходимая для некоторых федеративных сценариев и автоконфигурации.
Перезагрузите Nginx и проверьте синтаксис:
sudo nginx -t
sudo systemctl restart nginx
3. Настройка SSL для Synapse
Synapse сам по себе не управляет сертификатами для HTTPS фронта — это делает Nginx, поэтому используйте Certbot для автоматического получения и продления Let’s Encrypt сертификатов.
- Установите certbot и плагин для nginx:
sudo apt install -y certbot python3-certbot-nginx- Запустите certbot и получите сертификат для вашего домена:
sudo certbot --nginx -d yetanothermatrixserver.xyzПосле успешного получения сертификата проверьте, что Nginx перезапустился и сайт доступен по HTTPS.
Если нужно вручную создать симлинк для включения конфигурации и перезапустить сервисы:
sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
sudo systemctl restart nginx

4. Создание пользователя в Synapse
Для локального управления аккаунтами удобно включить предварительно общий секрет (registration_shared_secret). Это позволяет создавать и удалять учётные записи из командной строки.
- Сгенерируйте случайную строку 32 символа (пример):
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w32 | head -n1
- Откройте файл конфигурации homeserver.yaml, который обычно находится в /etc/matrix-synapse/:
sudo nano /etc/matrix-synapse/homeserver.yamlНайдите строку registration_shared_secret: и поставьте туда сгенерированную строку (раскомментируйте, если нужно). Сохраните файл и перезапустите Synapse:
sudo systemctl restart matrix-synapse
- Создайте пользователя через утилиту регистрации:
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008Команда запросит имя пользователя, пароль и спросит, сделать ли пользователя админом (admin). Указывайте аккуратно — admin-права даются для управления сервером.

Поздравляем — базовый Synapse работает. Вы можете подключиться клиентом Element (веб/десктоп/мобильный) или любым другим клиентом Matrix.

Критерии приёмки
- Сервер отвечает на HTTPS-запросы на вашем домене.
- Synapse успешно запущен и слушает localhost:8008.
- Создан хотя бы один пользователь, и можно войти в Matrix-клиент.
- Certbot настроен и автоматическое обновление сертификата работает (dry-run не возвращает ошибок).
Пример проверки:
sudo systemctl status matrix-synapse
curl -k https://yetanothermatrixserver.xyz/_matrix/client/versions
sudo certbot renew --dry-runБезопасность и рекомендации по эксплуатации
Важно поддерживать сервер в рабочем и безопасном состоянии. Рекомендации:
- Регулярные обновления: apt update && apt upgrade.
- Резервное копирование базы данных (Postgres при использовании в продакшне) и конфигов (/etc/matrix-synapse/).
- Ограничение доступа к системным учетным записям через SSH (ключи, отключение root-login по паролю).
- Мониторинг диска, памяти и логов (journalctl -u matrix-synapse).
- Настройка fail2ban или iptables/nftables для защиты от брутфорса.
- Использование HTTPS всегда и отключение незащищённых точек доступа.
- При включении регистраций (enable_registration: true) включите CAPTCHA или подтверждение по email.
Безопасное хранение ключей и секретов:
- registration_shared_secret храните с ограниченным доступом (chmod 600 на конфиг).
- Не храните резервные копии с открытыми паролями в публичных репозиториях.
Альтернативные подходы
Если вам не подходит установка Synapse из системных пакетов — есть другие варианты:
- Docker / Docker Compose
- Быстрое развёртывание и изоляция. Подходит для тестов и CI. Обратите внимание на persistent volumes для БД и конфигов.
- Kubernetess
- Для крупных инсталляций с автоскейлингом и высокой доступностью. Требует продуманной архитектуры хранения состояния и базы.
- Лёгкие/альтернативные серверы Matrix
- Dendrite (Go) — проект от Matrix, ориентирован на масштабируемость.
- Conduit (Rust) — минималистичный, экономит ресурсы и быстрее стартует, но может не поддерживать все возможности Synapse.
- Managed-хостинг
- Некоторые провайдеры предлагают готовые облачные Matrix-инстансы (опция для команд, которые не хотят управлять infra).
Когда выбирать Synapse из APT:
- Простота поддержки и обновлений пакетов.
- Хорошо подходит для одиночного сервера или небольших сообществ.
Ментальные модели и эвристики
- «Федерация как почта»: думайте о каждом сервере как о почтовом провайдере — он хранит письма локально, но пересылает сообщения другим серверам.
- «Nginx = фасад безопасности»: используйте Nginx для HTTPS, rate-limiting и ACME-контроля.
- «Минимум привилегий»: админские аккаунты выдавайте по необходимости.
Роль‑ориентированные чеклисты
Администратор сервера (перед запуском):
- Зарегистрирован домен и DNS A/AAAA указывает на VPS.
- Доступ по SSH настроен (ключи).
- Установлен Synapse и Nginx.
- Получен LetsEncrypt сертификат.
- Создан админ-аккаунт.
Оператор/DevOps (эксплуатация):
- Автоматическое обновление certbot настроено.
- Настроены резервные копии БД и конфигов.
- Мониторинг сервиса и алерты в случае падения.
Разработчик/интегратор:
- Документирован API-эндпоинт и webhook-ы.
- Тестовая учётная запись для интеграций.
Короткая методика восстановления после инцидента
- Если Synapse упал:
- Проверить статус: sudo systemctl status matrix-synapse
- Просмотреть логи: sudo journalctl -u matrix-synapse -n 200
- Проверить свободное место: df -h
- Если Nginx не принимает HTTPS:
- Проверить конфигурацию: sudo nginx -t
- Проверить сертификаты: sudo certbot certificates
- Принудительный перезапуск: sudo systemctl restart nginx
- Если база данных повреждена:
- Восстановление из последней резервной копии.
- Перезапуск с сохранением WAL/логов (в зависимости от СУБД).
Тесты и критерии приёмки (короткая проверка)
- HTTP: curl -I http://yetanothermatrixserver.xyz -> 301/302 на HTTPS
- HTTPS: curl -I https://yetanothermatrixserver.xyz -> 200
- Synapse API: curl -k https://yetanothermatrixserver.xyz/_matrix/client/versions -> JSON с версиями клиента
- Регистрация: register_new_matrix_user выполняется без ошибок и создаёт пользователя
Отладка: типичные проблемы и решения
Проблема: certbot не может получить challenge.
- Решение: убедитесь, что DNS указывает на IP и порты 80/443 открыты.
Проблема: Nginx проксирует, но клиент жалуется на отсутствующие CORS или недоступность.
- Решение: проверьте location /.well-known/matrix/server и заголовки, убедитесь, что proxy_set_header правильно установлен.
Проблема: federation не работает с другими серверами.
- Решение: проверьте DNS записи других серверов и убедитесь, что у вас корректный PTR/A-записи и порты открыты.
Политика приватности и GDPR-заметки
- Если вы запускаете сервер для пользователей в ЕС, убедитесь, что у вас есть политика обработки персональных данных: хранение логов, сроки хранения, доступ пользователей к своим данным.
- При включении внешней регистрации контролируйте подтверждение по email или CAPTCHA, чтобы предотвратить спам-ботов.
- Зашифрованные (E2EE) комнаты защищают содержимое сообщений, но метаданные (кто с кем связывается, временные метки) остаются на сервере — планируйте retention и аудит.
Миграция и совместимость
- При переносе Synapse на другой хост экспортируйте базу данных и конфигурацию (/etc/matrix-synapse/, homeserver.db или dump Postgres).
- Совместимость клиентов: большинство клиентов поддерживают Synapse, но фичи E2EE и плагины могут вести себя по-разному.
Словарь терминов (1‑строчные определения)
- Synapse — основная серверная реализация Matrix на Python.
- Federation — обмен событиями между серверами Matrix.
- Homeserver — сервер, хранящий аккаунты и комнаты вашего домена.
- Client API — HTTP API, которым пользуются клиенты для доступа к серверу.
Часто задаваемые вопросы
Можно ли запускать Synapse в поддомене?
Да. Убедитесь, что DNS поддомена указывает на ваш сервер и укажите поддомен в server_name в конфигурации Nginx.
Входит ли в Synapse web‑клиент?
Нет. Synapse не содержит веб‑клиент по умолчанию. Для доступа используйте Element, Ditto или другие клиенты.
Как включить внешнюю регистрацию пользователей?
В homeserver.yaml установите enable_registration: true. Для защиты от ботов включите CAPTCHA или подтверждение по email.
Шаблоны и примеры
Nginx-конфигурация, которую можно скопировать (с заменой yourdomain на ваш домен):
server {
server_name yourdomain.example;
listen 80;
listen [::]:80;
location / {
proxy_pass http://127.0.0.1:8008;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /.well-known/matrix/server {
return 200 '{"m.homeserver": {"base_url": "https://yourdomain.example"}}';
default_type application/json;
}
}Команды для проверки состояния:
sudo systemctl status matrix-synapse
sudo journalctl -u matrix-synapse -f
curl -k https://yourdomain.example/_matrix/client/versionsЗаключение
Вы установили и настроили базовый Synapse-сервер на Debian VPS: добавили репозиторий, установили Synapse, настроили Nginx как обратный прокси, получили SSL через Let’s Encrypt и создали первого пользователя. Дальше советую настроить автоматическое резервное копирование базы, мониторинг, и продумать политику регистрации пользователей и хранения данных.
Image credit: Message speech bubble symbol by 123RF
Короткая аннотация для социальных сетей (100–200 слов):
Запустите собственный Matrix-сервер на Debian VPS: полное пошаговое руководство от добавления репозитория и установки Synapse до настройки Nginx и получения бесплатного SSL от Let’s Encrypt. В статье есть готовые конфигурации, команды для создания пользователей и разделы по безопасности, миграции и отладке. Подходит для личного использования и небольших команд — вы получаете контроль над данными и возможность федерации с другими серверами Matrix.
Похожие материалы
Добавление приложений на Apple Watch
Приостановить обновления Windows 10 на 35 дней
HLOOKUP в Google Таблицах: горизонтальный поиск
Ошибка обновления Windows 11 0x800f0831 — как исправить
Как войти и пользоваться веб‑версией Revolut