
Should I self-host Uptime.com?
Same story as Pingdom, smaller bill: Uptime Kuma covers the checks and the status page in one quick setup (Gatus if you want config-as-code — we verified both). At $7/mo the math is thinner but the effort is so close to zero it still clears the bar.
The math (nothing hidden, including your time)
| Uptime.com (Real User Monitoring · 50,000 data points) | $7.00/mo |
| VPS share + storage | −$0.30/mo |
| Your maintenance: 10 min/mo at $20/h | −$3.33/mo |
| Net saving | $3.37/mo |
| Setup: 11 min measured (one-time) | $3.67 |
| Break-even | 1.1 months |
| Markup Index (price ÷ real self-host cost) | 1.9× |
Price: source, checked 2026-08-07. Inputs are stored in git; every number above is derived, never hand-written.
What you lose
- Hosted status page on someone else's infrastructure — host Kuma's status page off-site or it dies with the thing it reports on
What you're paying Uptime.com for
- uptime monitoring
- status pages
- incident notifications

Ranked alternatives
A public status page with the incidents, the maintenance windows and the monitors behind it, all managed in a browser rather than a config file.
A public status page whose entire configuration is one YAML file you own: the checks, the pass conditions and the alerting, declared once and served as a page.
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)
# Gatus — config-as-code status page. Distroless image: busybox sidecar probes it.
configs:
gatus-config:
content: |
endpoints:
- name: self
url: http://localhost:8080/health
interval: 30s
conditions:
- "[STATUS] == 200"
services:
gatus:
image: twinproduction/gatus:latest
container_name: gatus
restart: unless-stopped
configs:
- source: gatus-config
target: /config/config.yaml
ports:
- "8099:8080"
probe:
image: busybox:stable
network_mode: "service:gatus"
depends_on:
- gatus
command: sh -c 'while true; do sleep 30; done'
healthcheck:
test: ["CMD-SHELL", "nc -z localhost 8080 || exit 1"]
interval: 5s
timeout: 5s
retries: 40
start_period: 15s
Want a guided install instead? caniselfhostit.com/uptime 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 11 min · AI assistant: claude-code (allowed & stated)
What broke
- Boot to healthy measured at 14s on the 2GB reference env
Full timed log
# Uptime.com — verdict log - **Date:** 2026-08-10 - **Verdict:** YES — worth it - **Protocol:** v1 (2GB reference env, Docker preinstalled, AI assistant: claude-code) ## Setup evidence - Compose: `compose/uptime-gatus.yml` - Boot to healthy: **14s** measured this session - Setup time recorded: 11 min (boot + configuration to first working workflow) ## What broke / notes - Boot to healthy measured at 14s on the 2GB reference env ## The call Same story as Pingdom, smaller bill: Uptime Kuma covers the checks and the status page in one quick setup (Gatus if you want config-as-code — we verified both). At $7/mo the math is thinner but the effort is so close to zero it still clears the bar.
Verdict history
- 2026-08-10: unscored → YES — Initial verdict: Same story as Pingdom, smaller bill: Uptime Kuma covers the checks and the status page in one quick setup (Gat.

