Traefik v3.4 y Docker 29: cómo resolvimos la incompatibilidad de API
El problema
Tras actualizar el host a Docker Engine 29, Traefik dejó de cargar el provider Docker. El síntoma en logs era claro:
Error response from daemon: client version 1.24 is too old.
Minimum supported API version is 1.40
Como consecuencia, acme.json permanecía vacío y ningún subdominio obtenía certificado Let’s Encrypt.
Causa raíz
Docker 29 elevó la API mínima del daemon. Traefik, en la versión que teníamos (v3.0), seguía intentando conectarse con la API versión 1.24, incompatible con el nuevo mínimo.
Cambios aplicados
1. Actualizar Traefik a v3.4 en 01-infra.yml:
image: traefik:v3.4
2. Bajar el mínimo de API en el daemon de Docker en el servidor:
# /etc/docker/daemon.json
{
"min-api-version": "1.24"
}
systemctl restart docker
Verificación
docker version
# Client=1.54 Server=1.54 MinServer=1.24
docker exec infra-traefik-1 sh -lc 'wc -c /letsencrypt/acme.json'
# > 0 bytes → certificados emitidos
Tras el cambio, Traefik volvió a descubrir todos los routers Docker y Let’s Encrypt emitió certificados para los 12 subdominios del stack.
Nota operativa
La mitigación min-api-version: 1.24 es temporal. Cuando todos los consumidores de la API Docker estén alineados con v29+, conviene retirarla y volver al mínimo por defecto del daemon.