Все системы работают в штатном режиме 21 принимаемые криптовалюты · Monero приветствуется Политика без KYC
ChainVPS

Чат · без KYC

Хостинг Matrix (Synapse) на офшорном VPS

Разверните собственный домашний сервер Matrix на офшорном VPS без KYC и храните ключи от собственной федеративной сети чата со сквозным шифрованием у себя.

Что это такое

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

Почему размещать это оффшорно

Метаданные чата (кто с кем общается, когда и откуда) — это именно тот тип данных, который централизованные платформы и юрисдикции их хостинга логируют и передают по запросу. На офшорном VPS без KYC, оплаченном криптовалютой, домашний сервер, хранящий сообщения вашего сообщества и ключи шифрования, не привязан ни к какой реальной личности и находится в дружественной к приватности юрисдикции, вне досягаемости вашей родной страны.

Развёртывание

Рабочая эталонная конфигурация

Скопируйте это на новый инстанс ChainVPS. Замените плейсхолдеры и запустите.

docker-compose.yml
# ── One-time setup, run in order on Ubuntu 24.04 (Docker + compose-plugin installed) ──
#
# 1. Generate Synapse's config (replace matrix.example.com with your real domain):
#    mkdir -p synapse-data pgdata
#    docker run --rm -v "$(pwd)/synapse-data:/data" \
#      -e SYNAPSE_SERVER_NAME=matrix.example.com \
#      -e SYNAPSE_REPORT_STATS=no \
#      ghcr.io/element-hq/synapse:latest generate
#
# 2. In synapse-data/homeserver.yaml, REPLACE the generated sqlite `database:`
#    block with the postgres block shown at the bottom of this file, and add
#    `x_forwarded: true` under the port-8008 listener (you are behind a proxy).
#
# 3. Bring the stack up:  docker compose up -d
#
# 4. Create your admin user:
#    docker compose exec synapse register_new_matrix_user \
#      -u admin -a -c /data/homeserver.yaml http://localhost:8008
#
# 5. Put a TLS reverse proxy (Caddy/nginx) on 443 -> 127.0.0.1:8008 and serve
#    /.well-known/matrix/server + /.well-known/matrix/client for federation.

services:
  db:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_USER: synapse
      POSTGRES_PASSWORD: CHANGE_ME_STRONG_DB_PASSWORD
      POSTGRES_DB: synapse
      # Synapse REQUIRES the DB to use C locale — this is a hard requirement:
      POSTGRES_INITDB_ARGS: "--encoding=UTF8 --locale=C"
    volumes:
      - ./pgdata:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U synapse"]
      interval: 10s
      timeout: 5s
      retries: 5

  synapse:
    image: ghcr.io/element-hq/synapse:latest
    restart: unless-stopped
    depends_on:
      db:
        condition: service_healthy
    environment:
      SYNAPSE_SERVER_NAME: matrix.example.com
      SYNAPSE_REPORT_STATS: "no"
    volumes:
      - ./synapse-data:/data
    ports:
      # Client + federation HTTP. Bound to localhost — TLS is terminated by
      # your reverse proxy. Never expose 8008 to the internet in the clear.
      - "127.0.0.1:8008:8008"

# ── Paste this into synapse-data/homeserver.yaml, replacing the sqlite block ──
# database:
#   name: psycopg2
#   args:
#     user: synapse
#     password: CHANGE_ME_STRONG_DB_PASSWORD
#     dbname: synapse
#     host: db
#     port: 5432
#     cp_min: 5
#     cp_max: 10

Файрвол

Порты для открытия

ПортПротоколНазначение
443TCPHTTPS-обратный прокси: Element/клиентский API + делегирование федерации через /.well-known (единственный порт, который должен быть доступен из интернета)
8008TCPHTTP-листенер Synapse для клиентов и федерации — привязывайте только к 127.0.0.1, TLS обрабатывается прокси
8448TCPОпциональный порт для прямой федерации; нужен только если вы НЕ используете делегирование через .well-known (требует собственного TLS)
5432TCPPostgreSQL — только внутренняя сеть Docker, никогда не публикуйте на хост или в интернет

Подбор оптимального размера

Какой план вам нужен

Лёгкий

VPS Nano / Small (2 vCPU, 2-4 GB RAM)

Личный или семейный сервер, менее ~10 пользователей, минимальная федерация или её отсутствие. Synapse требователен к памяти — 2 GB это реалистичный минимум, 4 GB если вы состоите в крупных публичных комнатах.

Средний

VPS Pro (4 vCPU, 8 GB RAM)

Небольшое сообщество от десятков до нескольких сотен пользователей с активной федерацией. Настройте кэши Synapse и shared_buffers Postgres; SSD-хранилище важно для медиа и БД.

Тяжёлый

Dedicated (8+ ядер, 16-32 GB RAM)

От сотен до тысяч пользователей или участие в очень крупных федеративных комнатах. Разделите Synapse на воркеры (federation sender, sync, media) и настройте Postgres отдельно; безлимитный трафик не ограничивает медиа- и федеративный обмен данными.

