- Use correct Gandi DNS syntax: dns gandi {env.VAR} (not nested block)
- Add wrapper script to load token from file into environment variable
- Update LaunchAgent to use wrapper script
Caddy now successfully obtains Let's Encrypt wildcard certs via DNS-01.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Create caddy role following zot pattern (manual build, ansible deploy)
- Caddy built with Gandi DNS plugin for ACME DNS-01 challenges
- Gandi PAT fetched from 1Password and written to secured file on indri
- Configure wildcard TLS for *.ops.eblu.me
- Initial services: forge, registry (indri-local)
- Uses port 8443 during testing to avoid Tailscale serve conflicts
Build instructions (on indri):
cd ~/code/3rd/caddy && mise run build
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>