🛠️ Cómo instalar n8n en Debian 12 usando Docker Compose y una imagen Debian

Instalar N8N en Debian 12 con Docker y Ngrok para webhooks HTTPS
¿Buscas una forma efectiva de instalar N8N en Debian usando Docker y asegurarte de que todo funcione correctamente desde el primer intento, incluso con webhooks HTTPS? Este tutorial es para ti. Te explico paso a paso cómo crear una imagen personalizada en Docker sobre una máquina Debian y cómo usar ngrok
para exponer tu instancia de N8N de forma segura. ¡Todo listo para que funcione con Telegram, sin necesidad de dominios ni Nginx!
Tabla de contenidos
- 1 ¿Por qué usar Docker para instalar N8N en Debian?
- 2 Paso 1: Preparar el entorno
- 3 Paso 2: Instalar Docker
- 4 Paso 3: Crear el entorno para N8N
- 5 Paso 4: Dockerfile personalizado para N8N
- 6 Paso 5: Archivo docker-compose.yml
- 7 Paso 6: Instalar Ngrok
- 8 Paso 7: Crear cuenta en Ngrok y activar autenticación 2FA
- 9 Paso 8: Script start-ngrok.sh
- 10 Paso 9: Construcción y ejecución
- 11 Paso 10: Acceso a N8N y configuración inicial
- 12 Paso 11: Parar y reiniciar contenedores
- 13 🎉 Conclusión
¿Por qué usar Docker para instalar N8N en Debian?
Con Docker puedes aislar la instalación, evitar conflictos con el sistema base y facilitar el mantenimiento. Además, al usar ngrok
, puedes recibir webhooks de servicios como Telegram sin necesidad de dominios ni configuración compleja.
Paso 1: Preparar el entorno
ssh usuario@192.168.1.202
sudo apt update && sudo apt upgrade
Paso 2: Instalar Docker
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
sudo usermod -aG docker $USER
su - $USER
docker run hello-world
Paso 3: Crear el entorno para N8N
mkdir -p ~/Docker/n8n-debian
cd ~/Docker/n8n-debian
Paso 4: Dockerfile personalizado para N8N
FROM debian:12
RUN apt-get update && apt-get install -y \
curl \
gnupg \
git \
build-essential \
python3 \
libreoffice \
&& rm -rf /var/lib/apt/lists/*
RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && \
apt-get install -y nodejs && \
npm install -g n8n
ENV TZ=Europe/Madrid
CMD ["n8n"]
Paso 5: Archivo docker-compose.yml
version: '3.7'
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}
volumes:
- ./n8n-data:/home/node/.n8n
Paso 6: Instalar Ngrok
wget https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-amd64.tgz
tar -xvzf ngrok-v3-stable-linux-amd64.tgz
sudo mv ngrok /usr/local/bin/
ngrok version
Paso 7: Crear cuenta en Ngrok y activar autenticación 2FA
- Entra en https://ngrok.com y crea una cuenta gratuita.
- Activa la verificación en dos pasos (2FA) desde el panel https://dashboard.ngrok.com/settings/security
- Escanea el código QR con la app Google Authenticator o Authy.
- Valida el código temporal para activar 2FA.
- Copia tu
authtoken
desde https://dashboard.ngrok.com/get-started/your-authtoken - Configúralo en tu sistema:
ngrok config add-authtoken TU_AUTHTOKEN
Paso 8: Script start-ngrok.sh
Crea un archivo start.sh
con este contenido:
#!/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 -d
Dale permisos:
chmod +x start.sh
Paso 9: Construcción y ejecución
Primero, lanza ngrok:
./start.sh
Paso 10: Acceso a N8N y configuración inicial
Abre tu navegador y accede a la URL que ngrok haya generado, por ejemplo:
https://e43d-188-84-0-30.ngrok-free.app
Inicia sesión con:
- Usuario:
admin
- Contraseña:
admin123
Paso 11: Parar y reiniciar contenedores
Para apagar el contenedor:
docker compose down
Para volver a levantarlo (después de ejecutar start-ngrok.sh
):
docker compose up -d
🎉 Conclusión
Ahora ya tienes N8N funcionando sobre Debian y accesible desde cualquier parte del mundo con HTTPS gracias a ngrok
. ¡Ideal para recibir webhooks desde Telegram, Discord o cualquier API externa sin necesidad de dominios ni certificados!
✨ Si te ha gustado este tutorial, dale a «Me gusta», suscríbete y comenta qué automatización te gustaría que hiciera en el próximo vídeo.