← Back to archive

Repo of the Day

CalmRay-Solutions/uptime-guard: Self-hosted uptime, TCP, DNS, TLS-cert, domain & heartbeat monitoring on Cloudflare Workers - with escalating Telegram + Web Push alerts, SLA/incident history, and public status pages. Runs free.

Published: Nov 2, 2026

Open repository ↗

Self-hosted uptime, TCP, DNS, TLS-cert, domain & heartbeat monitoring on Cloudflare Workers - with escalating Telegram + Web Push alerts, SLA/incident history, and public status pages. Runs fre...

Summary

Uptime Guard is a self-hosted monitoring application that runs on Cloudflare Workers with D1 storage and a React/Vite dashboard. It monitors HTTP(S), TCP, DNS, TLS certificates, domain expiry, scheduled-job heartbeats, and multi-step API workflows, while providing incident history, uptime reports, alerts, and public status pages.

What it is useful for

It is useful for engineers who want visibility into services without maintaining a separate monitoring server. Concrete checks include asserting an API’s HTTP status, body text, or JSON field; opening a TCP connection to SSH, Postgres, SMTP, or another service; and resolving A, AAAA, CNAME, MX, TXT, or NS records.

The heartbeat monitor works as a dead-man’s switch: a cron job or scheduled task calls a unique /ping/<token> URL, and the monitor reports a problem if that ping does not arrive within its grace period. This can reveal failed deployments or stopped scheduled jobs even when the target system itself is still reachable.

Multi-step checks cover flows that a single request cannot express. A declarative script can log in, capture a token from a JSON response, call an authenticated endpoint, and assert a status, JSON value, body, or response time. Scripts support up to 10 steps; they are not arbitrary JavaScript because the Worker cannot execute eval.

For reporting, the dashboard provides 24-hour, 7-day, 30-day, and 90-day uptime, incident history, and mean time to recovery. Public status pages can present service names, status, and uptime without exposing targets, IP addresses, or configuration. Down and recovery notifications can be sent through Telegram and desktop Web Push, with re-alerts that widen over time.

How engineers can use it

The README documents a one-click Cloudflare deployment that provisions D1, builds the dashboard, and deploys the Worker. On first visit, the owner must create a password and pair a TOTP authenticator. The database schema and session secret are generated automatically.

A terminal deployment is also documented:

git clone https://github.com/CalmRay-Solutions/uptime-guard.git
cd uptime-guard/worker && npm install && npx wrangler login
npx wrangler d1 create uptime-guard

Paste the printed database ID into wrangler.toml, then build and deploy from the repository root:

cd .. && npm run deploy

After opening the printed dashboard URL, create an owner account, project, and first monitor; documented checks begin within 60 seconds. Telegram bot credentials, chat ID, and Web Push VAPID keys can be configured in Settings.

Current limitations include one owner account with no team support, and checks pausing if Cloudflare has an outage. Email, Slack, Discord, and maintenance windows are roadmap items rather than current features.