bolt Valebyte VPS от $4/мес — NVMe, запуск за 60 секунд.

Получить VPS arrow_forward
eco Начальный Туториал

Установка и настройка приватного сервера Matrix Synapse на VPS: создание защищенного мессенджера с поддержкой Element

calendar_month May 28, 2026 schedule 9 мин. чтения visibility 42 просмотров
Установка и настройка приватного сервера Matrix Synapse на VPS: создание защищенного мессенджера с поддержкой Element
info

Нужен сервер для этого гайда? Мы предлагаем выделенные серверы и VPS в 50+ странах с мгновенной настройкой.

Нужен сервер для этого гайда?

Разверните VPS или выделенный сервер за минуты.

Установка и настройка приватного сервера Matrix Synapse на VPS: создание защищенного мессенджера с поддержкой Element

TL;DR

В данном руководстве мы подробно разберем процесс развертывания собственного сервера Matrix на базе эталонной реализации Synapse с использованием Docker Compose, базы данных PostgreSQL и обратного прокси-сервера Caddy для автоматического получения SSL-сертификатов. Вы получите полностью суверенную систему мгновенного обмена сообщениями, поддерживающую сквозное шифрование (E2EE), голосовые и видеозвонки, а также возможность интеграции с другими мессенджерами через мосты.

  • Полный контроль: Ваши данные принадлежат только вам, а не корпорациям.
  • Безопасность: Настройка сквозного шифрования и защищенных каналов связи.
  • Федерация: Возможность общаться с пользователями других серверов Matrix.
  • Масштабируемость: Использование PostgreSQL и Docker для стабильной работы под нагрузкой.
  • Современные клиенты: Подключение Element (Web, Desktop, Mobile) и Element X.

1. Что мы настраиваем и зачем: философия Matrix

Схема: 1. Что мы настраиваем и зачем: философия Matrix
Схема: 1. Что мы настраиваем и зачем: философия Matrix

Matrix — это не просто очередной мессенджер, это открытый протокол для децентрализованной коммуникации в реальном времени. В отличие от закрытых систем вроде Telegram, WhatsApp или Slack, Matrix позволяет пользователям разных серверов общаться друг с другом так же легко, как мы обмениваемся электронными письмами. Эта концепция называется федерацией.

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

Почему стоит выбрать self-hosted решение на VPS вместо использования публичных серверов вроде matrix.org?

  • Приватность: Метаданные ваших разговоров не покидают ваш сервер (если вы не используете федерацию).
  • Производительность: Публичные серверы часто перегружены, что приводит к задержкам при доставке сообщений. Свой VPS обеспечивает мгновенный отклик.
  • Гибкость: Вы сами решаете, какой объем медиафайлов хранить, какие мосты (bridges) устанавливать и кого регистрировать на сервере.

В этом руководстве мы ориентируемся на актуальные версии ПО 2026 года, используя контейнеризацию, что делает процесс установки воспроизводимым и чистым.

2. Какой VPS-конфиг нужен под эту задачу

Схема: 2. Какой VPS-конфиг нужен под эту задачу
Схема: 2. Какой VPS-конфиг нужен под эту задачу

Matrix Synapse исторически считался ресурсоемким сервисом, особенно в плане потребления оперативной памяти. Однако с оптимизациями последних лет и использованием PostgreSQL, требования стали более демократичными. Тем не менее, для комфортной работы группы пользователей и использования мостов (например, в WhatsApp или Telegram), экономить на ресурсах не стоит.

Ресурс Минимальные (1-5 чел) Рекомендуемые (20+ чел / Мосты)
CPU 1 vCPU (современное ядро) 2-4 vCPU
RAM 2 GB (с активным Swap) 4 GB - 8 GB
Диск 20 GB SSD/NVMe 80 GB+ NVMe (зависит от медиа)
Сеть 100 Mbps 1 Gbps

Важно учитывать тип дисковой подсистемы. Matrix активно работает с базой данных при поиске и синхронизации комнат, поэтому NVMe-накопители значительно повышают отзывчивость интерфейса в клиенте Element. Для стабильной и быстрой работы мессенджера можно арендовать VPS с указанными характеристиками, что обеспечит необходимый запас производительности для базы данных PostgreSQL и кэширования медиафайлов.

