First semver release, and a security-significant one. Read the upgrade section before pulling into an existing deployment.
What changed
- Credentials are no longer in git. This repository used to ship a tracked
.envwith a generated-looking database password. If you deployed without changing it, rotateZABBIX_DB_PASSWORDnow. Going forward.envis gitignored,.env.exampledocuments every value with generation commands, and compose fails fast when a required secret is unset. - Zabbix 6.4.6 → 7.0.30 LTS (server, web, agent2 move together). The 6.4 line has been end-of-life since 2024-12-31 with no security updates; 7.0 is the LTS line supported until 2029.
- Traefik 3.2 → 3.7. Traefik 3.2's Docker client cannot talk to Docker Engine 29: the docker provider fails in a retry loop and the stack silently serves 404s on current hosts.
- All five images pinned by
tag@sha256:digestas interpolation defaults in the compose file'sx-imagesblock —git pullalone delivers the tested version combination, and.envcarries only secrets and deliberate overrides. - CI now proves the configuration works. Every push and a weekly cron run linters, Trivy scans, a freshness check (digest drift, LTS-line currency via endoflife.date, Traefik release lag), and a full
docker compose upthat requires the zabbix-server healthcheck and a working web API (apiinfo.version) through Traefik.
How to upgrade an existing deployment
- Back up the database first (
pg_dump); there is no downgrade path other than restoring it. - Keep your existing
.env(it is untracked now) andgit pull. docker compose -f zabbix-traefik-letsencrypt-docker-compose.yml -p zabbix pull && docker compose -f zabbix-traefik-letsencrypt-docker-compose.yml -p zabbix up -d— the server migrates the database schema from 6.4 to 7.0 automatically on first start. Expect a longer first boot on large databases.- Delete any
*_IMAGE_TAGlines from your.envto switch to repo-managed versions, and rotate the database password if it came from the old tracked file.
Fresh deployments: copy .env.example to .env, fill in the required values, docker compose up -d.
Validated before release: server healthy on 7.0.30, apiinfo.version answers through Traefik, backup cycle produces gunzip-tested dumps, and the same checks run in CI on every push.
Full changelog: https://github.com/heyvaldemar/zabbix-traefik-letsencrypt-docker-compose/blob/main/CHANGELOG.md