SSD Nodes Learn 🎉 VPS от $5.50/мес
Руководства Matt ConnorАвтор: Matt Connor

Настройка и обслуживание Matrix Synapse на VPS

Узнайте, как поддерживать работу Matrix Synapse на VPS. В руководстве разобраны настройка Postgres, очистка медиафайлов, защита от спама и создание резервных копий для Ubuntu 24.04.

Что требуется для поддержания работоспособности homeserver Matrix Synapse

Matrix Synapse легко установить, но также легко запустить в запущенное состояние. Установка сводится к одному apt-репозиторию, одному файлу конфигурации, одному блоку настроек reverse proxy и одной DNS-записи. Поддержание работоспособности homeserver в течение года требует иных усилий: использования полноценной базы данных, очистки хранилища медиафайлов, ограничения регистрации для посторонних и создания резервных копий, охватывающих обе части сервера.

Данное руководство ориентировано на Ubuntu 24.04 LTS и предполагает установку Synapse из apt-репозитория matrix.org — источника пакетов, который проект Synapse поддерживает для Debian и Ubuntu. Версии пакетов обновляются каждые несколько недель, поэтому конкретные номера версий здесь не указаны. Все пути и параметры, приведённые ниже, соответствуют актуальной документации Synapse.

Масштабирование: что на самом деле дают 1 vCPU и 2 GB RAM

Опубликованные рекомендации по выбору ресурсов по состоянию на август 2026 года обычно указывают для homeserver Synapse конфигурацию с 1 vCPU и 2 GB RAM. Это справедливо для одного сценария: частный сервер, несколько пользователей, небольшие комнаты и отсутствие активных публичных комнат. Документация Synapse прямо говорит о другом случае. Она требует «минимум 1 GB свободной оперативной памяти, если вы хотите присоединиться к крупным публичным комнатам, таким как #matrix:matrix.org». Это свободная память сверх той, что потребляют Python, Postgres и ядро.

Одна комната может изменить требования к ресурсам из-за особенностей процесса присоединения. Когда локальный пользователь заходит в комнату, ваш homeserver становится её полноправным участником. Он получает каждое событие от всех остальных серверов в этой комнате, проверяет подпись каждого из них и локально сохраняет состояние комнаты. В крупной публичной комнате тысячи участников, распределённых по сотням серверов, поэтому ваш сервер выполняет эту работу постоянно, независимо от того, открывает ли ваш пользователь эту комнату снова. Выход из комнаты позже не удаляет уже сохранённую историю.

Большая часть RAM в Synapse уходит на кэши. Раздел caches содержит global_factor, который масштабирует все кэши одновременно, а переменная окружения SYNAPSE_CACHE_FACTOR задаёт тот же параметр. Увеличение этого значения расходует RAM, чтобы избежать лишних запросов к базе данных. Уменьшение — расходует CPU и время Postgres ради экономии RAM. Postgres также требует собственной памяти, поэтому на сервере с 2 GB RAM они конкурируют за одни и те же мегабайты.

Два практических правила для небольшого тарифа. Добавьте swap: swap не сделает Synapse быстрым, но предотвратит принудительное завершение процесса ядром (OOM killer) во время присоединения к крупной комнате. Затем следите за диском с первой же недели, так как две вещи, которые растут без ограничений — это хранилище медиафайлов и таблицы состояния комнат, и обе они находятся на диске.

Почему Postgres и почему SQLite перестает быть вариантом

Debian-пакет по умолчанию использует SQLite. Это подходит для первого запуска, но не годится для сервера, которым пользуются другие люди. SQLite разрешает только одного пишущего клиента одновременно. Трафик федерации и запросы клиентов записываются в базу в один и тот же момент, поэтому быстрый запрос ожидает завершения медленного. Симптом, на который жалуются пользователи — приложение случайным образом «зависает» на несколько секунд.

Вторая причина — структурная. Использование worker-процессов Synapse — это поддерживаемый способ задействовать более одного ядра CPU, а для работы worker-процессов требуется Postgres. Оставаясь на SQLite, вы отказываетесь от возможности масштабирования производительности и усложняете путь обновления.

Миграция на более поздних этапах поддерживается, но она требует простоя системы, поэтому выполните её до того, как у вас появятся пользователи. Synapse поставляется с synapse_port_db, который копирует базу данных SQLite в подготовленную базу Postgres:

