Starter note — replace with the full write-up.
I run a few small things on a single VPS behind Cloudflare: a static site, a couple of Node apps and some Docker stacks. Once there is more than one service on a box, "is it up?" stops being a question you can answer by memory. So I built Kaizen: a tiny NOC that gives me one screen for the whole machine.
What it watches
Nginx is the single front door, so its stub_status is
exposed only on 127.0.0.1 and scraped from inside the
network namespace. Each app has a /health endpoint on a
loopback port. Container state, restart policies and disk come from
the Docker socket through a read-only proxy. fail2ban and
the auth log feed the "who is knocking" panel.
Design rules
One admin account. No inbound port beyond 22/80/443. Every upstream on loopback. The dashboard reads; it never acts on the host. Backups run from cron and are verified, not assumed.
What I'd do differently
Start with health endpoints on day one — retrofitting them across services is the slow part. And keep the NOC boring: the moment it needs its own babysitting, it has failed at its job.