Traefik Docker Compose: Proxy Inverso con SSL Automático 2025

Traefik Docker Compose configuración con SSL automático y proxy inverso

Si buscas gestionar múltiples servicios Docker con un proxy inverso moderno, traefik docker compose es la solución perfecta para automatizar el enrutamiento de tráfico y la gestión de certificados SSL. En esta guía completa aprenderás a configurar Traefik con Docker Compose para crear una infraestructura profesional y escalable en minutos.

¿Qué es Traefik Docker Compose?

Traefik es un proxy inverso y balanceador de carga de código abierto diseñado específicamente para arquitecturas de microservicios. Con más de 59.800 estrellas en GitHub y 3.300 millones de descargas, se ha convertido en la opción preferida para gestionar servicios containerizados.

A diferencia de soluciones tradicionales como Nginx, este proxy moderno descubre automáticamente los servicios de Docker sin requerir reinicios ni interrupciones de conexión. Funciona como intermediario que recibe peticiones HTTP/HTTPS y las enruta dinámicamente al contenedor correcto.

La configuración con Docker Compose simplifica enormemente el despliegue, permitiendo definir toda la infraestructura en un único archivo YAML. Esto incluye entrypoints, routers, middlewares y la integración automática con Let’s Encrypt para certificados SSL gratuitos.

Ventajas de usar Traefik Docker Compose

La principal ventaja es la configuración automática sin reinicios. Cuando despliegas un nuevo contenedor con las etiquetas adecuadas, el sistema detecta automáticamente el servicio y actualiza las rutas en tiempo real.

Los certificados SSL se renuevan automáticamente gracias a la integración nativa con Let’s Encrypt. Soporta certificados wildcard, HTTP-01 y DNS-01 challenges, eliminando la gestión manual de certificados.

Incluye un dashboard web accesible que muestra todos los routers, servicios, middlewares y entrypoints en tiempo real. Esta interfaz facilita el monitoreo y debugging sin necesidad de revisar archivos de configuración.

Otras ventajas destacadas incluyen:

  • Soporte nativo para WebSocket, HTTP/2 y gRPC
  • Múltiples algoritmos de balanceo de carga
  • Circuit breakers y mecanismos de retry automáticos
  • Exportación de métricas a Prometheus, Datadog, InfluxDB
  • Middleware para autenticación, rate limiting, compresión
  • API REST completa para integración programática

Requisitos previos para Traefik Docker Compose

Antes de comenzar la instalación, asegúrate de cumplir estos requisitos básicos:

  • Docker Engine versión 20.10 o superior instalado
  • Docker Compose versión 2.0 o superior
  • Acceso root o permisos sudo en el servidor
  • Puertos 80 y 443 disponibles y accesibles desde internet
  • Nombre de dominio apuntando a tu servidor (para certificados SSL)
  • Al menos 512 MB de RAM disponible

Para verificar las versiones instaladas, ejecuta:

docker --version
docker compose version

Configuración básica de Traefik Docker Compose

Vamos a crear una configuración funcional paso a paso. Primero, crea un directorio para el proyecto:

mkdir -p ~/traefik
cd ~/traefik

Crea el archivo docker-compose.yml con esta configuración inicial:

version: '3.9'

services:
  traefik:
    image: traefik:v3.6
    container_name: traefik
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    networks:
      - proxy
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"
    environment:
      - TZ=Europe/Madrid
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./traefik.yml:/traefik.yml:ro
      - ./acme.json:/acme.json
      - ./config:/config:ro
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.traefik.entrypoints=http"
      - "traefik.http.routers.traefik.rule=Host(`traefik.tudominio.com`)"
      - "traefik.http.routers.traefik.service=api@internal"

networks:
  proxy:
    external: true

Ahora crea el archivo de configuración traefik.yml:

api:
  dashboard: true
  insecure: true

entryPoints:
  http:
    address: ":80"
    http:
      redirections:
        entryPoint:
          to: https
          scheme: https
  https:
    address: ":443"

providers:
  docker:
    endpoint: "unix:///var/run/docker.sock"
    exposedByDefault: false
    network: proxy
  file:
    directory: /config
    watch: true

