Monitoring & Observability

Gatus

Config-as-code status page — monitor HTTP, TCP, DNS and ICMP endpoints from a single YAML file, with 40+ alert integrations. Under 256 MB RAM, no database.

About Gatus

Gatus (~11.7 k GitHub stars, Apache 2.0, Go) is a self-hosted health dashboard and public status page driven entirely by a YAML configuration file. You list your endpoints — HTTP URLs, TCP addresses, DNS resolvers, ICMP hosts — alongside the conditions that define "healthy" (status code, response time, body content, certificate expiry), and Gatus polls them on a configurable interval and publishes the results as a clean, shareable status page.

Self-hosting Gatus on a ServOrbit VPS gives you a private status page and monitoring hub with no third-party account and no monthly fee. A single Go binary runs in one Docker container using under 256 MB of RAM, persisting check history in a SQLite database — no PostgreSQL, no Redis, no complex infrastructure. The YAML config file lives on your VPS at `/opt/stacks/gatus/config/config.yaml`: edit it and restart the container to add or update monitored endpoints.

Gatus includes 40+ alerting integrations — Slack, PagerDuty, OpsGenie, Discord, Teams, ntfy, Pushover, email and more — that notify you the moment an endpoint goes down or recovers. The status page is clean enough to share publicly with customers or colleagues, and developer-friendly enough to be version-controlled alongside your infrastructure as code.

What gets installed

Ready when the VPS starts

Compatible OS
Ubuntu 24.04
Application
Gatus
Tech stack
DockerGoSQLite
Minimum RAM
512 MB
Minimum CPU
1 vCPU
Default port
8080
Access
root over SSH

Key features

  • Monitor HTTP, TCP, DNS, ICMP and WebSocket endpoints from a single YAML config file — no UI required to add or update monitored services.
  • Rich health conditions: check status code, response time (ms), TLS certificate expiry (days remaining), body content regex match, and JSON body values in one endpoint definition.
  • 40+ alerting integrations: Slack, PagerDuty, OpsGenie, Discord, Teams, ntfy, Pushover, Telegram, email — with configurable failure and success thresholds before alerting to avoid flap noise.
  • Uptime badges embeddable in any README or web page — always live, no extra service needed.
  • Public or private status page with a clean light/dark UI — share with customers, embed in a dashboard, or restrict access by CIDR block.
  • SQLite-backed check history — view per-endpoint uptime over 1 h, 24 h, 7 d and longer; configurable retention.
  • External service checks: DNS resolution, ICMP ping, WebSocket echo — monitor more than just HTTP APIs.
  • Under 256 MB RAM, single Go binary in a distroless container — the lightest self-hosted status page in its class.

When to use this solution?

Public API status page for your SaaS

Add your API, website, CDN and payment provider URLs as Gatus endpoints with HTTP conditions. Gatus polls them every minute and renders a public status page — customers check service health without emailing support, and you get instant Slack or ntfy alerts the moment any endpoint degrades. Version-control the YAML file alongside your infrastructure and update it with every new service you ship.

Internal infrastructure monitoring for dev teams

Monitor internal services unreachable from external probes: staging APIs, private dashboards, PostgreSQL reachability, SSL certificate expiry on internal domains. Gatus runs on the same VPS network as your stack — it can reach http://localhost:3000 or tcp://db:5432 and alert on degradation before users notice. Team members bookmark the internal Gatus URL instead of SSHing in to check service logs.

Automated TLS certificate expiry alerting

Add any HTTPS endpoint and a [CERTIFICATE_EXPIRATION] > 14d condition. Gatus checks the TLS certificate on every poll and triggers a Slack, Discord, or ntfy alert when fewer than 14 days remain. Never lose a domain to an expired certificate again — the alert arrives days before renewal is urgent, with enough time to act without scrambling.

Guide

Deploy Gatus on your VPS

  1. Order a ServOrbit VPS

    Any plan with 512 MB RAM is sufficient — Gatus idles under 256 MB RAM and has no GPU or database dependency. For the most accurate uptime checks, place Gatus on a separate VPS from the services it monitors: if the application VPS goes down, the monitoring VPS can still alert you.

  2. One-click deploy from the marketplace

    Open your ServOrbit dashboard → Marketplace → Monitoring → Gatus → Deploy. An init container writes a sample config file and Gatus starts within seconds. It listens on the VPS loopback only: if you attached a domain, the status page is served at https://your-domain over HTTPS, with no port number; otherwise open an SSH tunnel — ssh -L 8080:127.0.0.1:8080 root@your-vps-ip, using the port shown on your app's page in the ServOrbit dashboard — and browse to http://localhost:8080.

  3. Edit the config file to add your endpoints

    SSH into your VPS and edit /opt/stacks/gatus/config/config.yaml. Replace the sample endpoint with your services: URLs, TCP ports, DNS checks or ICMP hosts. Restart Gatus with cd /opt/stacks/gatus && docker compose restart gatus — the new endpoints appear on the status page within seconds.

  4. Configure alerting

    Add an alerting: block to your config with your preferred channel — Slack webhook, Discord webhook, ntfy server URL or email. Each endpoint specifies alerts: [{type: slack, failure-threshold: 2}] so Gatus only alerts after two consecutive failures, filtering out transient blips before paging your team.

  5. Share the status page

    The status page is ready to share, but without a domain it is reachable only through your own SSH tunnel. Attach a subdomain — status.your-domain.com — to the app from your ServOrbit dashboard: ServOrbit puts an nginx vhost with a TLS certificate in front of Gatus and proxies it to the app port, so your customers open https://status.your-domain.com directly, with no port number.

Frequently asked questions

Questions about Gatus

← Back to Monitoring & ObservabilityAll applications
Gatus is a developer-oriented, config-as-code status page and health monitoring tool (~11.7 k stars, Apache 2.0). Uptime Kuma is a UI-first uptime monitor with a visual dashboard — great for adding monitors without touching a config file. Gatus is the opposite: you define everything in a YAML file that you can version-control and deploy idempotently. Gatus also supports richer health conditions (response time, TLS expiry, body regex, DNS resolution) and produces a public-facing status page suitable for sharing with end users.

Embed the deploy button

Maintaining a project that uses Gatus? This button lets your readers deploy it on a VPS in one click, without reading Docker documentation.

Deploy Gatus on ServOrbit
Markdown
[![Deploy Gatus on ServOrbit](https://servorbit.com/brand/deploy/button.svg)](https://servorbit.com/vps-cloud?template=gatus&utm_source=deploy-badge&utm_medium=referral&utm_campaign=gatus)
HTML
<a href="https://servorbit.com/vps-cloud?template=gatus&utm_source=deploy-badge&utm_medium=referral&utm_campaign=gatus"><img src="https://servorbit.com/brand/deploy/button.svg" alt="Deploy Gatus on ServOrbit" height="40"></a>

The button points to a VPS order with the template preselected. The image is served from servorbit.com — nothing to host on your side.

Need help?

Browse our help center and FAQ, or reach our team — callback, WhatsApp or email.

Message us on WhatsAppopens in a new tab