diff --git a/README.md b/README.md index 0f11d2f..0f75273 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,303 @@ -# heimdall +# 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` + - O **Web editor**: Pegar contenido de `docker-compose.yml` +- **Deploy the stack** + +#### 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 NGINX Proxy Manager + +### 1. Conectar a red proxy + +La red `proxy` se crea automáticamente al desplegar el stack (compartida con NPM). + +### 2. 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