Uptime Kuma

The XDA writer who left his media server unattended for 14 days had to admit the same thing every self-hoster eventually does: the server didn’t break, the SSL certificate did, and nobody was watching. A home lab that “works fine” is usually a home lab whose failure hasn’t been noticed yet. These seven uptime monitoring apps ping your services, wake your phone when something falls over, and keep the log so you know whether last night was a blip or a trend.

We tested each on a real home lab (Plex, Jellyfin, Home Assistant, Nextcloud, a reverse proxy, and a Wireguard endpoint) for false-positive rate, alert delivery reliability across push channels, storage cost of the metrics database, and how much time the app takes to configure past the first hour.

What to look for in an uptime monitoring app

Quick comparison

App Best for Platforms Free plan Starting price Rating
Uptime Kuma Self-hosted daily driver Docker, native Yes, full Free (open source) 65k GitHub stars
Gatus YAML-first config with SLO tracking Docker, native Yes, full Free (open source) 8k GitHub stars
Statping-ng Slick UI with a public status page Docker, native Yes, full Free (open source) 5k GitHub stars
UptimeRobot External SaaS, no self-hosting Web 50 monitors free $8/mo Solo 4.7 (G2)
Better Stack External SaaS with a status page Web 10 monitors free $29/mo Pro 4.8 (G2)
Cachet Public status page for services Docker, native Yes, full Free (open source) 18k GitHub stars
Healthchecks.io Cron and job monitoring Docker, SaaS 20 checks free $5/mo Hobbyist 8k GitHub stars

The apps

1. Uptime Kuma, best self-hosted daily driver

Uptime Kuma is the reference open-source uptime monitor. It looks like a hosted service, runs in a single Docker container, and covers HTTP(S), TCP port, DNS, ping, gRPC, MQTT, Docker container status, and SSL certificate expiry. Alerts to more than 90 destinations including ntfy, Gotify, Telegram, Discord, PagerDuty, and any generic webhook. Public and private status pages included.

Where it falls short: Interface is single-user friendly, multi-user permissions are basic. SQLite by default, which becomes the bottleneck past a few hundred monitors.

Pricing:

Platforms: Docker (recommended) or native Node.js install on Windows, macOS, Linux.

Download: uptime.kuma.pet or github.com/louislam/uptime-kuma.

Bottom line: The default recommendation for a home lab. Ten-minute install, works for years.

2. Gatus, best YAML-first monitor

Gatus treats monitoring as configuration. One YAML file defines every service, every check, and every alert path. Perfect for GitOps workflows where you check your monitoring config into a repo. Native support for SLO-style conditions (“this endpoint should respond in under 200ms, 99.9% of the time over 30 days”).

Where it falls short: No point-and-click editor. Adding a new monitor means editing YAML and reloading. Steeper learning curve than Uptime Kuma.

Pricing:

Platforms: Docker (recommended) or native binary on Windows, macOS, Linux.

Download: gatus.io or github.com/TwiN/gatus.

Bottom line: The right pick if you prefer config-as-code and want SLO-style conditions.

3. Statping-ng, best with a polished status page

Statping-ng (community-maintained fork of the original Statping) pairs uptime monitoring with the cleanest built-in status page on this list. Multiple database backends (SQLite, MySQL, Postgres), simple alerts to Slack, Discord, Email, Telegram, and webhooks, and a REST API for automation.

Where it falls short: Fewer alert integrations than Uptime Kuma. Development pace slower than Uptime Kuma or Gatus.

Pricing:

Platforms: Docker or native binary on Windows, macOS, Linux.

Download: statping-ng.github.io or github.com/statping-ng/statping-ng.

Bottom line: The right pick when the public status page matters as much as the monitoring itself.

4. UptimeRobot, best external SaaS

UptimeRobot monitors your services from outside your network. That matters, because a self-hosted monitor cannot tell you when your entire home internet drops. Free tier includes 50 monitors at 5-minute intervals, which covers most home labs. Paid tiers add 30-second checks, more integrations, and Pro-branded status pages.

Where it falls short: External monitor, so it sees only public services. You need a Cloudflare Tunnel or port-forwarded endpoint for UptimeRobot to check. Free tier is 5-minute intervals, which some consider slow.

