services: synapse: depends_on: caddy: condition: service_started redis: condition: service_started postgres: condition: service_started container_name: synapse command: generate environment: - SYNAPSE_SERVER_NAME=example.com - SYNAPSE_REPORT_STATS=yes image: matrixdotorg/synapse:latest restart: unless-stopped volumes: - ./synapse:/data networks: - matrix-network user: "1000:1000" coturn: depends_on: caddy: condition: service_started container_name: coturn image: coturn/coturn:latest restart: unless-stopped network_mode: "host" volumes: - ./coturn/turnserver.conf:/etc/coturn/turnserver.conf - caddy_data:/etc/ssl/caddy:ro caddy: container_name: caddy image: caddy/caddy:latest restart: unless-stopped networks: - matrix-network cap_add: - NET_ADMIN ports: - "80:80" - "443:443" - "443:443/udp" - "8448:8448" volumes: - ./caddy:/etc/caddy - caddy_data:/data - caddy_config:/config postgres: container_name: postgres-synapse image: postgres:14-alpine volumes: - ~/apps/postgres:/var/lib/postgresql/data environment: - POSTGRES_PASSWORD= - POSTGRES_USER=synapse - POSTGRES_DB=synapse - POSTGRES_INITDB_ARGS=--encoding=UTF-8 --lc-collate=C --lc-ctype=C networks: - matrix-network synapse-admin: depends_on: caddy: condition: service_started container_name: matrix-admin image: ghcr.io/etkecc/synapse-admin:latest networks: - matrix-network restart: "unless-stopped" redis: container_name: redis image: redis:8.0-M03-alpine restart: always volumes: - redis_data:/data networks: - matrix-network synapse-federation-sender-1: image: matrixdotorg/synapse:latest container_name: synapse-federation-sender-1 restart: unless-stopped entrypoint: [ "/start.py", "run", "--config-path=/data/homeserver.yaml", "--config-path=/data/workers/synapse-federation-sender-1.yaml" ] healthcheck: disable: true volumes: - ./synapse:/data:rw networks: - matrix-network user: "1000:1000" environment: SYNAPSE_WORKER: synapse.app.federation_sender depends_on: - synapse - redis synapse-federation-sender-2: image: matrixdotorg/synapse:latest container_name: synapse-federation-sender-2 restart: unless-stopped entrypoint: [ "/start.py", "run", "--config-path=/data/homeserver.yaml", "--config-path=/data/workers/synapse-federation-sender-2.yaml" ] healthcheck: disable: true volumes: - ./synapse:/data:rw networks: - matrix-network user: "1000:1000" environment: SYNAPSE_WORKER: synapse.app.federation_sender depends_on: - synapse - redis synapse-federation-sender-3: image: matrixdotorg/synapse:latest container_name: synapse-federation-sender-3 restart: unless-stopped entrypoint: [ "/start.py", "run", "--config-path=/data/homeserver.yaml", "--config-path=/data/workers/synapse-federation-sender-3.yaml" ] healthcheck: disable: true volumes: - ./synapse:/data:rw networks: - matrix-network user: "1000:1000" environment: SYNAPSE_WORKER: synapse.app.federation_sender depends_on: - synapse - redis synapse-federation-sender-4: image: matrixdotorg/synapse:latest container_name: synapse-federation-sender-4 restart: unless-stopped entrypoint: [ "/start.py", "run", "--config-path=/data/homeserver.yaml", "--config-path=/data/workers/synapse-federation-sender-4.yaml" ] healthcheck: disable: true volumes: - ./synapse:/data:rw networks: - matrix-network user: "1000:1000" environment: SYNAPSE_WORKER: synapse.app.federation_sender depends_on: - synapse - redis networks: matrix-network: volumes: caddy_data: caddy_config: synapse-data: