Summary
Caddy writes JSON access logs to /var/log/caddy/jellyfin.log and /var/log/caddy/seerr.log with no rotation. The files grow unbounded.
Context
The log directives in compose/Caddyfile write per-host logs to the bind-mounted /var/log/caddy directory on the host. Caddy itself does not rotate them, and no logrotate config exists. Eventually the disk fills.
Scope
- Configure rotation for
/var/log/caddy/*.log
- Pick a retention window appropriate for low-traffic personal services (suggest 14 days, compressed)
- Make sure Caddy reopens its log file after rotation (
copytruncate or signal)
Acceptance criteria
Notes
Two reasonable approaches: host-side logrotate with copytruncate, or switch Caddy's logger to its built-in size-based rotation (roll_size, roll_keep). Caddy's built-in is simpler — no host config — but the logs are then JSON-roll inside the container's volume rather than rotated by the host. Either is fine; built-in is probably the cleaner choice here.
Summary
Caddy writes JSON access logs to
/var/log/caddy/jellyfin.logand/var/log/caddy/seerr.logwith no rotation. The files grow unbounded.Context
The
logdirectives incompose/Caddyfilewrite per-host logs to the bind-mounted/var/log/caddydirectory on the host. Caddy itself does not rotate them, and no logrotate config exists. Eventually the disk fills.Scope
/var/log/caddy/*.logcopytruncateor signal)Acceptance criteria
/etc/logrotate.d/config in place (managed bysetup.shor documented as a one-time step)Notes
Two reasonable approaches: host-side logrotate with
copytruncate, or switch Caddy's logger to its built-in size-based rotation (roll_size,roll_keep). Caddy's built-in is simpler — no host config — but the logs are then JSON-roll inside the container's volume rather than rotated by the host. Either is fine; built-in is probably the cleaner choice here.