How to Set Up a Self-Hosted Status Page with Cachet
Deploy Cachet as your self-hosted status page to keep users informed about service health and incidents without relying on third-party providers.
How to Set Up a Self-Hosted Status Page with Cachet
A status page is essential for communicating service health to your users. Cachet is an open-source status page system that you can self-host for complete control over your incident communication.
Why Self-Host Your Status Page?
Third-party status page providers charge per-component pricing that adds up quickly. Self-hosting with Cachet gives you unlimited components, subscribers, and incidents for the cost of a small VPS.
More importantly, if your infrastructure provider has an outage, a third-party status page hosted on the same provider won't help. Self-hosting on separate infrastructure ensures your status page stays up when it matters most.
Prerequisites
Docker Compose Configuration
Create a `docker-compose.yml` for Cachet:
yamlversion: '3'
services:
cachet:
image: cachethq/docker:latest
ports:
environment:
depends_on:
restart: unless-stopped
postgres:
image: postgres:15-alpine
environment:
volumes:
restart: unless-stopped
volumes:
postgres_data:
Setting Up Components and Groups
After deployment, organize your services into logical groups:
1. **Infrastructure** — Servers, networking, DNS
2. **Core Services** — API, web application, database
3. **Integrations** — Email, webhooks, third-party connections
Each component gets its own status indicator: Operational, Performance Issues, Partial Outage, or Major Outage.
Automating Status Updates
Cachet provides a REST API for automated status updates. Integrate it with your monitoring stack:
bashcurl -X POST https://status.example.com/api/v1/components/1 \
-H "X-Cachet-Token: your_api_token" \
-H "Content-Type: application/json" \
-d '{"status": 1}'
Connect this to Uptime Kuma, Healthchecks.io, or your preferred monitoring tool to automatically update component status when issues are detected.
Subscriber Notifications
Cachet supports email notifications for subscribers. Users can subscribe to specific components and receive updates only for services they care about. Configure your SMTP settings to enable this feature.
Reverse Proxy Setup
Place Cachet behind your reverse proxy for SSL termination:
status.example.com {
reverse_proxy cachet:8000
}
Incident Management Best Practices
When creating incidents, follow these guidelines:
A well-maintained status page significantly reduces support tickets during incidents and builds user confidence in your platform's transparency.