services: synapse: image: matrixdotorg/synapse:latest container_name: synapse restart: unless-stopped environment: SYNAPSE_SERVER_NAME: ${SYNAPSE_SERVER_NAME} SYNAPSE_CONFIG_PATH: /data/homeserver.yaml UID: "991" GID: "991" TZ: ${TZ:-UTC} volumes: - ./synapse:/data ports: # Client & federation API (put a reverse proxy in front for TLS) - "8008:8008" healthcheck: test: [ "CMD-SHELL", "curl -fSs http://localhost:8008/health || exit 1", ] interval: 15s timeout: 5s retries: 3 start_period: 30s networks: - traefik_portal livekit: image: livekit/livekit-server:latest container_name: livekit restart: unless-stopped command: --config /etc/livekit.yaml volumes: - ./livekit/:/etc/ network_mode: "container:wireguard" lk-jwt: image: ghcr.io/element-hq/lk-jwt-service:latest container_name: lk-jwt restart: unless-stopped environment: LIVEKIT_URL: ${LIVEKIT_URL:-ws://localhost:7880} LIVEKIT_KEY: ${LIVEKIT_KEY} LIVEKIT_SECRET: ${LIVEKIT_SECRET} LIVEKIT_JWT_BIND: ":8090" LIVEKIT_INSECURE_SKIP_VERIFY_TLS: "true" network_mode: "container:wireguard" depends_on: - livekit lk-jwt-proxy: image: nginx:alpine container_name: lk-jwt-proxy restart: unless-stopped volumes: - ./lk-jwt-proxy/:/etc/nginx/:ro network_mode: "container:wireguard" depends_on: - lk-jwt synapse-admin: image: awesometechnologies/synapse-admin:latest container_name: synapse-admin restart: unless-stopped ports: - "8087:80" networks: - traefik_portal networks: traefik_portal: external: true