Uma rápida dica, bem técnica, sobre o Fail2ban rodando com o Caddy em servidor Linux. Só para deixar registrado, já que vasculhei toda a web tentando resolver esse problema e só achei pistas, que fui juntando até chegar na solução.
Banir IPs agressores com o Fail2ban, com base em logs de acesso do Caddy não funciona na configuração padrão. Isso porque o formato das timestamps no log Caddy estão em "Epoch" (segundos Unix) e o Fail2ban não reconhece isso de primeira, aí o banimento não dispara.
Isso ainda não está documentado em lugar nenhum, mas é preciso adicionar a linha:
datepattern = "ts":{Epoch},\s*
no arquivo de configuração com a expressão regular que varre os logs. Aí, basta reiniciar o Fail2ban e tchau! Sem mais bots escaneando o servidor web em busca de brechas para invadir.
Para quem auto-hospeda, realmente recomendo o Caddy. É até mais simples de configurar do que Nginx, com desempenho equivalente ou superior, e certificados de segurança automáticos.