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

254 lines
4.5 KiB
Markdown

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
```bash
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)
```bash
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
```
Verifica que esté instalado correctamente:
```bash
node -v
npm -v
```
Debe mostrar algo como `v20.x.x`.
---
## ✅ 3. Instala `n8n` y `pm2` globalmente
```bash
sudo npm install -g pm2 n8n
```
---
## ✅ 4. Crea el script de arranque `n8n`
```bash
nano ~/start-n8n.sh
```
Pega el siguiente contenido:
```bash
#!/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:
```bash
chmod +x ~/start-n8n.sh
```
---
## ✅ 5. Ejecuta el script para probar
```bash
~/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`:
```bash
pm2 start ~/start-n8n.sh --name n8n
```
### B. Guarda el proceso para que se reinicie con el sistema:
```bash
pm2 startup
```
Copia y ejecuta la línea que te devuelva (ejemplo):
```bash
sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u $USER --hp /home/$USER
```
Luego:
```bash
pm2 save
```
---
## ✅ 7. (Opcional) Abre el puerto en el firewall
```bash
sudo ufw allow 5678/tcp
sudo ufw enable
sudo ufw status
```
---
## ✅ 8. Comandos útiles
- Ver estado de procesos:
```bash
pm2 list
```
- Ver logs en tiempo real:
```bash
pm2 logs n8n
```
- Parar o reiniciar:
```bash
pm2 stop n8n
pm2 restart n8n
```
- Eliminar proceso:
```bash
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:
```bash
pm2 list
```
Deberías ver un proceso llamado `n8n`.
---
### 2. Genera el script de arranque para `systemd`
```bash
pm2 startup
```
Esto te devolverá una línea como esta (con tu usuario):
```bash
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
```bash
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:
```bash
sudo reboot
```
Luego, tras reiniciar, verifica:
```bash
pm2 list
```
Y accede a `http://IP:5678` para confirmar que `n8n` se levantó automáticamente.
---
## ✅ Resumen de comandos clave
```bash
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?