bolt Valebyte VPS desde $4/mes — NVMe, despliegue en 60s.

Obtener VPS arrow_forward
eco Principiante Tutorial/Cómo hacer

Configuración de Traefik en VPS

calendar_month Jun 10, 2026 schedule 16 min de lectura visibility 33 vistas
Настройка Traefik на VPS для автоматического проксирования Docker-контейнеров с SSL
info

¿Necesitas un servidor para esta guía? Ofrecemos servidores dedicados y VPS en más de 50 países con configuración instantánea.

¿Necesitas un VPS para esta guía?

Explore otras opciones de servidores dedicados en

Configuración de Traefik en un VPS para el proxy automático de contenedores Docker con SSL

TL;DR

En esta guía, configuraremos Traefik v3 en un servidor privado virtual (VPS) para la detección y el proxy automático de contenedores Docker, garantizando la emisión y renovación automática de certificados SSL de Let's Encrypt. Esto le permitirá desplegar fácilmente nuevos servicios web en Docker, que estarán disponibles a través de un nombre de dominio con HTTPS sin la configuración manual de proxy y certificados para cada nuevo servicio.

  • Configuramos Traefik v3 como proxy inverso y balanceador de carga.
  • Integramos Traefik con Docker para la detección automática de servicios mediante etiquetas.
  • Automatizamos la obtención y renovación de certificados SSL a través de Let's Encrypt.
  • Utilizamos Docker Compose para una gestión cómoda de la infraestructura.
  • Garantizamos la seguridad básica del servidor y de Traefik.

Qué configuramos y por qué

Diagrama: Qué configuramos y por qué
Diagrama: Qué configuramos y por qué

Configuraremos Traefik, un moderno proxy inverso y balanceador de carga nativo de la nube que se integra perfectamente con entornos dinámicos como Docker. La tarea principal es automatizar el proceso de publicación de servicios web ejecutados en contenedores Docker, haciéndolos accesibles desde Internet mediante nombres de dominio y con una conexión HTTPS segura.

Al final, obtendrá una infraestructura flexible y escalable, donde cada nuevo contenedor Docker destinado al acceso público se registrará automáticamente en Traefik. No tendrá que editar manualmente los archivos de configuración de Nginx o Apache, ni preocuparse por la obtención y renovación de certificados SSL; Traefik lo hará por usted, utilizando Let's Encrypt. Esto simplifica significativamente el despliegue y la gestión de múltiples microservicios o aplicaciones web en un solo VPS.

¿Qué alternativas existen? Para publicar servicios web, se pueden utilizar proxies inversos tradicionales como Nginx o Apache, que requieren configuración manual para cada nuevo servicio. En entornos de nube (AWS, GCP, Azure), se suelen utilizar balanceadores de carga gestionados y API Gateway. Sin embargo, para el autoalojamiento en un VPS, Traefik ofrece una combinación única de facilidad de configuración, automatización y profunda integración con Docker. Al elegir una solución self-hosted en un VPS, obtiene control total sobre su infraestructura, ahorra en pagos mensuales por servicios gestionados y puede adaptar todo a sus necesidades específicas, lo que es ideal para desarrolladores, fundadores individuales y entusiastas.

Qué configuración de VPS se necesita para esta tarea

Diagrama: Qué configuración de VPS se necesita para esta tarea
Diagrama: Qué configuración de VPS se necesita para esta tarea

La elección de la configuración del VPS depende de la cantidad y la carga de los contenedores Docker que planea proxy a través de Traefik. Traefik en sí es relativamente ligero, pero los servicios proxy pueden ser exigentes.

Requisitos mínimos

  • CPU: 1 núcleo (por ejemplo, Intel Xeon E3/E5).
  • RAM: 2 GB (para Traefik y varios contenedores Docker ligeros).
  • Disco: 40 GB SSD (para el sistema operativo, imágenes Docker, registros y datos de contenedores).
  • Red: Puerto de 100 Mbps con tráfico ilimitado o un volumen suficiente (a partir de 1 TB/mes) para sus necesidades.
  • Sistema operativo: Ubuntu 24.04 LTS (recomendado) o Debian 12.

Plan de VPS recomendado para la mayoría de las tareas

