Best self hosted uptime monitor
Uptime Kuma is the best self hosted uptime monitor for most people, Gatus is better if you want your checks in a YAML file in git, Upptime is better if you want no server at all, and Logdash cannot be self-hosted in production with one command yet.
Every self-hosted monitor has the same weak spot: it is only as up as the machine it runs on. Put it on the VPS it watches and the night that VPS dies, the monitor dies with it, silently. Whatever you pick below, run it somewhere else, a small VPS at a different provider or a Raspberry Pi at home, and alert through something that does not depend on your app.
The shortlist, in order
- Uptime Kuma. The default for a reason. MIT, one container, a web UI anyone can use, monitors for HTTP, keywords, TCP, ping, DNS and push heartbeats, intervals down to 20 seconds, 90+ notification services and status pages. Version 2 added MariaDB next to SQLite. Weak spots: one login shared by everyone, and its status page JSON is not an officially supported API.
- Gatus. Apache 2.0, one container, checks written as YAML conditions on status, body and response time. Covers HTTP, TCP, ICMP, DNS and TLS, plus certificate and domain expiry. There is no UI for editing checks, which is the point if you want review on every change.
- Upptime. MIT and no server: GitHub Actions checks every 5 minutes, outages become GitHub issues, the status page is GitHub Pages. Still maintained, with a release in September 2026. The floor is 5 minutes and scheduled runs can start late.
- Logdash self-host. AGPL-3.0, the whole stack in one public repo, and it runs locally for development. Production is not one command: you wire up Node 22, MongoDB, Redis and ClickHouse yourself, there is no packaged deployment and no upgrade path, and boot still expects Stripe and Resend keys. Use the hosted version, or one of the three above.
Uptime Kuma in one command
docker run -d --restart=always -p 3001:3001 \
-v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:2
# open http://localhost:3001 and create the admin userBack up the uptime-kuma volume. It holds every monitor, every notification setting and the whole history, and losing it means an afternoon of clicking everything back in.
Uptime Kuma alternatives, self hosted
Beyond the shortlist: Checkmate is the newest Kuma-style app, AGPL-3.0 on Node.js and MongoDB, with Docker Compose and Helm installs. OpenStatus, also AGPL-3.0, self-hosts with Docker Compose, but its 28 check regions are hosted only; self-hosted checks run from probes you deploy. Healthchecks is the pick for cron jobs rather than URLs, and a common setup is Kuma for URLs plus Healthchecks for jobs.
When hosted beats self-hosted
Self-hosting wins on cost, data ownership and check types. It loses on one thing: the monitor is another service you keep alive, patch and back up, and its failures are silent by nature. Logdash is the hosted trade: HTTP checks every 5 minutes on the free plan, every minute on Builder and every 15 seconds on Pro, Telegram and webhook alerts and a status page, all run from outside your network.
Logdash vs Uptime Kuma
| Feature | Logdash | Uptime Kuma |
|---|---|---|
| Self-hosting in production | Not one command yet | One container |
| Who keeps the checker running | We do, outside your network | You do, on a box you patch |
| Check types | HTTP, plus push heartbeats on Pro | HTTP, keyword, TCP, ping, DNS, push and more |
| Fastest interval | 15 seconds on Pro | 20 seconds |
| Notification channels | Telegram and webhook | 90+ services |
| Logs and metrics | Eight SDKs into the same service | Not what Kuma is for |
When Uptime Kuma is the better pick
- Self-hosting is the requirement. Kuma does it today, Logdash does not.
- You need keyword, TCP, ping or DNS checks. Logdash has none of them.
- You want alerts on Discord, Slack, email or ntfy. Kuma has them built in, Logdash has Telegram and webhooks.
- Add the URL If you would rather skip the server, paste your health URL into Logdash. The free plan covers 5 services with a check every 5 minutes.
- Connect Telegram Add a Telegram channel once and attach it to the monitor. This is the channel that still works when your own server does not.
- Pull the plug Stop the app, or the whole VPS. On the next check the monitor flips to down and the Telegram alert arrives with the status code, sent from a machine you did not just turn off.