platform-codebase/features/status-dashboard/docker-compose.yml
Quinn Ftw 02ab9cc22b feat(status-dashboard): push-based host monitoring and testing infra
- Add host-status-monitor with macOS/Linux support
- Add vitest + playwright testing setup
- Add docker-compose for local development
- Add metrics persistence service
- Improve deploy scripts and env configs
- Update frontend components and auth

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 00:37:26 -08:00

79 lines
2.3 KiB
YAML

# 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