Hidden-primary DNS for ~91 zones: CoreDNS + custom rfc2136 plugin for self-hosted ACME DNS-01. Source of truth for zones/, Corefile, deploy configs.
Find a file
Ryan Malloy 18aa53bdc7 prod-readiness: alpine runtime + uid:gid passthrough + git auto-commit working
The final set of fixes to make the rfc2136 plugin truly operational
in production:

- coredns/Dockerfile: switch runtime stage from gcr.io/distroless to
  alpine:3.20. Distroless has no package manager and no shell, so
  `git commit` (called by the plugin's auto-commit code path) had no
  way to execute. Alpine adds ~10 MB image size but gives us git +
  a usable shell for debugging.
- docker-compose.yml: `user: "${COREDNS_UID:-1003}:${COREDNS_GID:-1004}"`.
  The container runs as the host's rpm user (uid 1003/gid 1004 on
  dell01) so zone files the plugin writes are owned by rpm:rpm on
  the host -- not root. Without this the plugin would write
  root-owned files we couldn't read or git-edit. Defaults match
  dell01; override per-host via env if needed.
- .env.example: documents COREDNS_IMAGE_TAG (CalVer; bump per build).
  Add COREDNS_UID/GID if you need to override on a host where rpm
  has different numeric ids.

Combined with the bumped image tag (2026.05.21.2), the full
end-to-end flow works: caddy/nsupdate -> TSIG verify -> plugin
handler -> atomic file write -> git auto-commit -> auto plugin
reload -> query returns new record.
2026-05-21 13:01:36 -06:00
caddy coredns: production Let's Encrypt cert via Caddy sidecar (DNS-01 + Vultr) 2026-05-14 01:34:57 -06:00
coredns prod-readiness: alpine runtime + uid:gid passthrough + git auto-commit working 2026-05-21 13:01:36 -06:00
scripts Retire prepare-zones.sh pipeline; zones/ is now the served form 2026-05-21 11:14:42 -06:00
secondary secondary: scaffold public CoreDNS secondary on ns.supported.systems 2026-05-20 18:40:11 -06:00
test test: sandboxed docker-compose stack for plugin smoke testing 2026-05-21 12:17:49 -06:00
zones supported.systems: ssh → 149.28.207.111; vpn + web-bmh-servicedesk.bmh → CNAME ssh 2026-05-21 11:51:01 -06:00
.env.example prod-readiness: alpine runtime + uid:gid passthrough + git auto-commit working 2026-05-21 13:01:36 -06:00
.env.local.example Phase 0 scaffolding: RFC 2136 plugin groundwork (inactive) 2026-05-20 18:20:43 -06:00
.gitignore .env now gitignored; .env.example is the committed template 2026-05-21 12:37:23 -06:00
CLAUDE.md secondary: scaffold public CoreDNS secondary on ns.supported.systems 2026-05-20 18:40:11 -06:00
Corefile deploy: enable rfc2136 plugin for all 84 production zones 2026-05-21 12:17:20 -06:00
docker-compose.yml prod-readiness: alpine runtime + uid:gid passthrough + git auto-commit working 2026-05-21 13:01:36 -06:00
Makefile Retire prepare-zones.sh pipeline; zones/ is now the served form 2026-05-21 11:14:42 -06:00