Para proyectos más serios, que incluyen varias aplicaciones web, bases de datos, o si espera una carga moderada, se recomienda la siguiente configuración:

  • CPU: 2 núcleos (por ejemplo, Intel Xeon E5).
  • RAM: 4 GB.
  • Disco: 80-120 GB SSD (para alojar cómodamente varias aplicaciones y sus datos).
  • Red: Puerto de 1 Gbps con tráfico ilimitado.

Puede adquirir un VPS con las características indicadas para empezar. Esta configuración garantizará un funcionamiento estable de Traefik y permitirá alojar hasta 5-10 contenedores Docker medianos sin ralentizaciones significativas.

Cuándo se necesita un servidor dedicado y no un VPS

Un servidor dedicado (dedicated) es preferible cuando:

  • Necesita el máximo rendimiento y estabilidad sin el efecto "vecino ruidoso" característico de los VPS.
  • Planea alojar aplicaciones de alta carga que requieren más de 8-16 GB de RAM y más de 4 núcleos de CPU.
  • Necesita una gran cantidad de espacio en disco (varios TB) o configuraciones de disco específicas (RAID).
  • Se requieren componentes de hardware específicos (GPU, tarjetas de red especiales).
  • Es necesario cumplir con estrictos requisitos regulatorios, que pueden ser más fáciles de cumplir en hardware totalmente controlado.

Para la mayoría de las tareas relacionadas con Traefik y contenedores Docker para pequeñas y medianas empresas o proyectos personales, un VPS es más que suficiente.

Ubicación: en qué influye

La elección de la ubicación del VPS influye en:

  • Latencia: Cuanto más cerca esté el servidor de su audiencia principal, más rápido se cargarán las páginas y responderán los servicios.
  • Cumplimiento legal: En algunos casos, el almacenamiento de datos en una jurisdicción específica es obligatorio.
  • Disponibilidad: Diferentes ubicaciones pueden tener diferente estabilidad y disponibilidad de red.

Elija una ubicación que esté geográficamente más cerca de sus usuarios principales para un rendimiento óptimo.

Preparación del servidor

Diagrama: Preparación del servidor
Diagrama: Preparación del servidor

Después de obtener acceso a su nuevo VPS, es necesario realizar algunos pasos básicos para su preparación y seguridad.

1. Conexión por SSH y creación de usuario

Conéctese al servidor como root (o el usuario proporcionado por el hoster) y cree un nuevo usuario con derechos limitados. Reemplace ваш_пользователь por el nombre de usuario deseado.


ssh root@ВАШ_IP_АДРЕС # Conectarse como root
adduser ваш_пользователь # Crear un nuevo usuario
usermod -aG sudo ваш_пользователь # Añadir el usuario al grupo sudo

Ahora, salga de la sesión root y conéctese con el nuevo usuario:


exit # Salir de la sesión root
ssh ваш_пользователь@ВАШ_IP_АДРЕС # Conectarse con el nuevo usuario

2. Configuración de claves SSH (recomendado)

Para mejorar la seguridad, se recomienda utilizar claves SSH en lugar de contraseñas. Si aún no tiene una clave SSH, genérela en su máquina local:


ssh-keygen -t rsa -b 4096 # Generar una nueva clave SSH (en la máquina local)

Copie la clave pública al servidor:


ssh-copy-id ваш_пользователь@ВАШ_IP_АДРЕС # Copiar la clave pública al servidor

Después de verificar el inicio de sesión con la clave, desactive la autenticación por contraseña para root y su usuario en el archivo /etc/ssh/sshd_config. Busque las siguientes líneas y modifíquelas:


sudo nano /etc/ssh/sshd_config # Abrir la configuración del servidor SSH

Cambie o añada:


PermitRootLogin no
PasswordAuthentication no

Reinicie el servicio SSH:


sudo systemctl restart sshd # Reiniciar el servicio SSH

3. Actualización del sistema

Asegúrese de que todos los paquetes del servidor estén actualizados a las últimas versiones.


sudo apt update && sudo apt upgrade -y # Actualizar la lista de paquetes y todos los paquetes instalados

4. Instalación y configuración de Firewall (UFW)

Configuraremos un firewall UFW (Uncomplicated Firewall) sencillo pero eficaz.


