339 lines
8.4 KiB
Markdown
339 lines
8.4 KiB
Markdown
# Infraestructura: Heimdall
|
|
|
|
# Heimdall Application Dashboard — Despliegue con Docker Compose
|
|
|
|
Este repositorio proporciona una forma sencilla de desplegar **Heimdall** usando Docker Compose, siguiendo las recomendaciones de LinuxServer.io.
|
|
|
|
## ¿Qué es Heimdall?
|
|
|
|
Heimdall es un dashboard elegante y minimalista para organizar todos tus servicios web en un solo lugar. Ideal para:
|
|
|
|
- 🏠 **Dashboard de servicios** - Organiza accesos a todas tus aplicaciones
|
|
- 🎨 **Personalizable** - Temas, iconos y colores configurables
|
|
- 🔍 **Búsqueda integrada** - Acceso rápido a servicios
|
|
- 📱 **Responsive** - Funciona en móvil, tablet y escritorio
|
|
- 🔌 **Enhanced apps** - Widgets con información en tiempo real
|
|
|
|
## Requisitos
|
|
|
|
- Docker y Docker Compose instalados en el host
|
|
- Puertos 80/443 disponibles (o usar puertos alternativos)
|
|
- (Opcional) NPM desplegado para acceso con dominio y SSL
|
|
|
|
## Qué incluye este stack
|
|
|
|
- **Servicio**: `heimdall` con la imagen `lscr.io/linuxserver/heimdall:latest`
|
|
- **Puertos**:
|
|
- `8080`: HTTP (interfaz web)
|
|
- `8443`: HTTPS (certificado autofirmado)
|
|
- **Volúmenes**:
|
|
- `heimdall_config`: Configuración y base de datos
|
|
- **Red**: `proxy` (compartida con NPM/Traefik)
|
|
- **Variables de entorno**:
|
|
- `PUID=1000` / `PGID=1000`: Usuario/grupo para permisos de archivos
|
|
- `TZ=Europe/Madrid`: Zona horaria
|
|
|
|
## Pasos de despliegue
|
|
|
|
### Opción 1: Docker Compose (Línea de comandos)
|
|
|
|
#### 1. Clonar el repositorio
|
|
|
|
```bash
|
|
git clone https://git.ictiberia.com/groales/heimdall
|
|
cd heimdall
|
|
```
|
|
|
|
#### 2. Levantar el stack
|
|
|
|
```bash
|
|
docker compose up -d
|
|
```
|
|
|
|
### Opción 2: Desplegar desde Portainer (Recomendado)
|
|
|
|
#### 1. Desplegar stack de Heimdall
|
|
|
|
**Stacks** → **Add stack**
|
|
- **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** (opcional):
|
|
- Para Traefik: `docker-compose.override.traefik.yml.example`
|
|
- Para NPM: `docker-compose.override.npm.yml.example`
|
|
- **Deploy the stack**
|
|
|
|
**Nota**: Si usas **Additional paths**, no necesitas copiar el archivo a `.override.yml`. Portainer fusiona automáticamente los archivos especificados.
|
|
|
|
#### 2. Verificar despliegue
|
|
|
|
**Stacks** → `heimdall` → Ver logs del contenedor
|
|
|
|
### 3. Verificar el estado
|
|
|
|
```bash
|
|
docker ps --filter name=heimdall
|
|
```
|
|
|
|
### 4. Acceder a la interfaz
|
|
|
|
Abre tu navegador en:
|
|
- **HTTP**: `http://IP-del-servidor:8080`
|
|
- **HTTPS**: `https://IP-del-servidor:8443` (certificado autofirmado)
|
|
|
|
## Configuración inicial
|
|
|
|
Al primer acceso, Heimdall muestra una interfaz vacía. Para añadir aplicaciones:
|
|
|
|
1. Click en **icono de llave** (esquina superior derecha) para editar
|
|
2. Click en **Add Application**
|
|
3. Rellenar detalles:
|
|
- **Application name**: Nombre del servicio
|
|
- **Colour**: Color del icono
|
|
- **Icon**: Buscar icono o usar URL personalizada
|
|
- **URL**: Dirección completa (ej: `https://portainer.tudominio.com`)
|
|
- **Description**: Descripción opcional
|
|
4. **Save**
|
|
|
|
### Enhanced Apps
|
|
|
|
Heimdall soporta widgets especiales para apps populares:
|
|
|
|
- **Plex** - Muestra streams activos
|
|
- **Sonarr/Radarr** - Próximos estrenos
|
|
- **SABnzbd/NZBGet** - Estado de descargas
|
|
- **Pihole** - Estadísticas de bloqueo
|
|
|
|
Para habilitar:
|
|
- Marcar **Enable** en la aplicación
|
|
- Proporcionar **API Key** del servicio
|
|
- Configurar **Enhanced options**
|
|
|
|
## Integración con Proxy Inverso
|
|
|
|
Este repositorio incluye archivos override para facilitar la integración:
|
|
- `docker-compose.override.traefik.yml.example` - Para Traefik
|
|
- `docker-compose.override.npm.yml.example` - Para NGINX Proxy Manager
|
|
|
|
### Con Traefik
|
|
|
|
**Desde Portainer (Git)**:
|
|
- **Additional paths**: `docker-compose.override.traefik.yml.example`
|
|
- Editar dominio en el archivo antes de desplegar, o después desde Stack Editor
|
|
|
|
**Desde CLI**:
|
|
```bash
|
|
cp docker-compose.override.traefik.yml.example docker-compose.override.yml
|
|
# Editar dominio en docker-compose.override.yml
|
|
docker compose up -d
|
|
```
|
|
|
|
Accede a: `https://heimdall.tudominio.com`
|
|
|
|
### Con NGINX Proxy Manager
|
|
|
|
#### 1. Conectar a red proxy
|
|
|
|
La red `proxy` se crea automáticamente al desplegar el stack (compartida con NPM).
|
|
|
|
#### 2. Desplegar (Opcional con override)
|
|
|
|
**Desde Portainer**: Usar `docker-compose.override.npm.yml.example` en **Additional paths** si necesitas personalizar puertos o PUID/PGID.
|
|
|
|
**Desde CLI**:
|
|
```bash
|
|
cp docker-compose.override.npm.yml.example docker-compose.override.yml
|
|
# Editar si necesitas personalizar
|
|
docker compose up -d
|
|
```
|
|
|
|
#### 3. Configurar Proxy Host en NPM
|
|
|
|
Accede a NPM (puerto 81) y crea un Proxy Host:
|
|
|
|
**Pestaña Details**:
|
|
- **Domain Names**: `heimdall.tudominio.com`
|
|
- **Scheme**: `http`
|
|
- **Forward Hostname / IP**: `heimdall` (nombre del contenedor)
|
|
- **Forward Port**: `80`
|
|
- **Cache Assets**: ✅
|
|
- **Block Common Exploits**: ✅
|
|
- **Websockets Support**: ❌
|
|
|
|
**Pestaña SSL**:
|
|
- ✅ **Request a new SSL Certificate**
|
|
- ✅ **Force SSL**
|
|
- ✅ **HTTP/2 Support**
|
|
- Email: `tu@email.com`
|
|
- ✅ **I Agree to Let's Encrypt ToS**
|
|
|
|
**Save** y accede a: `https://heimdall.tudominio.com` 🎉
|
|
|
|
## Personalización
|
|
|
|
### Cambiar tema
|
|
|
|
1. Click en **icono de llave** → **Settings**
|
|
2. **Theme**: Seleccionar tema (Classic, Dark, etc.)
|
|
3. **Save**
|
|
|
|
### Cambiar fondo
|
|
|
|
1. **Settings** → **Background image**
|
|
2. Subir imagen o usar URL
|
|
3. **Save**
|
|
|
|
### Organizar aplicaciones
|
|
|
|
En modo edición:
|
|
- **Drag & drop** para reordenar
|
|
- Click en **engranaje** de cada app para editar/eliminar
|
|
- Crear **Tags** para agrupar aplicaciones
|
|
|
|
### Cambiar puertos
|
|
|
|
Si los puertos 8080/8443 están ocupados, edita `docker-compose.yml`:
|
|
|
|
```yaml
|
|
ports:
|
|
- "9080:80" # HTTP en puerto 9080
|
|
- "9443:443" # HTTPS en puerto 9443
|
|
```
|
|
|
|
### Variables de entorno
|
|
|
|
Ajusta PUID/PGID según tu sistema:
|
|
|
|
```bash
|
|
# Ver tu UID/GID
|
|
id
|
|
|
|
# Actualizar en docker-compose.yml
|
|
PUID: 1000 # Tu UID
|
|
PGID: 1000 # Tu GID
|
|
```
|
|
|
|
## Backup y Restauración
|
|
|
|
### Backup del volumen
|
|
|
|
```bash
|
|
docker run --rm \
|
|
-v heimdall_config:/config \
|
|
-v $(pwd):/backup \
|
|
alpine tar czf /backup/heimdall-config-$(date +%Y%m%d-%H%M%S).tar.gz -C /config .
|
|
```
|
|
|
|
### Restaurar backup
|
|
|
|
```bash
|
|
# Detener Heimdall
|
|
docker compose down
|
|
|
|
# Restaurar
|
|
docker run --rm \
|
|
-v heimdall_config:/config \
|
|
-v $(pwd):/backup \
|
|
alpine tar xzf /backup/heimdall-config-YYYYMMDD-HHMMSS.tar.gz -C /config
|
|
|
|
# Iniciar Heimdall
|
|
docker compose up -d
|
|
```
|
|
|
|
## Solución de problemas
|
|
|
|
### Puerto ocupado
|
|
|
|
```bash
|
|
# Ver qué proceso usa el puerto
|
|
Get-NetTCPConnection -LocalPort 8080
|
|
# o en Linux
|
|
sudo netstat -tulpn | grep :8080
|
|
|
|
# Cambiar puerto en docker-compose.yml
|
|
ports:
|
|
- "9080:80"
|
|
```
|
|
|
|
### Contenedor no arranca
|
|
|
|
```bash
|
|
# Ver logs
|
|
docker logs heimdall
|
|
|
|
# Verificar permisos del volumen
|
|
docker exec heimdall ls -la /config
|
|
```
|
|
|
|
### Error de permisos
|
|
|
|
Si ves errores de permisos en logs:
|
|
|
|
```bash
|
|
# Verificar PUID/PGID
|
|
id
|
|
|
|
# Actualizar docker-compose.yml con tus valores
|
|
# Recrear contenedor
|
|
docker compose down
|
|
docker compose up -d
|
|
```
|
|
|
|
### Aplicaciones no se guardan
|
|
|
|
Verifica que el volumen está montado correctamente:
|
|
|
|
```bash
|
|
docker volume inspect heimdall_config
|
|
docker exec heimdall ls -la /config
|
|
```
|
|
|
|
## Actualización
|
|
|
|
```bash
|
|
# Pull nueva imagen
|
|
docker compose pull
|
|
|
|
# Reiniciar con nueva versión
|
|
docker compose up -d
|
|
|
|
# Ver logs
|
|
docker logs -f heimdall
|
|
```
|
|
|
|
Heimdall mantiene la configuración entre actualizaciones (volumen persistente).
|
|
|
|
## Recursos oficiales
|
|
|
|
- 📘 [Documentación LinuxServer.io](https://docs.linuxserver.io/images/docker-heimdall)
|
|
- 🐙 [GitHub - Heimdall](https://github.com/linuxserver/Heimdall)
|
|
- 💬 [Comunidad LinuxServer.io](https://discord.gg/YWrKVTn)
|
|
- 🐳 [Docker Hub](https://hub.docker.com/r/linuxserver/heimdall)
|
|
|
|
## Seguridad
|
|
|
|
### Recomendaciones
|
|
|
|
1. ✅ **Usar NPM con SSL** para acceso seguro por dominio
|
|
2. ✅ **Restringir acceso** al puerto 8080 con firewall (si no usas proxy)
|
|
3. ✅ **Backup periódico** del volumen `heimdall_config`
|
|
4. ✅ **Actualizar regularmente** con `docker compose pull && docker compose up -d`
|
|
5. ✅ **Usar contraseñas fuertes** si habilitas autenticación
|
|
|
|
### Proteger con Access List (NPM)
|
|
|
|
En NPM, crea una Access List para restringir acceso:
|
|
|
|
1. **Access Lists** → **Add Access List**
|
|
2. **Name**: `Red local`
|
|
3. **Access** → **Allow** → IPs permitidas (ej: `192.168.1.0/24`)
|
|
4. **Access** → **Deny** → `0.0.0.0/0`
|
|
5. Aplicar al Proxy Host de Heimdall
|
|
|
|
---
|
|
|
|
**Versión**: Latest (imagen LinuxServer.io rolling)
|
|
**Última actualización**: Diciembre 2025
|