DNS names: flat franksdank.cloud scheme + dnsmasq LAN DNS on dankclaw

Phase 1 of the local-DNS-name work. Users type a name, not a port.

- dnsmasq quadlet on dankclaw (rootless, slirp4netns, port 53 published):
  serves the flat name scheme from addn-hosts, upstream 1.1.1.1/1.0.0.1.
  Image built from the in-repo Containerfile (localhost/dnsmasq:latest).
- Caddyfiles (both hosts): all *.dankclaw.local / *.dankserver.local vhosts
  renamed to flat <service>.franksdank.cloud. Explicit http:// site
  addresses for now; TLS (wildcard LE via DNS-01/Porkbun) lands in phase 2.
- Drift reconciliation (live /etc/caddy/Caddyfile on dankserver differs
  from the repo): added the live-only llms.franksdank.cloud vhost
  (OpenWebUI on :3000). Dropped the legacy search vhost from dankserver
  (the name belongs to dankclaw's gluetun-routed SearXNG; the legacy
  instance stays reachable at 192.168.0.235:8081).
- Homepage service links updated to the new names.
- New test seams (TDD): tests/dnsmasq.bats (quadlet boot-persistence,
  port 53, conf/record validity, Caddyfile<->addn-hosts cross-check on
  the right host IPs); caddyfile.bats naming-convention tests updated.

LAN clients get this DNS from the SURFboard G36 (DNS Relay -> statically
configured -> 192.168.0.143); the router change is a pending user step.
This commit is contained in:
Frank
2026-08-21 16:31:42 -07:00
parent 833f2365f1
commit 55d062ea7b
10 changed files with 274 additions and 48 deletions
+4 -4
View File
@@ -9,25 +9,25 @@
},
{
"name": "RomM",
"url": "http://romm.dankserver.local",
"url": "http://romm.franksdank.cloud",
"description": "Retro game manager and player for the ROM collection.",
"docs": "docs/Dankserver/RomM.md"
},
{
"name": "Copyparty",
"url": "http://files.dankserver.local",
"url": "http://files.franksdank.cloud",
"description": "High-speed file sharing and streaming server.",
"docs": "docs/Dankserver/Copyparty.md"
},
{
"name": "Calibre-Web",
"url": "http://books.dankserver.local",
"url": "http://books.franksdank.cloud",
"description": "E-book library browser and reader.",
"docs": "docs/Dankserver/Calibre-Web.md"
},
{
"name": "Plex",
"url": "http://plex.dankserver.local",
"url": "http://plex.franksdank.cloud",
"description": "Media server (existing host service, proxied).",
"docs": "docs/Dankserver/Dankserver Stack.md"
}
+8 -8
View File
@@ -9,49 +9,49 @@
},
{
"name": "SearXNG",
"url": "http://search.dankclaw.local",
"url": "http://search.franksdank.cloud",
"description": "Privacy-respecting metasearch engine (through Gluetun VPN).",
"docs": "docs/Dankclaw/SearXNG.md"
},
{
"name": "ComfyUI",
"url": "http://comfyui.dankclaw.local",
"url": "http://comfyui.franksdank.cloud",
"description": "Node-based AI image generation (CPU backend on Strix Halo).",
"docs": "docs/Dankclaw/ComfyUI.md"
},
{
"name": "OpenWebUI",
"url": "http://chat.dankclaw.local",
"url": "http://chat.franksdank.cloud",
"description": "Chat interface for local LLMs (llama.cpp on :7770).",
"docs": "docs/Dankclaw/OpenWebUI.md"
},
{
"name": "Hermes",
"url": "http://hermes.dankclaw.local",
"url": "http://hermes.franksdank.cloud",
"description": "Self-improving AI agent (Nous Research).",
"docs": "docs/Dankclaw/Hermes.md"
},
{
"name": "Gitea",
"url": "http://gitea.dankclaw.local",
"url": "http://gitea.franksdank.cloud",
"description": "Self-hosted Git service with issues and PRs.",
"docs": "docs/Dankclaw/Gitea.md"
},
{
"name": "Grafana",
"url": "http://grafana.dankclaw.local",
"url": "http://grafana.franksdank.cloud",
"description": "Dashboards for metrics and logs.",
"docs": "docs/Infrastructure/Grafana.md"
},
{
"name": "Prometheus",
"url": "http://prometheus.dankclaw.local",
"url": "http://prometheus.franksdank.cloud",
"description": "Metrics collection for the whole stack.",
"docs": "docs/Infrastructure/Prometheus.md"
},
{
"name": "Loki",
"url": "http://loki.dankclaw.local",
"url": "http://loki.franksdank.cloud",
"description": "Log storage and query backend.",
"docs": "docs/Infrastructure/Loki.md"
}