1. The problem I’m having:
A few days ago, I set up Pihole and Caddy in a Docker environment so that I could access internal applications via HTTPS (instructions in c’t 2026, issue 22, page 154). Since then, the Docker-Caddy log has been reporting a large number of these error messages
msg=failed updating renewal info from ACME CA identifiers=[‘*.hmw26.de’] cert_hash=... ari_unique_id=... cert_expiry=1801463708 issuer=acme-v02.api.letsencrypt.org-directory error=provisioning client: performing request: Get ‘https://acme-v02.api.letsencrypt.org/directory’: dial tcp: lookup acme-v02.api.letsencrypt.org on 127.0.0.11:53: server misbehaving2.
3. Caddy version:
v2.11.7 h1:…
4. How I installed and ran Caddy:
Docker compose
Domain hmw26.de is hosted by Hetzner
a. System environment:
RASPI 4B with 8GB RAM
Client: Docker Engine - Community
Version: 29.9.3
API version: 1.56
Go version: go1.26.10
Git commit: 5457199
Built: Tue Nov 3 21:41:25 2026
OS/Arch: linux/arm64
Context: default
Server: Docker Engine - Community
Engine:
Version: 29.9.3
API version: 1.56 (minimum version 1.40)
Go version: go1.26.10
Git commit: 70efc0e
Built: Tue Nov 3 21:41:25 2026
OS/Arch: linux/arm64
Experimental: false
containerd:
Version: v2.4.2
GitCommit: b7a25261e029d68978bbf290df0a62fc819b3c51
runc:
Version: 1.5.2
GitCommit: v1.5.2-0-g29dd3dc2
docker-init:
Version: 0.19.0
GitCommit: de40ad0
b. Command:
caddy run --config /etc/caddy/Caddyfile --adapter caddyfile
c. Service/unit/compose file:
services:
pihole:
image: pihole/pihole:latest
ports:
- "53:53/tcp"
- "53:53/udp"
environment:
TZ: Europe/Berlin
FTLCONF_webserver_api_password: ${PIHOLE_PASSWORD}
FTLCONF_dns_listeningMode: all
FTLCONF_dns_upstreams: |-
86.54.11.13
86.54.11.213
1.1.1.1
1.0.0.1
FTLCONF_misc_dnsmasq_lines: address=/hmw26.de/192.168.178.29;local=/hmw26.de/
volumes:
- ./pihole:/etc/pihole
restart: unless-stopped
cap_add:
- CAP_SYS_NICE
- CAP_SYS_TIME
caddy:
build: ./caddy
ports:
- "80:80"
- "443:443"
- "443:443/udp"
environment:
CF_API_TOKEN: ${CF_API_TOKEN}
volumes:
- ./caddy/Caddyfile:/etc/caddy/Caddyfile:ro
- caddy_data:/data
restart: unless-stopped
volumes:
caddy_data:
d. My complete Caddy config:
Caddyfile
{
email me@provider.com
acme_ca https://acme-v02.api.letsencrypt.org/directory
}
*.hmw26.de {
tls {
dns hetzner {env.CF_API_TOKEN}
propagation_delay 30s
resolvers 9.9.9.9 1.1.1.1
}
@pihole host pihole.hmw26.de
handle @pihole {
redir / /admin/
reverse_proxy pihole:80
}
@img host img.hmw26.de
handle @img {
reverse_proxy 192.168.178.29:2283
}
@dwi host dwi.hmw26.de
handle @dwi {
reverse_proxy 192.168.178.29:3000
}
@ptr host ptr.hmw26.de
handle @ptr {
reverse_proxy 192.168.178.29:9443
}
handle {
abort
}
}
Dockerfile
FROM caddy:2-builder AS builder
RUN xcaddy build --with github.com/caddy-dns/hetzner/v2
FROM caddy:2
COPY --from=builder /usr/bin/caddy /usr/bin/caddy