Когда стоит рассмотреть dedicated сервер? Если вы планируете развертывание корпоративного мессенджера на 100+ сотрудников с хранением терабайтов архивов или если вам требуется максимальная изоляция ресурсов для обеспечения безопасности. Для большинства частных задач и малого бизнеса мощного VPS будет более чем достаточно.

Локация сервера: Выбирайте локацию, максимально близкую к основной массе пользователей. Это минимизирует задержки (latency) при установке WebRTC-соединений во время звонков.

3. Подготовка сервера: безопасность и база

Схема: 3. Подготовка сервера: безопасность и база
Схема: 3. Подготовка сервера: безопасность и база

Прежде чем устанавливать Synapse, необходимо подготовить операционную систему. Мы будем использовать Ubuntu 24.04 LTS или 26.04 LTS, так как они имеют лучшую поддержку Docker-пакетов и свежие ядра.

Первым делом обновим систему и создадим ограниченного пользователя с правами sudo, чтобы не работать под root:


# Обновление индекса пакетов и системы
sudo apt update && sudo apt upgrade -y

# Создание пользователя (замените 'adminuser' на свое имя)
sudo adduser adminuser
sudo usermod -aG sudo adminuser

# Переключение на нового пользователя
su - adminuser

Настройка базового фаервола (UFW) критична. Matrix требует открытия нескольких портов:

  • 80/TCP — для проверки Let's Encrypt (HTTP).
  • 443/TCP — основной клиентский трафик (HTTPS).
  • 8448/TCP — федерация (взаимодействие между серверами Matrix).
  • 3478, 5349 (UDP/TCP) — для работы STUN/TURN (звонки).

sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 8448/tcp
sudo ufw allow 3478/udp
sudo ufw enable

Также рекомендуется установить Fail2Ban для защиты SSH от брутфорс-атак:


sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

4. Установка Docker и вспомогательных утилит

Схема: 4. Установка Docker и вспомогательных утилит
Схема: 4. Установка Docker и вспомогательных утилит

В 2026 году Docker является стандартом де-факто для развертывания сложных приложений. Это изолирует зависимости Synapse (которые завязаны на Python) от системных библиотек и упрощает процесс обновления.


# Установка необходимых утилит
sudo apt install -y curl gnupg lsb-release

# Добавление официального репозитория Docker
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Установка Docker Engine и Docker Compose
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# Проверка установки
docker --version && docker compose version

Добавьте своего пользователя в группу docker, чтобы запускать контейнеры без sudo:


sudo usermod -aG docker $USER
# Перелогиньтесь, чтобы изменения вступили в силу

5. Пошаговая установка Matrix Synapse

Схема: 5. Пошаговая установка Matrix Synapse
Схема: 5. Пошаговая установка Matrix Synapse

Мы будем использовать структуру каталогов в /opt/matrix для хранения всех конфигураций и данных. Это упрощает создание бэкапов.


sudo mkdir -p /opt/matrix/synapse/data
sudo chown -R $USER:$USER /opt/matrix
cd /opt/matrix

Сначала нам нужно сгенерировать начальный конфигурационный файл. Для этого воспользуемся официальным образом Synapse:


docker run -it --rm \
    -v /opt/matrix/synapse/data:/data \
    -e SYNAPSE_SERVER_NAME=example.com \
    -e SYNAPSE_REPORT_STATS=yes \
    matrixdotorg/synapse:latest generate

Важно: Замените example.com на ваш реальный домен или поддомен (например, matrix.example.com). Этот параметр нельзя будет легко изменить позже, так как он становится частью ваших User ID (например, @user:example.com).

Теперь создадим файл docker-compose.yml в директории /opt/matrix, который будет объединять Synapse и базу данных PostgreSQL:


cat < docker-compose.yml
services:
  db:
    image: postgres:16-alpine
    restart: always
    environment:
      POSTGRES_USER: synapse
      POSTGRES_PASSWORD: your_strong_password
      POSTGRES_DB: synapse
      POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --lc-collate=C --lc-ctype=C"
    volumes:
      - ./postgresdata:/var/lib/postgresql/data

  synapse:
    image: matrixdotorg/synapse:latest
    restart: always
    depends_on:
      - db
    ports:
      - "8008:8008"
    volumes:
      - ./synapse/data:/data
    environment:
      - SYNAPSE_CONFIG_PATH=/data/homeserver.yaml
