2026-06-01 17:54:36 +02:00
|
|
|
service:
|
|
|
|
|
name: brain-watchdog
|
|
|
|
|
owner_node: piha
|
|
|
|
|
exposure: private
|
|
|
|
|
description: >
|
|
|
|
|
External watchdog for the control-plane on VPS. Queries /summary over
|
|
|
|
|
Tailscale and alerts via Telegram Bot API directly — no dependency on the
|
|
|
|
|
control-plane itself. Freshness is computed locally from last_update epoch.
|
|
|
|
|
|
|
|
|
|
dependencies:
|
|
|
|
|
- control-plane # external — on VPS; deliberately untrusted for liveness
|
|
|
|
|
|
|
|
|
|
healthcheck:
|
|
|
|
|
type: docker
|
|
|
|
|
interval: 60s
|
|
|
|
|
timeout: 10s
|
|
|
|
|
retries: 3
|
|
|
|
|
start_period: 30s
|
|
|
|
|
|
|
|
|
|
restart_policy: unless-stopped
|
|
|
|
|
|
|
|
|
|
persistence:
|
|
|
|
|
paths:
|
|
|
|
|
- /data # state.json: fail_count, alerted, last_ok
|
|
|
|
|
|
|
|
|
|
runtime:
|
|
|
|
|
env_vars:
|
|
|
|
|
- CONTROL_PLANE_URL # Tailscale IP + port of operator-ui (required)
|
|
|
|
|
- STALE_THRESHOLD # seconds before brain is considered stale (default: 600)
|
|
|
|
|
- INTERVAL # poll interval seconds (default: 60)
|
|
|
|
|
- FAILS_BEFORE_ALERT # consecutive failures before Telegram alert (default: 3)
|
|
|
|
|
- TG_TOKEN # Telegram Bot API token (required)
|
|
|
|
|
- TG_CHAT_ID # Telegram chat/user ID (required)
|
|
|
|
|
- HEALTHCHECKS_URL # optional healthchecks.io ping URL
|
2026-06-30 18:51:34 +02:00
|
|
|
- PROMETHEUS_URL # optional Prometheus URL for polling firing alerts
|