Uptime Cairn
Self-hosted uptime monitoring and status pages
Watches websites, servers, and services, tells you when they break, and shows your customers a status page that says so. One Docker container, no database server to set up.
Language
Go
Licence
Apache-2.0
Status
Active
Repository
webloomlabs/uptime-cairn
Distribution
Docker image, or a single binary
Data
Two files — cairn.db and cairn.key
Why it exists
One tool that works
at three sites and at two hundred
Uptime Kuma is excellent, and Uptime Cairn is a deliberate nod to it. But it has no write API, no user permissions, no SSO, and no on-call scheduling — and it slows to a crawl somewhere around 300 to 600 monitors, the point where people start running a second copy on another server.
The hosted alternatives fix that and charge per monitor, on their infrastructure, with your data. Uptime Cairn is meant to work for a freelancer with three client sites and for an agency with two hundred, without a paid tier holding the good parts back.
It is also built to be believed: the performance claim is verified by a load test against 5,000 monitors that runs in CI on every change, rather than asserted in a README.
What it does
What Uptime Cairn gives you
The short version of the README. The repository has the rest, including what Uptime Cairn does not do yet.
Nine kinds of check
Websites, TCP ports, servers, DNS records, Docker containers, gRPC services, and cron jobs that are supposed to check in.
Alerts that reach you
Email, Slack, Discord, Telegram, ntfy, Gotify, Matrix, Teams, PagerDuty, Opsgenie, SMS, and webhooks — plus Apprise, which adds roughly ninety more.
Warnings before the outage
TLS certificates and domain registrations that are about to expire, flagged while there is still time to renew them.
Status pages for customers
Public pages with uptime history and incidents, on your own domain and your own logo, so support stops answering the same question.
A complete REST API
Anything you can click, you can script — provisioning monitors for a new client site does not have to be a manual afternoon.
An importer for Uptime Kuma
Brings across monitors, tags, notifications and status pages, and merges several Kuma databases into one install. Dry-run first.
Getting started
Running in about a minute
One container, one volume. The port binds to localhost on purpose — Uptime Cairn speaks plain HTTP, so put Caddy, nginx, or Traefik in front of it before exposing it.
Docker
docker run -d --restart=always -p 127.0.0.1:3000:3000 \
-v uptime-cairn:/data \
--name uptime-cairn \
ghcr.io/webloomlabs/uptime-cairn:latestOpen http://localhost:3000 and create your account. Docker Compose, a plain binary, and Raspberry Pi are covered in the install guide.
Coming from Uptime Kuma
cairn import kuma /path/to/kuma.dbAdd --dry-run first to see exactly what would change. The migration guide lists what the importer cannot bring across.
Built with