sample.mp4
Uptime monitoring and heartbeats that runs entirely on the Cloudflare free tier. No servers, no subscriptions. Built with Cloudflare Workers and D1!
Sends alerts through Discord, Slack, Telegram, Email, ntfy, Pushover, generic webhooks, and Apprise.
- Go to dash.cloudflare.com → Storage & Database > D1 SQL Database
- Click Create database, name it
pingflare, and confirm
- Open Workers & Pages, click on the
pingflareWorker - Go to Settings > Bindings > Add binding
- Choose D1 Database, set the variable name to
DB, and select thepingflaredatabase
Still on Settings > Variables, add the following under Secret variables:
| Variable | Required | Default | Description |
|---|---|---|---|
ADMIN_USER |
Yes | - | Username |
ADMIN_PASS |
Yes | - | Password |
JWT_SECRET |
Yes | - | Secret used to sign JWT tokens, min 32 characters |
DB |
Yes | - | Cloudflare D1 binding, set via dashboard or wrangler.toml |
ENCRYPTION_KEY |
Yes | - | Key used to encrypt sensitive notification credentials at rest (bot tokens, passwords, API keys). Min 32 characters. |
Click Deployments > Retry deploy (or push any commit). On the first request, the Worker automatically creates all database tables.
Your dashboard will be live at https://pingflare.<your-subdomain>.workers.dev.
Pingflare is designed to stay within Cloudflare free tier limits:
- Workers: 100,000 requests per day
- D1: 100,000 write rows per day, 5 million read rows per day
- Cron Triggers: minimum 1-minute interval
With the default 90-day log retention and automatic cleanup on each cron run, write usage stays bounded proportional to the number of active monitors.