synapse_port_db --sqlite-database homeserver.db --postgres-config homeserver-postgres.yaml

Если вы предпочитаете запускать базу данных в контейнере рядом с Synapse, ознакомьтесь с особенностями в запуске базы данных в Docker или на хосте.

Установка Synapse на Ubuntu 24.04

sudo apt install -y lsb-release wget apt-transport-https
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
sudo apt update
sudo apt install matrix-synapse-py3

В Ubuntu 24.04 lsb_release -cs выводит noble, а репозиторий matrix.org предоставляет пакет noble. Не используйте пакет matrix-synapse из официального архива Ubuntu. Проект Synapse рекомендует этого не делать, так как эти сборки отстают от релизов проекта и содержат известные уязвимости.

Установщик запрашивает имя сервера и записывает ответ в /etc/matrix-synapse/conf.d/server_name.yaml. Отвечайте внимательно. server_name — это часть идентификатора пользователя после двоеточия (@alice:example.com), которая встраивается в каждый создаваемый сервером чат. Изменение этого параметра позже не перенесет данные: это создаст новый homeserver. Используйте основной домен, example.com, даже если сам Synapse будет работать на matrix.example.com. Делегирование связывает их, и это тема следующего раздела.

Пакет запускает Synapse от имени пользователя matrix-synapse, хранит данные в /var/lib/matrix-synapse и считывает /etc/matrix-synapse/homeserver.yaml, а затем все файлы из /etc/matrix-synapse/conf.d/. Размещайте собственные настройки в небольших файлах внутри conf.d. Обновления пакета не затрагивают эти файлы.

sudo systemctl restart matrix-synapse
systemctl status matrix-synapse
sudo journalctl -u matrix-synapse -n 100 --no-pager

При успешном запуске слушатели активируются, после чего процесс переходит в режим ожидания. Юнит systemd перезапускает сервис через несколько секунд после любого завершения, поэтому при неверной конфигурации Synapse будет постоянно перезапускаться в цикле. Последние строки журнала указывают на ключ, который вызвал отказ.

Настройка Synapse для работы с Postgres

sudo apt install -y postgresql
sudo -u postgres createuser --pwprompt synapse_user
sudo -u postgres createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse

Локаль не является косметическим параметром. Synapse отказывается запускаться с базой данных, созданной с другими значениями COLLATE и CTYPE, если вы не укажете allow_unsafe_locale в конфигурации базы данных. Единственный задокументированный способ исправления в таком случае — это создание дампа и его развертывание в корректно созданной базе данных. Создавайте её правильно с первого раза.

database:
  name: psycopg2
  txn_limit: 10000
  args:
    user: synapse_user
    password: secretpassword
    dbname: synapse
    host: localhost
    port: 5432
    cp_min: 5
    cp_max: 10

Используйте ровно один ключ database: во всех ваших конфигурационных файлах. Замените блок SQLite внутри homeserver.yaml вместо добавления второй копии в conf.d, чтобы не возникало вопросов о том, какой из них активен. Перезапустите службу, а затем убедитесь, что Synapse действительно использует Postgres:

sudo -u postgres psql synapse -c "SELECT count(*) FROM users;"

Число означает, что Synapse успешно развернула свою схему в этой базе данных. Ошибка об отсутствии отношения (missing relation) означает, что приложение по-прежнему записывает данные в файл SQLite, а значит, редактируемый вами файл конфигурации не является тем, который считывается системой.

Reverse proxy, TLS и требования к файлам .well-known

Synapse ожидает подключения по обычному HTTP на порту 8008, привязанному к localhost. TLS и публичный порт обслуживаются обратным прокси-сервером, стоящим перед ним.

listeners:
- port: 8008
  tls: false
  type: http
  x_forwarded: true
  bind_addresses:
  - '::1'
  - '127.0.0.1'
  resources:
  - names:
    - client
    - federation
    compress: false

x_forwarded: true указывает Synapse доверять заголовку X-Forwarded-For, который устанавливает прокси. Без этого каждый клиент будет выглядеть так, будто он пришел с 127.0.0.1, поэтому механизм ограничения частоты запросов (rate limiting) будет видеть одного крайне активного локального пользователя и ограничивать всех сразу.

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:$server_port;
    client_max_body_size 50M;
    proxy_http_version 1.1;
}

