Caddy can't download directory from acme because of ipv6

Hello, when I try to start caddy it tries to get json from https://acme-v02.api.letsencrypt.org/directory but it fails because it tries to use ipv6 to connect to that site. I use Arch Linux
My Caddyfile
`(wildcard_cert) {
tls {
dns cloudflare
wildcard
}
}

xxx.xxx {
root /srv/http/xxx.xxx/public_html/
log /srv/http/xxx.xxx/access.log
errors /srv/http/xxx.xxx/error.log
}``
Error:
Jan 01 14:04:24 ivan systemd[1]: Started Caddy HTTP/2 web server. Jan 01 14:04:24 ivan caddy[537]: Activating privacy features... 2019/01/01 14:04:24 making ACME client to get ToS URL: get directory at 'https://acme-v02.api.letsencrypt.org/directory': failed to get json "https://acme-v02.api.letsencrypt.org/directory": Get https://acme-v02.api.letsencrypt.org/directory: dial tcp: lookup acme-v02.api.letsencrypt.org on [::1]:53:read udp [::1]:38193->[::1]:53: read: connection refused Jan 01 14:04:24 ivan systemd[1]: caddy.service: Main process exited, code=exited, status=1/FAILURE Jan 01 14:04:24 ivan systemd[1]: caddy.service: Failed with result 'exit-code'.
On server there is ipv6 interface but without internet access so I tried to disable it but same result with small change in error log connect: cannot assign requested address instead of read: connection refused.
I tried do ipv6 tunneling and it works because I can ping acme-v02.api.letsencrypt.org via ipv6

but same error with read: connection refused on caddy web server :frowning: How I can force caddy to use ipv4 or to connect by ipv6 properly?
I start caddy by systemd service

`[Unit]
Description=Caddy HTTP/2 web server
Documentation=https://caddyserver.com/docs
After=network-online.target
Wants=network-online.target systemd-networkd-wait-online.service

[Service]
Restart=on-abnormal

; User and group the process will run as.
User=www-data
Group=www-data

; Letsencrypt-issued certificates will be written to this directory.
Environment=CADDYPATH=/etc/ssl/caddy
Environment=CLOUDFLARE_API_KEY=xxxxx
Environment=CLOUDFLARE_EMAIL=xxxx

; Always set “-root” to something safe in case it gets forgotten in the Caddyfile.
ExecStart=/usr/local/bin/caddy -log stdout -agree=true -quic -conf=/etc/caddy/Caddyfile -root=/var/tmp
ExecReload=/bin/kill -USR1 $MAINPID

; Use graceful shutdown with a reasonable timeout
KillMode=mixed
KillSignal=SIGQUIT
TimeoutStopSec=5s

; Limit the number of file descriptors; see man systemd.exec for more limit settings.
LimitNOFILE=1048576
; Unmodified caddy is not expected to use more than that.
LimitNPROC=512

; Use private /tmp and /var/tmp, which are discarded after caddy stops.
PrivateTmp=true
; Use a minimal /dev (May bring additional security if switched to ‘true’, but it may not work on Raspberry Pi’s or other devices, so it has been disabled in this dist.)
PrivateDevices=false
; Hide /home, /root, and /run/user. Nobody will steal your SSH-keys.
ProtectHome=true
; Make /usr, /boot, /etc and possibly some more folders read-only.
ProtectSystem=full
; … except /etc/ssl/caddy, because we want Letsencrypt-certificates there.
; This merely retains r/w access rights, it does not add any new. Must still be writable on the host!
ReadWriteDirectories=/etc/ssl/caddy

; The following additional security directives only work with systemd v229 or later.
; They further restrict privileges that can be gained by caddy. Uncomment if you like.
; Note that you may have to add capabilities required by any plugins in use.
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_BIND_SERVICE
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target`

Hi @MrVanosh, welcome to the Caddy community.

Just to clarify, it is networked (interface is up), but without internet access?

Did you bring down the interface, or did you disable IPv6 globally?

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.