Monitoring & Observability
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.
What gets installed
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
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. 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.
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 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.
Maintaining a project that uses Gatus? This button lets your readers deploy it on a VPS in one click, without reading Docker documentation.
[](https://servorbit.com/vps-cloud?template=gatus&utm_source=deploy-badge&utm_medium=referral&utm_campaign=gatus)<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.
Visualize the metrics of your infrastructure and applications. Customizable dashboards, multi-channel alerts, multiple sources.
Monitoring & ObservabilityReal-time metric collection and querying. The de facto standard for monitoring Kubernetes, Docker and microservices.
Monitoring & ObservabilitySimple, visual availability monitoring. Watch your HTTP, TCP and DNS endpoints and receive instant alerts.
Browse our help center and FAQ, or reach our team — callback, WhatsApp or email.
Message us on WhatsAppopens in a new tab