services: synapse: image: matrixdotorg/synapse:latest container_name: synapse restart: unless-stopped environment: - SYNAPSE_SERVER_NAME=mess.hobbs.farm - SYNAPSE_REPORT_STATS=no volumes: - /mnt/docker-data/configs/matrix/data:/data ports: - "8008:8008" networks: - matrix-internal depends_on: synapse-db: condition: service_healthy mem_limit: 1G memswap_limit: 1G healthcheck: test: ["CMD-SHELL", "curl -fSs http://localhost:8008/health || exit 1"] interval: 30s timeout: 10s retries: 3 start_period: 60s logging: driver: "json-file" options: max-size: "50m" max-file: "3" wellknown: image: nginx:alpine container_name: matrix-wellknown restart: unless-stopped volumes: - /mnt/docker-data/configs/matrix/wellknown:/usr/share/nginx/html/.well-known/matrix:ro ports: - "8010:80" mem_limit: 64M memswap_limit: 64M healthcheck: test: ["CMD-SHELL", "wget -q --spider http://localhost:80/ || exit 1"] interval: 30s timeout: 10s retries: 3 start_period: 15s logging: driver: "json-file" options: max-size: "50m" max-file: "3" synapse-db: image: postgres:15-alpine container_name: synapse-db user: "1024:100" restart: unless-stopped environment: - POSTGRES_USER=synapse - POSTGRES_PASSWORD=synapse - POSTGRES_DB=synapse - POSTGRES_INITDB_ARGS=--encoding=UTF-8 --lc-collate=C --lc-ctype=C volumes: - /mnt/docker-data/databases/matrix-db:/var/lib/postgresql/data networks: - matrix-internal mem_limit: 256M memswap_limit: 256M labels: - "com.centurylinklabs.watchtower.enable=false" healthcheck: test: ["CMD-SHELL", "pg_isready -U synapse -d synapse"] interval: 30s timeout: 10s retries: 3 start_period: 30s logging: driver: "json-file" options: max-size: "50m" max-file: "3" networks: matrix-internal: driver: bridge