All open source
ApplicationActiveGo

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:latest

Open 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.db

Add --dry-run first to see exactly what would change. The migration guide lists what the importer cannot bring across.

Built with

What is under it

GoSQLitegRPCProtocol BuffersDockerREST APIApprise

Work with us

Have something you want built?

Small enough to care about the details. Experienced enough to build the difficult parts. Tell us about the problem and we'll come back with a technical direction, scope, and timeline.

You work directly with the people building your product.