2
Standalone
groales edited this page 2025-12-03 11:25:53 +01:00

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.

StacksAdd 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
  • Deploy the stack

Opción B: Web Editor

Método manual copiando y pegando el docker-compose completo.

StacksAdd 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

Stacksheimdall → 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 contenedor
  • 8443: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:

  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

Contenedor no arranca

Ver logs:

docker logs heimdall

Errores comunes:

  • port already allocated → Puerto ocupado, cambiar en override
  • permission 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

  1. Despliega NPM: groales/npm
  2. Cambia el override:
    cp docker-compose.override.npm.yml.example docker-compose.override.yml
    docker compose up -d
    
  3. Configura Proxy Host en NPM: Ver NPM

Opción 2: Migrar a Traefik

  1. Despliega Traefik: groales/traefik
  2. Cambia el override:
    cp docker-compose.override.traefik.yml.example docker-compose.override.yml
    # Editar dominio
    docker compose up -d
    
  3. 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