В документации Synapse есть предупреждение об этом блоке, игнорирование которого стоит людям нескольких дней отладки. Не добавляйте путь, даже простой /, после порта в proxy_pass. В этом случае nginx выполняет канонизацию URI, что меняет байты, подписанные отправляющим сервером, и запросы федерации перестают проходить проверку подписи, хотя обычные клиентские запросы продолжают работать.

client_max_body_size должен быть как минимум не меньше значения max_upload_size в Synapse. Если в nginx установлено меньшее число, загрузки файлов, превышающие этот лимит, будут отклоняться nginx с ошибкой 413 Request Entity Too Large еще до того, как их увидит Synapse, поэтому в логах Synapse не будет записей, объясняющих причину сбоя.

Для получения сертификата следуйте руководству Certbot и Let's Encrypt в Ubuntu 24.04. Если вы еще не выбрали прокси, в сравнении обратных прокси описано, какой из них лучше справится с TLS-терминацией.

Делегирование позволяет server_name оставаться example.com, пока Synapse работает на matrix.example.com. Разместите два файла на основном домене:

location /.well-known/matrix/server {
    default_type application/json;
    return 200 '{"m.server": "matrix.example.com:443"}';
}

location /.well-known/matrix/client {
    default_type application/json;
    add_header Access-Control-Allow-Origin '*';
    return 200 '{"m.homeserver": {"base_url": "https://matrix.example.com"}}';
}

Файл server сообщает другим homeserver, куда отправлять трафик федерации; именно так федерация работает через порт 443 вместо стандартного 8448. Файл client сообщает Matrix-клиентам, какой URL обслуживает @alice:example.com. Заголовок Access-Control-Allow-Origin важен для файла client, так как браузерные клиенты запрашивают его кросс-доменно (cross-origin). Без этого заголовка браузер заблокирует ответ, и клиент сообщит, что не может найти ваш homeserver.

Оба файла должны отдаваться по корректному TLS с самого example.com. Проверьте их, а затем посмотрите, что видит внешний мир:

curl -s https://example.com/.well-known/matrix/server
curl -s https://matrix.example.com/_matrix/federation/v1/version

Первая команда возвращает JSON, который вы создали. Вторая возвращает JSON-объект с указанием реализации сервера и его версии, что подтверждает доступность Synapse через прокси по пути федерации. Затем проверьте домен через тестер федерации Matrix по адресу https://federationtester.matrix.org, который проходит по тому же маршруту, что и реальный удаленный сервер.

Федерация или отказ от неё: принимайте решение осознанно

Федерация — это главная особенность Matrix, но она же составляет основную часть затрат. Федеративный homeserver принимает соединения от серверов, о которых вы никогда не слышали, получает их события, кэширует медиафайлы и хранит состояние для каждой комнаты, в которой участвуют ваши пользователи. Это решение по модели угроз, а не настройка по умолчанию.

Используйте федерацию, если вашим пользователям нужно связываться с людьми на других homeserver или если переносимость идентификатора — причина, по которой вы выбрали Matrix. Не используйте федерацию, если сервер существует для одной команды и все учётные записи на нём принадлежат вам. Закрытый сервер хранит меньше данных, получает меньше запросов и гораздо менее интересен для злоупотреблений.

Чтобы ограничить федерацию, а не отключать её полностью, Synapse использует список разрешённых серверов (allow list):

federation_domain_whitelist:
- lon.example.com
- nyc.example.com

Документация рекомендует также закрыть порт для прослушивания федерации на уровне межсетевого экрана, чтобы нежелательный трафик блокировался в сети, а не внутри Python. Чтобы полностью отключить федерацию, удалите federation из списка resources, не публикуйте /.well-known/matrix/server и оставьте порт 8448 закрытым.

Если причиной запуска Matrix был приватный командный чат и федерация изначально не требовалась, сравните стоимость эксплуатации с другими альтернативами Slack для self-hosted размещения, прежде чем останавливаться на Synapse. Rocket.Chat на Docker Compose обеспечивает командный чат на менее мощном оборудовании, так как ему не нужно хранить состояние комнат других организаций.

Медиа-репозиторий — это то, что незаметно заполняет диск

