[{"data":1,"prerenderedAt":107},["ShallowReactive",2],{"seo-verification":3,"marketplace-app-en-gatus":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"slug":7,"slugs":8,"categorySlugs":9,"name":13,"description":14,"phase":15,"unavailableReason":16,"docsUrl":17,"logo":16,"github":16,"tagline":18,"longDescription":19,"features":20,"useCases":29,"steps":39,"faq":55,"specs":71,"compatibleOs":79,"relatedApps":80,"relatedPosts":101,"category":105},"gatus",{"fr":7,"en":7,"ar":7},{"fr":10,"en":11,"ar":12},"monitoring","monitoring-observability","المراقبة-وقابلية-الرصد","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,null,"https:\u002F\u002Fservorbit.com\u002Fblog\u002Fself-host-gatus-on-a-vps-config-as-code-status-page-and-checks","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.",[21,22,23,24,25,26,27,28],"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.",[30,33,36],{"title":31,"body":32},"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":34,"body":35},"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":37,"body":38},"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.",[40,43,46,49,52],{"title":41,"body":42},"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":44,"body":45},"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:\u002F\u002Fyour-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:\u002F\u002Flocalhost:8080`.",{"title":47,"body":48},"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":50,"body":51},"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":53,"body":54},"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:\u002F\u002Fstatus.your-domain.com` directly, with no port number.",[56,59,62,65,68],{"q":57,"a":58},"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":60,"a":61},"Do I need a domain name to use Gatus?","Not for the monitoring and the alerting, but yes for a status page other people read. Gatus publishes its port on the VPS loopback only, so there is no public access without a domain: you reach it through an SSH tunnel — `ssh -L 8080:127.0.0.1:8080 root@your-vps-ip` — and browse to `http:\u002F\u002Flocalhost:8080`, using the port shown on your app's page in the ServOrbit dashboard. That is fine for watching your own services, but nobody else can open a tunnel into your VPS, so a page meant for your customers or your team needs a domain: attach one, for example `status.your-domain.com`, and ServOrbit puts an nginx vhost with TLS in front of Gatus so the page answers at `https:\u002F\u002Fstatus.your-domain.com`.",{"q":63,"a":64},"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":66,"a":67},"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":69,"a":70},"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":72,"cpu":73,"stack":74,"port":78},"512 MB","1 vCPU",[75,76,77],"Docker","Go","SQLite","8080",[],[81,89,95],{"name":82,"slug":83,"categorySlug":11,"categoryName":84,"categoryColor":85,"logo":86,"tagline":87,"description":88},"Grafana","grafana","Monitoring & Observability","text-amber-400 bg-amber-500\u002F10","https:\u002F\u002Fcdn.simpleicons.org\u002Fgrafana","Visualize your infrastructure and application metrics — customizable dashboards and alerts.","Visualize the metrics of your infrastructure and applications. Customizable dashboards, multi-channel alerts, multiple sources.",{"name":90,"slug":91,"categorySlug":11,"categoryName":84,"categoryColor":85,"logo":92,"tagline":93,"description":94},"Prometheus","prometheus","https:\u002F\u002Fcdn.simpleicons.org\u002Fprometheus","Real-time metric collection and querying — the de facto standard for modern monitoring.","Real-time metric collection and querying. The de facto standard for monitoring Kubernetes, Docker and microservices.",{"name":96,"slug":97,"categorySlug":11,"categoryName":84,"categoryColor":85,"logo":98,"tagline":99,"description":100},"Uptime Kuma","uptime-kuma","https:\u002F\u002Fcdn.simpleicons.org\u002Fuptimekuma","Self-hosted uptime monitoring with beautiful status pages — unlimited monitors, no SaaS bill.","Simple, visual availability monitoring. Watch your HTTP, TCP and DNS endpoints and receive instant alerts.",[102,103,104],"self-host-gatus-vps","monitoring-vps-grafana-prometheus","installer-prometheus-vps",{"key":10,"slug":11,"name":84,"objective":106,"icon":10,"color":85},"Monitor your infrastructure.",1787581042735]