# Flujos de trabajo de IA n8n

## Resumen

[n8n](https://github.com/n8n-io/n8n) es una plataforma de automatización de flujos de trabajo con código justo con **55K+ estrellas en GitHub**. A diferencia de alternativas totalmente de código cerrado (Zapier, Make), n8n te permite alojar toda la pila por tu cuenta —con control completo de los datos— mientras ofrece capacidades nativas de agentes de IA, un nodo de código JavaScript/Python y una biblioteca en crecimiento de más de 400 integraciones.

En **Clore.ai**, n8n en sí se ejecuta en CPU (no se necesita GPU), pero se complementa de forma potente con servicios acelerados por GPU como Ollama o vLLM ejecutándose en el mismo servidor, dándote una pila de automatización de IA completamente local. Puedes tener una instancia de n8n en producción funcionando por menos de **$0.10–0.20/h**.

**Capacidades clave:**

* 🔗 **Más de 400 integraciones** — Slack, GitHub, Google Sheets, Postgres, HTTP Request, webhooks y mucho más
* 🤖 **Nodos de agente de IA** — agentes integrados potenciados por LangChain con uso de herramientas y memoria
* 💻 **Nodos de código** — ejecuta JavaScript o Python arbitrario inline en los flujos de trabajo
* 🔄 **Variedad de disparadores** — webhooks, cron, sondeo de bases de datos, correo electrónico, eventos de cola
* 📊 **Sub-flujos** — componentes modulares y reutilizables de flujos de trabajo
* 🔐 **Bóveda de credenciales** — almacenamiento cifrado para claves API y tokens OAuth
* 🏠 **Autoalojado** — tus datos nunca salen de tu servidor

***

## Requisitos

n8n es una aplicación Node.js empaquetada como una imagen Docker. Es **Solo CPU** — no se necesita GPU para el propio motor de automatización. Una GPU sólo resulta útil si ejecutas un LLM local junto a él (p. ej. Ollama).

| Configuración                      | GPU                | VRAM  | RAM del sistema | Disco  | Precio de Clore.ai |
| ---------------------------------- | ------------------ | ----- | --------------- | ------ | ------------------ |
| **Mínima** (sólo n8n)              | Ninguno / Solo CPU | —     | 2 GB            | 10 GB  | \~$0.03/h (CPU)    |
| **Estándar**                       | Ninguno / Solo CPU | —     | 4 GB            | 20 GB  | \~$0.05/h          |
| **+ LLM local (Ollama)**           | RTX 3090           | 24 GB | 16 GB           | 60 GB  | \~$0.20/h          |
| **+ LLM de alto rendimiento**      | A100 40 GB         | 40 GB | 32 GB           | 100 GB | \~$0.80/h          |
| **Kit de inicio de IA (completo)** | RTX 4090           | 24 GB | 32 GB           | 100 GB | \~$0.35/h          |

> **Consejo:** El [Kit de inicio de IA n8n autoalojado](https://github.com/n8n-io/self-hosted-ai-starter-kit) empaqueta n8n + Ollama + Qdrant + PostgreSQL en una sola pila Docker Compose. Ver [Kit de inicio de IA](#ai-starter-kit-recommended) más abajo.

***

## Inicio rápido

### 1. Alquila un servidor Clore.ai

Inicia sesión en [clore.ai](https://clore.ai) y despliega un servidor:

* **Instancia solo CPU** si solo necesitas la automatización n8n
* **RTX 3090/4090** si quieres LLMs locales a través de Ollama
* Exponer puerto **5678** en la configuración de mapeo de puertos de la oferta
* Habilitar acceso SSH

### 2. Conéctate al servidor

```bash
ssh root@<ip-servidor-clore> -p <puerto-ssh>

# Verifica que Docker esté instalado
docker --version
docker compose version
```

### 3. Opción A — Inicio mínimo en un solo contenedor

La forma más rápida de poner n8n en funcionamiento:

```bash
# Crea un volumen con nombre para persistencia
docker volume create n8n_data

# Ejecuta n8n
docker run -d \
  --name n8n \
  --restart unless-stopped \
  -p 5678:5678 \
  -v n8n_data:/home/node/.n8n \
  -e N8N_HOST=<clore-server-ip> \
  -e N8N_PORT=5678 \
  -e N8N_PROTOCOL=http \
  -e WEBHOOK_URL=http://<clore-server-ip>:5678/ \
  docker.n8n.io/n8nio/n8n

# Revisa los logs
docker logs -f n8n
```

Accede a la interfaz en `http://<clore-server-ip>:5678`

### 4. Opción B — Docker Compose con Postgres (producción)

Para uso en producción, reemplaza el SQLite por defecto con Postgres:

```bash
mkdir n8n-prod && cd n8n-prod
cat > docker-compose.yml << 'EOF'
version: "3.8"

services:
  postgres:
    image: postgres:15-alpine
    restart: unless-stopped
    environment:
      POSTGRES_USER: n8n
      POSTGRES_PASSWORD: n8npassword   # ¡Cambia esto!
      POSTGRES_DB: n8n
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U n8n"]
      interval: 10s
      timeout: 5s
      retries: 5

  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: unless-stopped
    depends_on:
      postgres:
        condition: service_healthy
    ports:
      - "5678:5678"
    environment:
      DB_TYPE: postgresdb
      DB_POSTGRESDB_HOST: postgres
      DB_POSTGRESDB_PORT: 5432
      DB_POSTGRESDB_DATABASE: n8n
      DB_POSTGRESDB_USER: n8n
      DB_POSTGRESDB_PASSWORD: n8npassword
      N8N_HOST: <clore-server-ip>
      N8N_PORT: 5678
      N8N_PROTOCOL: http
      WEBHOOK_URL: http://<clore-server-ip>:5678/
      N8N_ENCRYPTION_KEY: tu-clave-de-cifrado-de-32-caracteres-aqui
      EXECUTIONS_MODE: regular
      N8N_BASIC_AUTH_ACTIVE: "true"
      N8N_BASIC_AUTH_USER: admin
      N8N_BASIC_AUTH_PASSWORD: ¡cámbiame!
    volumes:
      - n8n_data:/home/node/.n8n

volumes:
  postgres_data:
  n8n_data:
EOF

docker compose up -d
docker compose logs -f n8n
```

***

## Kit de inicio de IA (Recomendado)

El [Kit de inicio de IA n8n autoalojado](https://github.com/n8n-io/self-hosted-ai-starter-kit) es el camino más rápido hacia una pila completa de automatización de IA local. Incluye:

* **n8n** — automatización de flujos de trabajo
* **Ollama** — inferencia de LLM local (GPU o CPU)
* **Qdrant** — base de datos vectorial para RAG
* **PostgreSQL** — almacenamiento persistente

```bash
# Clona el kit de inicio
git clone https://github.com/n8n-io/self-hosted-ai-starter-kit.git
cd self-hosted-ai-starter-kit

# Para servidores con GPU (RTX 3090, 4090, A100, etc.)
docker compose --profile gpu-nvidia up -d

# Para servidores solo con CPU
docker compose --profile cpu up -d

# Monitoriza el inicio
docker compose logs -f

# Descarga un modelo en Ollama (después de que la pila arranque)
docker exec ollama ollama pull llama3:8b
docker exec ollama ollama pull nomic-embed-text  # Para embeddings
```

Servicios tras el arranque:

| Servicio        | URL                          |
| --------------- | ---------------------------- |
| Interfaz n8n    | `http://<ip>:5678`           |
| API de Ollama   | `http://<ip>:11434`          |
| Interfaz Qdrant | `http://<ip>:6333/dashboard` |

> **Nota:** Ollama con GPU requiere el [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html), que los servidores de Clore.ai tienen preinstalado.

***

## Configuración

### Referencia de variables de entorno

```bash
# ── Configuración principal ───────────────────────────────────────────────────
N8N_HOST=0.0.0.0                  # Dirección de enlace
N8N_PORT=5678                     # Puerto en el que escuchar
N8N_PROTOCOL=http                 # http o https
WEBHOOK_URL=http://<ip>:5678/     # URL base pública de webhooks (¡crítico!)

# ── Cifrado ───────────────────────────────────────────────────────────────────
N8N_ENCRYPTION_KEY=<clave-de-32-caracteres>  # Cifra las credenciales almacenadas
# Generar: openssl rand -hex 16

# ── Autenticación ─────────────────────────────────────────────────────────────
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=tu-contraseña-segura

# ── Configuración de ejecuciones ──────────────────────────────────────────────
EXECUTIONS_MODE=regular           # regular (single) o queue (respaldado por Redis)
EXECUTIONS_DATA_SAVE_ON_SUCCESS=all
EXECUTIONS_DATA_SAVE_ON_ERROR=all
EXECUTIONS_DATA_MAX_AGE=336       # Conserva datos de ejecuciones durante 14 días

# ── Zona horaria ─────────────────────────────────────────────────────────────
GENERIC_TIMEZONE=UTC

# ── Deshabilitar telemetría (opcional) ───────────────────────────────────────
N8N_DIAGNOSTICS_ENABLED=false
N8N_VERSION_NOTIFICATIONS_ENABLED=false
```

### Conectar n8n a Ollama para agentes de IA

Una vez que Ollama esté en funcionamiento en el mismo servidor:

1. En n8n, añade una nueva credencial: **API de Ollama**
   * URL base: `http://ollama:11434` (si usas Compose) o `http://localhost:11434`
2. En un flujo de trabajo, añade un **Agente de IA** nodo
3. Bajo **Modelo de Chat**, selecciona Ollama y elige tu modelo (p. ej. `llama3:8b`)
4. Añade herramientas como **HTTP Request**, **Postgres**, o **Código** nodos
5. ¡Ejecuta!

***

## Consejos y mejores prácticas

### Optimización de costos en Clore.ai

```bash
# Exporta todos los flujos de trabajo antes de detener tu instancia
# Usa la CLI de n8n dentro del contenedor:
docker exec n8n n8n export:workflow --all --output=/home/node/.n8n/workflows-backup.json

# Copia la copia de seguridad a la máquina local
docker cp n8n:/home/node/.n8n/workflows-backup.json ./n8n-workflows-backup.json

# Importa en una nueva instancia:
docker exec n8n n8n import:workflow --input=/home/node/.n8n/workflows-backup.json
```

### Fiabilidad de webhooks en Clore.ai

Los servidores de Clore.ai tienen IPs dinámicas. Si tus webhooks fallan después de un redeploy:

```bash
# 1. Usa un dominio estático con Caddy + Let's Encrypt
# Archivo Caddy:
# n8n.tudominio.com {
#     reverse_proxy n8n:5678
# }

# 2. O usa Cloudflare Tunnel (gratis, no se necesitan puertos abiertos):
docker run -d \
  --name cloudflared \
  --network n8n-prod_default \
  cloudflare/cloudflared:latest \
  tunnel --no-autoupdate run \
  --token <tu-token-de-tunel-cloudflare>
```

### Modo cola para flujos de alto volumen

```bash
# Añade Redis y ejecuta n8n en modo cola para ejecución en paralelo
# Añadir a docker-compose.yml:
  redis:
    image: redis:7-alpine
    restart: unless-stopped

  n8n-worker:
    image: docker.n8n.io/n8nio/n8n
    command: worker
    depends_on: [redis, postgres]
    environment:
      <<: *n8n-env
      EXECUTIONS_MODE: queue
      QUEUE_BULL_REDIS_HOST: redis
```

### Comandos útiles de la CLI de n8n

```bash
# Lista todos los flujos de trabajo
docker exec n8n n8n list:workflow

# Ejecuta manualmente un flujo de trabajo específico
docker exec n8n n8n execute --id=<workflow-id>

# Actualiza n8n a la última versión
docker pull docker.n8n.io/n8nio/n8n
docker compose up -d n8n

# Comprueba la versión de n8n
docker exec n8n n8n --version
```

### Endurecimiento de seguridad

```bash
# Ejecuta n8n detrás de un proxy inverso con HTTPS
# Nunca expongas el puerto 5678 directamente en producción
# Usa N8N_BASIC_AUTH o configura SSO vía LDAP/SAML

# Restringe qué nodos están permitidos (modo lista blanca):
NODE_FUNCTION_ALLOW_EXTERNAL=axios,lodash
NODES_EXCLUDE='["n8n-nodes-base.executeCommand"]'  # Bloquear ejecución de shell
```

***

## Solución de problemas

### El contenedor n8n sale inmediatamente

```bash
docker logs n8n

# Problemas comunes:
# 1. Conexión a BD fallida — verifica que Postgres esté saludable
docker compose ps postgres

# 2. Desajuste de clave de cifrado — si cambiaste N8N_ENCRYPTION_KEY
#    Las credenciales se vuelven ilegibles; vuelve a introducirlas después del cambio de clave

# 3. Conflicto de puertos
ss -tlnp | grep 5678
```

### Los webhooks devuelven 404

```bash
# Asegúrate de que WEBHOOK_URL coincida con la dirección pública que usan los emisores de webhook
# Debe incluir la barra final
WEBHOOK_URL=http://<tu-ip-publica>:5678/

# Reinicia n8n después de cambiar esta variable de entorno
docker compose restart n8n
```

### El nodo Agente de IA no puede alcanzar Ollama

```bash
# Prueba desde dentro del contenedor n8n
docker exec n8n wget -qO- http://ollama:11434/api/tags
# o
docker exec n8n curl http://localhost:11434/api/tags

# Si usas contenedores separados que no están en la misma red de Compose:
# Usa host.docker.internal o la IP LAN del servidor
```

### "ENOSPC: no queda espacio en el dispositivo"

```bash
# Verifica el uso de disco
df -h
docker system df

# Podar datos antiguos de ejecuciones en la UI de n8n:
# Settings → Executions → Delete old executions

# O establece el auto-poda:
EXECUTIONS_DATA_PRUNE=true
EXECUTIONS_DATA_MAX_AGE=72   # 72 horas
```

### Ejecución lenta de flujos de trabajo

```bash
# Comprueba el uso de CPU
top -c

# Habilita el modo cola para ejecución en paralelo (ver consejos arriba)
# Aumenta la memoria de Node.js si es necesario:
NODE_OPTIONS=--max-old-space-size=4096
```

***

## Lecturas adicionales

* [Documentación oficial de n8n](https://docs.n8n.io)
* [Repositorio de n8n en GitHub](https://github.com/n8n-io/n8n)
* [Kit de inicio de IA n8n autoalojado](https://github.com/n8n-io/self-hosted-ai-starter-kit)
* [Guía de instalación de n8n con Docker](https://docs.n8n.io/hosting/installation/docker/)
* [Ejecutando Ollama en Clore.ai](/guides/guides_v2-es/modelos-de-lenguaje/ollama.md)
* [Comparativa de GPU de Clore.ai](/guides/guides_v2-es/primeros-pasos/gpu-comparison.md)
* [Foro de la comunidad de n8n](https://community.n8n.io)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.clore.ai/guides/guides_v2-es/plataformas-y-agentes-de-ia/n8n.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
