Cómo montar tu propia infraestructura web en casa con Docker y Traefik: desde cero hasta HTTPS automático
Etiquetas: docker,traefik,https,infraestructura,homelabIntroducción
Hace unos meses decidí dejar de usar servicios cloud caros y montar mi propia infraestructura en casa. La solución que encontré fue combinar Docker con Traefik. Funciona bien y ahora tengo varios servicios corriendo bajo HTTPS sin tocar manualmente un certificado. Te cuento cómo lo hice.
Qué necesitas
Un servidor con Docker instalado (cualquier máquina Linux con 2GB de RAM sobra). Un dominio propio. Un poco de paciencia con DNS. Eso es todo.
Si no tienes un servidor dedicado, tienes opciones según presupuesto y consumo: una Raspberry Pi 3 B+ (enlace de afiliado) es perfecta para servicios ligeros con un consumo mínimo de energía. Si necesitas más potencia, un portátil como el Lenovo V15 (enlace de afiliado) es una opción muy versátil: además de servidor doméstico, tiene la capacidad para correr software industrial de marcas como Siemens (TIA Portal, SIMATIC) u otros entornos de automatización que exigen recursos reales. Un equipo, dos usos.
El plan
Voy a usar Traefik como reverse proxy. Maneja automáticamente los certificados Let’s Encrypt, enruta el tráfico a los contenedores correctos y sirve HTTPS sin que tengas que hacer nada una vez configurado. Es limpio y funciona.
Paso 1: Preparar Docker Compose
Crea una carpeta para tu stack:
mkdir -p ~/docker/traefik
cd ~/docker/traefik
Este será tu archivo docker-compose.yml:
version: '3.8'
services:
traefik:
image: traefik:v2.10
container_name: traefik
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./traefik.yml:/traefik.yml
- ./acme.json:/acme.json
networks:
- web
networks:
web:
driver: bridge
Crea el archivo traefik.yml:
api:
insecure: true
dashboard: true
entryPoints:
web:
address: ":80"
http:
redirections:
entryPoint:
to: websecure
websecure:
address: ":443"
certificatesResolvers:
letsencrypt:
acme:
email: tu-email@example.com
storage: acme.json
httpChallenge:
entryPoint: web
providers:
docker:
endpoint: unix:///var/run/docker.sock
exposedByDefault: false
file:
filename: traefik.yml
Crea el archivo acme.json con permisos restrictivos:
touch acme.json
chmod 600 acme.json
Paso 2: Levanta Traefik
docker-compose up -d
Verifica que está corriendo:
docker-compose logs traefik
Paso 3: Configura tu dominio
En tu proveedor DNS, apunta tu dominio (y un wildcard) a la IP pública de tu servidor:
example.com A TU_IP_PUBLICA
*.example.com A TU_IP_PUBLICA
Espera a que se propague (15 minutos típicamente).
Paso 4: Añade tu primer servicio
Voy a añadir un ejemplo simple. Modifica el docker-compose.yml:
services:
traefik:
# ... config anterior
whoami:
image: traefik/whoami
restart: always
labels:
- "traefik.enable=true"
- "traefik.http.routers.whoami.rule=Host(`whoami.example.com`)"
- "traefik.http.routers.whoami.entrypoints=websecure"
- "traefik.http.routers.whoami.tls.certresolver=letsencrypt"
- "traefik.http.services.whoami.loadbalancer.server.port=80"
networks:
- web
Redeploy:
docker-compose up -d
Espera 30 segundos y entra en https://whoami.example.com. El certificado se genera automáticamente.
Paso 5: Añade más servicios
Para cada servicio nuevo, solo añade labels similares a los del whoami. Traefik se encarga del resto. Es así de simple.
Consideraciones prácticas
Backup de acme.json: Es tu archivo de certificados. Hazle backup regularmente o perderás los certificados.
Firewall: Abre puertos 80 y 443 en tu router apuntando al servidor.
IP dinámica: Si tu ISP cambia tu IP (común en residencial), usa un servicio DDNS.
Dashboard: Traefik tiene un dashboard en http://localhost:8080 (solo desde la máquina local por seguridad).
Problemas comunes
Si los certificados no se generan, revisa los logs: docker-compose logs traefik. Usualmente es un problema de DNS o firewall.
Si un servicio no responde, verifica que el label port coincida con el puerto interno del contenedor.
Conclusión
Con esta setup he montado blog, wiki, nextcloud y otros servicios en casa sin gastar en SSL o en reverse proxy comercial. Traefik es una bestia en esto. Vale mucho la pena dedicar una hora a configurarlo bien.
Equipamiento recomendado
- Raspberry Pi 3 B+ — Servidor ligero de bajo consumo para empezar tu homelab
- Raspberry Pi 4 (4GB) — La base perfecta para homelab, Docker y monitorización
- Lenovo V15 — Portátil versátil como servidor doméstico o para software industrial
- Soporte plegable para portátil de aluminio con ángulo ajustable — Ergonomía imprescindible si usas el portátil como estación de trabajo
- Kit de prueba de red con detector de trazas y tóner — Antes de configurar Docker y Traefik, conviene verificar el cableado físico. Ahorra horas de diagnóstico si tienes cables pasados por paredes o armarios de red
Enlaces de afiliado. Sin coste extra para ti.