Pricing:

Platforms: Web, iOS, and Android apps.

Download: uptimerobot.com in any browser.

Bottom line: The right complement to a self-hosted monitor. Run both, so you catch outages from both sides.

5. Better Stack (formerly Better Uptime), best external SaaS with a status page

Better Stack does uptime, on-call scheduling, and hosted logs in one product. Uptime checks are the entry point: fast (30-second) intervals, incident response with on-call rotations, and gorgeous public status pages. Integrates with practically every notification channel.

Where it falls short: More expensive than UptimeRobot for the same number of monitors. The full platform (logs, incidents, on-call) is a lot if you just want uptime.

Pricing:

Platforms: Web, iOS, and Android apps.

Download: betterstack.com in any browser.

Bottom line: The right pick when you want a professional-grade status page and might grow into on-call features.

6. Cachet, best dedicated status page

Cachet isn’t a full uptime monitor: it’s the public status page. Pair it with Uptime Kuma or Gatus for automatic incident creation, or drive it manually if you’d rather curate what your users see. The interface is clean, and the maintenance-window feature is genuinely useful for planned outages.

Where it falls short: Doesn’t monitor anything on its own. Requires PHP and a database.

Pricing:

Platforms: Docker or native PHP install on Windows, macOS, Linux.

Download: cachethq.io or github.com/cachethq/cachet.

Bottom line: The right pick if you already have a monitor and want to give your family or users a proper status page to check.

7. Healthchecks.io, best for cron and job monitoring

Healthchecks.io watches for jobs that should run and alerts you when they don’t (a “dead-man’s switch”). Perfect for backup scripts, snapshot rotations, and any scheduled task where silence means failure. Every check has a unique URL you ping from your script; the service alerts if the ping doesn’t arrive in the expected window.

Where it falls short: Different mental model from Uptime Kuma. Doesn’t check “is this endpoint up right now” as its primary job.

Pricing:

Platforms: Web (SaaS) or self-hosted via Docker.

Download: healthchecks.io or github.com/healthchecks/healthchecks.

Bottom line: The right pick for monitoring backups and other silent-fail jobs. Complementary to Uptime Kuma, not a replacement.

How to pick the right one

If you want the simplest self-hosted setup: Uptime Kuma. It’s the default for a reason.

If you check your infrastructure into a repo: Gatus and its YAML-first config.

If your status page matters as much as your monitoring: Statping-ng or Cachet (paired with a monitor).

If you need to catch outages when your whole network drops: an external SaaS, either UptimeRobot for the free tier or Better Stack if you want a professional status page.

If your problem is silent backup failures: Healthchecks.io as a complement to your active monitor.

The right home-lab setup for anyone serious: Uptime Kuma inside the network for services, UptimeRobot outside for external reachability, and Healthchecks.io for scheduled jobs. That’s the loadout that catches the three failure modes home labs actually see.

FAQ

What is the best free uptime monitor?

Uptime Kuma if you can self-host, UptimeRobot’s free tier (50 monitors, 5-minute checks) if you can’t. Both are proven, both are used at scale, and both will tell you when your services are down.

How often should uptime checks run?

For a home lab, one-minute intervals catch most real outages without adding meaningful load. Every 5 minutes is fine for services that don’t need immediate action. Below one minute (10–30 seconds) is only useful for public services where every minute of downtime costs you.

Should I self-host uptime monitoring?

Yes, but pair it with an external monitor. A self-hosted monitor is fast, private, and free, but it can’t see anything when your own home network is down. UptimeRobot’s free tier is the cheapest external supplement.

How do I get notified when a service goes down?

Push notifications via a chat bot (Discord, Telegram) reach most self-hosters faster than email. Ntfy and Gotify are lightweight push services designed for this. All the apps in this list support at least one of those channels.

Can uptime monitors check services behind a VPN or Cloudflare Tunnel?

Self-hosted monitors inside the network can hit services directly. External monitors need a public endpoint, which is where Cloudflare Tunnel, Tailscale funnel, or a port-forwarded reverse proxy come in.