Skip to content

Gatus — Setup

Uptime monitoring with GitOps-managed config. Runs as a Docker container on LXC 119 (infra-apps). All endpoint configuration is file-driven (services/gatus/config.yaml) — config changes are applied by pushing to main.

  • GitHub: https://github.com/TwiN/gatus

Infrastructure

Host Internal URL
Docker (LXC 119) 192.168.1.119:8080 https://uptime.eva-00.network

Observability

Logs

Gatus logs are collected via Grafana Alloy Docker discovery and shipped to Loki.

Query Purpose
{container="gatus"} All container output
{container="gatus"} \|= "error" Errors only
{container="gatus"} \|= "endpoint" Endpoint check logs

Access: Grafana → Explore → Loki → Enter query

Metrics

Gatus does not export Prometheus metrics at the default scrape endpoint. Use Loki logs to monitor endpoint health.

IaC

Artifact Path
Playbook ansible/playbooks/infra-apps.yml
Workflow .forgejo/workflows/infra-apps.yml
Config services/gatus/config.yaml

Alerting chain

Gatus detects outage (3 consecutive failures)
  └── POST webhook to n8n
        └── n8n (Service Alerts → Matrix) → Matrix room → Element X on phone
              └── Resolved after 2 consecutive successes → UP alert

Migration note

Uptime Kuma was replaced by Gatus in March 2026. Reason: Uptime Kuma requires manual configuration through its web UI and cannot be managed as code. Gatus is config-file driven, making it fully GitOps-compatible.

Domains previously in NPM — not yet migrated to Caddy

These were configured in Nginx Proxy Manager before it was replaced. Add them to services/caddy/Caddyfile when the backing services are deployed.

Domain Notes
romm.eva-00.network
qb.eva-00.network
ex.eva-00.network
stacks.eva-00.network
cwa.eva-00.network
snake.eva-00.network also used port 51820 (WireGuard?)
ta.eva-00.network
jelly.eva-00.network
test.eva-00.network
archive.eva-00.network