Files
server-config/docker/synapse/compose.yaml
T

150 lines
4.0 KiB
YAML

services:
postgres:
image: postgres:15-alpine
container_name: postgres
restart: always
environment:
POSTGRES_USER: ${PSQL_NAME}
POSTGRES_PASSWORD: ${PSQL_PASS}
POSTGRES_DB: ${PSQL_DB_NAME}
POSTGRES_INITDB_ARGS: --encoding=UTF8 --lc-collate=C --lc-ctype=C
PGUSER: ${PSQL_NAME}
PGDATABASE: ${PSQL_DB_NAME}
volumes:
- synapse-pg-data:/var/lib/postgresql/data
networks:
- synapse-net
- postgre-general
logging:
driver: "json-file"
options:
max-size: "50m"
max-file: "3"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB || exit 1"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
synapse-foxgirls:
image: matrixdotorg/synapse:latest
container_name: synapse-foxgirls
restart: unless-stopped
environment:
SYNAPSE_SERVER_NAME: foxgirls.date
SYNAPSE_REPORT_STATS: "yes"
SYNAPSE_DATABASE: "postgres://${PSQL_NAME}:${PSQL_PASS}@postgres/${PSQL_DB_NAME}"
volumes:
- ~/synapse-data2:/data # Host folder with config, media, logs
depends_on:
- postgres
networks:
- synapse-net
- reverse_proxy_default
logging:
driver: "json-file"
options:
max-size: "50m"
max-file: "3"
synapse-livekit:
container_name: synapse-livekit
image: livekit/livekit-server
command: --config /etc/livekit.yaml
restart: unless-stopped
ports:
- "7881:7881" # TCP Signaling
- "7882:7882/udp" # Initial UDP
- "50000-50200:50000-50200/udp" # Media range
#forward in reverse proxy
#expose:
#- 7880
volumes:
- ./livekit/livekit.yaml:/etc/livekit.yaml
- ./livekit/turnsecret:/etc/turnsecret
environment:
- VIRTUAL_HOST=livekit.foxgirls.date
- LETSENCRYPT_HOST=livekit.foxgirls.date
- VIRTUAL_PORT=7880
- "LIVEKIT_KEYS=api: ${LIVEKIT_SECRET}"
- LIVEKIT_REDIS_ADDRESS=synapse-redis:6379
depends_on:
- synapse-redis
networks:
- synapse-net
- reverse_proxy_default
synapse-coturn:
container_name: synapse-coturn
image: coturn/coturn
network_mode: host
volumes:
- ./turn/certs:/etc/coturn/certs:ro
command:
- turnserver
- --listening-port=3478
- --tls-listening-port=5349
- --min-port=49152
- --max-port=50000
- --external-ip=51.68.130.237
- --realm=turn.foxgirls.date
- --lt-cred-mech
- --fingerprint
- --use-auth-secret
- --static-auth-secret=${TURN_SECRET}
- --no-multicast-peers
- --no-cli
lk-jwt-service:
container_name: synapse-lkjwt
image: ghcr.io/element-hq/lk-jwt-service:latest
environment:
- LIVEKIT_URL=wss://livekit.foxgirls.date
- LIVEKIT_KEY=api
- LIVEKIT_SECRET=${LIVEKIT_SECRET}
- VIRTUAL_HOST=lk-jwt.foxgirls.date
- LETSENCRYPT_HOST=lk-jwt.foxgirls.date
- VIRTUAL_PORT=8080
- LIVEKIT_FULL_ACCESS_HOMESERVERS=foxgirls.date
- LIVEKIT_REDIS_URL=redis://synapse-redis:6379/0
# CRITICAL: Allow the container to loop back to the public domain via the proxy
#extra_hosts:
# - "livekit.foxgirls.date:host-gateway"
networks:
- synapse-net
- reverse_proxy_default
element-call:
container_name: synapse-element-call
image: ghcr.io/element-hq/element-call:latest
environment:
- VIRTUAL_HOST=elementcall.foxgirls.date
- LETSENCRYPT_HOST=elementcall.foxgirls.date
- VIRTUAL_PORT=8080
volumes:
- ./element-call/config.json:/app/config.json
networks:
- synapse-net
- reverse_proxy_default
synapse-redis:
container_name: synapse-redis
image: redis:alpine
command: redis-server --save 60 1 --loglevel warning
volumes:
- ./redis_data:/data
networks:
- synapse-net
volumes:
synapse-pg-data:
networks:
synapse-net:
driver: bridge
reverse_proxy_default:
external: true
postgre-general:
external: true