Introducció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/traefikEste 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: bridgeCrea 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.ymlCrea el archivo acme.json con permisos restrictivos:
touch acme.json
chmod 600 acme.jsonPaso 2: Levanta Traefik#
docker-compose up -dVerifica que está corriendo:
docker-compose logs traefikPaso 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_PUBLICAEspera 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:
- webRedeploy:
docker-compose up -dEspera 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.