v0.8.1 · aggiornata · GitHub

Risoluzione dei problemi

permission denied durante la lettura di /var/log/caddy/access.log

Caddy scrive come caddy:caddy 0600.

sudo caddy-analyze /var/log/caddy/access.log
# or persistently
sudo usermod -aG caddy $USER
# re-login, then
caddy-analyze /var/log/caddy/access.log

Impossibile connettersi al demone Docker / docker.sock: permission denied

sudo usermod -aG docker $USER  # re-login
# or
sudo caddy-analyze docker://caddy
# if guard must block host traffic too:
sudo caddy-analyze guard --firewall-backend hybrid docker://caddy

k8s:// — pod inesistente / impossibile elencare la risorsa

kubectl config current-context
kubectl get pods -n production | grep caddy
kubectl auth can-i get pods/log -n production
# fix namespace
caddy-analyze k8s://caddy-xxx -n production
caddy-analyze config k8s://caddy-xxx -n production  # remember

journalctl:// — Nessun file journal

systemctl status caddy  # is it caddy.service?
journalctl -u caddy.service --no-pager | head
sudo usermod -aG systemd-journal $USER  # re-login
# or
sudo caddy-analyze journalctl://caddy.service

GeoIP — country/asn vuoti o download non riuscito

Download automatico dal mirror P3TERX a ~/.config/caddy-analyzer/GeoLite2-*.mmdb al primo utilizzo.

ls ~/.config/caddy-analyzer/*.mmdb
# behind proxy
https_proxy=http://proxy:8080 caddy-analyze top country testdata/sample.log
# custom path
caddy-analyze --geoip-db /usr/share/GeoIP/GeoLite2-Country.mmdb top country testdata/sample.log
# tuning (see Configuration)
caddy-analyze --geo-cache-ttl 48h --geo-cache-size 100000 top country testdata/sample.log

guard — iptables: permission denied / Nessuna chain/target

Guard modifica il firewall, quindi deve essere eseguito come root.

sudo caddy-analyze guard /var/log/caddy/access.log
# timeout on huge ruleset
sudo caddy-analyze guard --iptables-timeout 30s /var/log/caddy/access.log
# Docker host needs DOCKER-USER
sudo caddy-analyze guard --firewall-backend hybrid docker://caddy

guard — server IP protection / new bans suspended

La protezione dagli auto-ban è attiva per default dalla v0.8.0. Il rilevamento può fallire per Internet/DNS indisponibili, HTTPS in uscita bloccato, certificati non validi, entrambi i servizi indisponibili o IPv6 configurato senza accesso a Internet. Le richieste dirette ignorano il proxy HTTP; il successo IPv4 non basta se è richiesto anche il rilevamento IPv6.

Un errore all'avvio impedisce a guard di partire. Durante l'esecuzione conserva gli IP protetti noti e sospende i nuovi ban, mantenendo i blocchi esistenti non correlati. L'errore mostra la causa e restart with --protect-self=false to disable server IP checks. Guard riprova ogni 30 secondi e prima dei successivi tentativi di ban.

# Verifica la connettività IPv4 diretta sul server che esegue guard
curl --noproxy '*' -4 --max-time 4 https://api.ipify.org
# Se il server dispone di connettività IPv6
curl --noproxy '*' -6 --max-time 4 https://api6.ipify.org
# Disabilita il rilevamento; sostituisci l'indirizzo fidato di esempio
sudo caddy-analyze guard /var/log/caddy/access.log \
  --protect-self=false --never-block 203.0.113.10

Se guard gira come servizio, aggiungi --protect-self=false agli argomenti di avvio e riavvialo. Salta tutti i controlli automatici sugli IP del server; le whitelist esplicite restano valide. Consulta guard → protezione dall'auto-ban per limiti con NAT condiviso e più connessioni WAN.

Aggiornamento blocklist lento / non riuscito

caddy-analyze blocklist list
# behind proxy
https_proxy=http://proxy:8080 caddy-analyze blocklist refresh
# custom cache
caddy-analyze blocklist refresh --cache-dir /tmp/bl
# skip defaults
caddy-analyze blocklist refresh --no-default-blocklists --blocklist-config my.json

Nessun output / report vuoto

Controlla i filtri: --from nel futuro, mancata corrispondenza CIDR di --ip, --country senza GeoIP. Rimuovi gradualmente i filtri.

caddy-analyze testdata/sample.log            # no filter → must show 68 lines
caddy-analyze --from 1h testdata/sample.log  # if 0, log is older than 1h
caddy-analyze --country IT testdata/sample.log  # if 0, GeoIP missing

Problema non risolto?

Apri una issue includendo: caddy-analyze --version, il comando completo e le prime 5 righe del log (redigi gli IP). GitHub Issues