- Migrate all 127 non-reserved docs to OKF v0.1 frontmatter (type/description/tags/timestamp); fix 13 YAML issues, 2 duplicate-FM blocks, strip reserved-page FM - Restructure log.md to OKF (## YYYY-MM-DD, newest-first) - Fact-check against scripts/AGENTS.md ground truth: fix 6 false 'Active' banners on retired runbooks, 96->114 GiB GTT, deployment.md vs deploy-plan.py/deploy-remote.sh, Deployment Flow frank-medium=Quadlet, Calibre 9.9.0->9.15.0 + CVE-2025-7404 conflation, Copyparty v1.20.24, RomM 5.3.0 breaking change - Move *arr docs to new FrankBook-Pro/ section (git mv, link-safe) - Write active runbook bodies from ground truth (frank-large, frank-small) - Add 3 research briefs + HTML report: Local TTS and Voice Cloning, AI Job Search and Resume Tools, Most Popular Self-Hosted AI Apps (Jun-Sep 2026) - Add upstream-version rows to ComfyUI/OpenWebUI/Hermes app docs - All 336 tests pass; 136 pages, 0 unresolved wikilinks
4.4 KiB
4.4 KiB
type, description, tags, timestamp
| type | description | tags | timestamp | |
|---|---|---|---|---|
| reference | Consolidated research from the `frank-small` research subagents (2026-08-14) plus the pi agent knowledge base. |
|
2026-09-03 |
Service Research Brief
Consolidated research from the frank-small research subagents (2026-08-14) plus the pi agent knowledge base. This is the source material behind the per-service docs pages.
Method
Four parallel researchers fetched primary sources: official Docker docs, GitHub READMEs, container source (ComfyUI cli_args.py, OpenWebUI env.py), the Gluetun wiki, and Grafana/Loki/Prometheus docs. The first parallel run failed with 503 Loading model (llama.cpp on Dankserver reloading); the retry completed for three of four, and the infra brief completed solo.
Key Findings
Dankserver stack
- RomM —
ghcr.io/rommapp/romm:latest; FastAPI+React; SQLite data; needsROMM_USERNAME/ROMM_PASSWORD/ROMM_SECRET_KEYat first boot; volumes/romm/library+/romm/resources. - Copyparty —
ghcr.io/9001/copyparty:latest; single-file Python server; port 3923; per-folder.cpyauth;--resumablefor large uploads. - Calibre-Web —
lscr.io/linuxserver/calibre-web:latest(matches the live container);PUID=1000 PGID=1000 TZ=Etc/UTC;/config+/books; external binary pathsunrar/kepubify/ebook-convert; library path must be set in admin UI; DB path wrong ⇒ login succeeds but library empty. - Calibre — host tool, not a container; Calibre-Web points at its library directory.
Dankclaw stack
- SearXNG —
ghcr.io/searxng/searxng:latest;network_mode: service:gluetun(KB Pattern 2); Valkey cache replaces Redis;settings.ymlkeys:server.secret_key,base_url,limiter: true,valkey.url,outgoing.*,search.formats: [html, json]; JSON API rate-limited (4/h untrusted) — trusted-group the agent IP. - Gluetun —
qmcgaw/gluetun:latest;NET_ADMIN+/dev/net/tun; port publishing moves to gluetun;VPN_SERVICE_PROVIDER,VPN_TYPE,WIREGUARD_PRIVATE_KEY; DNS: preferdotupstreams, neverDNS_UPSTREAM_PLAIN_ADDRESSESto a LAN address (leaks); verify withpodman exec gluetun curl -s ifconfig.me. - ComfyUI — CPU backend required: ROCm wheels have no gfx1151 (Strix Halo) kernels;
--cpuflag confirmed incli_args.py("To use the CPU for everything (slow)"); do NOT use CUDA images; models/input/output persisted. - OpenWebUI —
ghcr.io/open-webui/open-webui:main(NOT:cudaon AMD); port 8080 in container; OpenAI-compatible endpoint tohost.containers.internal:7770/v1;/health. - Hermes — Nous Research self-improving agent; MIT; official image
docker.io/nousresearch/hermes-agent:latest(verified pullable 2026-08-14); TUI + Telegram/Discord/etc.; points at local llama.cpp:7770/v1; data volume for skills/memory. - Gitea — migrate live
/opt/gitea/podman-compose.yml(postgres:16-alpine + gitea + caddy); never change SECRET_KEY/INTERNAL_TOKEN after migration; keep bind mounts/opt/gitea/data/*; DB password must move to.env.
Infrastructure
- Caddy —
caddy:2-alpine; directive isbasicauth(renamed frombasic_authin v2.8+); hash withcaddy hash-password; homepage viaroot * /srv/http+file_server;admin offrecommended. - Grafana/Prometheus —
grafana/grafana:latest+prom/prometheus:latest; prometheus.yml scrapes node-exporters on both hosts (192.168.0.143/235:9100) + Gitea/Grafana/Loki metrics; Grafana datasource provisioningapiVersion: 1withaccess: proxy. - Node-Exporter —
prom/node-exporter:latest;network_mode: host,pid: host, read-only/proc /sys /mounts. - Logs — Promtail is EOL 2026-03-02 ⇒ use Grafana Alloy (
grafana/alloy:latest, River config) as the shipper; Lokigrafana/loki:latestsingle-binary mode, TSDB schema v13, filesystem storage, compactor retention 30d; health/ready.
Open Items
- VPN provider choice for Gluetun (
.envon Dankclaw). - Calibre library path (user-entered later).
- Caddy bcrypt hashes at deploy (
caddy hash-password). - B2 bucket/app key for Backblaze backups (deferred).
- Public DNS for
*.franksdank.clouddomains (pending).
See Also
- Per-service pages: SearXNG Gluetun ComfyUI OpenWebUI Hermes Gitea RomM Copyparty Calibre-Web Caddy Grafana Prometheus Loki Alloy Node-Exporter
- Observability — the stack this research feeds