1
Solución de Problemas
groales edited this page 2025-12-03 11:16:53 +01:00

Solución de Problemas

Guía completa para resolver los problemas más comunes con Heimdall.

🔍 Diagnóstico General

Antes de buscar soluciones específicas, recopila información:

# Estado del contenedor
docker ps -a | grep heimdall

# Logs recientes
docker logs --tail 50 heimdall

# Logs en vivo
docker logs -f heimdall

# Inspeccionar contenedor
docker inspect heimdall

# Verificar volumen
docker volume inspect heimdall_config

# Verificar red (si usas proxy)
docker network inspect proxy

🚫 Problemas de Acceso

No puedo acceder a Heimdall

Síntoma: Timeout o "No se puede acceder al sitio"

1. Verificar que el contenedor está corriendo:

docker ps | grep heimdall

Si NO aparece:

# Ver por qué se detuvo
docker ps -a | grep heimdall
docker logs heimdall

2. Verificar modo de despliegue:

Standalone - Debe tener puertos publicados:

docker ps | grep heimdall
# Debe mostrar: 0.0.0.0:8080->80/tcp

Si no hay puertos:

# Verifica que usaste override standalone
docker compose config | grep -A 5 ports

Con proxy (NPM/Traefik) - Debe estar en red proxy:

docker network inspect proxy | grep heimdall

Si no aparece:

# Verifica override
docker compose config | grep -A 5 networks

3. Verificar conectividad:

Desde el host:

curl http://localhost:8080  # Si standalone
curl http://heimdall  # Si proxy (desde otro contenedor en red proxy)

Desde otro dispositivo:

curl http://IP-DEL-SERVIDOR:8080
telnet IP-DEL-SERVIDOR 8080

4. Verificar firewall:

Linux (UFW):

sudo ufw status
sudo ufw allow 8080/tcp  # Si standalone

Linux (iptables):

sudo iptables -L -n | grep 8080

Windows:

Get-NetFirewallRule | Where-Object DisplayName -like "*8080*"

# Crear regla si no existe
New-NetFirewallRule -DisplayName "Heimdall" -Direction Inbound -LocalPort 8080 -Protocol TCP -Action Allow

Error 502 Bad Gateway (con proxy)

Causa: NPM/Traefik no puede conectar con Heimdall.

Solución:

  1. Verificar que están en la misma red:
docker network inspect proxy
# Deben aparecer tanto npm/traefik como heimdall
  1. Verificar nombre del contenedor:

En NPM: Forward Hostname debe ser heimdall En Traefik: Labels deben usar el nombre correcto

# Verificar nombre real
docker ps | grep heimdall
# Usar el nombre exacto en NAMES
  1. Verificar puerto interno:

En NPM: Forward Port debe ser 80 (no 8080) En Traefik: loadbalancer.server.port=80

  1. Recrear stack:
docker compose down
docker compose up -d

Error 404 Not Found (con Traefik)

Causa: Traefik no encuentra el router.

Solución:

  1. Verificar labels:
docker inspect heimdall | grep -A 20 Labels

Debe incluir:

traefik.enable=true
traefik.http.routers.heimdall.rule=Host(...)
  1. Verificar en Traefik Dashboard:

Accede al dashboard de Traefik y busca:

  • HTTP Routersheimdall (debe aparecer)
  • Servicesheimdall@docker

Si no aparece: Revisar override y labels.

  1. Verificar dominio:
nslookup heimdall.tudominio.com
# Debe resolver a IP del servidor

Advertencia de certificado SSL

Modo Standalone (puerto 8443):

Causa: Heimdall usa certificado autofirmado.

Soluciones:

  1. Acepta la advertencia (OK para red local)
  2. Usa HTTP puerto 8080 en su lugar
  3. Migra a NPM o Traefik para SSL real

Con proxy:

Causa: SSL no configurado correctamente.

NPM: Verifica que marcaste "Request a new SSL Certificate" Traefik: Verifica que tls.certresolver=letsencrypt

# Ver logs de generación de certificado
docker logs npm | grep -i ssl
docker logs traefik | grep -i certificate

🗄️ Problemas de Base de Datos

"Database is locked"

Síntoma: Error al guardar aplicaciones o configuración.

Causa: Múltiples procesos accediendo a SQLite simultáneamente.

Solución:

  1. Reiniciar contenedor:
docker restart heimdall
  1. Si persiste, verificar procesos:
docker exec heimdall fuser /config/www/app.sqlite
  1. Reparar base de datos:
# Backup primero
docker exec heimdall cp /config/www/app.sqlite /config/www/app.sqlite.bak

# Reparar
docker exec heimdall sqlite3 /config/www/app.sqlite "PRAGMA integrity_check;"

# Si falla, restaurar desde backup
# Ver [[Backup y Restauración]]

Aplicaciones desaparecen tras reiniciar

Causa: Base de datos no persiste.

Solución:

  1. Verificar volumen:
docker volume inspect heimdall_config
# Debe existir y tener Mountpoint
  1. Verificar montaje en contenedor:
docker inspect heimdall | grep -A 10 Mounts
# Debe mostrar heimdall_config montado en /config
  1. Si el volumen no existe, recrearlo:
docker compose down
docker volume create heimdall_config
docker compose up -d

Nota: Si recreas el volumen, perderás la configuración. Restaura desde backup.

🔐 Problemas de Permisos

"Permission denied" en logs

Síntoma:

s6-supervise nginx: warning: unable to spawn ./run - disabling service
Permission denied

Causa: PUID/PGID incorrectos.

Solución:

  1. Verificar tu UID/GID:
id
# uid=1000(user) gid=1000(user)
  1. Actualizar docker-compose.yml:
environment:
  PUID: 1000  # Tu UID
  PGID: 1000  # Tu GID
  1. Recrear contenedor:
docker compose down
docker compose up -d
  1. Si persiste, forzar permisos:
docker exec heimdall chown -R 1000:1000 /config
docker restart heimdall

No puedo subir iconos o fondos

Síntoma: Error al subir archivos en Settings.

Solución:

  1. Verificar permisos de escritura:
docker exec heimdall ls -la /config/www/
# Debe ser owned por PUID:PGID
  1. Verificar espacio en disco:
df -h
  1. Ajustar permisos:
docker exec heimdall chown -R 1000:1000 /config/www
docker exec heimdall chmod -R 755 /config/www

🎨 Problemas de Interfaz

Interfaz se ve rota (sin estilos)

Síntoma: Solo texto plano, sin colores ni diseño.

Causa: Archivos estáticos no cargan.

Solución:

  1. Limpiar caché del navegador:
  • Chrome: Ctrl+Shift+Delete
  • Firefox: Ctrl+Shift+Delete
  • Safari: Cmd+Opt+E
  1. Forzar recarga sin caché:
  • Ctrl+F5 (Windows/Linux)
  • Cmd+Shift+R (Mac)
  1. Verificar logs de NGINX:
docker logs heimdall | grep -i error
  1. Recrear contenedor:
docker compose down
docker compose up -d --force-recreate

Cambios no se guardan

Síntoma: Edito aplicaciones pero desaparecen al recargar.

Causa: Sesión o base de datos.

Solución:

  1. Verificar que sales del modo edición (click en llave de nuevo)

  2. Limpiar cookies:

  • Navegador → Configuración → Cookies
  • Eliminar cookies de heimdall.tudominio.com
  1. Verificar base de datos:
docker exec heimdall ls -la /config/www/app.sqlite
# Debe tener tamaño > 0
  1. Verificar permisos de escritura (ver sección anterior)

Enhanced apps no funcionan

Síntoma: No muestra información de Sonarr/Radarr/etc.

Solución:

  1. Verificar API Key:
  • Copia de nuevo el API Key desde la app
  • Pega en Heimdall sin espacios extra
  1. Verificar URL:
  • Debe ser accesible desde Heimdall
  • Si está en la misma red proxy: http://sonarr:8989
  • Si es externo: https://sonarr.tudominio.com
  1. Probar conectividad:
docker exec heimdall curl http://sonarr:8989/api/system/status -H "X-Api-Key: TU_API_KEY"
  1. Verificar CORS:

Algunas apps bloquean peticiones desde Heimdall. Verifica logs de la app (Sonarr/Radarr).

🌐 Problemas de Red

Contenedor no puede conectar a Internet

Síntoma: Enhanced apps no funcionan, no descarga iconos.

Solución:

  1. Verificar DNS:
docker exec heimdall cat /etc/resolv.conf
docker exec heimdall ping -c 3 google.com
  1. Configurar DNS custom en docker-compose.yml:
services:
  heimdall:
    dns:
      - 8.8.8.8
      - 1.1.1.1
  1. Recrear contenedor:
