Clone
2
Traefik
groales edited this page 2025-12-04 10:45:56 +01:00
Despliegue con Traefik
NetBox detrás de Traefik con SSL automático vía Let's Encrypt.
Requisitos Previos
- ✅ Stack de Traefik desplegado y funcionando
- ✅ Red Docker
proxycreada - ✅ DNS apuntando al servidor (registro A para tu dominio)
- ✅ Puertos 80 y 443 accesibles desde internet
Configuración
1. Preparar Variables de Entorno
En Portainer, al crear el stack desde Git Repository, añade estas variables:
# Contraseñas (generadas previamente)
DB_PASSWORD=tu_password_generado_1
REDIS_PASSWORD=tu_password_generado_2
SUPERUSER_PASSWORD=tu_password_generado_3
# Superusuario de NetBox
SUPERUSER_EMAIL=admin@tudominio.com
# Base de datos (valores por defecto)
DB_NAME=netbox
DB_USER=netbox
# ⚠️ IMPORTANTE para Traefik
DOMAIN_HOST=netbox.tudominio.com
2. Subir Archivo Override
En Portainer, en la sección Additional files:
- Click en Add file
- Path:
docker-compose.override.traefik.yml - Content: Pega el contenido de
docker-compose.override.traefik.yml.example
services:
netbox:
labels:
# Habilitar Traefik
- traefik.enable=true
# Router HTTP (redirige a HTTPS)
- traefik.http.routers.netbox-http.rule=Host(`${DOMAIN_HOST}`)
- traefik.http.routers.netbox-http.entrypoints=web
- traefik.http.routers.netbox-http.middlewares=redirect-to-https
# Router HTTPS
- traefik.http.routers.netbox.rule=Host(`${DOMAIN_HOST}`)
- traefik.http.routers.netbox.entrypoints=websecure
- traefik.http.routers.netbox.tls=true
- traefik.http.routers.netbox.tls.certresolver=letsencrypt
- traefik.http.routers.netbox.service=netbox-svc
- traefik.http.services.netbox-svc.loadbalancer.server.port=8000
# Redirect middleware
- traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
- traefik.http.middlewares.redirect-to-https.redirectscheme.permanent=true
3. Deploy
- Click en Deploy the stack
- Espera 1-2 minutos mientras NetBox inicializa
- Verifica logs:
docker logs netbox -f
4. Verificar
# Ver logs de NetBox
docker logs netbox --tail 50
# Verificar que Traefik detectó NetBox
docker logs traefik | grep netbox
# Verificar certificado SSL
curl -I https://netbox.tudominio.com
Compose Completo con Traefik
Ejemplo completo si despliegas desde Web editor:
services:
netbox:
container_name: netbox
image: lscr.io/linuxserver/netbox:latest
restart: unless-stopped
environment:
PUID: 1000
PGID: 1000
TZ: Europe/Madrid
SUPERUSER_EMAIL: ${SUPERUSER_EMAIL}
SUPERUSER_PASSWORD: ${SUPERUSER_PASSWORD}
ALLOWED_HOST: ${ALLOWED_HOST:-*}
DB_NAME: ${DB_NAME:-netbox}
DB_USER: ${DB_USER:-netbox}
DB_PASSWORD: ${DB_PASSWORD}
DB_HOST: netbox-db
DB_PORT: 5432
REDIS_HOST: netbox-redis
REDIS_PORT: 6379
REDIS_PASSWORD: ${REDIS_PASSWORD}
volumes:
- netbox_config:/config
networks:
- proxy
- netbox-internal
depends_on:
- netbox-db
- netbox-redis
labels:
- traefik.enable=true
- traefik.http.routers.netbox-http.rule=Host(`netbox.tudominio.com`)
- traefik.http.routers.netbox-http.entrypoints=web
- traefik.http.routers.netbox-http.middlewares=redirect-to-https
- traefik.http.routers.netbox.rule=Host(`netbox.tudominio.com`)
- traefik.http.routers.netbox.entrypoints=websecure
- traefik.http.routers.netbox.tls=true
- traefik.http.routers.netbox.tls.certresolver=letsencrypt
- traefik.http.routers.netbox.service=netbox-svc
- traefik.http.services.netbox-svc.loadbalancer.server.port=8000
- traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
- traefik.http.middlewares.redirect-to-https.redirectscheme.permanent=true
netbox-db:
container_name: netbox-db
image: postgres:18-alpine
restart: unless-stopped
environment:
POSTGRES_DB: ${DB_NAME:-netbox}
POSTGRES_USER: ${DB_USER:-netbox}
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- netbox_db:/var/lib/postgresql
networks:
- netbox-internal
netbox-redis:
container_name: netbox-redis
image: redis:7-alpine
restart: unless-stopped
command: redis-server --requirepass ${REDIS_PASSWORD}
volumes:
- netbox_redis:/data
networks:
- netbox-internal
volumes:
netbox_config:
name: netbox_config
netbox_db:
name: netbox_db
netbox_redis:
name: netbox_redis
networks:
proxy:
external: true
netbox-internal:
name: netbox-internal
Solución de Problemas
Traefik no detecta NetBox
Verificar:
# Labels del contenedor
docker inspect netbox | grep -A 20 Labels
# Redes del contenedor
docker inspect netbox | grep -A 10 Networks
# Logs de Traefik
docker logs traefik | grep netbox
Solución:
- Verificar que NetBox está en la red
proxy - Verificar variable
DOMAIN_HOSTen env - Reiniciar Traefik:
docker restart traefik
Error de certificado SSL
Síntomas: NET::ERR_CERT_AUTHORITY_INVALID
Solución:
# Verificar logs de Traefik
docker logs traefik | grep -i acme
# Verificar que el DNS apunta correctamente
nslookup netbox.tudominio.com
# Forzar renovación de certificado
docker exec traefik rm /letsencrypt/acme.json
docker restart traefik
Redirect loop
Síntomas: La página recarga infinitamente
Solución:
- Verificar que
ALLOWED_HOSTincluye tu dominio o está en* - Comprobar configuración de Traefik (entrypoints)
Configuración Avanzada
Headers de Seguridad
Añade a los labels de Traefik:
- traefik.http.middlewares.netbox-headers.headers.sslredirect=true
- traefik.http.middlewares.netbox-headers.headers.stsincludesubdomains=true
- traefik.http.middlewares.netbox-headers.headers.stspreload=true
- traefik.http.middlewares.netbox-headers.headers.stsseconds=31536000
- traefik.http.routers.netbox.middlewares=netbox-headers
Autenticación Básica (opcional)
Si quieres protección adicional antes de acceder a NetBox:
# Generar usuario:password
htpasswd -nb admin password
# Añadir middleware
- traefik.http.middlewares.netbox-auth.basicauth.users=admin:$$apr1$$...
- traefik.http.routers.netbox.middlewares=netbox-auth
Próximos Pasos
- Configuración Inicial - Primer acceso y setup
- Personalización - Configurar LDAP, plugins
- Backup - Automatiza backups