Разворачиваем собственный Matrix-сервер Synapse в Docker: федерация, TURN и безопасность

Matrix — это децентрализованный протокол обмена сообщениями с поддержкой федерации, шифрования и звонков. В этой инструкции — полный разбор установки собственного Matrix-сервера Synapse в Docker, с базой данных PostgreSQL, TURN-сервером для голосовых вызовов и веб-клиентом Element Web. Всё адаптировано под современную среду и сопровождается готовым docker-compose.yml.
1. Что потребуется
- Домен:
matrix.example.com - Сервер: от 2 GB RAM, 2 vCPU, диск 20 GB+
- ОС: Ubuntu 22.04 / Debian 12 или новее
- Порты: 80, 443 (TLS), 8448 (федерация), 3478 и 49152–49999 (TURN/STUN)
- Установленные: Docker + Docker Compose
2. Настройка DNS
matrix.example.com→ IP сервераelement.example.com→ IP сервера (если нужен отдельный домен для веб-клиента)
3. Подготовка структуры и compose-файла
sudo mkdir -p /var/synapse/{data,postgresql/data,turn}Пример docker-compose.yml:
version: "3.9"
services:
synapse:
image: matrixdotorg/synapse:latest
container_name: synapse
restart: unless-stopped
environment:
- SYNAPSE_CONFIG_PATH=/data/homeserver.yaml
volumes:
- /var/synapse/data:/data
depends_on:
- db
ports:
- "8008:8008"
- "8448:8448"
networks:
- synapse_network
db:
image: postgres:16-alpine
environment:
- POSTGRES_USER=synapse
- POSTGRES_PASSWORD=passwd
- POSTGRES_DB=synapse
volumes:
- /var/synapse/postgresql/data:/var/lib/postgresql/data
networks:
- synapse_network
synapse-admin:
image: awesometechnologies/synapse-admin:latest
ports:
- "8010:80"
networks:
- synapse_network
turnserver:
image: instrumentisto/coturn
environment:
- TURNSERVER_REALM=matrix.example.com
- TURNSERVER_STATIC_AUTH_SECRET=supersecret123
- TURNSERVER_NO_TLS=true
- TURNSERVER_NO_DTLS=true
ports:
- "3478:3478/udp"
- "3478:3478/tcp"
- "49152-49999:49152-49999/udp"
volumes:
- /var/synapse/turn:/etc/coturn
networks:
- synapse_network
element-web:
image: vectorim/element-web
ports:
- "8080:80"
networks:
- synapse_network
networks:
synapse_network: