PR: #55 (feat/27-docker-compose)
Files: deploy/compose/docker-compose.yml (no logging block on either service)
Neither the charon nor alloy service defines a logging: configuration. Docker's default json-file log driver has no rotation limits. Charon emits approximately one info! log per BSC block (3-second block time, ~28,800 block events per day from the block listener alone). Alloy emits scrape status logs every 15 seconds.
On a 40 GB Hetzner CX22 hosting the OS (~5 GB), Docker images (~1 GB), and the compose stack, unbounded log growth will fill the disk within weeks under normal operation. The Dockerfile comment explicitly notes CX22's 40 GB disk budget but makes no provision to stay within it.
Suggested fix: Add a logging: block to each service:
logging:
driver: json-file
options:
max-size: "50m"
max-file: "5"
This caps each service at 250 MB total log storage, retaining several days of history for incident investigation while staying well within the CX22 disk budget.
Refs #55
PR: #55 (feat/27-docker-compose)
Files: deploy/compose/docker-compose.yml (no logging block on either service)
Neither the
charonnoralloyservice defines alogging:configuration. Docker's defaultjson-filelog driver has no rotation limits. Charon emits approximately oneinfo!log per BSC block (3-second block time, ~28,800 block events per day from the block listener alone). Alloy emits scrape status logs every 15 seconds.On a 40 GB Hetzner CX22 hosting the OS (~5 GB), Docker images (~1 GB), and the compose stack, unbounded log growth will fill the disk within weeks under normal operation. The Dockerfile comment explicitly notes CX22's 40 GB disk budget but makes no provision to stay within it.
Suggested fix: Add a
logging:block to each service:This caps each service at 250 MB total log storage, retaining several days of history for incident investigation while staying well within the CX22 disk budget.
Refs #55