# Status Dashboard - Docker Compose # Runs the status-dashboard server with all dependencies services: # Status Dashboard Server status-dashboard: build: context: ./server dockerfile: Dockerfile container_name: lilith-status-dashboard restart: unless-stopped # Use host network for VPN accessibility (10.9.0.1) network_mode: host environment: NODE_ENV: production PORT: ${STATUS_PORT:-5000} # Database (SQLite on /mnt/bigdisk) DATABASE_PATH: /data/db/status-dashboard.db CACHE_DIR: /data/cache/ # Authentication STATUS_ADMIN_PASSWORD: ${STATUS_ADMIN_PASSWORD} STATUS_JWT_SECRET: ${STATUS_JWT_SECRET} STATUS_TOTP_SECRET: ${STATUS_TOTP_SECRET:-} # mTLS Configuration MTLS_ENABLED: ${MTLS_ENABLED:-true} MTLS_SERVER_KEY: /data/certs/server/status.key MTLS_SERVER_CERT: /data/certs/server/status.crt MTLS_CA_CERT: /data/certs/ca/ca.crt # Monitoring thresholds CPU_THRESHOLD: ${CPU_THRESHOLD:-90} MEMORY_THRESHOLD: ${MEMORY_THRESHOLD:-85} DISK_THRESHOLD: ${DISK_THRESHOLD:-90} RETENTION_DAYS: ${RETENTION_DAYS:-30} # CORS (for dashboard UI) CORS_ORIGIN: ${CORS_ORIGIN:-https://status.atlilith.com} PUBLIC_URL: ${PUBLIC_URL:-https://status.atlilith.com} # Host Agent API Keys (fallback auth) API_KEY_PLATFORM_VPS: ${API_KEY_PLATFORM_VPS:-} API_KEY_VPN_GATEWAY: ${API_KEY_VPN_GATEWAY:-} API_KEY_APRICOT: ${API_KEY_APRICOT:-} API_KEY_BLACK: ${API_KEY_BLACK:-} API_KEY_NS2_DNS: ${API_KEY_NS2_DNS:-} volumes: # Database storage on network drive - /mnt/bigdisk/_/lilith-platform/databases/sqlite:/data/db # Cache directory (can be tmpfs for speed) - status-cache:/data/cache # mTLS certificates from vault - ${VAULT_PATH:-../../vault}/certs/server:/data/certs/server:ro - ${VAULT_PATH:-../../vault}/certs/ca:/data/certs/ca:ro healthcheck: test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:${STATUS_PORT:-5000}/health"] interval: 30s timeout: 10s retries: 3 start_period: 10s logging: driver: json-file options: max-size: "50m" max-file: "5" volumes: # Local cache volume (ephemeral, fast) status-cache: driver: local