Traefik con Docker: rutas y HTTPS con control

Índice de contenido
  1. Define dominios, puertos y red
  2. Configuración estática del proxy
  3. Declara una ruta concreta
  4. Proyecto HTTP mínimo
  5. Comprueba HTTP antes de automatizar certificados
  6. HTTPS y ACME
  7. Dashboard y autenticación
  8. Mantenimiento
  9. Preguntas frecuentes
    1. ¿Traefik detecta automáticamente cualquier aplicación con seguridad?
    2. ¿Necesito abrir el dashboard para comprobar rutas?
    3. ¿ACME funciona sin DNS correcto?
  10. En pocas palabras
  11. Conclusión
  12. Fuentes y documentación

Traefik es un proxy inverso que puede descubrir servicios Docker y dirigirles solicitudes. Para configurarlo necesitas distinguir la configuración del propio proxy, las rutas y la red donde alcanza a las aplicaciones.

Este recorrido explica un diseño de laboratorio y los puntos que debes completar antes de exponerlo públicamente. No habilita un dashboard sin protección como atajo.

Define dominios, puertos y red

Decide qué nombres utilizarás y cómo resolverán hacia el host. Las aplicaciones y Traefik necesitan una red compartida apropiada.

Publicar un puerto en una aplicación no siempre es necesario cuando el proxy accede por la red Docker. Evita exponer además el backend si quieres que las peticiones entren por una única capa.

Configuración estática del proxy

Un ejemplo de estructura:

entryPoints:
  web:
    address: ":80"
  websecure:
    address: ":443"
providers:
  docker:
    exposedByDefault: false
    network: proxy_lab
api:
  dashboard: true
  insecure: false

La opción exposedByDefault: false evita publicar automáticamente cada contenedor descubierto. Aun así, revisa etiquetas y quién puede crear servicios en ese daemon.

Montar docker.sock proporciona acceso sensible. Evalúa alternativas y permisos según el diseño; un montaje con sufijo ro no debe asumirse como un control de API de solo lectura.

Declara una ruta concreta

En un servicio de prueba, las etiquetas deben definir habilitación, regla, entrypoint y puerto interno. Por ejemplo:

labels:
  - traefik.enable=true
  - traefik.http.routers.web-lab.rule=Host("lab.ejemplo.com")
  - traefik.http.routers.web-lab.entrypoints=web
  - traefik.http.services.web-lab.loadbalancer.server.port=80

Adapta dominio, red y nombre del servicio. Esta pieza no es un Compose completo: debe integrarse con una imagen elegida, red y proxy coherentes.

Proyecto HTTP mínimo

Guarda la configuración estática anterior en traefik.yml y utiliza un compose.yaml como este:

services:
  proxy:
    image: traefik:v3
    ports:
      - "127.0.0.1:8080:80"
    volumes:
      - ./traefik.yml:/etc/traefik/traefik.yml:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
    networks: [proxy_lab]
  web:
    image: nginx:stable-alpine
    networks: [proxy_lab]
    labels:
      - traefik.enable=true
      - traefik.http.routers.web-lab.rule=Host("lab.ejemplo.com")
      - traefik.http.routers.web-lab.entrypoints=web
      - traefik.http.services.web-lab.loadbalancer.server.port=80
networks:
  proxy_lab:
    name: proxy_lab

La etiqueta v3 sigue esa familia y debe mantenerse. Tras validar e iniciar con Compose, consulta curl -H 'Host: lab.ejemplo.com' http://127.0.0.1:8080. El proyecto no publica HTTPS ni el dashboard: permite comprobar HTTP antes de incorporar emisión de certificados. El socket sigue siendo un acceso sensible aunque el mount sea ro.

Comprueba HTTP antes de automatizar certificados

Verifica que el nombre llegue al servidor y que la regla seleccione el backend esperado. Si recibes un 404 del proxy, revisa coincidencia de ruta; si falla el upstream, comprueba red y puerto.

No añadas ACME para ocultar un problema de enrutamiento. Son capas distintas y deben poder diagnosticarse por separado.

HTTPS y ACME

Selecciona un desafío compatible con tu acceso: HTTP o DNS tienen requisitos diferentes. Para pruebas, utiliza el entorno de staging cuando corresponda para evitar consumir límites de emisión.

Protege el almacenamiento de certificados y sus claves y conserva persistencia. Si utilizas DNS, las credenciales del proveedor deben limitarse a lo necesario y mantenerse fuera del repositorio.

Dashboard y autenticación

Habilitar la API no significa que deba estar disponible a cualquier visitante. Configura una ruta administrativa protegida o acceso privado y comprueba desde un cliente no autorizado que se rechace.

No confundas el candado de HTTPS con autorización. El cifrado protege la conexión, pero todavía necesitas decidir quién puede entrar.

Mantenimiento

Elige una versión mantenida de Traefik, revisa cambios de configuración al actualizar y conserva rutas y almacenamiento necesarios para recuperar. Comprueba certificados y backends después de la actualización.

Preguntas frecuentes

¿Traefik detecta automáticamente cualquier aplicación con seguridad?

Puede descubrir recursos según el proveedor, pero debes controlar exposición, reglas, acceso y permisos.

¿Necesito abrir el dashboard para comprobar rutas?

No necesariamente. Logs y pruebas HTTP pueden aportar evidencia sin exponer una interfaz administrativa.

¿ACME funciona sin DNS correcto?

Depende del desafío, pero necesitas cumplir sus requisitos. No presupongas que el proxy puede emitir un certificado para cualquier nombre sin validación.

En pocas palabras

Traefik puede descubrir servicios y gestionar rutas mediante configuración y etiquetas. La automatización de certificados requiere DNS, desafíos y almacenamiento correctos; no es una garantía sin requisitos.

Conclusión

Empieza con un servicio de prueba y comprueba selección de ruta y backend. Añade certificados y restricciones administrativas por etapas y conserva una configuración que puedas recuperar.

Para continuar, revisa Docker: qué es y cómo usarlo para ejecutar contenedores y Cómo instalar Docker en Ubuntu 24.04: guía práctica paso a paso.

Fuentes y documentación

Documentación de doc.traefik.io.

Documentación de doc.traefik.io.

Subir

Descubre más de Sergio Caballero

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Continuar leyendo