[{"data":1,"prerenderedAt":82},["ShallowReactive",2],{"seo-verification":3,"marketplace-app-en-gatus":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"slug":7,"name":8,"description":9,"phase":10,"docsUrl":11,"logo":12,"github":12,"tagline":13,"longDescription":14,"features":15,"useCases":24,"steps":34,"faq":50,"specs":66,"compatibleOs":74,"relatedApps":75,"relatedPosts":76,"category":77},"gatus","Gatus","Self-hosted status page and health monitoring driven by a YAML config file: define your endpoints, health conditions and alert channels, and watch the status of all your services in real time — under 256 MB RAM, no database required.",1,"https:\u002F\u002Fservorbit.com\u002Fblog\u002Fself-host-gatus-vps",null,"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.\n\nSelf-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 `\u002Fopt\u002Fstacks\u002Fgatus\u002Fconfig\u002Fconfig.yaml`: edit it and restart the container to add or update monitored endpoints.\n\nGatus 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.",[16,17,18,19,20,21,22,23],"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\u002Fdark 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.",[25,28,31],{"title":26,"body":27},"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.",{"title":29,"body":30},"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:\u002F\u002Flocalhost:3000` or `tcp:\u002F\u002Fdb:5432` and alert on degradation before users notice. Team members bookmark the internal Gatus URL instead of SSHing in to check service logs.",{"title":32,"body":33},"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.",[35,38,41,44,47],{"title":36,"body":37},"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.",{"title":39,"body":40},"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. The status page is accessible at `http:\u002F\u002Fyour-vps-ip:8080` immediately.",{"title":42,"body":43},"Edit the config file to add your endpoints","SSH into your VPS and edit `\u002Fopt\u002Fstacks\u002Fgatus\u002Fconfig\u002Fconfig.yaml`. Replace the sample endpoint with your services: URLs, TCP ports, DNS checks or ICMP hosts. Restart Gatus with `cd \u002Fopt\u002Fstacks\u002Fgatus && docker compose restart gatus` — the new endpoints appear on the status page within seconds.",{"title":45,"body":46},"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.",{"title":48,"body":49},"Share the status page","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.",[51,54,57,60,63],{"q":52,"a":53},"What is Gatus and how is it different from Uptime Kuma?","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.",{"q":55,"a":56},"Do I need a domain name to use Gatus?","No. Gatus works on a plain VPS IP without a domain. The status page is accessible at `http:\u002F\u002Fyour-vps-ip:8080`. A domain name lets you proxy Gatus behind nginx with HTTPS and a subdomain like `status.your-domain.com` — recommended for a customer-facing status page — but internal monitoring and alerting work immediately with just the IP.",{"q":58,"a":59},"How do I add a new endpoint to monitor?","SSH into your VPS and edit `\u002Fopt\u002Fstacks\u002Fgatus\u002Fconfig\u002Fconfig.yaml`. Add a new entry under `endpoints:` with the URL, interval and conditions. Then run `cd \u002Fopt\u002Fstacks\u002Fgatus && docker compose restart gatus`. The new endpoint appears on the status page within seconds. No browser, no UI, no credentials — just a text file.",{"q":61,"a":62},"What alert channels does Gatus support?","Gatus includes 40+ alert integrations out of the box: Slack, PagerDuty, OpsGenie, Discord, Microsoft Teams, Telegram, Pushover, ntfy, GitHub Issues, email, custom webhooks, Mattermost, Gotify and more. Configure the integration once in the `alerting:` block, then reference it by type from each endpoint. Supports configurable failure and success thresholds — e.g., alert after 2 failures and recover after 3 consecutive successes.",{"q":64,"a":65},"How do I monitor a TCP port or DNS resolution, not just HTTP?","Change the `url:` prefix to `tcp:\u002F\u002F`, `icmp:\u002F\u002F` or `dns:\u002F\u002F`. For example: `url: \"tcp:\u002F\u002Fdb.internal:5432\"` checks that PostgreSQL is accepting connections; `url: \"icmp:\u002F\u002Fgateway.internal\"` pings a host. Conditions work the same way — `[CONNECTED] == true` for TCP, `[DNS_RCODE] == NOERROR` for DNS. All endpoint types share the same alerting and status page display.",{"ram":67,"cpu":68,"stack":69,"port":73},"512 MB","1 vCPU",[70,71,72],"Docker","Go","SQLite","8080",[],[],[],{"key":78,"slug":78,"name":79,"objective":80,"icon":78,"color":81},"monitoring","Monitoring & Observability","Monitor your infrastructure.","text-amber-400 bg-amber-500\u002F10",1785714051168]