Uptime Kuma: A Self-Hosted UptimeRobot Alternative

UptimeRobot's free tier is genuinely fine for basic checks. What you're actually paying for past that is faster check intervals and real status pages — both of which a self-hosted monitor gives you for free, with one ironic catch.

Share

UptimeRobot's free plan is generous — 50 monitors, 5-minute check intervals, basic status pages. If that's all you need, I wouldn't tell you to switch. What you're actually paying for once you go past it is faster checks (60-second intervals instead of 5-minute) and real status pages with multi-seat access, which starts around $7–$10/month.

What that 5-minute gap actually costs you

On the free plan, a service can be down for up to 5 minutes before UptimeRobot even notices, and longer than that before an alert reaches you. For most personal projects that's fine. For anything where you want to know within a minute that something broke, you're paying for the faster interval — which self-hosted monitoring doesn't ration in the first place.

What Uptime Kuma gives you instead

Uptime Kuma is a self-hosted status/uptime monitor — Node.js app, SQLite by default, and it runs comfortably on the same small VPS tier the rest of this stack uses. Unlimited monitors, check intervals as fast as your server can handle (no artificial 5-minute throttle), built-in public status pages, and notification integrations for most of the usual channels — including ntfy, which I already run, so alerts land the same place everything else does.

The catch, and it's a real one

Here's the honest problem with self-hosted monitoring: if the VPS running Uptime Kuma goes down, it can't tell you it's down. A hosted service like UptimeRobot doesn't have this failure mode — it's not running on the infrastructure it's watching.

The fix is simple and I'd actually recommend it: keep one free UptimeRobot monitor (or any other hosted checker) pointed at your Uptime Kuma instance itself. You get self-hosted monitoring for everything else, plus one external check whose only job is confirming your monitor is still alive. That's the setup I actually run — free tier keeping watch on the thing doing the real work.

I run Uptime Kuma on the same kind of small Vultr instance as the rest of this stack — see the full cost roll-up for how it all fits together.

Disclosure: this post contains an affiliate link to Vultr. If you sign up through it, I may earn a commission at no extra cost to you. I only link to providers I actually use.