- 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
42 lines
1.5 KiB
Bash
42 lines
1.5 KiB
Bash
#!/usr/bin/env bats
|
|
# Seam: Caddyfile validity.
|
|
# Each host must have a Caddyfile. Site blocks must reference services by the
|
|
# hostname convention (*.dankserver.local / *.dankclaw.local) and must proxy to
|
|
# reachable upstreams. When caddy(1) exists locally we run `caddy validate`;
|
|
# otherwise we do structural checks.
|
|
|
|
load helpers
|
|
|
|
@test "a Caddyfile exists for dankserver and dankclaw" {
|
|
[ -f "$REPO_ROOT/dankserver/Caddyfile" ]
|
|
[ -f "$REPO_ROOT/dankclaw/Caddyfile" ]
|
|
}
|
|
|
|
@test "Caddyfiles use the .local hostname convention" {
|
|
grep -qE '\.dankserver\.local' "$REPO_ROOT/dankserver/Caddyfile"
|
|
grep -qE '\.dankclaw\.local' "$REPO_ROOT/dankclaw/Caddyfile"
|
|
}
|
|
|
|
@test "Caddyfiles have balanced braces" {
|
|
for f in "$REPO_ROOT/dankserver/Caddyfile" "$REPO_ROOT/dankclaw/Caddyfile"; do
|
|
local open close
|
|
open=$(grep -o '{' "$f" | wc -l)
|
|
close=$(grep -o '}' "$f" | wc -l)
|
|
[ "$open" -eq "$close" ] || { echo "$f: unbalanced braces ($open vs $close)"; return 1; }
|
|
done
|
|
}
|
|
|
|
@test "caddy validate passes when caddy is available" {
|
|
if command -v caddy >/dev/null 2>&1; then
|
|
caddy validate --config "$REPO_ROOT/dankserver/Caddyfile" --adapter caddyfile
|
|
caddy validate --config "$REPO_ROOT/dankclaw/Caddyfile" --adapter caddyfile
|
|
else
|
|
skip "caddy binary not installed locally"
|
|
fi
|
|
}
|
|
|
|
@test "homepage basic auth exists in the Caddyfiles" {
|
|
grep -qiE 'basicauth|basic_auth' "$REPO_ROOT/dankserver/Caddyfile"
|
|
grep -qiE 'basicauth|basic_auth' "$REPO_ROOT/dankclaw/Caddyfile"
|
|
}
|