Table of Contents
- Integración con Traefik
- 📋 Requisitos Previos
- 🚀 Despliegue desde Portainer
- Opción A: Git Repository (Recomendado)
- Opción B: Web Editor
- 2. Personalizar Dominio
- 3. Verificar Despliegue
- 4. Verificar en Traefik
- 5. Acceder
- 🛠️ Despliegue desde CLI
- 1. Clonar repositorio
- 2. Copiar y personalizar override
- 3. Configurar dominio
- 4. Desplegar
- 5. Verificar logs
- 📝 Configuración Completa del Override
- 🔒 Seguridad Adicional
- 🔄 Actualización
- 🐛 Solución de Problemas
- 📚 Siguiente Paso
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
proxycreada (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.
Stacks → Add 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)
- name:
- Repository URL:
- Deploy the stack
Opción B: Web Editor
Método manual copiando y pegando el docker-compose completo.
Stacks → Add 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}porheimdall.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:
Stacks → heimdall → Environment variables → Editar valor de DOMAIN
Update the stack
Si usaste Web Editor:
Opción 1 - Variable de entorno (recomendado):
Stacks → heimdall → Environment variables → Añadir/editar:
- name:
DOMAIN - value:
heimdall.tudominio.com(tu dominio)
Update the stack
Opción 2 - Editar YAML directamente:
Stacks → heimdall → Editor
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:
- Genera password hash:
echo $(htpasswd -nb admin tu_password) | sed -e s/\\$/\\$\\$/g
- 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