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 Debian 13 con Docker y ngrok (Guía paso a paso 2026)

🧹 Parte 0 — Limpiar lo del tutorial anterior (Debian 13)

En el PC del alumno:

# Parar contenedores antiguos
docker compose down || true
docker stop $(docker ps -aq) 2>/dev/null || true

# Borrar imágenes viejas relacionadas
docker image prune -f

# (Opcional) Borrar carpeta antigua del proyecto
rm -rf ~/docker/n8n-debian

Si tenían n8n instalado “a mano” con npm en el sistema:

sudo npm uninstall -g n8n || true

Comprobar que no hay n8n en el sistema:

which n8n || echo "OK, no hay n8n en el sistema"

📁 Parte 1 — Crear proyecto nuevo

mkdir -p ~/docker/n8n-debian
cd ~/docker/n8n-debian
mkdir n8n-data

Dar permisos correctos:

sudo chown -R 1000:1000 n8n-data

🐳 Parte 2 — Dockerfile (Node 22, compatible 2026)

Crear archivo Dockerfile:

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

Crear 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.sh (ngrok + n8n)

Crear start.sh:

#!/bin/bash
set -e

echo "🔁 Deteniendo cualquier sesión activa de ngrok..."
pkill ngrok 2>/dev/null || true

echo "🚀 Iniciando ngrok..."
ngrok http http://localhost:5678 > /dev/null &

echo "⏳ Esperando a que ngrok esté listo..."
for i in {1..10}; do
    NGROK_URL=$(curl -s http://localhost:4040/api/tunnels | grep -o '"public_url":"https://[^"]*' | cut -d'"' -f4)
    if [[ $NGROK_URL == https://* ]]; then
        break
    fi
    sleep 1
done

if [[ -z "$NGROK_URL" ]]; then
    echo "❌ No se ha podido obtener la URL de ngrok."
    exit 1
fi

echo "✅ Ngrok está activo en: $NGROK_URL"
echo "WEBHOOK_URL=$NGROK_URL" > .env

docker compose up

Dar permisos:

chmod +x start.sh

▶️ Parte 5 — Arranque

docker compose build --no-cache
./start.sh

Abrir en el navegador:

http://localhost:5678

Usuario: admin
Password: admin123


🎯 Qué aprenden los alumnos en este tutorial

  • Limpiar instalaciones rotas del sistema
  • Usar n8n solo con Docker (forma profesional)
  • Entender volúmenes y permisos en Linux
  • Automatizar ngrok + Docker con un script
  • Ver qué es WEBHOOK_URL y para qué sirve

Tutoriales Más Vistos

Posts Más Vistos