services: postgres: image: docker.io/postgres:18.1-alpine user: ${UID}:${GID} restart: unless-stopped environment: POSTGRES_USER: synapse POSTGRES_PASSWORD: synapse-password POSTGRES_DB: homeserver POSTGRES_INITDB_ARGS: --lc-collate C --lc-ctype C --encoding UTF8 PGDATA: /data volumes: - ./postgres:/data - /etc/passwd:/etc/passwd:ro synapse: image: ghcr.io/element-hq/synapse:v1.143.0 user: "${UID}:${GID}" restart: unless-stopped entrypoint: python command: "-m synapse.app.homeserver -c /config/homeserver.yaml" ports: - "${SERVICE_SYNAPSE_BIND_PORT_CLIENT_API}:8008" - "${SERVICE_SYNAPSE_BIND_PORT_FEDERATION_API}:8008" volumes: - ../../etc/services/core/synapse/config:/config:ro - ./synapse/media-store:/media-store element-web: image: ghcr.io/element-hq/element-web:v1.12.4 user: "${UID}:${GID}" restart: unless-stopped environment: ELEMENT_WEB_PORT: 8080 ports: - "${SERVICE_ELEMENT_WEB_BIND_PORT_HTTP}:8080" volumes: - ../../etc/services/core/element-web/config.json:/app/config.json:ro tmpfs: - /var/cache/nginx:rw,mode=777 - /var/run:rw,mode=777 - /tmp/element-web-config:rw,mode=777 - /etc/nginx/conf.d:rw,mode=777 networks: default: name: ${NETWORK_NAME} external: true