# Auto-generated by deployment/scripts/sync-published-compose.py — do not edit manually. # One-click: docker compose --env-file .env up -d # Tag: v1.2.2 services: backend: env_file: - .env environment: PORT: 8300 MESSAGING_SERVICE_URL: http://messaging:8301 FILE_STORAGE_SERVICE_URL: http://file_storage:8302 DATABASE_URL: postgresql://main_user:${MAIN_DB_PASSWORD}@postgres:5432/fromchat_main MAIN_DB_PASSWORD: ${MAIN_DB_PASSWORD} JWT_SECRET: ${JWT_SECRET} VAPID_PUBLIC_KEY: ${VAPID_PUBLIC_KEY} VAPID_PRIVATE_KEY: ${VAPID_PRIVATE_KEY} COMPLIANCE_PUBLIC_KEY: ${COMPLIANCE_PUBLIC_KEY} MESSAGE_RETENTION_DAYS: ${MESSAGE_RETENTION_DAYS} LIVEKIT_API_KEY: ${LIVEKIT_API_KEY:-fromchat_dev} LIVEKIT_API_SECRET: ${LIVEKIT_API_SECRET:-local_dev_secret_must_be_at_least_32_characters_long} YANDEX_OAUTH_REQUIRED: ${YANDEX_OAUTH_REQUIRED:-0} YANDEX_OAUTH_CLIENT_ID: ${YANDEX_OAUTH_CLIENT_ID:-} YANDEX_OAUTH_CLIENT_SECRET: ${YANDEX_OAUTH_CLIENT_SECRET:-} YANDEX_OAUTH_REDIRECT_URI: ${YANDEX_OAUTH_REDIRECT_URI:-fromchat://oauth/yandex} YANDEX_OAUTH_SCOPE: ${YANDEX_OAUTH_SCOPE:-login:email} YANDEX_ID_HOLD_DAYS: ${YANDEX_ID_HOLD_DAYS:-3} SMARTCAPTCHA_SERVER_KEY: ${SMARTCAPTCHA_SERVER_KEY:-} SMARTCAPTCHA_CLIENT_KEY: ${SMARTCAPTCHA_CLIENT_KEY:-} LOGS_DIR: /app/logs ENABLE_CHAT_FILTER: '0' ports: - 8300:8300 volumes: - data:/app/data - logs:/app/logs - ./secrets:/app/secrets:ro networks: - public - services healthcheck: test: - CMD - python3 - /usr/local/bin/healthcheck.py interval: 3s timeout: 10s retries: 10 restart: always extra_hosts: - host.docker.internal:host-gateway image: fromchat/backend:v1.2.2 messaging: env_file: - .env environment: PORT: 8301 COMPLIANCE_PUBLIC_KEY: ${COMPLIANCE_PUBLIC_KEY} MESSAGE_RETENTION_DAYS: ${MESSAGE_RETENTION_DAYS} networks: - services healthcheck: test: - CMD - python3 - /usr/local/bin/healthcheck.py interval: 30s timeout: 10s retries: 5 restart: always image: fromchat/messaging:v1.2.2 file_storage: env_file: - .env environment: PORT: 8302 FILES_DIR: /app/files volumes: - files:/app/files networks: - services healthcheck: test: - CMD - python3 - /usr/local/bin/healthcheck.py interval: 30s timeout: 10s retries: 5 restart: always image: fromchat/file_storage:v1.2.2 livekit: env_file: - .env environment: LIVEKIT_KEYS: '${LIVEKIT_API_KEY:-fromchat_dev}: ${LIVEKIT_API_SECRET:-local_dev_secret_must_be_at_least_32_characters_long}' command: --config /etc/livekit.yaml restart: always ports: - 8303:8303 - 8304:8304 - 50000-50100:50000-50100/udp networks: - public image: fromchat/livekit:v1.2.2 postgres: env_file: - .env environment: POSTGRES_DB: fromchat POSTGRES_USER: postgres POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} MAIN_DB_PASSWORD: ${MAIN_DB_PASSWORD} MESSAGING_DB_PASSWORD: ${MESSAGING_DB_PASSWORD} FILE_STORAGE_DB_PASSWORD: ${FILE_STORAGE_DB_PASSWORD} ports: - 127.0.0.1:5432:5432 volumes: - postgres:/var/lib/postgresql/data networks: - services healthcheck: test: - CMD-SHELL - pg_isready -U postgres interval: 3s timeout: 10s retries: 15 restart: always image: fromchat/postgres:v1.2.2 caddy: ports: - 127.0.0.1:8080:8080 - 127.0.0.1:8443:8443 extra_hosts: - host.docker.internal:host-gateway volumes: - ./data/prod/caddy/data:/data - ./data/prod/caddy/config:/config - ./caddy/additions:/etc/caddy/additions:ro networks: - public restart: always image: fromchat/caddy:v1.2.2 depends_on: - web haproxy: network_mode: host user: 0:0 depends_on: - caddy restart: always image: fromchat/haproxy:v1.2.2 web: env_file: - .env ports: [] restart: always image: fromchat/web:v1.2.2 networks: - public networks: public: driver: bridge internal: false services: driver: bridge internal: true volumes: postgres: name: fromchat-postgres data: name: fromchat-data files: name: fromchat-files logs: name: fromchat-logs chat-filter: name: fromchat-chat-filter name: fromchat-backend