watchtower
A live operations timeline and health dashboard for the homelab, built
on real occurrences — deploys, incidents, backups, health — instead of
synthetic demo data. It's the project fleet-pulse (a fictional
predecessor described in an earlier portfolio design, deleted once it
turned out never to have been built) was reaching for: the same
push-over-HTTPS shape, this time real.
Push, not pull. oracle has no route back into the home LAN — no
VPN, no Tailscale — so telemetry flows outward instead. Homelab-side
collectors gather, sanitize, and push each event over HTTPS; oracle
never queries the LAN and never holds a credential that could reach it.
Sanitized before it leaves, not at display time. Real IPs,
hostnames, and capacity numbers are scrubbed inside the collector,
before the event exists anywhere oracle — a public-facing box — can
see it. Publishing homelab telemetry is a reconnaissance risk if it
isn't; that boundary is enforced at the source.
One stream, two readers. A bearer-token FastAPI ingest endpoint writes each sanitized event to a Redis Stream; a consumer task fans it out to SQLite, for queryable history, and an SSE broadcast, for the live dashboard, at once.
Four systemd-timer collectors on the homelab side — health, deploys, incidents, backups — feed the stream; the dashboard and timeline render at watchtower.junchen.us.