Traefik v3.4 y Docker 29: cómo resolvimos la incompatibilidad de API

admin · 1 min

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.

admin

Editor en D4R.