EOF

6. Глубокая конфигурация: homeserver.yaml и PostgreSQL

Схема: 6. Глубокая конфигурация: homeserver.yaml и PostgreSQL
Схема: 6. Глубокая конфигурация: homeserver.yaml и PostgreSQL

По умолчанию Synapse генерирует конфиг для SQLite, но для продакшена на VPS обязателен PostgreSQL. Отредактируем /opt/matrix/synapse/data/homeserver.yaml.

Найдите секцию database и замените её на следующую:


database:
  name: psycopg2
  args:
    user: synapse
    password: your_strong_password
    database: synapse
    host: db
    cp_min: 5
    cp_max: 10

Настройка регистрации: По умолчанию регистрация новых пользователей закрыта. Если вы хотите создать первого аккаунта, временно включите её или используйте командную строку. Для безопасности лучше оставить enable_registration: false и создавать пользователей вручную.

Секретные ключи: Убедитесь, что registration_shared_secret заполнен длинной случайной строкой. Это позволит административным инструментам взаимодействовать с API.

Запуск сервера:


docker compose up -d

Создание первого пользователя (администратора):


docker exec -it matrix-synapse-1 register_new_matrix_user \
    -c /data/homeserver.yaml http://localhost:8008

Следуйте подсказкам: введите логин, пароль и ответьте "yes" на вопрос о правах администратора.

7. Настройка TLS/HTTPS через Caddy и делегирование домена

Схема: 7. Настройка TLS/HTTPS через Caddy и делегирование домена
Схема: 7. Настройка TLS/HTTPS через Caddy и делегирование домена

Matrix-клиенты и другие серверы общаются через HTTPS. Мы будем использовать Caddy, так как он автоматически управляет сертификатами и имеет крайне простой синтаксис.

Добавьте Caddy в ваш docker-compose.yml:


  caddy:
    image: caddy:latest
    restart: always
    ports:
      - "80:80"
      - "443:443"
      - "8448:8448"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - ./caddy_data:/data
      - ./caddy_config:/config

Создайте файл Caddyfile в /opt/matrix:


example.com:443, example.com:8448 {
    reverse_proxy synapse:8008
    
    header {
        Access-Control-Allow-Origin 
        Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"
        Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept, Authorization"
    }
}

Делегирование (Well-known): Чтобы другие серверы могли найти ваш сервер Matrix, нужно настроить .well-known файлы. Это позволяет использовать домен example.com, даже если сам Synapse запущен на поддомене matrix.example.com.

Добавьте в Caddyfile блок для отдачи JSON:


example.com {
    handle_path /.well-known/matrix/server {
        header Content-Type application/json
        respond {"m.server": "example.com:443"}
    }
    handle_path /.well-known/matrix/client {
        header Content-Type application/json
        header Access-Control-Allow-Origin 
        respond {"m.homeserver": {"base_url": "https://example.com"}}
    }
}

8. Настройка звонков: установка Coturn (STUN/TURN)

Схема: 8. Настройка звонков: установка Coturn (STUN/TURN)
Схема: 8. Настройка звонков: установка Coturn (STUN/TURN)

Для работы аудио и видеозвонков через Element (особенно когда пользователи находятся за NAT), необходим TURN-сервер. Мы установим Coturn.

Добавьте сервис в docker-compose.yml:


  coturn:
    image: coturn/coturn:latest
    restart: always
    net: host
    volumes:
      - ./coturn.conf:/etc/coturn/turnserver.conf

Пример базового coturn.conf:


use-auth-secret
static-auth-secret=ВАШ_ОЧЕНЬ_СИЛЬНЫЙ_СЕКРЕТ
realm=example.com
listening-port=3478
tls-listening-port=5349
min-port=49152
max-port=65535

В homeserver.yaml укажите данные TURN-сервера:


turn_uris: ["turn:example.com:3478?transport=udp", "turn:example.com:3478?transport=tcp"]
turn_shared_secret: "ВАШ_ОЧЕНЬ_СИЛЬНЫЙ_СЕКРЕТ"
turn_user_lifetime: 86400000

9. Бэкапы, обновление и обслуживание

Администрирование Matrix сервера требует регулярного внимания к двум вещам: размеру базы данных и актуальности версий ПО.

Стратегия бэкапа

