> For the complete documentation index, see [llms.txt](https://docs.clore.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.clore.ai/guides/guides_v2-es/plataformas-y-agentes-de-ia/n8n.md).

# Flujos de trabajo de IA n8n

Despliega n8n en Clore.ai: autoaloja una potente plataforma de automatización de flujos de trabajo de IA con más de 400 integraciones y soporte nativo para agentes LLM por centavos por hora.

## Descripción general

[n8n](https://github.com/n8n-io/n8n) es una plataforma de automatización de flujos de trabajo fair-code con **más de 55 mil estrellas en GitHub**. A diferencia de las alternativas totalmente de código cerrado (Zapier, Make), n8n te permite autoalojar toda la pila — con control total de los datos — y además ofrece capacidades nativas de agente 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 requiere GPU), pero se combina de forma muy 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, Hojas de cálculo de Google, Postgres, solicitudes HTTP, webhooks y mucho más
* 🤖 **Nodos de agente de IA** — agentes integrados impulsados por LangChain con uso de herramientas y memoria
* 💻 **Nodos de código** — ejecuta JavaScript o Python arbitrario en línea en los flujos de trabajo
* 🔄 **Variedad de desencadenadores** — webhooks, programaciones cron, sondeo de bases de datos, correo electrónico, eventos de cola
* 📊 **Subflujos de trabajo** — componentes de flujo de trabajo modulares y reutilizables
* 🔐 **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 imagen de Docker. Es **Solo CPU** — no se necesita GPU para el propio motor de automatización. Una GPU solo resulta útil si ejecutas un LLM local junto a él (por ejemplo, Ollama).

| Configuración                    | GPU           | VRAM  | RAM del sistema | Disco  | Precio de Clore.ai                        |
| -------------------------------- | ------------- | ----- | --------------- | ------ | ----------------------------------------- |
| **Mínima** (solo n8n)            | Ninguna / CPU | —     | 2 GB            | 10 GB  | \~$0.03/h (CPU)                           |
| **Estándar**                     | Ninguna / CPU | —     | 4 GB            | 20 GB  | \~$0,05/h                                 |
| **+ LLM local (Ollama)**         | RTX 3090      | 24 GB | 16 GB           | 60 GB  | $0.07–0.21/h                              |
| **+ LLM de alto rendimiento**    | A100 40 GB    | 40 GB | 32 GB           | 100 GB | [bare metal](https://clore.ai/bare-metal) |
| **Kit de inicio de IA completo** | RTX 4090      | 24 GB | 32 GB           | 100 GB | $0.14–0.42/h                              |

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

***

## Inicio rápido

### 1. Alquila un servidor de Clore.ai

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

* **Instancia solo CPU** si solo necesitas automatización con n8n
* **RTX 3090/4090** si quieres LLM locales mediante Ollama
* Exponer puerto **5678** en la configuración de asignación de puertos de la oferta
* Habilita el acceso SSH

### 2. Conéctate al servidor

```bash
ssh root@<clore-server-ip> -p <ssh-port>

# 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 marcha:

```bash
# Crea un volumen con nombre para la 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

# Ver registros
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 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   # ¡Cámbialo!
      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: your-32-char-encryption-key-here
      EXECUTIONS_MODE: regular
      N8N_BASIC_AUTH_ACTIVE: "true"
      N8N_BASIC_AUTH_USER: admin
      N8N_BASIC_AUTH_PASSWORD: changeme!
    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 autoalojado de n8n](https://github.com/n8n-io/self-hosted-ai-starter-kit) es la forma más rápida de obtener una pila local completa de automatización de IA. Incluye:

* **n8n** — automatización de flujos de trabajo
* **Ollama** — inferencia local de LLM (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

# Supervisa el arranque
docker compose logs -f

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

Servicios después del inicio:

| Servicio           | URL                          |
| ------------------ | ---------------------------- |
| Interfaz de n8n    | `http://<ip>:5678`           |
| API de Ollama      | `http://<ip>:11434`          |
| Interfaz de 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 ya 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 de escucha
N8N_PROTOCOL=http                 # http o https
WEBHOOK_URL=http://<ip>:5678/     # URL base pública del webhook (¡crítico!)

# ── Cifrado ───────────────────────────────────────────────────────────────
N8N_ENCRYPTION_KEY=<clave-de-32-caracteres>  # Cifra las credenciales almacenadas
# Genera: 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 ejecución ───────────────────────────────────────────────────────
EXECUTIONS_MODE=regular           # regular (único) o queue (basado en Redis)
EXECUTIONS_DATA_SAVE_ON_SUCCESS=all
EXECUTIONS_DATA_SAVE_ON_ERROR=all
EXECUTIONS_DATA_MAX_AGE=336       # Conserva los datos de ejecución durante 14 días

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

# ── Desactivar 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é ejecutándose 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. En **Modelo de chat**, selecciona Ollama y elige tu modelo (por ejemplo, `llama3:8b`)
4. Añade herramientas como **Solicitud HTTP**, **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 dejan de funcionar después de un redeploy:

```bash
# 1. Usa un dominio estático con Caddy + Let's Encrypt
# Archivo Caddyfile:
# 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-cloudflare-tunnel>
```

### Modo de cola para flujos de trabajo de alto volumen

```bash
# Añade Redis y ejecuta n8n en modo de cola para ejecución paralela
# Añádelo 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
```

### Refuerzo de seguridad

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

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

***

## Solución de problemas

### El contenedor de n8n se cierra inmediatamente

```bash
docker logs n8n

# Problemas comunes:
# 1. Falló la conexión a la base de datos — 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 de cambiar la 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 remitentes de tus webhooks
# Debe incluir la barra diagonal final
WEBHOOK_URL=http://<tu-ip-pública>:5678/

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

### El nodo Agente de IA no puede conectarse a Ollama

```bash
# Prueba desde dentro del contenedor de 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 hay espacio libre en el dispositivo"

```bash
# Comprueba el uso del disco
df -h
docker system df

# Purga datos antiguos de ejecución en la interfaz de n8n:
# Configuración → Ejecuciones → Eliminar ejecuciones antiguas

# O configura la purga automática:
EXECUTIONS_DATA_PRUNE=true
EXECUTIONS_DATA_MAX_AGE=72   # 72 horas
```

### Ejecución lenta del flujo de trabajo

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

# Habilita el modo de cola para ejecución paralela (consulta los consejos anteriores)
# 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 GitHub de n8n](https://github.com/n8n-io/n8n)
* [Kit de inicio de IA autoalojado de n8n](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/)
* [Ejecutar Ollama en Clore.ai](/guides/guides_v2-es/modelos-de-lenguaje/ollama.md)
* [Comparación 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
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
