30s systemd timer heals four real failure classes: container down (docker start -> start.sh fallback), rogue host process on :3001, Caddyfile wiped by foreign generators (known-good snapshot + size/site-block/marker gates), caddy down/not serving. Telegram alerts with 15-min per-class cooldown; stamp only burned on successful send. Adversarial review B- (both blockers fixed: snapshot poisoning via multi-gate integrity + refresh lockout, deployment). Live kill-tested twice: full recovery in one cycle, alerts delivered, cooldown verified.
12 lines
295 B
Desktop File
12 lines
295 B
Desktop File
[Unit]
|
|
Description=DashCaddy self-healing watchdog (container, port 3001, Caddyfile, caddy)
|
|
After=docker.service network-online.target
|
|
Wants=network-online.target
|
|
|
|
[Service]
|
|
Type=oneshot
|
|
ExecStart=/usr/local/bin/dashcaddy-watchdog
|
|
TimeoutStartSec=90
|
|
StandardOutput=journal
|
|
StandardError=journal
|