sudo apt install ufw -y # Instalar UFW
sudo ufw default deny incoming # Denegar todas las conexiones entrantes por defecto
sudo ufw default allow outgoing # Permitir todas las conexiones salientes por defecto
sudo ufw allow ssh # Permitir conexiones entrantes por SSH (puerto 22)
sudo ufw allow http # Permitir conexiones entrantes por HTTP (puerto 80)
sudo ufw allow https # Permitir conexiones entrantes por HTTPS (puerto 443)
sudo ufw enable # Habilitar UFW (confirmar 'y')
sudo ufw status # Comprobar el estado de UFW

5. Instalación de Fail2Ban

Fail2Ban ayuda a protegerse contra ataques de fuerza bruta, bloqueando las direcciones IP desde las cuales se realizan intentos fallidos de inicio de sesión.


sudo apt install fail2ban -y # Instalar Fail2Ban
sudo systemctl enable fail2ban # Habilitar el inicio automático de Fail2Ban
sudo systemctl start fail2ban # Iniciar Fail2Ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # Crear una copia local de la configuración
sudo nano /etc/fail2ban/jail.local # Editar la configuración

En el archivo jail.local, asegúrese de que la sección [sshd] esté activa (enabled = true) y, si lo desea, puede configurar bantime (tiempo de bloqueo) y findtime (período para detectar intentos).


# Dentro de /etc/fail2ban/jail.local
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

sudo systemctl restart fail2ban # Reiniciar Fail2Ban para aplicar los cambios
sudo fail2ban-client status # Comprobar el estado de Fail2Ban

Instalación de software — paso a paso

Instalación de software — paso a paso

Diagrama: Instalación de software — paso a paso
Diagrama: Instalación de software — paso a paso

Ahora que el servidor está preparado, instalaremos el software necesario: Docker y Docker Compose.

1. Instalación de Docker Engine

Eliminaremos todas las versiones antiguas de Docker, si las hay, e instalaremos la última versión estable de Docker Engine (actual para 2026, suponemos la versión 26.x o posterior).


# Eliminamos versiones antiguas de Docker
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt remove $pkg; done

# Actualizamos la lista de paquetes e instalamos dependencias
sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release -y

# Añadimos la clave GPG oficial de Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Añadimos el repositorio de Docker a APT
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Instalamos Docker Engine, containerd y Docker Compose (v2)
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

2. Añadir usuario al grupo Docker

Para no usar sudo cada vez que trabaje con Docker, añada su usuario al grupo docker.


sudo usermod -aG docker su_usuario # Añadimos el usuario actual al grupo docker
newgrp docker # Aplicamos los cambios para la sesión actual (o reconéctese por SSH)

3. Verificación de la instalación de Docker

Verifique que Docker esté instalado y funcionando correctamente.


docker run hello-world # Iniciamos el contenedor de prueba hello-world

Debería ver un mensaje de bienvenida de Docker.

4. Verificación de la instalación de Docker Compose

Asegúrese de que Docker Compose (v2) esté instalado y disponible.


docker compose version # Verificamos la versión de Docker Compose

La salida esperada será similar a: Docker Compose version v2.26.x (o posterior).

Configuración

Diagrama: Configuración
Diagrama: Configuración

En este paso, configuraremos Traefik y lo ejecutaremos junto con una aplicación de demostración. Para gestionar Traefik y otros servicios, utilizaremos Docker Compose.

1. Creación de la estructura de directorios

Cree un directorio para la configuración de Traefik y el archivo docker-compose.yml.


mkdir -p ~/traefik # Creamos el directorio principal para Traefik
cd ~/traefik # Nos movemos al directorio creado
touch docker-compose.yml # Creamos el archivo Docker Compose
touch traefik.yml # Creamos el archivo de configuración principal de Traefik
touch acme.json # Creamos el archivo para almacenar los certificados SSL de Let's Encrypt
chmod 600 acme.json # Establecemos permisos estrictos para el archivo de certificados

2. Configuración de DNS

Antes de iniciar Traefik con Let's Encrypt, debe configurar los registros DNS para sus dominios. Para cada dominio (o subdominio) que planee usar, cree un registro A que apunte a la dirección IP de su VPS.

Por ejemplo, si su VPS tiene IP 192.0.2.1, y desea usar el dominio example.com y el subdominio whoami.example.com, añada los siguientes registros en el panel de control de su proveedor de DNS:

  • example.com A 192.0.2.1
  • .example.com A 192.0.2.1 (para facilitar el uso de subdominios)
  • whoami.example.com A 192.0.2.1

