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 proxy creada
  • 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:

  1. Click en Add file
  2. Path: docker-compose.override.traefik.yml
  3. 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

  1. Click en Deploy the stack
  2. Espera 1-2 minutos mientras NetBox inicializa
  3. 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_HOST en 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_HOST incluye 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

  1. Configuración Inicial - Primer acceso y setup
  2. Personalización - Configurar LDAP, plugins
  3. Backup - Automatiza backups