Table of Contents
- Modo Standalone - Acceso Directo
- ⚠️ Advertencia de Seguridad
- 📋 Cuándo Usar Este Modo
- 🚀 Despliegue desde Portainer
- 🛠️ Despliegue desde CLI
- 📝 Configuración Completa del Override
- 🔧 Personalización de Puertos
- 🔒 Mejorar Seguridad en Modo Standalone
- 1. Firewall - Restringir Acceso por IP
- 2. Proxy Reverso Local (Opcional)
- 3. VPN - Acceso Remoto Seguro
- 🐛 Solución de Problemas
- Puerto ocupado
- No puedo acceder desde otro dispositivo
- Advertencia de certificado en HTTPS (puerto 8443)
- Contenedor no arranca
- 🔄 Migrar a Proxy Reverso
- 📊 Comparación de Modos
- 📚 Siguiente Paso
Modo Standalone - Acceso Directo
Esta guía explica cómo desplegar Heimdall con acceso directo mediante IP:puerto, sin proxy inverso.
⚠️ Advertencia de Seguridad
Este modo NO es recomendado para producción. Solo úsalo para:
- 🧪 Testing y desarrollo
- 🏠 Redes internas confiables
- 🔧 Troubleshooting temporal
Para producción: Usa Traefik o NPM con SSL.
📋 Cuándo Usar Este Modo
✅ Usa standalone si:
- Estás probando Heimdall por primera vez
- Tu servidor solo es accesible desde red local
- No tienes dominio o DNS configurado
- Necesitas acceso temporal rápido
❌ NO uses standalone si:
- El servidor es accesible desde Internet
- Necesitas SSL/HTTPS
- Tienes múltiples servicios
- Es un entorno de producción
🚀 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.standalone.yml.example
- 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
ports:
- "8080:80"
- "8443:443"
volumes:
heimdall_config:
name: heimdall_config
- Deploy the stack
2. Verificar Despliegue
Stacks → heimdall → Ver contenedor
Estado debe ser running ✅
docker ps | grep heimdall
Deberías ver:
CONTAINER ID IMAGE PORTS NAMES
abc123def456 lscr.io/linuxserver/heimdall:latest 0.0.0.0:8080->80/tcp, 0.0.0.0:8443->443/tcp heimdall
3. Acceder
Abre tu navegador en:
- HTTP:
http://IP-del-servidor:8080 - HTTPS:
https://IP-del-servidor:8443(certificado autofirmado ⚠️)
🛠️ Despliegue desde CLI
1. Clonar repositorio
git clone https://git.ictiberia.com/groales/heimdall
cd heimdall
2. Copiar override
cp docker-compose.override.standalone.yml.example docker-compose.override.yml
3. Desplegar
docker compose up -d
4. Verificar
docker logs -f heimdall
📝 Configuración Completa del Override
El archivo docker-compose.override.standalone.yml.example:
services:
heimdall:
ports:
- "8080:80"
- "8443:443"
Explicación:
8080:80- Puerto HTTP del host → Puerto 80 del contenedor8443:443- Puerto HTTPS del host → Puerto 443 del contenedor
🔧 Personalización de Puertos
Si los puertos 8080/8443 están ocupados, edita el override:
services:
heimdall:
ports:
- "9080:80" # HTTP en puerto 9080
- "9443:443" # HTTPS en puerto 9443
Luego actualiza el stack:
docker compose up -d
Acceso: http://IP-del-servidor:9080
🔒 Mejorar Seguridad en Modo Standalone
1. Firewall - Restringir Acceso por IP
UFW (Ubuntu/Debian):
# Permitir solo desde red local
sudo ufw allow from 192.168.1.0/24 to any port 8080
sudo ufw allow from 192.168.1.0/24 to any port 8443
# Denegar desde otras IPs (se aplica automáticamente)
sudo ufw enable
Firewalld (CentOS/RHEL):
# Crear zona para red local
sudo firewall-cmd --permanent --new-zone=localnet
sudo firewall-cmd --permanent --zone=localnet --add-source=192.168.1.0/24
sudo firewall-cmd --permanent --zone=localnet --add-port=8080/tcp
sudo firewall-cmd --permanent --zone=localnet --add-port=8443/tcp
sudo firewall-cmd --reload
Windows Firewall:
# Crear regla para puerto 8080
New-NetFirewallRule -DisplayName "Heimdall HTTP" -Direction Inbound -LocalPort 8080 -Protocol TCP -Action Allow -RemoteAddress 192.168.1.0/24
# Crear regla para puerto 8443
New-NetFirewallRule -DisplayName "Heimdall HTTPS" -Direction Inbound -LocalPort 8443 -Protocol TCP -Action Allow -RemoteAddress 192.168.1.0/24
2. Proxy Reverso Local (Opcional)
Puedes usar Caddy o NGINX local para añadir SSL:
Caddy (más fácil):
heimdall.local {
reverse_proxy localhost:8080
tls internal # Genera certificado autofirmado
}
NGINX:
server {
listen 443 ssl http2;
server_name heimdall.local;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
3. VPN - Acceso Remoto Seguro
Si necesitas acceder desde fuera de tu red local, usa VPN (WireGuard, OpenVPN) en lugar de exponer puertos.
WireGuard:
# Instalar WireGuard
sudo apt install wireguard
# Conectar a tu red
wg-quick up wg0
# Acceder a Heimdall via IP local
http://192.168.1.100:8080
🐛 Solución de Problemas
Puerto ocupado
Ver qué proceso usa el puerto:
# Linux
sudo netstat -tulpn | grep :8080
sudo lsof -i :8080
# Windows
Get-NetTCPConnection -LocalPort 8080
Solución: Cambia el puerto en el override (ver sección Personalización).
No puedo acceder desde otro dispositivo
Verificar que el puerto está publicado:
docker ps | grep heimdall
Debe aparecer: 0.0.0.0:8080->80/tcp
Verificar firewall del host:
# Linux
sudo ufw status
sudo iptables -L
# Windows
Get-NetFirewallRule | Where-Object DisplayName -like "*8080*"
Verificar conectividad:
# Desde otro dispositivo
ping IP-del-servidor
telnet IP-del-servidor 8080
Advertencia de certificado en HTTPS (puerto 8443)
Esto es normal. Heimdall usa un certificado autofirmado.
Opciones:
- Acepta la advertencia (OK para red local)
- Usa HTTP (puerto 8080) en su lugar
- Migra a NPM o Traefik para SSL real
Contenedor no arranca
Ver logs:
docker logs heimdall
Errores comunes:
port already allocated→ Puerto ocupado, cambiar en overridepermission denied→ Verificar PUID/PGID en docker-compose.yml
🔄 Migrar a Proxy Reverso
Cuando estés listo para producción:
Opción 1: Migrar a NPM
- Despliega NPM: groales/npm
- Cambia el override:
cp docker-compose.override.npm.yml.example docker-compose.override.yml docker compose up -d - Configura Proxy Host en NPM: Ver NPM
Opción 2: Migrar a Traefik
- Despliega Traefik: groales/traefik
- Cambia el override:
cp docker-compose.override.traefik.yml.example docker-compose.override.yml # Editar dominio docker compose up -d - Ver guía completa: Traefik
Ventajas de migrar:
- ✅ SSL automático con Let's Encrypt
- ✅ Acceso por dominio (no IP:puerto)
- ✅ Mejor seguridad
- ✅ Fácil de compartir con otros
📊 Comparación de Modos
| Característica | Standalone | NPM | Traefik |
|---|---|---|---|
| SSL automático | ❌ | ✅ | ✅ |
| Acceso por dominio | ❌ | ✅ | ✅ |
| Dificultad setup | Fácil | Media | Media |
| Ideal para | Testing | Producción | Producción |
| Requiere DNS | ❌ | ✅ | ✅ |
📚 Siguiente Paso
Ve a Configuración Inicial para configurar Heimdall.
Repositorio: groales/heimdall