certificatesResolvers:
  letsencrypt:
    acme:
      email: [email protected]
      storage: acme.json
      httpChallenge:
        entryPoint: http

log:
  level: INFO
  filePath: /var/log/traefik/traefik.log

accessLog:
  filePath: /var/log/traefik/access.log

Crea el archivo para almacenar certificados SSL y configura los permisos correctos:

touch acme.json
chmod 600 acme.json
mkdir config

Crea la red de Docker que usarán los servicios:

docker network create proxy

Configuración avanzada con SSL automático

Para habilitar SSL automático con certificados wildcard, actualiza la sección certificatesResolvers en el archivo traefik.yml. Esta configuración requiere validación DNS, por lo que necesitas configurar las credenciales de tu proveedor DNS.

Ejemplo con Cloudflare:

certificatesResolvers:
  letsencrypt:
    acme:
      email: [email protected]
      storage: acme.json
      dnsChallenge:
        provider: cloudflare
        resolvers:
          - "1.1.1.1:53"
          - "8.8.8.8:53"

Añade las variables de entorno de Cloudflare al servicio en docker-compose.yml:

environment:
  - TZ=Europe/Madrid
  - [email protected]
  - CF_DNS_API_TOKEN=tu_token_api

Consulta la documentación oficial de proveedores DNS para configurar otros servicios como Route53, DigitalOcean, o Google Cloud DNS.

Ejemplo práctico: Desplegar aplicación con Traefik Docker Compose

Vamos a desplegar un servicio de ejemplo para demostrar cómo funciona la integración. Crea un nuevo archivo docker-compose-whoami.yml:

version: '3.9'

services:
  whoami:
    image: traefik/whoami:latest
    container_name: whoami
    restart: unless-stopped
    networks:
      - proxy
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.whoami.rule=Host(`whoami.tudominio.com`)"
      - "traefik.http.routers.whoami.entrypoints=https"
      - "traefik.http.routers.whoami.tls=true"
      - "traefik.http.routers.whoami.tls.certresolver=letsencrypt"
      - "traefik.http.services.whoami.loadbalancer.server.port=80"

networks:
  proxy:
    external: true

Las etiquetas de Docker definen cómo el proxy debe enrutar el tráfico:

  • traefik.enable=true activa el enrutamiento para este contenedor
  • rule=Host() define el dominio que activará este router
  • entrypoints=https usa el puerto 443 configurado anteriormente
  • tls.certresolver solicita automáticamente el certificado SSL
  • loadbalancer.server.port indica el puerto interno del contenedor

Inicia ambos servicios:

docker compose up -d
docker compose -f docker-compose-whoami.yml up -d

Accede a https://whoami.tudominio.com y verás la aplicación funcionando con SSL automático. El certificado se solicita, valida e instala sin intervención manual.

Middlewares útiles para Traefik Docker Compose

Los middlewares son componentes que procesan las peticiones antes de enviarlas al servicio final. Permiten añadir autenticación, compresión, rate limiting y más funcionalidades.

Crea el archivo config/middlewares.yml con estas configuraciones útiles:

http:
  middlewares:
    # Autenticación básica
    auth:
      basicAuth:
        users:
          - "admin:$apr1$xyz$hashedpassword"
    
    # Rate limiting
    rate-limit:
      rateLimit:
        average: 100
        burst: 50
        period: 1s
    
    # Redirección a HTTPS
    redirect-https:
      redirectScheme:
        scheme: https
        permanent: true
    
    # Compresión
    compression:
      compress: {}
    
    # Headers de seguridad
    security-headers:
      headers:
        frameDeny: true
        sslRedirect: true
        browserXssFilter: true
        contentTypeNosniff: true
        stsIncludeSubdomains: true
        stsPreload: true
        stsSeconds: 31536000

Para aplicar middlewares a un servicio, añade estas etiquetas:

labels:
  - "traefik.http.routers.servicio.middlewares=auth@file,compression@file,security-headers@file"

Genera el hash de contraseña para autenticación básica con:

echo $(htpasswd -nb admin tupassword) | sed -e s/\$/\$\$/g

Monitorización y dashboard