3. Archivo traefik.yml (configuración principal de Traefik)

Este archivo define la configuración global de Traefik, incluyendo los puntos de entrada (entrypoints), los proveedores (Docker) y la configuración de los certificados Let's Encrypt.


# traefik.yml
# Configuración global de Traefik

# Definimos los puntos de entrada para el tráfico entrante
entryPoints:
  http:
    address: ":80" # Tráfico HTTP entrante
    http:
      redirections:
        entryPoint:
          to: "https" # Redirigimos todo el HTTP a HTTPS
          scheme: "https"
  https:
    address: ":443" # Tráfico HTTPS entrante

# Configuración de la API y el panel de control de Traefik
api:
  dashboard: true # Habilitamos el panel de control de Traefik
  insecure: false # No permitimos acceso inseguro a la API (usamos autenticación)

# Configuración de logs
log:
  level: INFO # Nivel de registro (DEBUG, INFO, WARN, ERROR)
accessLog: {} # Habilitamos los logs de acceso

# Configuración del proveedor Docker
providers:
  docker:
    endpoint: "unix:///var/run/docker.sock" # Ruta al socket de Docker
    exposedByDefault: false # Por defecto, no hacemos proxy de contenedores si no hay etiquetas
    network: "web" # Especificamos la red en la que Traefik buscará contenedores

# Configuración de certificados Let's Encrypt
certificatesResolvers:
  letsencrypt:
    acme:
      email: "[email protected]" # Especifique su email para notificaciones de Let's Encrypt
      storage: "acme.json" # Archivo para almacenar certificados
      httpChallenge:
        entryPoint: "http" # Usamos el desafío HTTP a través del punto de entrada http

4. Archivo docker-compose.yml

Este archivo define los servicios de Traefik y la aplicación de prueba whoami.


# docker-compose.yml
# Iniciamos Traefik y la aplicación de prueba

version: '3.8'

services:
  traefik:
    image: traefik:v3.0 # Usamos la última versión estable de Traefik (para 2026 v3.0+)
    container_name: traefik
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    ports:
      - "80:80" # Abrimos el puerto 80 para HTTP
      - "443:443" # Abrimos el puerto 443 para HTTPS
      # - "8080:8080" # Puerto para el panel de control de Traefik (no se recomienda abrir públicamente sin autenticación)
    volumes:
      - /etc/localtime:/etc/localtime:ro # Sincronización de la hora
      - /var/run/docker.sock:/var/run/docker.sock:ro # Acceso al socket de Docker
      - ./traefik.yml:/etc/traefik/traefik.yml:ro # Configuración principal de Traefik
      - ./acme.json:/acme.json # Archivo para certificados Let's Encrypt
    networks:
      - web # Conectamos Traefik a la red 'web'
    labels:
      # Etiquetas para el propio Traefik (para que pueda hacer proxy de su panel de control)
      - "traefik.enable=true"
      - "traefik.http.routers.traefik-dashboard.rule=Host(traefik.example.com)" # Dominio para el panel de control
      - "traefik.http.routers.traefik-dashboard.entrypoints=https"
      - "traefik.http.routers.traefik-dashboard.tls.certresolver=letsencrypt"
      - "traefik.http.routers.traefik-dashboard.service=api@internal"
      - "traefik.http.middlewares.traefik-auth.basicauth.users=admin:$$apr1$$HASH_DE_LA_CONTRASEÑA" # Reemplace HASH_DE_LA_CONTRASEÑA
      - "traefik.http.routers.traefik-dashboard.middlewares=traefik-auth"
      # Opcional: redirección de HTTP a HTTPS para el panel de control
      - "traefik.http.routers.traefik-dashboard.middlewares=redirect-to-https@docker"

  whoami:
    image: traefik/whoami # Aplicación de prueba que muestra información sobre la solicitud
    container_name: whoami
    restart: unless-stopped
    networks:
      - web # Conectamos a la misma red que Traefik
    labels:
      - "traefik.enable=true" # Habilitamos Traefik para este contenedor
      - "traefik.http.routers.whoami.rule=Host(whoami.example.com)" # Dominio para whoami
      - "traefik.http.routers.whoami.entrypoints=https" # Usamos HTTPS
      - "traefik.http.routers.whoami.tls.certresolver=letsencrypt" # Permitimos certificados Let's Encrypt
      - "traefik.http.services.whoami.loadbalancer.server.port=80" # Puerto de la aplicación dentro del contenedor

