
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-even | 1.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

Ranked alternatives
Uptime monitoring and status pages from one container, with no monitor quota and no per-check billing.
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.