Файлы, которые загружают ваши пользователи, остаются на диске навсегда. Файлы, опубликованные пользователями на других домашних серверах, загружаются и кэшируются на вашем диске, как только один из ваших клиентов их отображает. Кроме того, Synapse создает миниатюры для изображений, поэтому одна фотография превращается в несколько файлов. По умолчанию срок хранения этих данных не ограничен.

Найдите хранилище и оцените его объем:

grep media_store_path /etc/matrix-synapse/homeserver.yaml
sudo du -sh /var/lib/matrix-synapse/media_store

Измерьте путь, который указан в вашей конфигурации. В пакете Debian данные Synapse хранятся в /var/lib/matrix-synapse, поэтому хранилище обычно находится там. Затем установите политику хранения в conf.d:

media_retention:
  local_media_lifetime: 90d
  remote_media_lifetime: 14d

Внимательно прочитайте эти две строки, так как это разные типы настроек. remote_media_lifetime удаляет кэш, и всё, что будет удалено, можно снова загрузить с сервера, которому принадлежит файл. local_media_lifetime безвозвратно удаляет загрузки ваших собственных пользователей по достижении указанного возраста. Команда, которая обменивается документами в чате и рассчитывает найти их через год, потеряет их. Многие серверы устанавливают только значение для удаленных файлов.

Для разовой очистки административный API принимает Unix-метку времени в миллисекундах:

BEFORE_TS=$(date -d '30 days ago' +%s%3N)
curl -X POST -H "Authorization: Bearer $ADMIN_TOKEN" \
  "https://matrix.example.com/_synapse/admin/v1/purge_media_cache?before_ts=$BEFORE_TS"

POST /_synapse/admin/v1/purge_media_cache удаляет кэшированные удаленные медиафайлы, к которым последний раз обращались до этой метки времени. POST /_synapse/admin/v1/media/delete?before_ts=<ms> удаляет локальные медиафайлы по тому же правилу. Сначала выполните очистку удаленных файлов и снова измерьте объем, так как на федеративном сервере удаленный кэш обычно занимает большую часть места.

Две настройки влияют на один и тот же диск. max_upload_size ограничивает размер одной загрузки и должна соответствовать client_max_body_size в nginx. url_preview_enabled: true заставляет ваш сервер загружать удаленные страницы, чтобы клиенты могли отображать предварительный просмотр ссылок, что расходует пропускную способность и сохраняет миниатюры контента, который никто вам не отправлял.

Закройте регистрацию, прежде чем ваш домашний сервер обнаружат

Сканеры находят открытый домашний сервер за считанные дни. Как только создание учетных записей становится свободным, ваш сервер превращается в источник спама во всех комнатах, с которыми он федеративен, и администраторы на той стороне блокируют ваш домен целиком. Репутационный ущерб сохраняется дольше, чем процесс очистки, так как списки блокировок ведутся вручную.

Synapse поставляется с закрытой регистрацией. enable_registration по умолчанию имеет значение false, а registration_requires_tokenfalse. Synapse также отказывается запускаться, если регистрация включена, а этап проверки отсутствует, если вы дополнительно не установите enable_registration_without_verification: true. Этот отказ является преднамеренным, поэтому не включайте эту опцию только для того, чтобы устранить ошибку при запуске.

Создавайте нужные учетные записи вручную:

sudo register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008

Утилита запрашивает имя пользователя, пароль и статус администратора сервера. Она считывает registration_shared_secret из конфигурации, которую вы передаете через -c, поэтому если она сообщает, что не может найти общий секрет (shared secret), укажите -c путь к файлу, в котором он хранится.

Когда создание учетных записей вручную перестает масштабироваться, промежуточным решением становятся токены регистрации. Токен — это строка, которую новый пользователь должен предоставить при регистрации, и для каждого токена можно установить ограничение на количество использований:

enable_registration: true
registration_requires_token: true
curl -X POST -H "Authorization: Bearer $ADMIN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"uses_allowed": 1}' \
  https://matrix.example.com/_synapse/admin/v1/registration_tokens/new

Если не указывать token в теле запроса, Synapse сгенерирует токен и вернет его. GET /_synapse/admin/v1/registration_tokens выводит список активных токенов. Оба вызова требуют токен доступа (access token) учетной записи администратора сервера, который вы получаете после входа под созданным ранее администратором.

