Synapse

Налаштування та адміністрування Matrix Synapse сервера.

Встановлення

Docker Compose

version: '3.8'

services:
  synapse:
    image: matrixdotorg/synapse:latest
    container_name: synapse
    restart: unless-stopped
    environment:
      - SYNAPSE_SERVER_NAME=matrix.example.com
      - SYNAPSE_REPORT_STATS=no
    volumes:
      - synapse-data:/data
    ports:
      - "8008:8008"
      - "8448:8448"

  postgres:
    image: postgres:15
    restart: unless-stopped
    environment:
      POSTGRES_USER: synapse
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: synapse
      POSTGRES_INITDB_ARGS: "--encoding=UTF8 --lc-collate=C --lc-ctype=C"
    volumes:
      - postgres-data:/var/lib/postgresql/data

volumes:
  synapse-data:
  postgres-data:

Генерація конфігурації

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

Конфігурація

homeserver.yaml

server_name: "matrix.example.com"
pid_file: /data/homeserver.pid

listeners:
  - port: 8008
    tls: false
    type: http
    x_forwarded: true
    resources:
      - names: [client, federation]
        compress: false

database:
  name: psycopg2
  args:
    user: synapse
    password: ${POSTGRES_PASSWORD}
    database: synapse
    host: postgres
    cp_min: 5
    cp_max: 10

log_config: "/data/matrix.example.com.log.config"

media_store_path: /data/media_store
uploads_path: /data/uploads

registration_shared_secret: "your-secret-here"

enable_registration: false
enable_registration_without_verification: false

trusted_key_servers:
  - server_name: "matrix.org"

Налаштування для MAS

# Вимкнути вбудовану авторизацію
password_config:
  enabled: false

# Делегувати на MAS
experimental_features:
  msc3861:
    enabled: true
    issuer: https://auth.example.com/
    client_id: synapse
    client_auth_method: client_secret_basic
    client_secret: ${MAS_CLIENT_SECRET}
    admin_token: ${MAS_ADMIN_TOKEN}

Federation

Налаштування делегації

DNS SRV запис:

_matrix._tcp.example.com. 3600 IN SRV 10 5 443 matrix.example.com.

Або через .well-known:

# /.well-known/matrix/server
{
  "m.server": "matrix.example.com:443"
}

# /.well-known/matrix/client
{
  "m.homeserver": {
    "base_url": "https://matrix.example.com"
  }
}

Перевірка federation

# Перевірити federation через API
curl https://federationtester.matrix.org/api/report?server_name=example.com

# Локальна перевірка
curl -X GET "https://matrix.example.com/_matrix/federation/v1/version"

Проблеми з federation

Проблема Причина Рішення
Не видно сервер DNS/порти Перевірити SRV та 443
Сертифікат Недійсний SSL Перевірити Let's Encrypt
Timeout Firewall Відкрити 8448

Корисні команди

Користувачі

# Створити адміна
docker exec -it synapse register_new_matrix_user \
  -u admin -p password -a \
  -c /data/homeserver.yaml \
  http://localhost:8008

# Список користувачів
curl -s -H "Authorization: Bearer $TOKEN" \
  "http://localhost:8008/_synapse/admin/v2/users" | jq

# Деактивувати користувача
curl -X POST \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"erase": true}' \
  "http://localhost:8008/_synapse/admin/v1/deactivate/@user:example.com"

Кімнати

# Список кімнат
curl -s -H "Authorization: Bearer $TOKEN" \
  "http://localhost:8008/_synapse/admin/v1/rooms" | jq

# Видалити кімнату
curl -X DELETE \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"purge": true}' \
  "http://localhost:8008/_synapse/admin/v2/rooms/!room:example.com"

Медіа

# Очистити віддалений кеш (старше 7 днів)
curl -X POST \
  -H "Authorization: Bearer $TOKEN" \
  "http://localhost:8008/_synapse/admin/v1/purge_media_cache?before_ts=$(date -d '7 days ago' +%s)000"

# Розмір медіа
du -sh /data/media_store

Моніторинг

Health check

curl http://localhost:8008/health

Метрики

# homeserver.yaml
enable_metrics: true
metrics_port: 9000
curl http://localhost:9000/metrics

Backup

Бази даних

# PostgreSQL dump
docker exec postgres pg_dump -U synapse synapse > synapse_backup.sql

# Відновлення
cat synapse_backup.sql | docker exec -i postgres psql -U synapse synapse

Медіа файли

# Backup media
tar -czvf media_backup.tar.gz /var/lib/docker/volumes/synapse-data/_data/media_store

# Signing keys (КРИТИЧНО!)
cp /data/*.signing.key /backup/

Оновлення

# Зупинити
docker compose stop synapse

# Оновити образ
docker compose pull synapse

# Запустити
docker compose up -d synapse

# Перевірити логи
docker compose logs -f synapse

Шлях: services/matrix/synapse.md

UMTC Wiki © 2026 | Ukrainian Military Tactical Communications