5
Traefik
groales edited this page 2025-12-03 11:43:57 +01:00

Integración con Traefik

Esta guía explica cómo desplegar Heimdall con Traefik del repositorio groales/traefik.

📋 Requisitos Previos

  • Traefik desplegado y funcionando (groales/traefik)
  • Red Docker proxy creada (Traefik la crea automáticamente)
  • DNS configurado apuntando a tu servidor (ej: heimdall.tudominio.com)

🚀 Despliegue desde Portainer

Opción A: Git Repository (Recomendado)

Método más simple, usa los archivos directamente del repositorio.

StacksAdd stack

Configuración:

  • Name: heimdall
  • Build method: Git Repository
    • Repository URL: https://git.ictiberia.com/groales/heimdall
    • Repository reference: refs/heads/main
    • Compose path: docker-compose.yml
    • Additional paths: docker-compose.override.traefik.yml.example
    • Environment variables:
      • name: DOMAIN
      • value: heimdall.tudominio.com (cambiar por tu dominio real)
  • Deploy the stack

Opción B: Web Editor

Método manual copiando y pegando el docker-compose completo.

StacksAdd stack

Configuración:

  • Name: heimdall
  • Build method: Web editor
  • Web editor: Copiar y pegar el siguiente contenido:
services:
  heimdall:
    container_name: heimdall
    image: lscr.io/linuxserver/heimdall:latest
    restart: unless-stopped
    environment:
      PUID: 1000
      PGID: 1000
      TZ: Europe/Madrid
    volumes:
      - heimdall_config:/config
    networks:
      - proxy
    labels:
      # Habilitar Traefik
      - "traefik.enable=true"
      
      # Router HTTPS
      - "traefik.http.routers.heimdall.rule=Host(`${DOMAIN}`)"
      - "traefik.http.routers.heimdall.entrypoints=websecure"
      - "traefik.http.routers.heimdall.tls=true"
      - "traefik.http.routers.heimdall.tls.certresolver=letsencrypt"
      
      # Service backend
      - "traefik.http.services.heimdall.loadbalancer.server.port=80"
      
      # Middlewares de seguridad (opcional)
      - "traefik.http.routers.heimdall.middlewares=security-headers@file"

volumes:
  heimdall_config:
    name: heimdall_config

networks:
  proxy:
    external: true

⚠️ Importante:

Opción 1: Añadir variable de entorno en Portainer:

  • Debajo del Web editor, click en + add an environment variable
  • name: DOMAIN
  • value: heimdall.tudominio.com (tu dominio real)

Opción 2: Editar directamente el YAML:

  • Cambiar ${DOMAIN} por heimdall.tudominio.com (tu dominio real)

  • Deploy the stack

2. Personalizar Dominio

Si usaste Git Repository:

El dominio se configura mediante la variable de entorno DOMAIN. Si necesitas cambiarlo:

StacksheimdallEnvironment variables → Editar valor de DOMAIN

Update the stack

Si usaste Web Editor:

Opción 1 - Variable de entorno (recomendado):

StacksheimdallEnvironment variables → Añadir/editar:

  • name: DOMAIN
  • value: heimdall.tudominio.com (tu dominio)

Update the stack

Opción 2 - Editar YAML directamente:

StacksheimdallEditor

Busca la línea:

- "traefik.http.routers.heimdall.rule=Host(`${DOMAIN}`)"

Cambia por:

- "traefik.http.routers.heimdall.rule=Host(`tu-dominio-real.com`)"

Update the stack

3. Verificar Despliegue

docker logs heimdall

Deberías ver:

[services.d] starting services
[services.d] done.

4. Verificar en Traefik

Accede al dashboard de Traefik y verifica:

  • HTTP Routers → Debe aparecer heimdall
  • Services → Debe aparecer heimdall@docker
  • Estado: Verde (healthy)

5. Acceder

Abre tu navegador en: https://heimdall.tudominio.com

Traefik gestiona automáticamente el certificado SSL con Let's Encrypt.

🛠️ Despliegue desde CLI

1. Clonar repositorio

git clone https://git.ictiberia.com/groales/heimdall
cd heimdall

2. Copiar y personalizar override

cp docker-compose.override.traefik.yml.example docker-compose.override.yml

3. Configurar dominio

Opción 1 - Archivo .env (recomendado):

echo "DOMAIN=heimdall.tudominio.com" > .env

Opción 2 - Editar override directamente:

nano docker-compose.override.yml
# Cambiar ${DOMAIN} por tu dominio real

4. Desplegar

docker compose up -d

5. Verificar logs

docker logs -f heimdall

📝 Configuración Completa del Override

El archivo docker-compose.override.traefik.yml.example incluye:

services:
  heimdall:
    networks:
      - proxy
    labels:
      # Habilitar Traefik
      - "traefik.enable=true"
      
      # Router HTTPS
      - "traefik.http.routers.heimdall.rule=Host(`heimdall.tudominio.com`)"
      - "traefik.http.routers.heimdall.entrypoints=websecure"
      - "traefik.http.routers.heimdall.tls=true"
      - "traefik.http.routers.heimdall.tls.certresolver=letsencrypt"
      
      # Service backend
      - "traefik.http.services.heimdall.loadbalancer.server.port=80"
      
      # Middlewares de seguridad (opcional)
      - "traefik.http.routers.heimdall.middlewares=security-headers@file"

networks:
  proxy:
    external: true

🔒 Seguridad Adicional

Middleware de Autenticación Básica

Si quieres proteger Heimdall con usuario/contraseña:

  1. Genera password hash:
echo $(htpasswd -nb admin tu_password) | sed -e s/\\$/\\$\\$/g
  1. Añade al override:
labels:
  - "traefik.http.routers.heimdall.middlewares=heimdall-auth"
  - "traefik.http.middlewares.heimdall-auth.basicauth.users=admin:$$apr1$$xxx"

Restricción por IP (Access List)

En tu traefik.yml dinámico, define:

http:
  middlewares:
    heimdall-ipwhitelist:
      ipWhiteList:
        sourceRange:
          - "192.168.1.0/24"
          - "10.0.0.0/8"

Y añade al override:

labels:
  - "traefik.http.routers.heimdall.middlewares=heimdall-ipwhitelist@file"

🔄 Actualización

docker compose pull
docker compose up -d

Heimdall mantiene la configuración gracias al volumen persistente heimdall_config.

🐛 Solución de Problemas

Error 404 o Gateway Timeout

Verificar red proxy:

docker network inspect proxy

Heimdall debe aparecer en la lista de contenedores conectados.

Verificar labels:

docker inspect heimdall | grep -A 20 Labels

SSL no funciona

Verificar DNS:

nslookup heimdall.tudominio.com

Debe resolver a la IP pública de tu servidor.

Verificar logs de Traefik:

docker logs traefik | grep heimdall

Contenedor no arranca

Ver logs detallados:

docker logs heimdall

Verificar permisos:

docker exec heimdall ls -la /config

📚 Siguiente Paso

Ve a Configuración Inicial para configurar Heimdall.


Repositorio: groales/heimdall
Traefik: groales/traefik