79 lines
2.3 KiB
YAML
Executable file
79 lines
2.3 KiB
YAML
Executable file
# Status Dashboard - Docker Compose
|
|
# Runs the status-dashboard server with all dependencies
|
|
|
|
services:
|
|
# Status Dashboard Server
|
|
status-dashboard:
|
|
build:
|
|
context: ./backend-api
|
|
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_SQLITE_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
|