networks:
  web:
    external: true # Usamos una red externa (se creará manualmente)

Importante:

  • Reemplace [email protected] por su email real.
  • Reemplace traefik.example.com y whoami.example.com por sus dominios.
  • Para admin:$$apr1$$HASH_DE_LA_CONTRASEÑA, genere el hash de la contraseña usando la utilidad htpasswd en su máquina local. Por ejemplo, echo $(htpasswd -nb admin mi_contraseña_secreta) | sed -e s/\\$/\\$\\$/g. Copie el resultado (por ejemplo, admin:$$apr1$$abcdefghijklmnopqrs) e insértelo en docker-compose.yml.

5. Creación de la red Docker

Traefik y todos los contenedores que proxyará deben estar en la misma red Docker.


docker network create web # Creamos una red Docker externa con el nombre 'web'

6. Inicio de Traefik y los servicios

Inicie Traefik y el contenedor whoami usando Docker Compose.


docker compose up -d # Iniciamos los contenedores en segundo plano

7. Verificación del funcionamiento

Después de unos minutos (Traefik necesita tiempo para obtener los certificados), verifique la disponibilidad de sus servicios.

  • Abra en el navegador https://whoami.example.com (reemplace por su dominio). Debería ver una página con información sobre la solicitud, confirmando que Traefik ha proxyado la solicitud con éxito y ha emitido un certificado SSL.
  • Abra en el navegador https://traefik.example.com (reemplace por su dominio). Debería ver una solicitud de usuario/contraseña y luego el panel de control de Traefik, mostrando el estado de sus servicios.

También puede verificar los logs de Traefik:


docker compose logs -f traefik # Ver logs del contenedor Traefik

En los logs verá mensajes sobre la obtención de certificados de Let's Encrypt.

Copias de seguridad y mantenimiento

Diagrama: Copias de seguridad y mantenimiento
Diagrama: Copias de seguridad y mantenimiento

Las copias de seguridad regulares y el mantenimiento oportuno son clave para la estabilidad y seguridad de su infraestructura.

1. Qué respaldar

  • Archivos de configuración de Traefik: traefik.yml, acme.json. El archivo acme.json contiene información sobre los certificados SSL emitidos.
  • Datos de contenedores Docker: Todos los volúmenes persistentes que utilizan sus aplicaciones (por ejemplo, bases de datos, cargas de usuario, configuraciones de aplicaciones).
  • Configuraciones del servidor: Archivos SSH (/etc/ssh/sshd_config), UFW (/etc/ufw/), Fail2Ban (/etc/fail2ban/).

2. Script simple de copia de seguridad automática

Para las copias de seguridad, puede usar rsync o herramientas especializadas como Restic/Borg. Consideremos un ejemplo simple con rsync para archivos clave y volúmenes Docker.

Cree un directorio para las copias de seguridad y el script backup.sh:


mkdir -p ~/backups
nano ~/backups/backup.sh

Contenido de backup.sh:


#!/bin/bash

# Directorio para copias de seguridad en el servidor
BACKUP_DIR="/home/ваш_пользователь/backups/data"
TIMESTAMP=$(date +%Y%m%d%H%M%S)
FULL_BACKUP_PATH="${BACKUP_DIR}/${TIMESTAMP}"

# Directorio de Traefik
TRAEFIK_CONFIG_PATH="/home/ваш_пользователь/traefik"

# Directorio donde Docker almacena sus volúmenes
DOCKER_VOLUMES_PATH="/var/lib/docker/volumes"

# Creamos el directorio para la copia de seguridad actual
mkdir -p "${FULL_BACKUP_PATH}/traefik"
mkdir -p "${FULL_BACKUP_PATH}/docker_volumes"

echo "Iniciando copia de seguridad en ${FULL_BACKUP_PATH}"

# Copiando configuración de Traefik
cp -r "${TRAEFIK_CONFIG_PATH}/traefik.yml" "${FULL_BACKUP_PATH}/traefik/"
cp -r "${TRAEFIK_CONFIG_PATH}/acme.json" "${FULL_BACKUP_PATH}/traefik/"
cp -r "${TRAEFIK_CONFIG_PATH}/docker-compose.yml" "${FULL_BACKUP_PATH}/traefik/"

