Gatus Status Page for R2D2 / TFX 2026
- Go 90.7%
- Vue 8%
- JavaScript 0.5%
- HTML 0.3%
- Go Template 0.1%
- Other 0.2%
| config | ||
| helm | ||
| src | ||
| .dockerignore | ||
| .env.example | ||
| .env.local | ||
| .gitignore | ||
| deploy.sh | ||
| docker-compose.yml | ||
| Dockerfile | ||
| README.md | ||
R2D2-Status
Service health dashboard for NATO infrastructure, built on Gatus
(vendored in src/). Endpoints, alerting, and UI settings live in
config/config.yaml (docker) and helm/values.yaml under config: (Kubernetes).
Docker Compose
cp .env.example .env # then set POSTGRES_PASSWORD
docker compose up -d --build
Dashboard: http://localhost:8080. State is stored in the bundled Postgres
(postgres compose profile, enabled via COMPOSE_PROFILES in .env).
Local development (no Postgres, sqlite storage, debug logging):
docker compose --env-file .env.local up --build
Kubernetes (Helm)
Chart in helm/. Defaults run a single replica with in-memory storage:
helm upgrade --install r2d2-status ./helm
For production, edit helm/values.override.yml (image registry, ingress host,
Postgres secret) and deploy with:
kubectl create secret generic r2d2-status-db \
--from-literal=DATABASE_URL='postgres://user:pass@host:5432/gatus?sslmode=require'
helm upgrade --install r2d2-status ./helm -f ./helm/values.override.yml
Storage modes (storage.type): memory (default, lost on restart), sqlite
(PVC-backed, single replica, Recreate strategy), postgres (required for
replicaCount > 1).
Notes
- The image runs as
nobody(65534) onscratch; ICMP (icmp://) endpoints need root orCAP_NET_RAW— grant explicitly if you add ping checks. - Publish the image with
docker compose build && docker compose pushafter settingGATUS_IMAGE/GATUS_TAGin.envto your registry.