Организация, которая уже управляет учетными записями в другом месте, может полностью отказаться от локальных паролей, поскольку Synapse может делегировать вход провайдеру OIDC (OpenID Connect), например Authentik в качестве self-hosted SSO провайдера. В таком случае добавление и удаление пользователей будет происходить в одном месте.

Резервная копия, позволяющая восстановить сервер

Резервная копия Synapse состоит из трех частей. Отсутствие любой из них делает восстановление сервера бесполезным.

  • База данных Postgres, содержащая все события, учетные записи и комнаты.
  • Каталог media store, в котором хранятся все загруженные файлы.
  • /etc/matrix-synapse, где находятся конфигурация и ключ подписи сервера.

Ключ подписи — это то, о чем часто забывают. Это закрытый ключ, которым ваш homeserver подписывает события, а удаленные серверы проверяют их с помощью соответствующего открытого ключа. Выполните grep signing_key_path /etc/matrix-synapse/homeserver.yaml, чтобы узнать, где он находится. Если вы его потеряете, то восстановите сервер, который не сможет доказать, что он является тем самым сервером, который уже знают ваши комнаты.

sudo -u postgres pg_dump --format=custom --file=/var/backups/synapse-$(date +%F).dump synapse
sudo tar czf /var/backups/synapse-etc-$(date +%F).tgz -C /etc matrix-synapse

Сначала сделайте дамп базы данных, затем скопируйте media store. Медиафайлы записываются один раз и ссылаются по ID, поэтому копия медиа, сделанная после дампа, может содержать только дополнительные файлы, но не пропущенные. Обратный порядок может привести к тому, что восстановленная база данных будет ссылаться на файл, который не попал в резервную копию.

Переносите все три части за пределы VPS. restic с удаленными снимками хорошо подходит для этой задачи, так как media store занимает большую часть объема и почти не меняется между запусками, поэтому дедупликация позволяет сохранять каждый снимок небольшим.

Затем отрепетируйте восстановление, так как резервная копия, которую вы никогда не восстанавливали, — это лишь предположение. Создайте второй VPS, установите тот же пакет, восстановите конфигурацию, создайте базу данных с той же кодировкой и локалью, pg_restore дамп в нее, скопируйте обратно media store и войдите в систему. Запишите, сколько времени это заняло. Это число и есть ваше реальное время восстановления.

Рост таблиц состояний: уплотнение

Synapse хранит состояние комнат в виде групп состояний, и на федеративном сервере state_groups_state часто становится самым большим объектом в базе данных. Прежде чем что-либо менять, выполните замеры:

sudo -u postgres psql synapse -c "SELECT pg_size_pretty(pg_database_size('synapse'));"
sudo -u postgres psql synapse -c "SELECT pg_size_pretty(pg_total_relation_size('state_groups_state'));"

Если эта таблица занимает большую часть базы данных, проект предлагает инструмент для её сжатия — rust-synapse-compress-state. Он переписывает иерархию групп состояний, сокращая количество строк без изменения логики состояния комнат. Инструмент написан на Rust:

sudo apt install -y build-essential libssl-dev pkg-config git
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
git clone https://github.com/matrix-org/rust-synapse-compress-state.git
cd rust-synapse-compress-state/synapse_auto_compressor
cargo build --release
./target/release/synapse_auto_compressor -p postgresql://synapse_user:secretpassword@localhost/synapse -c 500 -n 100

Параметр -c определяет количество групп состояний, обрабатываемых за один раз, а -n — количество таких порций за один запуск. Автоматический компрессор записывает прогресс, поэтому следующий запуск продолжится с того же места; это делает его безопасным для планирования. В документации указано, что изменения применяются в транзакциях к таблицам, работающим только на добавление, поэтому инструмент можно запускать при работающем Synapse. В любом случае, перед первым запуском сделайте резервную копию базы данных.

Один нюанс Postgres часто становится неожиданностью. Удаление строк возвращает место для повторного использования внутри Postgres, а не в файловую систему, поэтому размер df может не измениться после масштабного уплотнения. Команда VACUUM FULL возвращает место системе, но она накладывает исключительную блокировку на таблицу и требует свободного дискового пространства, примерно равного размеру самой таблицы. Планируйте эту операцию как техническое обслуживание, а не запускайте её спонтанно.

