Self-hosted uptime monitoring with a public status page

Interactive Preview

Relay
2/3 up
API Gateway
142msUp
Database
58msUp
Media Server
Down
docker run ghcr.io/rohzzn/relay

Toggle a monitor — admin dashboard and status page stay in sync in the real app

About

I built Relay because I was running Uptime Kuma for alerts and still needed something else for a public status page — two tools, two configs, nothing talking to each other. Relay is both: it checks your services on a schedule, opens incidents when things break, and serves a shareable status page your users can subscribe to. It is a single Go binary with SQLite, templates embedded in the binary, and a Docker image under 20 MB. No Node runtime, no Postgres.

Highlights

  • HTTP, TCP, TLS, DNS, and heartbeat monitors
  • Built-in public status page with incident banners and email subscribers
  • Live admin dashboard with WebSocket updates and 90-day uptime bars
  • Slack, webhook, and SMTP alert channels with cooldown-aware dispatch
  • Distroless Docker image under 20 MB — one command to deploy
  • Live at relay.rohan.run