El dashboard web proporciona visibilidad completa de la infraestructura en tiempo real. Accede a http://tu-servidor:8080/dashboard/ para ver:

  • Lista de todos los routers HTTP/TCP/UDP activos
  • Servicios descubiertos automáticamente
  • Middlewares configurados y su estado
  • Entrypoints y puertos expuestos
  • Certificados TLS activos y su fecha de expiración
  • Métricas de salud de cada backend

Para producción, protege el dashboard con autenticación añadiendo estas etiquetas al contenedor principal:

labels:
  - "traefik.http.routers.traefik.middlewares=auth@file"

Para integrar con Prometheus y obtener métricas detalladas, añade en traefik.yml:

metrics:
  prometheus:
    addEntryPointsLabels: true
    addRoutersLabels: true
    addServicesLabels: true
    entryPoint: metrics

Consulta la documentación de métricas de Traefik para configuración avanzada.

Solución de problemas comunes

Si los servicios no son detectados automáticamente, verifica que el contenedor esté en la red proxy y tenga traefik.enable=true. Revisa los logs con:

docker logs traefik

Si los certificados SSL no se generan, confirma que:

  • El dominio apunta correctamente a tu servidor
  • Los puertos 80 y 443 están accesibles desde internet
  • El archivo acme.json tiene permisos 600
  • El email en la configuración es válido

Para errores de permisos con el socket de Docker, añade el usuario al grupo docker:

sudo usermod -aG docker $USER
newgrp docker

Si experimentas problemas con redirecciones infinitas, verifica que no haya conflictos entre middlewares de redirección y la configuración del entrypoint.

Preguntas frecuentes sobre Traefik Docker Compose

¿Traefik es mejor que Nginx Proxy Manager?

Ambas soluciones son excelentes, pero destacan en diferentes escenarios. Esta herramienta sobresale en entornos dinámicos con servicios que cambian frecuentemente, ya que detecta automáticamente contenedores nuevos sin configuración manual. Nginx Proxy Manager ofrece una interfaz gráfica más amigable para usuarios menos técnicos. Para arquitecturas de microservicios y entornos Kubernetes, Traefik es la opción más robusta.

¿Cuánta RAM consume Traefik?

El consumo base de RAM es de aproximadamente 50-80 MB sin servicios configurados. Con 10-20 servicios activos, el uso típico ronda los 100-150 MB. Este bajo consumo lo hace ideal para servidores con recursos limitados como Raspberry Pi o VPS pequeños.

¿Puedo usar Traefik con servicios que no son Docker?

Sí, el sistema soporta múltiples proveedores además de Docker. Puedes configurar servicios estáticos en archivos YAML, integrar con Kubernetes, Consul, Etcd, o definir backends HTTP/TCP manualmente. La configuración de archivos permite enrutar tráfico a cualquier servidor, independientemente de si está containerizado.

¿Cómo renuevo los certificados SSL automáticamente?

La renovación es completamente automática cuando usas el resolver de Let’s Encrypt configurado. El software verifica diariamente los certificados próximos a expirar (30 días antes) y los renueva sin intervención. No necesitas configurar cron jobs ni scripts adicionales.

¿Puedo balancear carga entre múltiples contenedores del mismo servicio?

Absolutamente. Si escalas un servicio a múltiples réplicas con docker compose up --scale servicio=3, la aplicación distribuye automáticamente las peticiones entre todas las instancias usando round-robin por defecto. Puedes configurar otros algoritmos como weighted round-robin o least connections en la configuración del servicio.

Conclusión

Configurar traefik docker compose proporciona una infraestructura moderna, automática y escalable para gestionar servicios containerizados. La integración nativa con Docker, los certificados SSL automáticos y el descubrimiento dinámico de servicios eliminan la complejidad de las configuraciones manuales tradicionales.

Con el conocimiento adquirido en esta guía, puedes desplegar un proxy inverso profesional que gestione decenas de servicios con mínimo mantenimiento. La configuración basada en etiquetas y la actualización sin reinicios hacen de esta solución la opción ideal para homelab, producción o entornos de desarrollo.

Para más tutoriales sobre Docker Compose y herramientas de automatización, visita la categoría Docker Compose donde encontrarás guías similares de servicios self-hosted.

Avatar

Por Mid

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x