This builds a Caddy image for Bang with the Vercel DNS-01 provider included.
Target image:
ghcr.io/shenlok/bang-caddy-vercel:2.10.2-vercel
Target platform:
linux/amd64
Bang is a Synology DS220+ with x86_64 / Gemini Lake hardware, so linux/amd64
is the architecture that matters. Building through GitHub Actions avoids Windows
Docker Desktop or local WSL producing an image for the wrong platform.
- Base Caddy version:
2.10.2, matching the previously deployedghcr.io/caddybuilds/caddy-cloudflare:2.10.2-alpinegeneration. - Added module: local
github.com/caddy-dns/vercelreplacement undermodules/vercel, updated for Caddy 2.10 / libdns v1. - Build-time verification: the Dockerfile runs
caddy list-modulesand fails unlessdns.providers.vercelis present.
The private GitHub repo is:
https://github.com/Shenlok/bang-caddy-vercel
The successful build run is:
https://github.com/Shenlok/bang-caddy-vercel/actions/runs/28858259779
Expected result:
ghcr.io/shenlok/bang-caddy-vercel:2.10.2-vercel
ghcr.io/shenlok/bang-caddy-vercel:latest
Because the repository is private, the GHCR package may require authentication before Bang can pull it:
docker login ghcr.io
For the least annoying Synology deployment, make the package public or use a read-only package token.
The workflow also uploads a short-lived Docker archive artifact that can be downloaded and loaded manually on Bang if GHCR visibility/authentication gets in the way.
The Caddy token should not live in the Caddyfile. Put it in
/volume1/docker/caddy/.env:
VERCEL_API_TOKEN=replace-with-rotated-token
Then use:
tls { dns vercel {env.VERCEL_API_TOKEN} }
The candidate Compose file is in nas/docker-compose.caddy-vercel.yml.
After the image exists in GHCR, replace Bang's current Caddy Compose image:
ghcr.io/caddybuilds/caddy-cloudflare:2.10.2-alpine
with:
ghcr.io/shenlok/bang-caddy-vercel:2.10.2-vercel
and replace the old CLOUDFLARE_API_TOKEN environment entry with env_file: .env.
After pulling and starting the new image:
docker exec caddy caddy list-modules | grep dns.providers.vercel docker logs --tail 120 caddy
Then test:
http://192.168.2.251/
https://namer.bang.shenlok.dev/
https://video-player.bang.shenlok.dev/
Rotate the Vercel token that was previously embedded in the live Caddyfile after the new setup is working.