version: '3' services: synapse: image: docker.io/matrixdotorg/synapse:v1.77.0 restart: unless-stopped environment: - SYNAPSE_CONFIG_PATH=/data/homeserver.yaml volumes: - /data/matrix/uploads:/data/uploads - /data/matrix/media:/data/media - /srv/matrix/homeserver.yaml:/data/homeserver.yaml - /srv/matrix/matrix.log.config:/data/matrix.log.config - /srv/matrix/matrix.signing.key:/data/matrix.signing.key depends_on: - db networks: - traefik ports: - "{{ internal_matrix_port }}:8008" labels: - traefik.enable=true - traefik.http.routers.matrix.entryPoints=websecure - traefik.http.routers.matrix.rule=Host(`{{ matrix_domain }}`) - traefik.http.routers.matrix.tls=true - traefik.http.routers.matrix.tls.certResolver=letsencrypt - traefik.http.routers.matrix.service=matrix - traefik.http.services.matrix.loadbalancer.server.port=8008 db: image: docker.io/postgres:12-alpine environment: - POSTGRES_USER=synapse - POSTGRES_PASSWORD={{ database_password }} - POSTGRES_INITDB_ARGS=--encoding=UTF-8 --lc-collate=C --lc-ctype=C volumes: - /data/matrix/schemas:/var/lib/postgresql/data networks: traefik: external: true