Synapse
Свой сервер Matrix: корпоративный чат на собственном домене, со сквозным шифрованием и федерацией с внешними организациями. Element, который его разрабатывает, на странице цен называет бесплатную сборку непригодной для прода - мы развернули ее на тарифе за 500 рублей и проверили, где это правда.
Вердикт
- компании 10-100 человек, которой нужна переписка внутри своего контура
- тем, кому нужна связь с подрядчиками без общего поставщика: их сервер и ваш общаются напрямую
- тем, кто не может оплачивать зарубежную подписку на каждого сотрудника
- организациям, где важно шифрование по умолчанию и свой домен в адресе сотрудника
- команде из трех человек: сложность не окупится
- тем, кто не готов завести домен - без него теряется главное свойство продукта
- тем, кому нужен готовый чат без администратора: тут честнее Mattermost
- тем, кто ищет самый легкий сервер Matrix - Synapse не из них
Сервер, а не мессенджер
Synapse - серверная часть Matrix, открытого стандарта обмена сообщениями. Его пишет Element, та же команда, которая придумала сам протокол.
Владелец сервера получает свое пространство имен: сотрудник зовется @ivan:company.ru, как почтовый адрес. Комнаты, треды, файлы, звонки - все живет на вашей машине.
Главное отличие от корпоративных чатов - федерация. Два сервера разных организаций переписываются напрямую: подрядчику не нужен аккаунт в вашей системе, достаточно его собственного сервера Matrix.
Важно до заказа: интерфейса в поставке нет. Synapse отдает только API, человеку нужен клиент - Element Web, мобильное приложение или любое другое. Мы ставили сервер и веб-клиент вместе, иначе после установки открывается пустая страница.
Вендор говорит, что бесплатная сборка не для прода
На странице цен Element бесплатный сервер подписан так: "Community edition homeserver, actively developed by Element, but not for use in production environments".
Рядом продается закрытый Synapse Pro - "next generation homeserver for professional use", который обещает "90%+ resource savings compared to Community Synapse". Цена по запросу, за место в месяц.
Формулировка резкая, но это позиция продавца. В 2023 году Element сменил лицензию с Apache 2.0 на AGPL и в своей же хронологии объяснил, зачем: интеграторы продавали решения на Matrix, построенные Element, ничего ей не платя.
Проверить такое утверждение можно только замером. Мы развернули Community-сборку на CPU2-RAM4-DISK50, подключили федерацию с внешним миром и посмотрели на цифры.
| Что продается | Цена | Что это значит |
|---|---|---|
| Synapse Community | бесплатно, AGPL-3.0 | то, что ставим мы. Поддержки от вендора нет |
| Коммерческая лицензия | по запросу | тот же код для тех, кому AGPL не подходит юридически |
| Synapse Pro | за место в месяц | закрытый форк с обещанной экономией ресурсов |
Чем отличается от Slack и Mattermost
Slack Pro стоит 6,75 евро за пользователя в месяц при годовой оплате, Business+ - 15 евро. Self-hosted альтернативы бесплатны, но умеют разное.
| Параметр | Synapse | Mattermost | Slack |
|---|---|---|---|
| Данные у вас | да | да | нет |
| Федерация с чужими серверами | да | нет | нет |
| Шифрование по умолчанию | в приватных комнатах | нет в базовой версии | нет |
| Свой домен в адресе сотрудника | да | нет | нет |
| Выбор клиента | десяток приложений | только свое | только свое |
| Память в простое, наш замер | 147 МиБ | около 0,8 ГБ | - |
| Сложность установки | средняя | низкая | нет установки |
Mattermost проще и требует меньше внимания, но это закрытый остров: переписка с внешней организацией там означает завести ей аккаунт у себя. Synapse решает ровно эту задачу и платит за это сложностью настройки.
Минимальная конфигурация
Документация проекта заявляет "не менее 1 ГБ свободной памяти". Наш замер показал, что федеративному серверу этого мало.
| Тариф стенда | CPU2-RAM4-DISK50 (2 vCPU, 4 ГБ, 50 ГБ) |
| Операционная система | Ubuntu 24.04.4 LTS |
| Версия продукта | Synapse 1.161.0, клиент Element Web 1.12.29 |
| База данных | PostgreSQL 15, SQLite только для тестов |
| Контейнеров | 4: сервер, база, веб-клиент, обратный прокси |
| Образы | 1,3 ГБ суммарно |
| Обязательно снаружи | домен и валидный TLS, без них федерации нет |
Про один гигабайт. Столько хватит серверу, который ни с кем не федерируется. Как только он входит во внешние комнаты, один Synapse держит около 480 МиБ, и рядом нужна база еще на 200. На машине с гигабайтом и без подкачки это упрется при первых же комнатах.
В маркетплейсе Fatmetal
Не хотите ставить руками?
Этот стек есть в маркетплейсе Fatmetal - можно не повторять установку из этого разбора вручную. Заказываете сервер, за пару минут получаете рабочий адрес, валидный TLS, веб-клиент и файл с доступами.
Рекомендуемая конфигурация: CPU2-RAM4-DISK50
Развертывание на Fatmetal Cloud Server
Готового набора апстрим не дает: файл compose в репозитории - набросок из двух сервисов, без клиента, без TLS, с паролем changeme и базой SQLite по умолчанию. Собираем стек сами, от чистой машины до рабочего экрана ушло около трех минут.
Выбрать имя сервера - один раз и навсегда
Домен попадает в адреса сотрудников и в ключ подписи сервера. Поменять его после запуска нельзя: это будет другой сервер с другими аккаунтами.
Поставить Docker
Образ Ubuntu приходит без него. Установка из официального репозитория заняла около 40 секунд.
Сгенерировать конфигурацию средствами самого образа
Без файла настроек контейнер не стартует. Образ создаст его сам вместе со всеми секретами.
docker run --rm -v /opt/synapse/data:/data \ -e SYNAPSE_SERVER_NAME=chat.example.ru -e SYNAPSE_REPORT_STATS=no \ ghcr.io/element-hq/synapse:v1.161.0 generateПереключить на PostgreSQL и закрыть регистрацию
В сгенерированном файле правим блок базы, ставим
enable_registration: falseи отключаем индикатор присутствия. База создается с жесткими требованиями к кодировке.POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --lc-collate=C --lc-ctype=C"Поднять стек и отдать наружу через прокси
Обратный прокси забирает на себя TLS и раздает пути: API сервера, веб-клиент и два файла well-known, по которым чужие серверы находят ваш.
cd /opt/synapse && docker compose pull && docker compose up -dЗавести первого пользователя
Регистрация закрыта, поэтому администратор создается изнутри контейнера по общему секрету из конфигурации.
docker exec synapse-synapse-1 register_new_matrix_user -u admin -p 'пароль' -a \ -c /data/homeserver.yaml http://localhost:8008
Что измерили
Цифры сняты на тестовом CPU2-RAM4-DISK50 по показателю anon в cgroup, а не по docker stats: тот считает страничный кэш как память процесса.
| Память в простое, весь стек | 147 МиБ: сервер 107, база 27, прокси 11, клиент 2 |
| Память после двух больших внешних комнат | 704 МиБ: сервер 479, база 206 |
| База данных | 53 МБ после установки, 408 МБ после федерации |
| От чистой машины до рабочего экрана | около 3 минут |
| Перезапуск до ответа снаружи | 20,6 с |
| Отклик API | 0,129 с в простое, 0,157 с под фоновой нагрузкой |
| Вход пользователя | 0,553 с |
Федерацию проверял не наш скрипт, а внешний арбитр - официальный federationtester проекта Matrix. Он ответил FederationOK: true, с валидными сертификатами и без ошибок соединения.
Проверено на версии 1.161.0, 29 сентября 2026. На новых версиях результаты могут отличаться.
Вход в большую комнату стоит дорого, но платишь не сразу
Мы вошли в две крупные публичные комнаты matrix.org. Запрос вернулся за 9,9 и 4,4 секунды - и это обманчиво быстро.
Synapse отдает ответ с частичным состоянием комнаты. Сразу после входа админский интерфейс показывал в Matrix HQ тринадцать событий состояния, через несколько минут - 13 295.
Настоящая работа идет фоном. За четверть часа память сервера выросла со 107 до 511 МиБ, база - с 53 до 315 МБ, процессор держался на 20-50 процентах. Сервер при этом стоял пустой: один пользователь, ни одного сообщения.
| Момент | Память сервера | База |
|---|---|---|
| После установки | 107 МиБ | 53 МБ |
| Через 15 минут после первой комнаты | 511 МиБ | 315 МБ |
| Пик на второй комнате | 541 МиБ | - |
| Установившееся значение | 479 МиБ | 408 МБ |
Вывод для планирования: расход растет не от числа сотрудников, а от числа и размера внешних комнат, в которые входит сервер. Десяток рабочих комнат внутри компании почти ничего не стоит.
Старый тест больше не работает. Совет "зайди в #matrix:matrix.org и смотри, как сервер задыхается" писался про другую комнату: она переехала на двенадцатую версию протокола, а исторический гигант остался позади как предшественник.
Где может сломаться
Три вещи, на которые уходит время при первой установке.
Причина. В конфигурации нет блока почты, поэтому сервер не может отправить письмо и отказывает сразу.
Решение. Прописать SMTP в homeserver.yaml и привязать адрес пользователю. У нас после этого письмо о сбросе пароля дошло до ящика за секунды. Отказ здесь быстрый и понятный, хуже был бы молчаливый таймаут.
Причина. Нет делегирования: федерация ищет либо файл /.well-known/matrix/server на основном домене, либо порт 8448 с валидным сертификатом.
Решение. Отдавать well-known через прокси и проверять результат внешним federationtester, а не изнутри машины. Сервер без этого выглядит рабочим, но живет в одиночестве.
Имя сервера не меняется. Это главный необратимый шаг. Домен зашит в адреса пользователей и в ключ подписи; передумали - только новая установка и новые аккаунты. Ключ подписи из каталога данных обязательно в бэкап.
Безопасность и обновления
Публичный сервер начинают сканировать в первые же минуты: в логах прокси чужие адреса появились почти сразу после запуска.
Что закрыть до того, как сервер попадет в сеть: открытую регистрацию, индикатор присутствия (он дорог в федерации), превью ссылок и срок хранения чужих медиафайлов. Порты сервера и базы наружу не выставляем, только прокси.
enable_registration: false
presence:
enabled: false
url_preview_enabled: false
media_retention:
remote_media_lifetime: 30d
Обновление - смена тега образа и перезапуск, миграции базы применяются сами. Релизы выходят раз в одну-две недели, и примечания читать стоит: в 1.162 меняется версия комнат по умолчанию, а это влияет на совместимость.
Связь с другими стеками
- Mattermost - корпоративный чат без федерации: ставится проще и требует меньше внимания, но переписка с внешней организацией через него не идет.
- Keycloak или authentik - единый вход: Synapse умеет OIDC, и сотрудники заходят теми же учетными записями, что и в остальные сервисы.
- Свой почтовый сервер - письма о сбросе пароля и уведомления нужны серверу чата так же, как любому продукту с учетными записями.
- Резервное копирование - каталог данных с ключом подписи и база PostgreSQL. Потеря ключа означает потерю доверия других серверов.
Когда это НЕ ваш выбор
Нужен просто чат для небольшой команды
Федерация, шифрование и управление ключами - это работа администратора. Команде из нескольких человек дешевле обойдется продукт попроще.
Нет домена и нет желания им заниматься
Без домена с валидным сертификатом сервер работает, но остается изолированным, и главное свойство продукта не используется.
Нужен самый легкий сервер Matrix
Альтернативные реализации протокола расходуют заметно меньше памяти, хотя и отстают по возможностям. Synapse - самый полный и самый тяжелый.
Лицензия AGPL не проходит юридически
Для внутреннего использования она безопасна, но встраивание сервера в свой продукт потребует коммерческой лицензии Element.
Коротко о частом
Хватит ли 4 ГБ памяти?
Да. Весь стек с двумя большими внешними комнатами занял 704 МиБ, запас остается и на десяток рабочих комнат, и на небольшую команду.
Нужен ли отдельный клиент?
Да, сервер отдает только API. Мы ставили Element Web рядом, он открывается сразу на русском. Мобильные приложения подключаются к тому же серверу.
Можно ли поменять домен потом?
Нет. Имя сервера участвует в адресах пользователей и в ключе подписи. Смена означает новую установку с новыми аккаунтами.
Обязательна ли PostgreSQL?
Для эксплуатации да. SQLite проект допускает только для тестов, а сгенерированная по умолчанию конфигурация использует именно ее - это надо исправить до запуска.
Что бэкапить?
Каталог данных с ключом подписи сервера и базу PostgreSQL. Без ключа другие серверы перестанут доверять вашему.
Правда ли, что бесплатная версия не годится для прода?
Это формулировка со страницы цен вендора. На нашем стенде Community-сборка работала стабильно, память и отклик укладывались в CPU2-RAM4-DISK50. Чего у нее нет - поддержки от Element без подписки.
Как заводить сотрудников?
Открытую регистрацию на федеративном сервере держать нельзя. Пользователей создает администратор командой изнутри контейнера или через единый вход по OIDC.
Итог
Synapse 1.161.0 на машине за 500 рублей в месяц дает то, чего не дают ни Slack, ни self-hosted чаты попроще: переписку на своем домене, шифрование по умолчанию и прямую связь с серверами других организаций. В простое весь стек занимает 147 МиБ, после входа в две большие внешние комнаты - 704 МиБ. Формулировку вендора про непригодность бесплатной сборки наш стенд не подтвердил: она работает, отвечает за десятые доли секунды и переживает перезапуск за двадцать секунд. За подписку покупается не стабильность, а поддержка и обещанная экономия памяти на больших инсталляциях. Цена входа - домен, полчаса настройки и понимание, что имя сервера выбирается один раз.
Этот стек у нас запущен на тарифе CPU2-RAM4-DISK50. Нашли баг в гайде - напишите, поправим в течение дня.