monitoring
Uptime.com logo

Should I self-host Uptime.com?

YESworth it

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-even1.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
Kener running from the boot-verified compose file
Kener, running from the compose file on this page — screenshot from our verified instance, not marketing material.

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.

rajnandan1/kener · ★ 5,097 · last commit 8d ago · MIT

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.

TwiN/gatus · ★ 11,772 · last commit 2d ago · Apache-2.0

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)

# 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.