Files
serverAppConfigs/docs/Infrastructure/Grafana.md
T
Frank e3eb5334cb feat: initialize serverAppConfigs with podman stacks for Dankserver and Dankclaw
- Dankserver stack: RomM, Copyparty, Calibre-Web, node-exporter
- Dankclaw stack: Gluetun VPN (SearXNG tunnel), SearXNG+Valkey, ComfyUI
  (CPU backend), OpenWebUI, Hermes, Gitea+Postgres (migrated), Caddy
  reverse proxy, Grafana+Prometheus+Loki+Alloy observability
- Caddyfiles with .local hostname convention and basicauth homepage
- bind-mount storage policy, no named volumes
- deploy.sh mirroring vllmScripts git workflow (push -> pull -> restart -> health)
- docs/ Obsidian vault: per-service docs from frank-default-small research
  subagents (promtail EOL -> Alloy; gitea SECRET_KEY preservation; ComfyUI --cpu)
- bats test suite at 6 seams — 22 tests green
2026-08-13 20:19:41 -07:00

1.4 KiB

Grafana

Grafana visualizes the metrics that Prometheus collects from every service. It runs on Dankclaw and is reachable at grafana.dankclaw.local.

Host: Dankclaw — Hostname: grafana.dankclaw.local — Port: 3002 — Docs: https://grafana.com/docs

Facts

Item Value
Image docker.io/grafana/grafana:latest
Port 3002 (host) → 3000 (container)
Data volume dashboards, users, datasource config
Datasource Prometheus (on the same host)
Provisioning dashboards in /etc/grafana/provisioning/dashboards

Configuration

environment:
  GF_SECURITY_ADMIN_USER: "${GRAFANA_ADMIN_USER}"
  GF_SECURITY_ADMIN_PASSWORD: "${GRAFANA_ADMIN_PASSWORD}"
  GF_SERVER_ROOT_URL: "http://grafana.dankclaw.local"
volumes:
  - /opt/grafana/data:/var/lib/grafana
  - /opt/grafana/provisioning:/etc/grafana/provisioning:ro

Datasource

Point Grafana at the Prometheus service by name (http://prometheus:9090) on the shared podman network.

Healthcheck

Grafana responds on /api/health with 200 and "database":"ok".

Gotchas

  • Change the default admin credentials at first boot (env or UI).
  • Dashboards provisioned as YAML survive container recreation; UI-created ones live in the data volume — back it up.

See Also