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