Cachet vs Upptime: Self-Hosted Status Pages
Quick Verdict
Upptime is the easier choice — zero infrastructure, zero cost, zero maintenance. Cachet is the more capable choice when you need structured incident management, subscriber notifications, and a professional incident communication platform. Most self-hosters should start with Upptime and move to Cachet only if they outgrow it.
How They Differ
Cachet and Upptime solve the same surface problem (public status page) with fundamentally different approaches:
| Aspect | Cachet | Upptime |
|---|---|---|
| Runs on | Docker (PHP + PostgreSQL + Redis) | GitHub (Actions + Pages + Issues) |
| Infrastructure cost | Your server’s resources | Free (GitHub free tier) |
| Monitoring | None (manual/API incident creation) | Built-in (GitHub Actions checks) |
| Incident workflow | Full (Investigating → Fixed) | GitHub Issues (auto-created) |
| Subscriber notifications | Email (built-in) | None |
| Scheduled maintenance | Yes | No |
| Status page hosting | Self-hosted | GitHub Pages |
| Setup time | 20-30 minutes | 5-10 minutes |
| Maintenance | Container updates, backups | Zero |
| API | Full REST CRUD | GitHub API |
Feature Comparison
| Feature | Cachet | Upptime |
|---|---|---|
| Component groups | Yes | No |
| Custom component status levels | 4 (Operational → Major Outage) | 2 (Up/Down) |
| Incident updates timeline | Yes | Via GitHub Issue comments |
| Metric tracking | Yes (custom metrics) | Response time only |
| Custom branding | Limited (name, logo) | Full (CNAME, logo, colors) |
| Multi-language support | Yes (20+ languages) | Yes |
| Private status page | Yes | Requires GitHub Pro |
| Uptime history graphs | No | Yes (auto-generated) |
| Response time tracking | No | Yes |
| Alerting | Email to subscribers | Slack, Discord, email |
| Self-hosted monitoring | No | No (GitHub Actions runners) |
Setup and Maintenance
Upptime setup is a 5-minute process: fork a template repo, edit .upptimerc.yml, add a GitHub Personal Access Token as a secret, enable GitHub Pages. Done. From that point, maintenance is zero — GitHub handles everything.
Cachet requires provisioning three Docker containers (PHP app, PostgreSQL, Redis), generating an app key, running database migrations, and configuring SMTP for subscriber emails. It takes 20-30 minutes, and you’re responsible for container updates, database backups, and keeping the server running.
When Cachet’s Complexity Pays Off
Cachet’s overhead is justified when you need:
- Subscriber notifications — Users subscribe to your status page and receive emails when incidents are created or updated. Upptime has no equivalent.
- Structured incident workflows — Investigating → Identified → Watching → Fixed, with timestamped updates. Upptime uses GitHub Issues, which works but doesn’t provide a formal workflow.
- Scheduled maintenance windows — Announce planned downtime in advance. Upptime has no maintenance concept.
- Component groups — Organize 50+ services into logical groups (Infrastructure, APIs, Frontend, etc.).
- Custom metrics — Track and display custom business metrics alongside status.
When Upptime’s Simplicity Wins
Upptime is the right choice when:
- You don’t want to maintain another server — GitHub does everything for free.
- Basic monitoring is sufficient — HTTP status checks every 5 minutes covers most needs.
- You want uptime graphs — Upptime auto-generates response time and uptime percentage charts.
- Your sites are publicly accessible — Upptime can only monitor URLs reachable from GitHub’s network.
- Incident tracking via GitHub Issues is good enough — For small teams, Issues work fine.
Use Cases
Choose Cachet If…
- You serve customers who expect professional incident communication
- You need email subscriber notifications
- You need scheduled maintenance announcements
- You’re running an internal status page for your organization
- You want full API control for automated incident management
Choose Upptime If…
- You want a status page with zero infrastructure cost
- You’re monitoring public-facing websites and APIs
- You’re comfortable with GitHub as your platform
- You want auto-generated uptime graphs and response time charts
- You value zero maintenance over advanced features
Final Verdict
Upptime for most self-hosters. The zero-cost, zero-maintenance approach is hard to beat. You get monitoring, incident tracking (via GitHub Issues), uptime graphs, and a clean status page — all free.
Cachet earns its complexity when your audience expects professional incident communication. The subscriber notification system and structured incident workflow are enterprise-grade features that Upptime can’t match. If you’re running a SaaS product or an internal IT department where downtime communication matters, Cachet is worth the Docker overhead.
For a middle ground — Docker-based with a nice UI and 90+ alerting integrations — see Uptime Kuma. For monitoring-first with a YAML-configured status page, see Gatus.
Related
Get self-hosting tips in your inbox
New guides, comparisons, and setup tutorials — delivered weekly. No spam.