Monitor your infrastructure.

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.

512 MB RAM 1 vCPU Port 8080 Available

Tech stack

DockerGoSQLite
Minimum RAM512 MB
Minimum CPU1 vCPU
Default port8080
Compatible OSChoice of Linux distributions

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.

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?

1

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.

2

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.

3

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.

Deploy Gatus on your VPS

Guide optimized for ServOrbit Cloud VPS.

01

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.

02

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.

03

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.

04

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.

05

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

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.

Monitor your infrastructure.

Activate Gatus on your infrastructure.

Dedicated Cloud VPS — IPv4 included, European datacenter, support included. Your data never leaves your server.

Recommended configuration: 512 MB RAM · 1 vCPU

Need help?

Browse our help center and FAQ, or reach our team — callback, WhatsApp or email. Support in French, English and Arabic.