Monitor your infrastructure.
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.
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.
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.
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.
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 optimized for ServOrbit Cloud 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.
Open your ServOrbit dashboard → Marketplace → Monitoring → Gatus → Deploy. An init container writes a sample config file and Gatus starts within seconds. The status page is accessible at http://your-vps-ip:8080 immediately.
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.
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.
The status page at port 8080 is ready to share. Point a subdomain (status.your-domain.com) at your VPS and configure nginx to proxy port 8080, or enable requireDomain: true in the marketplace to get a fully configured nginx vhost from ServOrbit.
Browse our help center and FAQ, or write to our team — support in French, English and Arabic.