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