My stack monitoring was driving me crazy
Like many developers who self-host, I run about a dozen services across VPS instances. Nextcloud, Vaultwarden, a few APIs, some workers, databases. The kind of typical setup you see all over r/selfhosted.
For years, my monitoring looked like this:
- Uptime Kuma for HTTP checks – great tool, but completely unaware of containers
- Healthchecks.io for cron jobs – SaaS, which bothered me from a data sovereignty standpoint
- A bash script that checked disk space and sent me an email
- Nothing at all for SSL certificates – I checked them manually whenever I remembered
Five disconnected tools. Five dashboards. Five configurations to maintain. And above all, no unified overview.
The wake-up call
One Friday night, my Nextcloud instance went down. The underlying PostgreSQL container had crashed because the disk was full. Uptime Kuma alerted me that Nextcloud was unresponsive – 20 minutes after the crash. But it couldn’t tell me why: it only saw the HTTP endpoint, not the container state, not the disk usage, not the error logs.
I spent 45 minutes diagnosing a problem that proper monitoring would have caught in seconds.
That evening, I opened a main.go file and started writing Maintenant.
The founding principles
Three convictions guided every design decision:
A single container. If your monitoring tool itself requires a 3-container stack (hello Grafana + Prometheus + cAdvisor), something is wrong. Maintenant is a single Go binary with the frontend embedded via embed.FS and SQLite as its database. docker compose up -d and you’re done.
Zero configuration. Maintenant connects to the Docker socket and automatically discovers all your containers. No YAML to write. No Prometheus targets to declare. Your containers show up in the dashboard within seconds.
All-in-one. Containers, HTTP/TCP endpoints, heartbeats/cron, SSL certificates, system metrics, update detection – all in a single dashboard. One source of truth for the state of your infrastructure.
What I learned along the way
The biggest technical challenge wasn’t the monitoring itself. It was automatic runtime detection. Maintenant supports both Docker and Kubernetes, and it automatically detects which one is available at startup. On Kubernetes, it uses the service account with read-only RBAC to discover workloads.
The other lesson: simplicity is a feature. Every time I was tempted to add a configuration option, I asked myself: “Can I detect this automatically?” The answer was usually yes.
What’s next?
Maintenant is available as open source under the AGPL-3.0 license. The Community Edition is fully functional — containers, endpoints, heartbeats, SSL, metrics, updates, Webhook and Discord alerts, status page. The Pro edition adds Slack, Teams and Email channels, alert escalation and routing, maintenance windows, CVE enrichment, incident management, and subscriber notifications.
If you self-host and you’re tired of juggling five different monitoring tools – or if you simply have no monitoring at all – give Maintenant a try. 30 seconds to install, and your stack is under control.