Video coming soon…

📊 Setup Cachet — Self-Hosted Status Page

Deploy a beautiful, self-hosted status page to communicate service incidents and maintenance windows to your users.

⚠️ This script is provided for demo and testing purposes only. Not intended for production use.

📦 Resources & Setup Scripts

Grab the automated bash script from GitHub to follow along with the video.

Automated install — Cachet status page running in one command.
View on GitHub

Quick Install:

wget https://raw.githubusercontent.com/mhmdali94/Docker/main/monitoring/cachet/cachet-ubuntu.sh
chmod +x cachet-ubuntu.sh
sudo bash cachet-ubuntu.sh

Tutorial Steps

1 Download & Run the Installer

The script installs Docker, pulls the Cachet and PostgreSQL images, and starts both containers. Cachet will be available on port 8000 with a PostgreSQL database backend for persistent storage of your components and incident history.

wget https://raw.githubusercontent.com/mhmdali94/Docker/main/monitoring/cachet/cachet-ubuntu.sh
chmod +x cachet-ubuntu.sh
sudo bash cachet-ubuntu.sh

2 Access Web UI and Complete Setup Wizard

Open your browser and navigate to Cachet. The first-run setup wizard will guide you through configuring your status page name, environment, and administrator account credentials.

http://<your-server-ip>:8000

3 Add Components

In the Cachet dashboard, go to Components and add the services you want to track — such as API, Website, or Database. Set each component's current status: Operational, Performance Issues, Partial Outage, or Major Outage. Group related components together for better organisation.

4 Report an Incident

When a service goes down, navigate to Incidents and create a new incident update. Set the status to Investigating, Identified, Watching, or Fixed as the situation evolves. Subscribers will receive email notifications for each update, keeping your users informed throughout the incident lifecycle.

Ports Used

PortPurpose
8000Cachet Web UI
5432PostgreSQL database (internal)

Overview

Cachet is an open-source status page system for communicating the health of your services to customers and users. It allows you to list components, post incident updates, display uptime metrics, and let users subscribe to notifications — all from a clean self-hosted status page.

Why Use It

Self-hosting Cachet gives you full control over your status page without paying for Statuspage.io or Better Stack. You own the data, the domain, and the notification pipeline. It is ideal for SaaS products, APIs, and internal service dashboards.

When You Need It

    Who Should Use It

      Real Use Cases

        Main Features

          How to Use After Installation

            Security Best Practices

              Ports and Firewall Notes

              Cachet runs on port 8000 inside the container. Map it to a standard port via a reverse proxy on port 443 with a custom domain like status.yourdomain.com. The public status page should be accessible to everyone while the admin area requires authentication.

              Backup and Maintenance

                Common Mistakes

                  Troubleshooting

                    Alternatives

                    Alternatives include Upptime (GitHub-based, static), Gatus (monitoring plus status page), Better Stack (cloud, polished), and Statuspage.io (Atlassian, enterprise). Choose Cachet for a mature self-hosted status page with a good admin UI.

                    When Not to Use It

                    Avoid Cachet if you need automatic monitoring that updates component status without manual intervention — consider Gatus or Uptime Kuma with a status page plugin. Cachet is primarily manually driven.

                    PrismaTechWork Professional Help

                    PrismaTechWork provides end-to-end infrastructure services — from initial deployment and security hardening to ongoing monitoring, automated backups, and dedicated support. Whether you need a single-server setup or a multi-site network, our team ensures your infrastructure is built right, secured properly, and maintained reliably.

                      Contact Us

                      Frequently Asked Questions

                      Can Cachet automatically update component status based on monitoring?

                      Not natively — Cachet is primarily a status communication tool where admins manually update component statuses and post incidents. However, you can use its REST API to programmatically update statuses from an external monitoring system like Gatus, Uptime Kuma, or Nagios.

                      Can users subscribe to status updates?

                      Yes. Visitors to the public status page can subscribe with their email address. They receive email notifications when an incident is created, updated, or resolved, and when component statuses change. You can also configure webhook notifications for programmatic integrations.

                      How do I post an incident?

                      Log into the Cachet admin dashboard and go to Incidents, then click Add Incident. Specify the incident name, status, message, and which components are affected. The incident appears immediately on the public status page. You can post follow-up updates as the situation evolves.

                      Can I display uptime metrics on the status page?

                      Yes. Cachet supports metric points that you push via API. Create a metric in the dashboard (e.g., API Response Time), then post data points from your monitoring system. Cachet displays the metric as a graph on the public status page.

                      Does Cachet support scheduled maintenance windows?

                      Yes. Create scheduled maintenance entries in the admin panel with a start and end time and affected components. Cachet displays the upcoming maintenance on the status page and notifies subscribers in advance so users are aware before the downtime begins.

                      Can I use a custom domain for my Cachet status page?

                      Yes. Configure a reverse proxy (Nginx, Caddy, or Nginx Proxy Manager) to forward your custom domain like status.yourdomain.com to the Cachet container on port 8000. Set the APP_URL environment variable to your custom domain.

                      What databases does Cachet support?

                      Cachet supports MySQL, PostgreSQL, and SQLite. For production use, MySQL or PostgreSQL is recommended for reliability. SQLite is suitable only for testing or very low-traffic instances.

                      Can I update component status via API?

                      Yes. Cachet has a full REST API. To update a component status, send a PUT request to /api/v1/components/{id} with a JSON body containing the new status value (1 for operational, 2 for degraded, 3 for partial outage, 4 for major outage). Include your API token in the Authorization header.