# Copiando volúmenes Docker (ejemplo: para whoami, si tuviera un volumen)
# Para aplicaciones reales, deberá definir volúmenes específicos
# docker volume inspect -f '{{ .Mountpoint }}' 
# Por ejemplo, para una aplicación con el volumen 'my_app_data':
# rsync -av "${DOCKER_VOLUMES_PATH}/my_app_data/_data/" "${FULL_BACKUP_PATH}/docker_volumes/my_app_data/"

# Ejemplo de copia de seguridad de todos los volúmenes Docker (puede ser muy grande)
# Es mejor respaldar solo aquellos que contienen datos importantes
rsync -av --exclude '/_data/cache/' "${DOCKER_VOLUMES_PATH}/" "${FULL_BACKUP_PATH}/docker_volumes/"

echo "Copia de seguridad completada. Archivando..."
tar -czf "${BACKUP_DIR}/backup_${TIMESTAMP}.tar.gz" -C "${FULL_BACKUP_PATH}" .
rm -rf "${FULL_BACKUP_PATH}" # Eliminando directorio temporal

# Eliminando copias de seguridad antiguas (por ejemplo, con más de 7 días)
find "${BACKUP_DIR}" -type f -name "backup_.tar.gz" -mtime +7 -delete

echo "Archivado y limpieza completados."

Haga el script ejecutable:


chmod +x ~/backups/backup.sh

Configure cron para ejecutar el script diariamente (por ejemplo, a las 3:00 de la madrugada):


crontab -e # Abriendo crontab

Añada la línea:


0 3   * /home/ваш_пользователь/backups/backup.sh >> /home/ваш_пользователь/backups/backup.log 2>&1

3. Dónde almacenar las copias de seguridad

Almacenar las copias de seguridad en el mismo servidor que los datos originales es arriesgado. Se recomienda utilizar:

  • Almacenamiento de objetos externo compatible con S3: Barato, fiable, escalable (por ejemplo, MinIO, Wasabi, Backblaze B2). Para el envío automático se puede usar s3cmd o rclone.
  • VPS separado: Más caro, pero ofrece control total. Se puede configurar rsync por SSH a otro servidor.
  • Almacenamiento local (para uso doméstico): Si es un proyecto personal, se pueden copiar las copias de seguridad a un NAS o PC doméstico.

4. Actualizaciones: rolling vs. ventana de mantenimiento

  • Actualización del SO: Ejecute regularmente sudo apt update && sudo apt upgrade -y. Para las versiones LTS de Ubuntu, esto es seguro.
  • Actualización de Docker y Traefik:
    • Ventana de mantenimiento: Para servicios críticos, planifique una ventana de mantenimiento. Detenga los servicios, actualice Docker, Traefik, pruebe.
    • Actualizaciones continuas (para clústeres): Si tiene varias instancias de Traefik, puede actualizarlas una por una, minimizando el tiempo de inactividad. En un solo VPS, esto no es aplicable.

Para Traefik y los contenedores Docker, simplemente actualice las versiones de las imágenes en docker-compose.yml y reinicie los servicios:


cd ~/traefik
docker compose pull # Descargar nuevas versiones de imágenes
docker compose up -d # Recrear contenedores con las nuevas imágenes

Solución de problemas + Preguntas frecuentes

¿Qué hacer si Traefik no arranca?

Verifique los logs del contenedor Traefik. La mayoría de las veces, el problema está relacionado con errores en los archivos traefik.yml o docker-compose.yml. Use el comando docker compose logs traefik, para ver mensajes de error detallados. Asegúrese de que los puertos 80 y 443 no estén ocupados por otra aplicación y de que el socket de Docker esté disponible.

¿Por qué Let's Encrypt no emite certificados?

Las causas más comunes son:

  1. Registros DNS incorrectos: Asegúrese de que los registros A para su dominio (y subdominios) apunten a la dirección IP correcta de su VPS. Verifique con dig yourdomain.com.
  2. Problemas con el firewall: Asegúrese de que los puertos 80 y 443 estén abiertos en UFW (u otro firewall) y sean accesibles desde internet.
  3. Correo electrónico o ruta incorrectos a acme.json: Verifique estos parámetros en traefik.yml.
  4. Límites de Let's Encrypt: Si ha solicitado certificados con frecuencia para un mismo dominio, podría haber alcanzado los límites. Use el servidor de staging de Let's Encrypt para pruebas (añada caServer: "https://acme-staging-v02.api.letsencrypt.org/directory" en la sección acme).

