obsidian-dix/DIX-Notes/Install_n8n.md

228 lines
4.2 KiB
Markdown

¡Claro, David! Aquí tienes una guía clara para instalar **n8n** en **WSL (Windows Subsystem for Linux)**. Usaremos Node.js (v18 LTS o superior) y npm para instalarlo directamente.
---
### ✅ **Requisitos previos**
Asegúrate de tener lo siguiente:
1. **WSL** ya instalado (preferentemente Ubuntu).
2. **Node.js** (v18 o superior).
3. **npm** (gestor de paquetes de Node.js).
---
### 🔧 **Pasos para instalar n8n en WSL**
#### 1. Actualiza tu sistema
```bash
sudo apt update && sudo apt upgrade -y
```
#### 2. Instala Node.js (vía nvm recomendado)
```bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
source ~/.bashrc
nvm install --lts
nvm use --lts
```
==Para ubuntu server la instalación de Node.js==
```bash
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
```
Verifica que estén bien instalados:
```bash
node -v
npm -v
```
#### 3. Instala n8n globalmente
```bash
npm install -g n8n
```
Esto instalará el CLI de n8n de forma global.
#### 4. Ejecuta n8n
```bash
n8n
```
Verás un mensaje como:
```
n8n ready on 127.0.0.1, port 5678
```
Desde Windows, abre tu navegador y ve a:
📍 `http://localhost:5678`
---
### 🛡️ Opcional: Configurar credenciales y seguridad
Por defecto, n8n se instala sin autenticación. Para producción o pruebas seguras, puedes establecer una contraseña así:
```bash
export N8N_BASIC_AUTH_ACTIVE=true
export N8N_BASIC_AUTH_USER=admin
export N8N_BASIC_AUTH_PASSWORD=mi_contraseña_segura
n8n
```
---
### 🛠️ ¿Quieres levantarlo en segundo plano?
Puedes usar `tmux`, `screen` o `pm2`:
Ejemplo con `pm2`:
```bash
npm install -g pm2
pm2 start n8n
pm2 startup
pm2 save
```
---
¿Quieres que n8n arranque automáticamente al iniciar WSL o levantarlo con Docker también? Puedo ayudarte con eso también si gustas.
# ejecutar en segundo plano n8n en wsl:
Sí, el enfoque que muestras con `systemd` para levantar un servidor de Minecraft **es perfectamente replicable** para **n8n**, con unas pequeñas adaptaciones.
### 🚫 PERO HAY UN DETALLE IMPORTANTE:
WSL **no soporta `systemd` por defecto** en versiones antiguas. Sin embargo, **WSL2 en Windows 11** ya permite activarlo.
---
## ✅ OPCIÓN A: Si tienes WSL2 con systemd habilitado
### 1. Verifica que `systemd` esté habilitado
En `/etc/wsl.conf`, debe decir:
```ini
[boot]
systemd=true
```
Luego reinicia WSL:
```bash
wsl --shutdown
```
---
### 2. Crear servicio systemd para n8n
```bash
sudo nano /etc/systemd/system/n8n.service
```
Contenido del archivo (ajusta tu nombre de usuario y la ruta si es necesario):
```ini
[Unit]
Description=n8n workflow automation
After=network.target
[Service]
User=web # <- tu usuario de WSL
Environment=PATH=/home/web/.nvm/versions/node/v18.XX.X/bin:/usr/bin:/bin
Environment=NODE_ENV=production
WorkingDirectory=/home/web
ExecStart=/home/web/.nvm/versions/node/v18.XX.X/bin/n8n
Restart=on-failure
[Install]
WantedBy=default.target
```
📌 Reemplaza `v18.XX.X` con la versión exacta que tienes (`node -v` y `which n8n` te ayudan a saberlo).
---
==Para ubuntu server==
```bash
ExecStart=/usr/bin/n8n
```
### 3. Habilita y levanta el servicio
```bash
sudo systemctl daemon-reload
sudo systemctl enable n8n
sudo systemctl start n8n
```
Verifica que esté funcionando:
```bash
systemctl status n8n
```
==Para ubuntu server==
Para que puedas acceder a `n8n` desde otro equipo (navegador o API):
- Asegúrate de configurar el host:
```bash
export N8N_HOST=0.0.0.0
```
- O en el archivo de servicio:
```bash
Environment=N8N_HOST=0.0.0.0
```
- Y abre el puerto 5678:
```bash
sudo ufw allow 5678/tcp
```
---
## 🟡 OPCIÓN B: Si NO tienes systemd activado (por ejemplo en Windows 10 o WSL1)
Usa mejor **PM2** para ejecutar en segundo plano:
```bash
npm install -g pm2
pm2 start n8n
pm2 startup
pm2 save
```
Con eso n8n se ejecutará como demonio cada vez que abras WSL.
---
## 🔄 ¿Cómo reiniciar n8n con systemd?
```bash
sudo systemctl restart n8n
```
¿Quieres que también tenga autenticación, log de errores o conecte a PostgreSQL? Puedo ayudarte a extender el servicio según tus necesidades.
¿Te gustaría saber cómo revisar logs o cómo incluir variables de entorno como el webhook URL base?