Deploy a developer-oriented health dashboard that monitors endpoints and alerts when services degrade, with YAML-driven configuration.
Grab the automated bash script from GitHub to follow along with the video.
wget https://raw.githubusercontent.com/mhmdali94/Docker/main/monitoring/gatus/gatus-ubuntu.sh
chmod +x gatus-ubuntu.sh
sudo bash gatus-ubuntu.sh
The script installs Docker, pulls the Gatus image, and starts the container with a default configuration file. Gatus will be available on port 8080 and will begin checking the preconfigured example endpoints immediately.
wget https://raw.githubusercontent.com/mhmdali94/Docker/main/monitoring/gatus/gatus-ubuntu.sh
chmod +x gatus-ubuntu.sh
sudo bash gatus-ubuntu.sh
Open your browser and navigate to the Gatus dashboard. You will see the health status of all configured endpoints displayed with current status, response time history, and uptime percentage.
http://<your-server-ip>:8080
Edit the config.yaml file to add your own endpoints. Gatus supports HTTP, TCP, DNS, and ICMP checks with flexible condition expressions. After editing, restart the container to apply changes.
endpoints:
- name: My API
url: https://api.example.com/health
interval: 30s
conditions:
- "[STATUS] == 200"
- "[RESPONSE_TIME] < 500"
- name: Internal DB
url: tcp://db.internal:5432
interval: 1m
conditions:
- "[CONNECTED] == true"
Configure alert providers in config.yaml to receive notifications when endpoints fail. Gatus supports Slack, Telegram, PagerDuty, Discord, and email. Set failure-threshold and success-threshold on each endpoint to control when alerts fire and resolve.
alerting:
slack:
webhook-url: "https://hooks.slack.com/services/YOUR/WEBHOOK/URL"
default-alert:
failure-threshold: 3
success-threshold: 2
| Port | Purpose |
|---|---|
| 8080 | Gatus Web UI & Dashboard |
Gatus is a developer-centric automated health monitoring tool that performs HTTP, DNS, TCP, and ICMP checks on configurable endpoints. It displays results on a built-in status dashboard and sends alerts via Slack, PagerDuty, email, and more when checks fail — all configured via a single YAML file.
Gatus combines uptime monitoring with a public status page in a single lightweight container. Unlike Uptime Kuma (UI-driven), Gatus is entirely config-as-code, making it ideal for GitOps workflows and teams who prefer version-controlled monitoring configurations.
Gatus runs on port 8080. Place it behind a reverse proxy with a custom domain for the public status page. If monitoring internal services, ensure the Gatus container has network access to those services within your Docker network or VPN.
Alternatives include Uptime Kuma (UI-driven, no code), Cachet (status page only, no monitoring), Freshping (cloud), and Prometheus with Blackbox Exporter (powerful but complex). Choose Gatus for code-based monitoring configuration with a built-in status page.
Avoid Gatus if your team prefers a web UI for adding monitors — Uptime Kuma is much more accessible. Also avoid if you need advanced monitoring with metrics, graphs, and dashboards — the Prometheus stack is more powerful for that use case.
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.
Edit the config.yaml file and add a new entry under the endpoints section. Specify the name, URL, interval, and conditions to check. Restart the Gatus container to apply the new configuration. The service will appear on the dashboard and begin health checks immediately.
Gatus supports HTTP and HTTPS checks (with response code, body, and header conditions), TCP checks (verify a port is open), DNS checks (verify a domain resolves correctly), and ICMP ping checks (verify host reachability). Each check type is configured in the endpoint URL scheme.
Yes. In the conditions field of an endpoint, you can check that the response body contains a specific string using the body condition. You can also check the status code, response time, certificate expiry, and response headers.
Create an incoming webhook in your Slack workspace settings. In the Gatus config.yaml, add a slack alert provider under the alerting section with the webhook URL. Then add alert conditions to each endpoint specifying the failure threshold before an alert fires.
Yes. Gatus stores check results in an SQLite database by default, enabling the status dashboard to show historical uptime percentages and response time trends. You can also configure PostgreSQL as the storage backend for higher-volume deployments.
Yes. Gatus generates badge-format status images at a well-known URL per endpoint. Embed the badge URL in your README markdown and it will show a live green or red indicator of your service health, automatically updated by Gatus.
No — Gatus is entirely config-as-code. All monitoring configuration lives in a single config.yaml file. This makes it easy to version control in git, share with teammates, and deploy with configuration management tools. Check result history is stored in SQLite or PostgreSQL separately.
Yes. Gatus supports basic HTTP authentication on the dashboard. Add a security section to config.yaml with a username and password. You can also rely on your reverse proxy to enforce authentication, which is often more flexible and supports SSO.