docker compose down
docker compose up -d

No puedo conectar con otros contenedores

Síntoma: Enhanced apps no funcionan con apps locales.

Causa: No están en la misma red Docker.

Solución:

  1. Verificar redes:
# Red de Heimdall
docker inspect heimdall | grep -A 10 Networks

# Red de Sonarr (ejemplo)
docker inspect sonarr | grep -A 10 Networks
  1. Conectar a red compartida:

Si ambos deben comunicarse, usa red proxy:

docker network connect proxy sonarr
docker network connect proxy heimdall

O configura en docker-compose.yml:

networks:
  - proxy

🔄 Problemas de Actualización

Ver guía completa: Actualización

Actualización falla

# Restaurar desde backup
docker run --rm \
  -v heimdall_config:/config \
  -v ~/backups/heimdall:/backup \
  alpine tar xzf /backup/heimdall-pre-update-20251203.tar.gz -C /config

docker start heimdall

Nuevo contenedor no inicia

# Ver logs de inicio
docker logs heimdall

# Volver a versión anterior
docker compose down
# Editar docker-compose.yml: cambiar :latest por :2.5.7
docker compose up -d

🐛 Problemas Específicos

Puerto 8080 ya en uso

Síntoma:

Error starting userland proxy: listen tcp 0.0.0.0:8080: bind: address already in use

Solución:

  1. Ver qué proceso usa el puerto:
# Linux
sudo netstat -tulpn | grep :8080
sudo lsof -i :8080

# Windows
Get-NetTCPConnection -LocalPort 8080
  1. Cambiar puerto en override standalone:
ports:
  - "9080:80"  # Usar puerto 9080 en lugar de 8080
  1. Recrear:
docker compose up -d

Contenedor se reinicia constantemente

Síntoma: docker ps muestra Restarting (1) 5 seconds ago

Solución:

  1. Ver logs de error:
docker logs heimdall
  1. Errores comunes:
  • Permisos: Ajustar PUID/PGID
  • Volumen corrupto: Restaurar desde backup
  • Puerto en uso: Cambiar puerto
  1. Detener auto-restart para debug:
docker update --restart=no heimdall
docker stop heimdall
# Investigar problema
# Arreglar
docker start heimdall
docker update --restart=unless-stopped heimdall

Certificado SSL no se renueva (con proxy)

Con NPM:

  1. Verificar que puerto 80 es accesible desde Internet
  2. Proxy Hosts → Editar → SSL → Force Renew

Con Traefik:

  1. Verificar logs:
docker logs traefik | grep -i certificate
docker logs traefik | grep -i acme
  1. Verificar archivo acme.json:
docker exec traefik ls -la /letsencrypt/acme.json
# Debe tener permisos 600
  1. Forzar renovación:
docker exec traefik rm /letsencrypt/acme.json
docker restart traefik

🔧 Modo de Recuperación

Si nada funciona:

Reset Completo

# 1. Backup actual (por si acaso)
docker run --rm \
  -v heimdall_config:/config \
  -v /tmp:/backup \
  alpine tar czf /backup/heimdall-emergency.tar.gz -C /config .

# 2. Detener y eliminar todo
docker compose down
docker volume rm heimdall_config

# 3. Redesplegar limpio
docker compose up -d

# 4. Si necesitas recuperar datos, restaura backup
docker stop heimdall
docker run --rm \
  -v heimdall_config:/config \
  -v /tmp:/backup \
  alpine tar xzf /backup/heimdall-emergency.tar.gz -C /config
docker start heimdall

📊 Herramientas de Diagnóstico

Verificación Completa

Script para recopilar toda la info:

#!/bin/bash
echo "=== HEIMDALL DIAGNOSTICS ==="
echo ""
echo "--- Container Status ---"
docker ps -a | grep heimdall
echo ""
echo "--- Recent Logs ---"
docker logs --tail 20 heimdall
echo ""
echo "--- Volume Info ---"
docker volume inspect heimdall_config
echo ""
echo "--- Network Info ---"
docker network inspect proxy 2>/dev/null | grep -A 5 heimdall || echo "Not in proxy network"
echo ""
echo "--- Config Files ---"
docker exec heimdall ls -la /config/www/
echo ""
echo "--- Disk Space ---"
df -h | grep docker

📚 Recursos Adicionales

Soporte oficial:


Repositorio: groales/heimdall