Aprende Inteligencia Artificial y Acelera tu Futuro

Descubre cómo la IA puede multiplicar tu productividad y cambiar tu forma de trabajar.

Acceder al Curso Ahora

Instalar y exponer n8n en Windows 11 con Docker y ngrok (Guía paso a paso 2026)


Parte 0 — Requisitos

  • Windows 11
  • Docker Desktop instalado
  • WSL2 activo
  • Ngrok instalado y con token configurado:
ngrok config add-authtoken TU_TOKEN

Comprobar:

docker --version
wsl --version
ngrok version

Parte 1 — Crear proyecto

En PowerShell:

mkdir %USERPROFILE%\docker\n8n-win
cd %USERPROFILE%\docker\n8n-win
mkdir n8n-data

Parte 2 — Dockerfile (completo)

Crea un archivo llamado Dockerfile con este contenido:

FROM debian:12

RUN apt-get update && apt-get install -y \
    curl gnupg ca-certificates \
    python3 libreoffice \
    && rm -rf /var/lib/apt/lists/*

RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - && \
    apt-get install -y nodejs && \
    npm install -g n8n

ENV TZ=Europe/Madrid

RUN useradd -m -u 1000 -s /bin/bash node && \
    mkdir -p /home/node/.n8n && chown -R 1000:1000 /home/node

USER 1000:1000
WORKDIR /home/node

CMD ["n8n", "start"]

Parte 3 — docker-compose.yml (completo)

Crea docker-compose.yml:

services:
  n8n:
    build: .
    ports:
      - "5678:5678"
    environment:
      - GENERIC_TIMEZONE=Europe/Madrid
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=admin
      - N8N_BASIC_AUTH_PASSWORD=admin123
      - WEBHOOK_URL=${WEBHOOK_URL}
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
    volumes:
      - ./n8n-data:/home/node/.n8n

Parte 4 — Script start.ps1 (ngrok + n8n + .env automático)

Crea start.ps1 con este contenido:

$ErrorActionPreference = "Stop"

Write-Host "Cerrando ngrok si estaba abierto..."
Get-Process ngrok -ErrorAction SilentlyContinue | Stop-Process -Force

Write-Host "Iniciando ngrok..."
Start-Process ngrok "http http://localhost:5678" -WindowStyle Hidden

Write-Host "Esperando a que ngrok esté listo..."
$NGROK_URL = $null

for ($i = 1; $i -le 15; $i++) {
    try {
        $resp = Invoke-RestMethod "http://localhost:4040/api/tunnels"
        if ($resp.tunnels -and $resp.tunnels.Count -gt 0) {
            $NGROK_URL = $resp.tunnels[0].public_url
        }
        if ($NGROK_URL -and $NGROK_URL.StartsWith("https://")) {
            break
        }
    } catch {
    }
    Start-Sleep -Seconds 1
}

if (-not $NGROK_URL) {
    Write-Error "No se pudo obtener la URL de ngrok"
    exit 1
}

Write-Host "Ngrok activo en: $NGROK_URL"
"WEBHOOK_URL=$NGROK_URL" | Out-File -Encoding ascii ".env"

Write-Host "Arrancando n8n con Docker Compose..."
docker compose up

Parte 5 — Build y arranque

En la carpeta del proyecto:

docker compose build --no-cache
powershell -ExecutionPolicy Bypass -File .\start.ps1

Parte 6 — Acceso

La URL pública queda guardada en el archivo .env como WEBHOOK_URL.


Parte 7 — Parar todo

En la consola:

  • CTRL + C

Luego:

docker compose down

Troubleshooting (importante para el tutorial)

1) Docker se queda en “Starting the Docker Engine…”

Casi siempre es virtualización / hipervisor de Windows.

Comprobar:

  • Administrador de tareas → Rendimiento → CPU
    Debe poner: Virtualización: Habilitada

Si está habilitada y aun así Docker dice:

Virtualization support not detected

Ejecutar en PowerShell como administrador:

bcdedit /set hypervisorlaunchtype auto

Reiniciar Windows y abrir Docker Desktop otra vez.


2) Error: “open //./pipe/dockerDesktopLinuxEngine”

Significa que Docker Desktop no está arrancado.
Solución:

  • Abrir Docker Desktop
  • Esperar a que esté “Running”
  • Volver a lanzar start.ps1

3) WSL no funciona bien

En PowerShell como admin:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
wsl --set-default-version 2
wsl --update

Reiniciar Windows.


4) Comprobar estado

wsl -l -v
docker info

Qué aprenden los alumnos con este tutorial

  • Usar n8n de forma profesional con Docker
  • Persistencia de datos con volúmenes
  • Qué es y para qué sirve WEBHOOK_URL
  • Exponer servicios locales con ngrok
  • Automatizar arranque con scripts en Windows
  • Diagnosticar problemas reales de virtualización en Windows

Tutoriales Más Vistos

Posts Más Vistos