Вам необходимо бэкапить три компонента:

  1. База данных: Дамп PostgreSQL.
  2. Конфигурационные файлы: homeserver.yaml, Caddyfile, ключи подписи (signing keys).
  3. Медиа-хранилище: Папка media_store (самая объемная часть).

Пример простого скрипта бэкапа (backup.sh):


#!/bin/bash
BACKUP_DIR="/opt/backups/$(date +%Y-%m-%d)"
mkdir -p $BACKUP_DIR

# Дамп БД
docker exec matrix-db-1 pg_dump -U synapse synapse > $BACKUP_DIR/db.sql

# Копирование конфигов
cp /opt/matrix/synapse/data/homeserver.yaml $BACKUP_DIR/
cp /opt/matrix/synapse/data/*.signing.key $BACKUP_DIR/

# Архивирование (без медиа для экономии места, их лучше бэкапить отдельно через rsync)
tar -czf $BACKUP_DIR/configs.tar.gz -C /opt/matrix/synapse/data .

Очистка кэша медиа

Matrix хранит копии всех медиафайлов из федеративных комнат. Чтобы диск не переполнился, настройте автоматическую очистку в homeserver.yaml:


media_retention_rules:
  - type: remote
    max_lifetime: 30d

Обновление

Обновление происходит путем смены тега образа или простого перезапуска с latest:


docker compose pull
docker compose up -d

10. Troubleshooting + FAQ

Ошибка: "Federation failed" при попытке зайти в публичные комнаты

Проверьте порт 8448. Он должен быть открыт в UFW и проброшен в Caddy. Воспользуйтесь сервисом Matrix Federation Tester, чтобы убедиться, что ваш сертификат валиден и SRV-записи или well-known файлы настроены верно.

Почему Synapse потребляет так много RAM?

Synapse написан на Python и кэширует много данных в памяти для ускорения доступа. Если памяти мало, убедитесь, что вы используете PostgreSQL и настроили лимиты кэша в homeserver.yaml (параметр caches.global_factor).

Какой VPS-конфиг минимально подойдёт?

Для одного пользователя достаточно 2 ГБ RAM и 1 vCPU, но система будет работать медленно при входе в большие комнаты (например, Matrix HQ). Для стабильной работы рекомендуем 4 ГБ RAM.

Что выбрать — VPS или dedicated для этой задачи?

Для личного мессенджера и небольших сообществ VPS — идеальный выбор из-за гибкости и возможности быстрого бэкапа снимков (snapshots). Dedicated сервер нужен только при огромных объемах медиа-трафика или специфических требованиях к безопасности данных.

Как подключить Element X?

Element X требует поддержки протокола Sliding Sync. В 2026 году он встроен в Synapse, но может требовать отдельной активации в конфигурации. Убедитесь, что ваш клиент поддерживает версию протокола Matrix 1.4+.

Можно ли перенести сервер на другой домен?

Практически нет. server_name зашит в ID всех сообщений и комнат в базе данных. Смена домена равносильна созданию нового сервера с нуля.

Проблема с отправкой уведомлений на мобильные устройства

Matrix использует Push Gateway. Для Element используется matrix.org пуш-сервер. Убедитесь, что ваш сервер имеет доступ к интернету и не блокирует исходящие запросы к портам 443.

11. Выводы и следующие шаги

Поздравляем! Вы развернули собственный полноценный сервер Matrix Synapse. Теперь у вас есть защищенная платформа для общения, которая не зависит от политики сторонних компаний и предоставляет полный контроль над приватностью.

В качестве следующих шагов рекомендуем изучить:

  • Установка мостов (Bridges): Подключите свои аккаунты Telegram, WhatsApp и Signal к Matrix через mautrix мосты, чтобы использовать Element как единый клиент для всех мессенджеров.
  • Интеграция с LDAP/OIDC: Если вы настраиваете сервер для компании, подключите существующую базу пользователей.
  • Мониторинг: Установите связку Prometheus + Grafana для отслеживания нагрузки на сервер и потребления ресурсов Synapse.

Matrix — это мощный инструмент, и владение собственным узлом в этой сети делает вас частью глобальной экосистемы свободного общения.

Поделиться этой записью:

установка и настройка приватного сервера matrix synapse на vps: создание защищенного мессенджера с поддержкой element
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.