status-uptime
UptimeRobot logo

Should I self-host UptimeRobot?

YESworth it

One container, every monitor type UptimeRobot charges for, and it pays for itself before the second invoice.

The math (nothing hidden, including your time)

UptimeRobot (Solo)$10.00/mo
VPS share + storage−$1.00/mo
Your maintenance: 10 min/mo at $20/h−$3.33/mo
Net saving$5.67/mo
Setup: 25 min measured (one-time)$8.33
Break-even1.5 months
Markup Index (price ÷ real self-host cost)2.3×

Price: source, checked 2026-08-05. Inputs are stored in git; every number above is derived, never hand-written.

What you lose

  • Monitoring from someone else's network — if your VPS is down, so is the thing that tells you your VPS is down. Run it on a different box than what it watches, or keep a free external ping as a dead-man switch.

What you're paying UptimeRobot for

  • HTTP/keyword/port/ping monitors
  • public status pages
  • alerting: email, webhook, Telegram, Slack
  • response-time history
Uptime Kuma running from the boot-verified compose file
Uptime Kuma, running from the compose file on this page — screenshot from our verified instance, not marketing material.

Ranked alternatives

Uptime monitoring and status pages from one container, with no monitor quota and no per-check billing.

louislam/uptime-kuma · ★ 90,062 · last commit 0d ago · MIT

Hardware

Runs comfortably on Raspberry Pi.

The tested compose file (our evidence, CI-booted)

# Uptime Kuma — self-hosted uptime monitoring (replaces UptimeRobot)
# Tested under protocol v1. Image ships its own HEALTHCHECK.
services:
  uptime-kuma:
    image: louislam/uptime-kuma:1
    container_name: uptime-kuma
    restart: unless-stopped
    ports:
      - "3001:3001"
    volumes:
      - kuma-data:/app/data

volumes:
  kuma-data:

Want a guided install instead? caniselfhostit.com/uptimerobot has AI-agent prompts that assume a bare machine — that's their half of the stool, and it's good.

Verification

Protocol v1 · verified by zernonia on 2026-08-10 · setup measured at 25 min · AI assistant: claude-code (allowed & stated)

Full timed log
# Timed setup log: UptimeRobot → Uptime Kuma

**Protocol:** v1 · **Verified by:** zernonia · **Date:** 2026-08-10
**Assistant:** claude-code · **Environment:** containerized runner, 2 vCPU class, Docker 29.3 / Compose v5.1

## Timeline

| Step | Time |
|---|---|
| Draft compose (one service; image ships its own HEALTHCHECK) | 6 min |
| **Boot: healthy in 8 s (measured, `compose up --wait`)** | 1 min |
| Core workflow: create admin, add HTTP monitor + keyword monitor, watch first checks land | 14 min |
| Re-run from clean volumes | 4 min |
| **Total: ~25 min** | |

## Measurements

- Boot to healthy: **8 s** · 1 container · idle RAM ~150 MB — Raspberry Pi territory

## What broke

Nothing. This is the cleanest install on the site so far.

## Verdict-relevant notes

- Every job on UptimeRobot's paid list (monitor types, status pages, alert channels,
  response-time history) is present.
- The structural caveat is in the verdict: a monitor on your own VPS can't tell you your VPS
  is down. Run it on a separate box, or keep a free external ping as the dead-man switch.

Verdict history

  • 2026-08-10: unscored → YES — Initial verdict: one container does the whole job list, breaks even in under 2 months.