obsidian-dix/DIX-Notes/n8n en ubuntu server.md

4.5 KiB

Perfecto, David. A continuación te dejo el manual completo y actualizado para instalar n8n de forma manual en Ubuntu Server (sin Docker), incluyendo:

  • Instalación limpia de Node.js 20

  • Instalación de n8n y pm2

  • Script de arranque con autenticación básica

  • Ejecución en segundo plano con reinicio automático al encender el servidor


🛠 Manual actualizado para instalar n8n (sin Docker) en Ubuntu Server


1. Actualiza el sistema e instala dependencias

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl gnupg build-essential

2. Instala Node.js 20 (requerido por versiones recientes de n8n)

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

Verifica que esté instalado correctamente:

node -v
npm -v

Debe mostrar algo como v20.x.x.


3. Instala n8n y pm2 globalmente

sudo npm install -g pm2 n8n

4. Crea el script de arranque n8n

nano ~/start-n8n.sh

Pega el siguiente contenido:

#!/bin/bash
export N8N_HOST=0.0.0.0
export N8N_PORT=5678
export N8N_BASIC_AUTH_ACTIVE=true
export N8N_BASIC_AUTH_USER=admin
export N8N_BASIC_AUTH_PASSWORD=Shala55951254
n8n

Guarda y cierra (Ctrl+O, Enter, Ctrl+X).

Hazlo ejecutable:

chmod +x ~/start-n8n.sh

5. Ejecuta el script para probar

~/start-n8n.sh

Deberías ver un mensaje como:

Editor is now accessible via: http://0.0.0.0:5678

📌 Accede desde el navegador con la IP del servidor:

http://TU_IP:5678

Usuario: admin
Contraseña: Shala55951254


6. Ejecutar n8n en segundo plano con pm2

A. Inicia el proceso con pm2:

pm2 start ~/start-n8n.sh --name n8n

B. Guarda el proceso para que se reinicie con el sistema:

pm2 startup

Copia y ejecuta la línea que te devuelva (ejemplo):

sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u $USER --hp /home/$USER

Luego:

pm2 save

7. (Opcional) Abre el puerto en el firewall

sudo ufw allow 5678/tcp
sudo ufw enable
sudo ufw status

8. Comandos útiles

  • Ver estado de procesos:

    pm2 list
    
  • Ver logs en tiempo real:

    pm2 logs n8n
    
  • Parar o reiniciar:

    pm2 stop n8n
    pm2 restart n8n
    
  • Eliminar proceso:

    pm2 delete n8n
    

¿Quieres que ahora te dé el manual con NGINX + HTTPS (Let's Encrypt) para que accedas por dominio seguro como https://n8n.tudominio.com?

hacer que el servicio de n8n se reincie con el equipo

Excelente pregunta, David. Si n8n no se reinicia automáticamente tras reiniciar tu servidor, lo más probable es que faltó ejecutar correctamente uno de los pasos con pm2 para registrar el arranque del proceso.

Aquí te explico cómo asegurar que n8n se inicie automáticamente al arrancar el servidor:


Paso a paso para activar reinicio automático con pm2

1. Asegúrate de que n8n está corriendo con pm2

Confirma con:

pm2 list

Deberías ver un proceso llamado n8n.


2. Genera el script de arranque para systemd

pm2 startup

Esto te devolverá una línea como esta (con tu usuario):

sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u web --hp /home/web

🔁 Cópiala y ejecútala exactamente.

⚠️ Este paso es clave: si no ejecutas esa línea, pm2 no se integrará con systemd y no podrá reiniciar tus procesos al arrancar el servidor.


3. Guarda el estado actual de los procesos

pm2 save

Esto crea un snapshot de los procesos actuales que serán restaurados al reinicio.


4. Verifica que todo esté correcto

Puedes simular un reinicio:

sudo reboot

Luego, tras reiniciar, verifica:

pm2 list

Y accede a http://IP:5678 para confirmar que n8n se levantó automáticamente.


Resumen de comandos clave

pm2 start ~/start-n8n.sh --name n8n
pm2 startup             # (ejecutar también la línea que devuelve)
pm2 save

¿Quieres que revise también cómo levantar pm2 con un usuario distinto al login por defecto o con logs persistentes en un archivo?