x-arcane:
icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/gatus.svg
urls:
- https://github.com/TwiN/gatus#docker
services:
gatus:
image: twinproduction/gatus:latest
restart: unless-stopped
ports:
- "${BIND_ADDRESS:-127.0.0.1}:${PORT:-8084}:8080"
labels:
com.getarcaneapp.arcane.icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/gatus.svg
configs:
- source: gatus
target: /config/config.yaml
volumes:
- data:/data
configs:
gatus:
content: |
storage:
type: sqlite
path: /data/data.db
endpoints:
- name: monitored-service
url: "${MONITOR_URL:-https://example.com}"
interval: ${CHECK_INTERVAL:-5m}
conditions:
- "[STATUS] == 200"
- "[RESPONSE_TIME] < 3000"
volumes:
data:
BIND_ADDRESS=127.0.0.1
PORT=8084
TZ=Etc/UTC
MONITOR_URL=https://example.com
CHECK_INTERVAL=5m
README
A status dashboard with scheduled endpoint health checks.
Copy .env.example to .env, adjust the settings, then deploy with docker compose up -d or import this template in Arcane. Open http://localhost:8084 on the Docker host. Ports bind to localhost by default; set BIND_ADDRESS to a trusted interface for LAN access, or use a reverse proxy with HTTPS.
Set MONITOR_URL and CHECK_INTERVAL for your endpoint. The inline configuration is fully contained in Compose and persists history to SQLite. The dashboard is public by design; retain the localhost binding or put it behind an authenticated proxy for private status data. Compose 2.23.1 or newer is required for inline configs.
Named volumes retain internal application state across container upgrades. Keep a backup before updating images; docker compose down -v deletes named volume data.
Upstream: installation and configuration.