version: "3.4" services: postgresql: image: postgres:15.2-alpine restart: unless-stopped volumes: - db-data:/var/lib/postgresql/data environment: - POSTGRES_PASSWORD= #pragma: allowlist secret - POSTGRES_USER=synapse - POSTGRES_INITDB_ARGS=--encoding=UTF-8 --lc-collate=C --lc-ctype=C synapse: image: matrixdotorg/synapse:v1.80.0 restart: unless-stopped volumes: - synapse-data:/data/ depends_on: - postgresql environment: - SYNAPSE_CONFIG_PATH=/data/homeserver.yaml labels: - traefik.enable=true - traefik.http.routers.synapse.entrypoints=websecure - traefik.http.routers.synapse.rule=Host(`matrix.terminaldweller.com`) - traefik.http.routers.synapse.tls=true - traefik.http.routers.synapse.tls.certresolver=letls traefik: image: traefik:v2.9.9 restart: unless-stopped command: - "--api=true" - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--entrypoints.web.address=:80" - "--entrypoints.websecure.address=:443" - "--certificatesresolvers.letls.acme.email=devi@terminaldweller.com" - "--certificatesresolvers.letls.acme.storage=/certs/acme.json" - "--certificatesresolvers.letls.acme.httpchallenge=true" - "--certificatesresolvers.letls.acme.httpchallenge.entrypoint=web" ports: - "443:443" - "80:80" volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - traefik_certs:/certs volumes: db-data: synapse-data: traefik_certs: # https://matrix.org/docs/guides/understanding-synapse-hosting