¿Cómo añadir un nuevo contenedor Docker y proxyficarlo a través de Traefik?

Simplemente añada un nuevo servicio a su docker-compose.yml e indique las etiquetas Traefik necesarias (labels). Asegúrese de que el contenedor esté conectado a la red web. Traefik detectará automáticamente el nuevo contenedor y configurará el proxy y SSL.


  my_new_app:
    image: my/app:latest
    container_name: my_new_app
    restart: unless-stopped
    networks:
      - web
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.my_new_app.rule=Host(app.example.com)"
      - "traefik.http.routers.my_new_app.entrypoints=https"
      - "traefik.http.routers.my_new_app.tls.certresolver=letsencrypt"
      - "traefik.http.services.my_new_app.loadbalancer.server.port=8000" # Puerto en el que escucha su aplicación

Después de guardar el archivo, ejecute docker compose up -d.

¿Qué configuración mínima de VPS es adecuada para Traefik con un par o tres de servicios?

Para Traefik y 2-3 servicios Docker ligeros (por ejemplo, un servidor web, una pequeña API, un blog), un VPS con 1 núcleo de CPU, 2 GB de RAM y 40-60 GB de SSD será suficiente. Esto será adecuado para el funcionamiento básico y las pruebas. Sin embargo, para un funcionamiento estable y la posibilidad de escalar, se recomiendan 2 núcleos de CPU y 4 GB de RAM.

¿Qué elegir: VPS o dedicado para esta tarea?

Para la mayoría de los usuarios que configuran Traefik para proyectos personales, startups o equipos pequeños, un VPS es la opción óptima. Es más económico, más fácil de gestionar y ofrece un rendimiento suficiente. Un servidor dedicado debe considerarse si tiene una carga muy alta (miles de solicitudes por segundo), requiere recursos de hardware específicos o si desea evitar cualquier posible efecto de "vecindario" inherente a la virtualización. Comience con un VPS y escale a un dedicado si surge una necesidad real.

¿Cómo proteger el dashboard de Traefik?

En nuestro docker-compose.yml, ya hemos añadido autenticación básica (Basic Auth) para el dashboard de Traefik a través de un middleware. Asegúrese de haber generado un hash de contraseña seguro usando htpasswd. Para mayor seguridad, también puede restringir el acceso al dashboard por dirección IP, usando el middleware Traefik IPWhitelisting, o usar métodos de autenticación más complejos, como OAuth.

Conclusiones y próximos pasos

Diagrama: Conclusiones y próximos pasos
Diagrama: Conclusiones y próximos pasos

¡Felicidades! Ha configurado Traefik con éxito en su VPS, creando una plataforma potente y flexible para el despliegue automático de contenedores Docker con HTTPS. Ahora puede añadir fácilmente nuevos servicios web, simplemente describiéndolos en el archivo docker-compose.yml con las etiquetas correspondientes, y Traefik se encargará automáticamente del proxy y la gestión de certificados SSL.

Aquí hay algunos pasos para seguir adelante:

  • Añadir más servicios: Despliegue aplicaciones reales en su VPS: GitLab, Mattermost, Nextcloud, WordPress, o su propio proyecto SaaS, utilizando Traefik para su publicación.
  • Monitorización y registro: Integre Traefik con sistemas de monitorización como Prometheus y Grafana para rastrear el rendimiento y el estado de sus servicios. Configure el registro centralizado (ELK Stack o Loki/Grafana) para un análisis de logs conveniente.
  • Seguridad avanzada: Explore funciones de seguridad adicionales de Traefik, como IP Whitelisting, Rate Limiting, CORS, y la integración con sistemas de autenticación externos para proteger sus aplicaciones.
  • Automatización del despliegue: Utilice pipelines de CI/CD (por ejemplo, GitLab CI/CD, GitHub Actions) para el despliegue automático de nuevas versiones de sus contenedores Docker en el VPS.

¿Te fue útil esta guía?

Configuración de Traefik en VPS para proxiado automático de contenedores Docker
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.