# ============================================================================= # PRODUCTION MONITORING STACK — collector + database. Runs permanently. # sudo docker-compose up -d --build # # Server-side verification runs against the REAL office NAS (synoreal remote, # written by monitor/collector/start.sh from the REAL_SYNOLOGY_* vars in .env). # The simulation lab that used to accompany this was removed 2026-08-10 — # recover docker-compose.sim.yml + generator/ from git history if ever needed. # ============================================================================= services: mongo: image: mongo:7 container_name: rclonemon-mongo volumes: - rclonemon_mongo:/data/db restart: unless-stopped collector: build: context: ./monitor dockerfile: collector/Dockerfile container_name: rclonemon-collector ports: - "4400:4400" environment: - MONGO_URL=mongodb://mongo:27017 - AGENT_TOKEN=${AGENT_TOKEN} # dashboard/API login (HTTP Basic) — mandatory while reverse-proxied - VIEWER_USER=${VIEWER_USER} - VIEWER_PASS=${VIEWER_PASS} # public URL baked into the served installer (COLLECTOR_URL on clients) - PUBLIC_URL=${PUBLIC_URL} # the office NAS (read-only lsjson) — every site verifies against it - REAL_SYNOLOGY_HOST=${REAL_SYNOLOGY_HOST} - REAL_SYNOLOGY_PORT=${REAL_SYNOLOGY_PORT} - REAL_SYNOLOGY_USER=${REAL_SYNOLOGY_USER} - REAL_SYNOLOGY_PASS=${REAL_SYNOLOGY_PASS} - DEFAULT_REMOTE=synoreal # per-site override only if a second NAS ever appears, e.g. # SITE_REMOTES=RIYADH=synoriyadh (remote must also be added to start.sh) # listing interval — SFTP lsjson of big trees is slow, don't go below 60 - VERIFY_INTERVAL=300 - MISSING_GRACE_S=600 - ONLINE_WINDOW_S=60 # alert if a machine is online but hasn't completed a round in this long - STALLED_ROUND_S=900 # how much event history the audit UI keeps (Mongo TTL) - RETENTION_DAYS=30 volumes: - ./frontend/dist:/app/static:ro depends_on: - mongo restart: unless-stopped volumes: rclonemon_mongo: