Matrix Synapse
WARNING
Вынести coturn в отдельный стэк
/assets/docker/s1/matrix/server/synapse/docker-compose.yml
version: "3.8"
services:
synapse:
container_name: synapse
image: docker.io/matrixdotorg/synapse
restart: always
env_file:
- stack.env
environment:
- SYNAPSE_CONFIG_PATH=/data/homeserver.yaml
networks:
- intra_net
- synapse
external_links:
- postgresql:postgresql
volumes:
- synapse_data:/data
- /var/lib/docker/volumes/matrix_synapse_data/_data/homeserver.yaml:/data/homeserver.yaml:ro
ports:
- "8008:8008"
coturn:
container_name: coturn
image: coturn/coturn:latest
restart: always
ports:
- "3478:3478/udp" # STUN/TURN UDP
- "3478:3478/tcp" # STUN/TURN TCP
- "3479:3479/udp" # STUN/TURN UDP Alt port (RFC5780 support)
- "3479:3479/tcp" # STUN/TURN TCP Alt port (RFC5780 support)
- "5349:5349/udp" # STUN/TURN DTLS
- "5349:5349/tcp" # STUN/TURN TLS
- "5350:5350/udp" # STUN/TURN DTLS Alt port (RFC5780 support)
- "5350:5350/tcp" # STUN/TURN TLS Alt port (RFC5780 support)
- "49152:65535/udp" # UDP media ports for TURN relay
env_file:
- stack.env
environment:
PORT: 3478
ALT_PORT: 3479
TLS_PORT: 5349
TLS_ALT_PORT: 5350
MIN_PORT: 49152
MAX_PORT: 65535
JSON_CONFIG: '{"config":["no-auth"]}'
volumes:
- /var/lib/docker/volumes/stun_data/_data/turnserver.conf:/etc/turnserver.conf:ro
networks:
- frontend
- coturn
- intra_net
synapse-admin:
container_name: synapse-admin
image: awesometechnologies/synapse-admin:latest
ports:
- "3040:80"
restart: unless-stopped
networks:
- intra_net
# build:
# args:
# - NODE_OPTIONS="--max_old_space_size=1024"
# # see #266, PUBLIC_URL must be without surrounding quotation marks
# - PUBLIC_URL=/synapse-admin
# - REACT_APP_SERVER="https://matrix.example.com"
coturn-tunnel:
container_name: coturn-tunnel
image: cloudflare/cloudflared
restart: unless-stopped
command: tunnel run
environment:
- TUNNEL_TOKEN=${TURN_TUNNEL_TOKEN}
networks:
- coturn
synapse-tunnel:
container_name: synapse-tunnel
image: cloudflare/cloudflared
restart: unless-stopped
command: tunnel run
environment:
- TUNNEL_TOKEN=${SYNAPSE_TUNNEL_TOKEN}
networks:
- synapse
volumes:
synapse_data:
driver: local
networks:
frontend:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.16.238.0/24
synapse:
external: true
coturn:
external: true
intra_net:
external: true
/assets/docker/s1/matrix/server/synapse/env.txt
SYNAPSE_TUNNEL_TOKEN=***
TURN_TUNNEL_TOKEN=***
Содержимое data
volume.
wget https://res.cloudinary.com/dr5gcup5n/raw/upload/v1710842088/shalodoc/ohyp12ppqjt4sy4sbfrj.zip
Это серверное приложение для чата. Основная фишка это федерации, можно отключить. Вы поможете присоединить другой matrix сервер для расширения, хотя веб-клиенты начинают сильно тормозить от изобилия чат комнат.
Я пробовал conduit
, он гораздо проще в настройке, чем synapse
, но ещё находится в разработке и не поддерживает SSO.
Разбор homeserver.yaml
Основу конфига я брал из хабра
Оригинальный конфиг можно взять из документации
Или лучше сгенирировать, перейдите в контейнер synapse
и выполните команду
В поле federation_domain_whitelist
укажите сразу свои matrix сервера. Если хотите полностью выключить федерацию, то уберите federation
из listeners
.
Поле allowed_local_3pids
позволяет добавлять белый список для регистрации пользователей со своим доменом.
python -m synapse.app.homeserver --config-path <CONFIG> --generate-config
При создании конфига через команду, секретные ключи сгенерируются сами.
Как создать админа?
Самый просто зайти в synapse
и выполнить команду
Второй способ. Создать пользователя через веб-клиент, а затем присвоить ему права в базе данных.
psql -U synapse
UPDATE users SET admin = 1 WHERE name = '@admin:example.org';
Или вы можете поставить контейнер с pgadmin и отредактировать поле у своего пользователя через графику. Я использую редактор phpstorm
, у него имеются встроенные утилиты по работе с бд, что очень удобно.
WARNING
Вы не сможете пользоваться synapse-admin
пока не получите права администратора