- 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
1.7 KiB
1.7 KiB
Alloy
Alloy is Grafana's log and telemetry shipper. It replaces Promtail (EOL 2026-03-02). One Alloy instance runs per host and forwards container and journal logs to Loki, and optionally metrics to Prometheus.
Hosts: Dankclaw + Dankserver (one per host) — Docs: https://grafana.com/docs/alloy/latest
Facts (from research)
| Item | Value |
|---|---|
| Image | grafana/alloy:latest |
| Port | none published (push-only) |
| Config | River syntax, config.alloy |
| Successor to | Promtail (EOL 2026-03-02) |
| Inputs | journald socket, container log files |
| Output | Loki push endpoint |
Why Alloy and not Promtail
Promtail reached end-of-life on 2026-03-02. Grafana Labs directs new installs to Alloy. This stack uses Alloy from day one.
Configuration
River config at shared/alloy/config.alloy:
- Read journald logs from the host's
/run/systemd/journal/socket. - Read container logs from
/var/lib/containers/...(podman) or the docker path. - Forward to
http://loki:3100/loki/api/v1/pushwithhostandjoblabels.
Volumes
| Container path | Host path (convention) |
|---|---|
/etc/alloy/config.alloy |
shared/alloy/config.alloy (bind mount) |
/run/systemd/journal/socket |
host journald socket (read-only) |
/var/log |
host logs (read-only) |
Gotchas
- The journald socket mount is required for journal scraping.
- Container log paths differ between docker (
/var/lib/docker/containers) and podman (/var/lib/containers/storage/...); point the config at the right one per host. - One Alloy per host; do not run a single instance that tries to reach both hosts' logs.
See Also
- Loki — the log backend
- Observability — the full stack