Лучшие локации: Выбирайте локацию уровня приватности для сервера коммуникаций: Швейцария и Исландия предлагают юрисдикции с сильной защитой данных и являются естественным домом для домашнего сервера, хранящего метаданные сообщений и ключи, тогда как Нидерланды и Люксембург дают маршруты с низкой задержкой и хорошим пирингом в Европу для более плавного чата и голосовой связи в реальном времени. Поскольку Matrix работает в реальном времени, выбирайте регион уровня приватности, ближайший к вашим основным пользователям; безлимитный трафик и включённая защита от DDoS важны, поскольку федеративный, обращённый в интернет домашний сервер является постоянной мишенью.

Обеспечьте полную защиту

Чек-лист по усилению защиты

  • Отключите открытую регистрацию: установите enable_registration: false, либо ограничьте регистрацию через registration_requires_token с токенами для каждого приглашения — открытый сервер Matrix обнаруживается и заваливается спам-ботами в течение нескольких дней.
  • Контроль федерации: используйте делегирование через /.well-known/matrix/server, чтобы ваш server_name оставался чистым (@user:example.com), а если сервер приватный — настройте federation_domain_whitelist (или полностью отключите федерацию), чтобы неизвестные серверы не могли до вас достучаться.
  • Ограничьте предпросмотр URL и медиа: url_preview_enabled загружает произвольные URL на стороне сервера (риск SSRF) — оставьте стандартный url_preview_ip_range_blacklist для приватных диапазонов, ограничьте max_upload_size и регулярно запускайте очистку/удержание медиафайлов, так как хранилище медиа растёт неограниченно.
  • Ужесточите лимиты частоты запросов за прокси: установите x_forwarded: true на листенере 8008, чтобы Synapse видел реальные IP клиентов, затем настройте rc_login, rc_registration и rc_message для защиты от брутфорса и злоупотреблений; защита от DDoS ChainVPS покрывает уровень L3/4 под этим.
  • Делайте резервные копии Postgres и ключа подписи: регулярно выгружайте БД и копируйте synapse-data/*.signing.key за пределы сервера — потеря ключа подписи означает безвозвратную утрату идентичности сервера и всего доверия федерации.
  • Следите за обновлениями: фиксируйте и регулярно обновляйте тег ghcr.io/element-hq/synapse, оставляйте report_stats: no и никогда не публикуйте порты 8008 или 5432 в интернет — доступным должен быть только 443 (и опционально 8448).

Вопросы

Хостинг Matrix (Synapse) — FAQ

Нужен ли мне собственный домен?

Да. Идентификаторы пользователей Matrix и федерация привязаны к домену (например, @you:example.com). Вам нужен домен с DNS, который вы контролируете, чтобы указать на VPS и раздавать федеративные записи /.well-known. Домен можно зарегистрировать через регистратора, уважающего приватность; сам сервер при этом остаётся без KYC.

Могу ли я запустить Synapse полностью приватно, без федерации?

Да. Установите пустой federation_domain_whitelist или уберите листенер федерации, чтобы ваш домашний сервер никогда не взаимодействовал с публичной сетью Matrix. Ваши пользователи по-прежнему получат полноценный чат, голосовую и видеосвязь со сквозным шифрованием между собой — целиком на вашем офшорном сервере.

Почему PostgreSQL вместо стандартного SQLite?

Synapse поставляется с SQLite только для быстрого тестирования. Он не справляется с конкурентной нагрузкой или нагрузкой федерации и не может масштабироваться с помощью воркеров. Любое реальное развёртывание должно использовать PostgreSQL, созданный с локалью C (файл compose выше делает это за вас); миграция позже будет болезненной, поэтому начинайте сразу с Postgres.

Сколько RAM реально нужно Synapse?

Больше, чем обычно ожидают. Тихий однопользовательский сервер укладывается в ~1.5-2 GB, но как только вы вступаете в крупные федеративные комнаты, кэши для каждой комнаты резко увеличивают потребление памяти. Закладывайте 4 GB для небольшого сообщества и масштабируйте кэши (caches: global_factor) под ваш объём RAM, а не давайте им расти бесконтрольно.

Какой клиент должны установить мои пользователи?

Element (веб, десктоп, iOS, Android) — стандартный клиент Matrix, который подключается к вашему домашнему серверу через ввод его URL. Запись /.well-known/matrix/client, которую вы раздаёте на 443, позволяет Element автоматически обнаружить ваш сервер только по Matrix ID пользователя.

Повлияет ли офшорный хостинг на федерацию или качество звонков?

Нет. Федерация работает по стандартному HTTPS независимо от локации, а включённая защита от DDoS обеспечивает стабильность сервера, обращённого в интернет. Для голосовой/видеосвязи в реальном времени выбирайте локацию уровня приватности, ближайшую к вашим пользователям, чтобы минимизировать задержку; Нидерланды и Люксембург имеют хороший пиринг для европейского трафика.

Больше для самостоятельного хостинга

Другие стеки в один клик

Разверните Matrix (Synapse)
в течение следующих 60 секунд.

Безлимитный трафик · DDoS-защита включена · 21 криптовалюта · без KYC.