1. The problem I’m having:
The directives roll_keep and roll_keep_for do not work. What have I done wrong?
As shown below:
$ ls -lh abc.example.com/
total 852M
-rw-r----- 1 caddy caddy 100M Sep 13 20:07 abc.example.com-2025-09-13T19-07-52.421.json
-rw-r----- 1 caddy caddy 100M Sep 15 20:23 abc.example.com-2025-09-15T19-23-03.557.json
-rw-r----- 1 caddy caddy 100M Sep 17 06:30 abc.example.com-2025-09-17T05-30-37.686.json
-rw-r----- 1 caddy caddy 100M Sep 18 07:46 abc.example.com-2025-09-18T06-46-38.846.json
-rw-r----- 1 caddy caddy 100M Sep 19 19:23 abc.example.com-2025-09-19T18-24-01.580.json
-rw-r----- 1 caddy caddy 100M Sep 25 19:50 abc.example.com-2025-09-25T18-50-05.122.json
-rw-r----- 1 caddy caddy 100M Sep 27 04:21 abc.example.com-2025-09-27T03-21-24.911.json
-rw-r----- 1 caddy caddy 100M Sep 29 02:43 abc.example.com-2025-09-29T01-43-26.027.json
-rw-r----- 1 caddy caddy 100M Sep 30 06:48 abc.example.com-2025-09-30T05-48-00.797.json
-rw-r----- 1 caddy caddy 100M Oct 1 11:15 abc.example.com-2025-10-01T10-16-11.051.json
-rw-r----- 1 caddy caddy 100M Oct 2 22:09 abc.example.com-2025-10-02T21-09-11.652.json
-rw-r----- 1 caddy caddy 100M Oct 4 06:20 abc.example.com-2025-10-04T05-20-57.792.json
-rw-r----- 1 caddy caddy 100M Oct 5 08:09 abc.example.com-2025-10-05T07-09-01.365.json
-rw-r----- 1 caddy caddy 100M Oct 6 19:02 abc.example.com-2025-10-06T18-02-46.594.json
-rw-r----- 1 caddy caddy 100M Oct 8 05:16 abc.example.com-2025-10-08T04-16-28.871.json
-rw-r----- 1 caddy caddy 100M Oct 9 06:49 abc.example.com-2025-10-09T05-49-27.252.json
-rw-r----- 1 caddy caddy 100M Oct 10 12:42 abc.example.com-2025-10-10T11-42-53.495.json
-rw-r----- 1 caddy caddy 100M Oct 11 20:58 abc.example.com-2025-10-11T19-58-38.210.json
-rw-r----- 1 caddy caddy 100M Oct 13 06:07 abc.example.com-2025-10-13T05-07-22.115.json
-rw-r----- 1 caddy caddy 100M Oct 14 07:02 abc.example.com-2025-10-14T06-02-50.523.json
-rw-r----- 1 caddy caddy 100M Oct 15 10:44 abc.example.com-2025-10-15T09-44-07.074.json
-rw-r----- 1 caddy caddy 100M Oct 17 05:39 abc.example.com-2025-10-17T04-39-06.954.json
-rw-r----- 1 caddy caddy 100M Oct 18 07:05 abc.example.com-2025-10-18T06-05-20.517.json
-rw-r----- 1 caddy caddy 100M Oct 19 23:33 abc.example.com-2025-10-19T22-33-08.943.json
-rw-r----- 1 caddy caddy 100M Oct 21 06:27 abc.example.com-2025-10-21T05-27-20.506.json
-rw-r----- 1 caddy caddy 100M Oct 22 08:10 abc.example.com-2025-10-22T07-11-05.400.json
-rw-r----- 1 caddy caddy 100M Oct 23 19:05 abc.example.com-2025-10-23T18-05-23.182.json
-rw-r----- 1 caddy caddy 100M Oct 25 06:03 abc.example.com-2025-10-25T05-03-31.468.json
-rw-r----- 1 caddy caddy 100M Oct 26 06:51 abc.example.com-2025-10-26T06-51-42.688.json
-rw-r----- 1 caddy caddy 100M Oct 27 17:41 abc.example.com-2025-10-27T17-41-41.479.json
-rw-r----- 1 caddy caddy 100M Oct 29 04:19 abc.example.com-2025-10-29T04-19-25.773.json
-rw-r----- 1 caddy caddy 100M Oct 30 06:48 abc.example.com-2025-10-30T06-48-12.720.json
-rw-r----- 1 caddy caddy 100M Oct 31 19:53 abc.example.com-2025-10-31T19-53-29.039.json
-rw-r----- 1 caddy caddy 100M Nov 2 06:38 abc.example.com-2025-11-02T06-38-10.103.json
-rw-r----- 1 caddy caddy 100M Nov 3 15:16 abc.example.com-2025-11-03T15-16-43.326.json
-rw-r----- 1 caddy caddy 100M Nov 4 22:42 abc.example.com-2025-11-04T22-42-37.045.json
-rw-r----- 1 caddy caddy 100M Nov 6 23:05 abc.example.com-2025-11-06T23-05-08.611.json
-rw-r----- 1 caddy caddy 100M Nov 8 06:18 abc.example.com-2025-11-08T06-18-30.757.json
-rw-r----- 1 caddy caddy 100M Nov 9 08:53 abc.example.com-2025-11-09T08-53-02.943.json
-rw-r----- 1 caddy caddy 100M Nov 10 19:09 abc.example.com-2025-11-10T19-09-35.303.json
-rw-r----- 1 caddy caddy 100M Nov 12 02:08 abc.example.com-2025-11-12T02-08-00.051.json
-rw-r----- 1 caddy caddy 100M Nov 17 01:20 abc.example.com-2025-11-17T01-20-14.015.json
-rw-r----- 1 caddy caddy 100M Nov 21 10:05 abc.example.com-2025-11-21T10-05-24.881.json
-rw-r----- 1 caddy caddy 100M Nov 23 07:06 abc.example.com-2025-11-23T07-06-08.632.json
-rw-r----- 1 caddy caddy 100M Nov 25 01:26 abc.example.com-2025-11-25T01-26-16.055.json
-rw-r----- 1 caddy caddy 100M Nov 26 15:19 abc.example.com-2025-11-26T15-19-16.571.json
-rw-r----- 1 caddy caddy 39M Nov 27 15:41 abc.example.com.json
2. Error messages and/or full log output:
$ journalctl -u caddy --no-pager | less +G
sh: journalctl: not found
3. Caddy version:
v2.10.2
4. How I installed and ran Caddy:
docker
a. System environment:
OS of the host that Docker runs on:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 12 (bookworm)
Release: 12
Codename: bookworm
b. Command:
caddy run --config /etc/caddy/Caddyfile --adapter caddyfile
c. Service/unit/compose file:
---
services:
caddy:
image: caddy:latest
container_name: caddy
hostname: pikachu-caddy
extra_hosts:
- "x11dpu-webui.example.com:127.0.0.1"
- "pihole-pikachu.example.com:127.0.0.1"
deploy:
resources:
limits:
memory: 256M
healthcheck:
test:
- "CMD"
- "wget"
- "--no-verbose"
- "--quiet"
- "--tries=1"
- "--spider"
- "--no-check-certificate"
- "https://pihole-pikachu.example.com/admin/login"
restart: unless-stopped
user: "3012:3012"
cap_add:
- NET_ADMIN
environment:
- TZ=Europe/London
# CPU core count
- GOMAXPROCS=24
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./caddy:/etc/caddy
- ./certs:/certs:ro
- ./config:/config:rw
- ./data:/data:rw
- ./srv:/srv
- /mnt/logs/caddy_pikachu/:/logs
d. My complete Caddy config:
{
email example@example.com
acme_ca https://acme-v02.api.letsencrypt.org/directory
log {
format json {
time_format iso8601
}
}
}
(tls_example.com) {
tls /certs/example.com/fullchain.cert.pem /certs/example.com/example.com.key.pem
}
(per_host_log) {
log {
hostnames {args[0]}
output file /logs/{args[0]}/{args[0]}.json {
mode 640
roll_size 100MiB
roll_keep_for 720h
}
format json {
time_format iso8601
}
}
}
abc.example.com {
import tls_example.com
import per_host_log abc.example.com
reverse_proxy http://10.45.0.65:6767
}