My three side projects needed a status page. Statuspage.io wanted $20/month — $240 a year to tell people "yes, the site is down."
I replaced it with Upptime: an open-source monitor that runs on GitHub Actions' free tier, commits uptime data to git, and publishes a status page on GitHub Pages. Total cost: $0. Setup time: 25 minutes.
What You Get for Free
| Feature | Statuspage.io ($20/mo) | Upptime ($0) |
|---|---|---|
| Check interval | 30s (paid tiers) | 5 min (Actions cron limit) |
| Response time graphs | ✅ | ✅ (auto-generated weekly) |
| Incident history | ✅ | ✅ (GitHub Issues) |
| Custom domain | Paid plan | ✅ free (Pages + CNAME) |
| SLA / audit trail | Enterprise | Every check is a git commit |
The Setup
# .upptimerc.yml — the entire config
sites:
- name: API
url: https://api.example.com/health
- name: Blog
url: https://blog.example.com
expectedStatusCodes: [200, 301]
status-website:
cname: status.example.com
name: byteox status
Fork the Upptime template, edit one YAML file, enable GitHub Pages. Done. It opens a GitHub Issue when a site goes down and closes it when it recovers — your incident log is your issue tracker.
4 Months of Real Numbers
- 3 sites monitored, checked every 5 minutes = ~26,000 checks/month
- GitHub Actions usage: ~340 minutes/month of the 2,000 free minutes
- Uptime detected: caught 2 real outages (a cert expiry I'd forgotten, and a Fly region hiccup) within 5 minutes
- False positives: 1 (GitHub Actions runner network blip — it self-closed 6 minutes later)
The 5-minute interval is the honest limitation. If you need sub-minute detection for a paying customer, pay for a real monitor. For side projects and portfolios, 5 minutes is faster than any user will email you.
Hot take: status pages are a solved problem that companies charge $240/year for because "it's only $20." GitHub's free CI minutes are the most underpriced resource in dev tooling right now.
What are you running on free CI minutes that probably shouldn't work as well as it does?
I generated the config and the custom theme tweaks with MonkeyCode (free, local): https://ly.cyberserval.tech/iIETXiF
Top comments (0)