Files
serverAppConfigs/dankclaw/dnsmasq/dnsmasq.container
T
Frank 55d062ea7b 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.
2026-08-21 16:31:42 -07:00

33 lines
1.1 KiB
INI

# Quadlet unit: dnsmasq LAN DNS (rootless, boot-persistent).
#
# Install path on dankclaw: ~/.config/containers/systemd/dnsmasq.container
# Unit name: dnsmasq.service (container name: dnsmasq)
#
# The LAN's authoritative DNS for the flat franksdank.cloud / franksdank.casa
# name scheme. It serves A records from addn-hosts (one per Caddy vhost) and
# forwards everything else to pinned upstream resolvers. The SURFboard G36
# router hands this server out to DHCP clients (DNS Relay -> statically
# configured -> 192.168.0.143), so no client needs per-device config.
#
# Runs on slirp4netns with port 53 published to the LAN (the same pattern as
# open-webui). Config mounts from /opt/dnsmasq. See docs/Infrastructure/LAN-DNS.md.
[Unit]
Description=dnsmasq LAN DNS container
After=network.target
[Container]
ContainerName=dnsmasq
Network=slirp4netns
Image=localhost/dnsmasq:latest
PublishPort=53:53/tcp
PublishPort=53:53/udp
Volume=/opt/dnsmasq/dnsmasq.conf:/etc/dnsmasq.conf:ro
Volume=/opt/dnsmasq/addn-hosts:/etc/dnsmasq/addn-hosts:ro
[Service]
Restart=always
[Install]
WantedBy=default.target