Проверки работоспособности сервера

systemctl status matrix-synapse
curl -s https://example.com/.well-known/matrix/server
curl -s https://matrix.example.com/_matrix/federation/v1/version
sudo -u postgres psql synapse -c "SELECT pg_size_pretty(pg_database_size('synapse'));"
sudo du -sh /var/lib/matrix-synapse/media_store

Состояние «здоров» означает, что юнит активен и не находится в цикле перезапуска, файл делегирования возвращает ваше значение m.server, эндпоинт версии федерации возвращает JSON, а два значения размера можно сравнить с показателями за прошлый месяц. Проверку размера часто пропускают, а переполнение диска — это сбой, который выводит сервер Synapse из строя без предупреждения: заполненный раздел блокирует запись в Postgres, после чего Synapse начинает отклонять все запросы, требующие обращения к базе данных.

FAQ

Сколько оперативной памяти требуется для сервера Matrix Synapse?

Для частного homeserver с небольшим количеством пользователей, маленькими комнатами и без участия в крупных публичных каналах достаточно 2 GB. Именно этот объем рекомендуют большинство руководств по подбору ресурсов по состоянию на август 2026 года. Документация Synapse требует наличия как минимум 1 GB свободной оперативной памяти сверх базовых нужд, если ваши пользователи планируют присоединяться к большим публичным комнатам, таким как #matrix:matrix.org. В этом случае сервер постоянно хранит состояние комнаты и обрабатывает её трафик. На тарифах с 2 GB памяти обязательно настройте swap, чтобы один крупный запрос на подключение не привел к завершению процесса ядром системы (OOM Killer).

Обязательно ли использовать PostgreSQL вместо SQLite?

Если пользователей больше нескольких человек — да. SQLite допускает только одну операцию записи одновременно, поэтому при нагрузке трафик федерации и запросы клиентов блокируют друг друга, из-за чего время ответа может достигать нескольких секунд. Worker-процессы Synapse, которые являются штатным способом использования нескольких ядер CPU, требуют наличия Postgres. Миграция базы данных в будущем возможна с помощью synapse_port_db, но она потребует простоя сервиса, поэтому создавайте базу данных через --encoding=UTF8 --locale=C --template=template0 до того, как у вас появятся пользователи.

Почему объем дискового пространства, занимаемый Synapse, постоянно растет?

Причина кроется в одной директории и одной таблице. Media store хранит каждый файл, загруженный в комнаты, где состоит ваш сервер, включая кэшированные копии медиафайлов удаленных пользователей и созданные миниатюры. Эти данные не удаляются автоматически, пока вы не настроите media_retention. Таблица state_groups_state увеличивается по мере накопления состояния комнат на сервере, участвующем в федерации, а rust-synapse-compress-state позволяет уменьшить её размер. Оцените оба показателя с помощью du -sh в вашей media_store_path и команды SELECT pg_size_pretty(pg_total_relation_size('state_groups_state'));, прежде чем решать, что именно требует очистки.

Как запретить посторонним регистрироваться на моем homeserver?

Оставьте параметр enable_registration со значением по умолчанию false и создавайте учетные записи с помощью register_new_matrix_user. Когда этот метод перестанет справляться, установите enable_registration: true вместе с registration_requires_token: true и выдавайте токены, созданные через POST /_synapse/admin/v1/registration_tokens/new. Не устанавливайте enable_registration_without_verification: true только ради того, чтобы Synapse перестал выдавать предупреждение при запуске. Открытый homeserver быстро станет источником спама, и администраторы других серверов заблокируют ваш домен целиком.

Должен ли мой homeserver участвовать в федерации?

Федерация — это осознанное решение об открытости, а не стандартная настройка. Включайте федерацию, если вашим пользователям нужно общаться с людьми на других homeserver. Отключите её, если сервер обслуживает одну команду: нефедерируемый сервер хранит меньше данных, получает меньше трафика и привлекает значительно меньше злоумышленников. В качестве промежуточного варианта используйте federation_domain_whitelist, чтобы ограничить федерацию списком доверенных доменов. Документация Synapse также рекомендует дополнительно ограничить доступ к порту федерации на уровне межсетевого экрана, а не полагаться только на проверки на уровне приложения.

#matrix#synapse#self-hosting#postgresql#federation