Mascota Jacar — leyendo contigo Un portátil cuyos ojos siguen el cursor mientras lees.
Cómo Instalar

Cómo instalar Traefik con Docker Compose

Cómo instalar Traefik con Docker Compose

Actualizado: 2026-05-03

Traefik[1] es un proxy inverso y edge router diseñado para entornos de contenedores. A diferencia de soluciones como nginx o HAProxy que requieren recargar configuración manualmente, Traefik descubre automáticamente los servicios Docker mediante etiquetas (labels) y gestiona la adquisición y renovación de certificados SSL con Let’s Encrypt[2] de forma automática. Este artículo explica cómo desplegarlo con Docker Compose.

Puntos clave

  • Traefik descubre servicios Docker automáticamente — no requiere recargar configuración al añadir contenedores.
  • La gestión de certificados SSL con Let’s Encrypt es automática: solicitud, renovación y almacenamiento sin intervención manual.
  • El dashboard de Traefik no tiene autenticación nativa; es indispensable protegerlo con básica HTTP antes de exponerlo.
  • La comunicación entre Traefik y los servicios se realiza a través de una red virtual Docker dedicada.

¿Qué hace Traefik como proxy inverso?

Un proxy inverso recibe peticiones externas y las enruta hacia el servicio interno correcto. Traefik añade sobre este rol básico:

  • Descubrimiento automático: lee etiquetas Docker en tiempo real y actualiza su tabla de routing sin reinicios.
  • TLS automático: negocia certificados con Let’s Encrypt mediante el desafío HTTP-01 o DNS-01.
  • Middleware: redirecciones, autenticación básica, rate limiting y headers de seguridad configurables por etiqueta.
  • Dashboard web: interfaz visual para inspeccionar routers, servicios y certificados activos.
Diagrama de proxy inverso: el cliente se conecta al proxy que reenvía la petición al servidor interno apropiado

Requisitos previos

Preparar la estructura de directorios

Creamos el directorio de trabajo, el fichero acme.json para almacenar certificados, y el fichero de configuración estática de Traefik:

bash
mkdir -p docker/traefik/traefik-data
touch docker/traefik/traefik-data/acme.json
chmod 600 docker/traefik/traefik-data/acme.json
nano docker/traefik/traefik-data/traefik.yml

El permiso 600 en acme.json es obligatorio — Traefik rechaza el fichero si otros usuarios tienen acceso de lectura.

Configurar Traefik (traefik.yml)

Dentro del fichero traefik.yml incluimos la configuración estática. Cambiar la dirección de correo para que Let’s Encrypt envíe avisos de caducidad de certificados:

yaml
api:
  dashboard: true

entryPoints:
  http:
    address: ":80"
  https:
    address: ":443"

providers:
  docker:
    endpoint: "unix:///var/run/docker.sock"
    exposedByDefault: false

certificatesResolvers:
  http:
    acme:
      email: tu@email.com
      storage: acme.json
      httpChallenge:
        entryPoint: http

Con exposedByDefault: false, Traefik solo enruta a los contenedores que tengan explícitamente la etiqueta traefik.enable=true. Esto evita exponer accidentalmente servicios internos.

Generar credenciales para el dashboard

El dashboard de Traefik no incluye autenticación propia — debemos protegerlo con Basic Auth. Generamos el hash de contraseña con htpasswd:

bash
sudo apt-get install apache2-utils
echo $(htpasswd -nb USUARIO CONTRASEÑA) | sed -e s/\$/\$\$/g

El doble escape de $ ($$) es necesario porque Docker Compose interpreta $ como inicio de variable de entorno en los ficheros YAML.

Crear la red Docker y el docker-compose.yml

Creamos la red virtual dedicada para Traefik:

bash
docker network create traefik-proxy
cd docker/traefik
nano docker-compose.yml

Contenido del fichero docker-compose.yml. Sustituir USUARIO:HASH, traefik.ejemplo.com y el email por los valores correspondientes:

yaml
version: '3'

services:
  traefik:
    image: traefik:v2.4.2
    container_name: traefik
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    networks:
      - traefik-proxy
    ports:
      - 80:80
      - 443:443
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./traefik-data/traefik.yml:/traefik.yml:ro
      - ./traefik-data/acme.json:/acme.json
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.traefik.entrypoints=http"
      - "traefik.http.routers.traefik.rule=Host(`traefik.ejemplo.com`)"
      - "traefik.http.middlewares.traefik-auth.basicauth.users=USUARIO:CONTRASEÑA_HASH"
      - "traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.traefik.middlewares=traefik-https-redirect"
      - "traefik.http.routers.traefik-secure.entrypoints=https"
      - "traefik.http.routers.traefik-secure.rule=Host(`traefik.ejemplo.com`)"
      - "traefik.http.routers.traefik-secure.middlewares=traefik-auth"
      - "traefik.http.routers.traefik-secure.tls=true"
      - "traefik.http.routers.traefik-secure.tls.certresolver=http"
      - "traefik.http.routers.traefik-secure.service=api@internal"

networks:
  traefik-proxy:
    external: true
Logotipo de Let’s Encrypt, autoridad certificadora gratuita integrada en Traefik para gestión automática de TLS

Arrancar Traefik

Levantamos el contenedor en modo desacoplado:

bash
docker-compose up -d

Accedemos al dashboard desde el navegador:

https://traefik.ejemplo.com/

El dashboard mostrará los routers, servicios y certificados activos. Para añadir un nuevo servicio al stack, basta con añadir las etiquetas traefik.* apropiadas al contenedor — Traefik lo detectará automáticamente sin reinicios.

Para profundizar en gestión de servicios Docker, el post sobre Docker Compose en Ubuntu 20.04 cubre el flujo de trabajo completo de orquestación.

Conclusión

Traefik elimina la fricción operativa del proxy inverso en entornos Docker: el descubrimiento automático, los certificados gestionados y el routing por etiquetas permiten publicar nuevos servicios en segundos. La clave de la configuración segura es proteger el dashboard con Basic Auth y no exponer servicios sin la etiqueta traefik.enable=true.

¿Te ha resultado útil?
[Total: 14 · Media: 4.4]
  1. Traefik
  2. Let’s Encrypt

Escrito por

CEO - Jacar Systems

Apasionado de la tecnología, la infraestructura cloud y la inteligencia artificial. Escribe sobre DevOps, IA, plataformas y software desde Madrid.