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_22.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?