Un servidor cloud te da libertad para desplegar aplicaciones, automatizaciones y bases de datos. Pero esa libertad también exige criterio operativo: publicar servicios de forma ordenada, proteger el tráfico con HTTPS y evitar configuraciones difíciles de mantener.

En esta guía vas a ver una implementación práctica para publicar contenedores con Traefik, Docker labels y certificados Let's Encrypt, con comandos orientados a Ubuntu/Debian, puntos de verificación y advertencias para no comprometer disponibilidad ni seguridad.

La idea no es memorizar comandos sueltos, sino construir un flujo repetible: preparar el servidor, configurar Traefik, habilitar certificados automáticos, publicar una aplicación y validar que todo funcione correctamente.

¿Qué es Traefik?

Traefik es un reverse proxy dinámico que puede leer labels de Docker y crear rutas HTTP automáticamente. Con ACME, también puede solicitar y renovar certificados Let's Encrypt sin tener que gestionar cada certificado de forma manual.

¿Cuándo conviene usarlo?

Traefik resulta útil cuando necesitas publicar varias aplicaciones Docker desde un mismo servidor y quieres evitar una configuración manual de proxy por cada servicio.

Conviene especialmente si:

  • Tienes varias apps Docker con dominios separados.
  • Quieres reducir configuraciones manuales de NGINX por aplicación.
  • Necesitas certificados automáticos y despliegues repetibles.
  • Buscas una forma más clara de administrar rutas, servicios y TLS desde Docker Compose.

Requisitos previos

Antes de empezar, asegúrate de contar con:

  • Un Cloud Server con Docker y Docker Compose.
  • Dominios apuntando a la IP pública del servidor.
  • Puertos 80 y 443 disponibles.
  • Conocimiento básico de redes Docker.

Puertos necesarios

  • 80/tcp
  • 443/tcp
  • 8080/tcp, solo interno si usas dashboard

Paso 1: Preparar la red proxy

Primero, crea una red Docker compartida entre Traefik y las aplicaciones que vas a publicar.

docker network create proxydocker network ls

Esta red permite que Traefik pueda comunicarse con los contenedores que expongan servicios web.


Advertencia: no conectes bases de datos a la red pública del proxy si no lo necesitan.

Paso 1: crear la red Docker compartida entre Traefik y las aplicaciones publicadas, con la advertencia de no exponer bases de datos en ella

Paso 2: Crear el compose de Traefik

Paso 2: crear el archivo Compose de Traefik, con la advertencia de limitar el acceso al socket de Docker

Luego, prepara el directorio de trabajo y crea el archivo docker-compose.yml de Traefik.

mkdir -p /opt/traefiknano docker-compose.ymldocker compose config

En esta etapa, Traefik debe quedar configurado con Docker provider y los entrypoints web y websecure.



Advertencia: montar el socket de Docker le da mucho poder al contenedor de Traefik. Limita el acceso al host y evita exponer servicios innecesarios.

Paso 3: Configurar ACME para Let's Encrypt

Traefik puede gestionar certificados automáticamente mediante ACME. Para eso, necesita un archivo donde guardar la información de los certificados.

touch acme.jsonchmod 600 acme.jsondocker compose up -d

El permiso 600 evita que otros usuarios del sistema puedan leer el contenido del archivo.


Advertencia: acme.json contiene material sensible. Respalda el archivo y protege sus permisos.

Paso 3 de otra guía: verificar que el volcado de la base contiene las colecciones esperadas

Paso 4: Agregar labels a una aplicación

Una vez que Traefik está funcionando, puedes publicar una aplicación por dominio usando routers y services definidos mediante Docker labels.

nano app/docker-compose.ymldocker compose up -ddocker compose logs traefik --tail=100

Las labels permiten que Traefik detecte el contenedor, cree la ruta correspondiente y lo asocie al dominio configurado.

Paso 4: agregar labels a una aplicación para publicarla por dominio mediante routers y servicios



Advertencia: el dominio debe apuntar al servidor antes de solicitar el certificado.

Paso 5: Probar rutas, HTTPS y estado de los servicios

Después de levantar la z, verifica que el dominio responda por HTTPS y revisa los logs de Traefik.

curl -I https://app.example.comdocker logs traefik --tail=100docker compose ps

También conviene comprobar que el dashboard, si está habilitado, no quede expuesto públicamente.

Advertencia: no publiques el dashboard de Traefik sin autenticación o restricción por IP/VPN.

Paso 5 de otra guía: automatizar y rotar los backups programando la retención


Reforzar seguridad

Antes de dar por terminado el despliegue, revisa tres puntos:

  • Que el servicio público sea realmente el que querías publicar.
  • Que los puertos internos no hayan quedado expuestos.
  • Que los secretos no estén en archivos versionados o historiales de shell.

Si el procedimiento toca bases de datos, runners, automatizaciones o certificados, prueba primero en un entorno secundario.

También conviene documentar cómo se reinicia el servicio, cómo se actualiza, dónde están los logs y cuál es el comando de verificación rápida. Esa información vale mucho cuando otra persona del equipo tiene que intervenir.

Problemas frecuentes

No emite certificado

Revisa DNS, puertos 80/443 y logs del resolver ACME.

El router no aparece

Confirma las labels, la red compartida y que traefik.enable=true esté definido

Error 502 Bad Gateway

Revisa que Traefik pueda llegar al puerto interno correcto del contenedor.

Cloud Servers by Donweb

Ya publicas contenedores por dominio con certificado. Falta el servidor de debajo.
Alojamiento ultra rápido, escalable y con alta disponibilidad.

  • Performance que te sorprenderá
  • Rápida escalabilidad y sin limitaciones
  • Arquitectura de alta disponibilidad
  • Soporte experto y ejecutivos de cuenta
  • Pagos en tu moneda y facturación local

Publica tus servicios en la nube