Crear workflows de IA en n8n con Ollama y Claude en un VPS
Conecta n8n a modelos de IA por dos caminos: Ollama para inferencia local gratuita y la API de Claude para inteligencia en la nube. Construye un workflow de clasificación de contenido con ambos, ejecutándolo en un VPS autoalojado.
n8n tiene nodos de IA nativos basados en LangChain. Puedes conectar un modelo local a través de Ollama o un modelo en la nube a través de la API de Claude. Ambas opciones se conectan de la misma forma: como subnodos dentro del nodo AI Agent de n8n. Este tutorial configura ambos caminos en un VPS autoalojado, construye un workflow práctico de clasificación de contenido y te muestra cómo alternar entre inferencia local y en la nube cambiando un solo nodo.
Si todavía no has instalado n8n, empieza con nuestra guía sobre cómo instalar n8n con Docker Compose en un VPS.
¿Qué necesitas antes de añadir IA a n8n?
Necesitas una instancia de n8n funcionando en un VPS con Docker Compose, un dominio con TLS y acceso SSH. Para Ollama, necesitas al menos 8 GB de RAM en tu VPS para ejecutar modelos pequeños (7-8 mil millones de parámetros). Para Claude, necesitas una clave API de Anthropic. No se requiere GPU para Ollama en CPU, pero la inferencia será más lenta.
Lista de requisitos previos:
- Un VPS con al menos 8 GB de RAM (4 vCPU recomendados). Un Virtua Cloud VCS-8 funciona bien.
- n8n ejecutándose vía Docker Compose (consulta la guía de instalación de n8n)
- Acceso SSH como usuario no root con sudo
- Un dominio apuntando a tu VPS con TLS configurado (consulta nuestra guía de reverse proxy y autenticación)
- Para el camino Claude: una cuenta en la consola de Anthropic con una clave API
¿Cómo añadir Ollama a tu stack Docker Compose de n8n?
Añade Ollama como servicio en tu archivo Docker Compose existente, en la misma red que n8n. n8n se comunica con Ollama a través del DNS interno de Docker usando el nombre del servicio como hostname. No se necesita clave API. Ollama permanece únicamente en la red interna, nunca expuesto a internet.
Abre tu docker-compose.yml existente y añade el servicio ollama:
services:
# ... tu servicio n8n existente ...
ollama:
image: ollama/ollama:latest
container_name: ollama
restart: unless-stopped
volumes:
- ollama_data:/root/.ollama
networks:
- n8n-network
environment:
- OLLAMA_HOST=0.0.0.0
deploy:
resources:
limits:
memory: 6G
reservations:
memory: 4G
healthcheck:
test: ["CMD", "ollama", "ps"]
interval: 30s
timeout: 10s
retries: 3
volumes:
# ... tus volúmenes existentes ...
ollama_data:
Puntos importantes de esta configuración:
- Sin puertos publicados. Ollama escucha en el puerto 11434 dentro del contenedor, pero no lo mapeamos al host. Solo los contenedores en
n8n-networkpueden acceder a él. Esto impide que cualquiera en internet use tu instancia de Ollama. OLLAMA_HOST=0.0.0.0le indica a Ollama que escuche en todas las interfaces dentro del contenedor. Sin esto, se vincula solo a localhost y n8n no puede alcanzarlo desde otro contenedor.- Los límites de memoria evitan que Ollama consuma toda la RAM del VPS. Ajústalos según el tamaño de tu modelo.
- El health check usa
ollama pspara consultar el servidor. Docker reinicia el contenedor si Ollama deja de responder. La imagen de Ollama no incluyecurl, así que usamos la CLI integrada.
Si tu VPS tiene una GPU NVIDIA y has instalado el NVIDIA Container Toolkit, añade el passthrough de GPU:
ollama:
# ... misma configuración que arriba, más:
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
Inicia el stack actualizado:
docker compose up -d ollama
Verifica que Ollama esté funcionando:
docker compose logs ollama --tail 20
La salida muestra Listening on [::]:11434. Ahora descarga un modelo:
docker compose exec ollama ollama pull llama3.2:3b
Esto descarga el modelo Llama 3.2 de 3 mil millones de parámetros (unos 2 GB). Para un VPS de 8 GB, es el punto de partida más seguro. Consulta la tabla de dimensionamiento de modelos más abajo para otras opciones.
Verifica que el modelo se ha cargado:
docker compose exec ollama ollama list
Prueba la inferencia directamente:
docker compose exec ollama ollama run llama3.2:3b "Say hello in one sentence"
Deberías obtener una respuesta en pocos segundos. Si esto funciona, Ollama está listo para n8n.
¿Qué modelo de Ollama elegir para tu VPS?
El modelo adecuado depende de tu RAM disponible. Como regla general: mil millones de parámetros requieren aproximadamente 1 GB de RAM en cuantización Q4. En un VPS sin GPU, el modelo se ejecuta en CPU, lo que es más lento pero funcional para workflows por lotes y en segundo plano.
| Modelo | Parámetros | Tamaño en disco | RAM necesaria | Ideal para |
|---|---|---|---|---|
| llama3.2:3b | 3B | ~2 GB | 4 GB | Tareas ligeras, RAM limitada |
| llama3.1:8b | 8B | ~4,9 GB | 8 GB | Uso general, contexto 128K |
| mistral:7b | 7B | ~4,4 GB | 7 GB | Inferencia rápida, modelo europeo |
| qwen2.5:7b | 7B | ~4,7 GB | 8 GB | Multilingüe, tareas de código |
| gemma3:4b | 4B | ~3,3 GB | 5 GB | Multimodal, buena relación calidad/tamaño |
En un VPS con 4 vCPU y 8 GB de RAM (como el Virtua Cloud VCS-8), llama3.2:3b funciona con margen para n8n y el sistema operativo. Los modelos de 7-8B caben pero dejan menos margen. Para esos, considera un VPS de 16 GB.
Descarga el modelo que hayas elegido antes de continuar. Todos los pasos siguientes funcionan con cualquier modelo de la tabla.
¿Cómo conectar n8n a la API de Claude?
Crea una credencial de Anthropic en n8n con tu clave API. Luego usa el subnodo Anthropic Chat Model dentro de cualquier workflow de AI Agent. n8n maneja las llamadas API de forma nativa. No se necesita nodo HTTP Request.
Generar una clave API
- Ve a Anthropic Console > Settings > API Keys
- Haz clic en Create Key
- Ponle un nombre identificable como
n8n-vps - Copia la clave inmediatamente. No la volverás a ver.
Guarda la clave de forma segura. No la pegues en archivos en disco. La introducirás directamente en el gestor de credenciales de n8n, que la cifra.
Añadir la credencial en n8n
- En n8n, ve a Credentials en la barra lateral izquierda
- Haz clic en Add Credential
- Busca Anthropic API
- Pega tu clave API
- Haz clic en Save
n8n prueba la conexión al guardar. La salida muestra "Connection tested successfully". Si falla, verifica que tu clave API sea válida y que tu VPS pueda alcanzar https://api.anthropic.com (el HTTPS saliente no debe estar bloqueado por tu firewall).
¿Cómo funciona el sistema AI Agent de n8n?
Las capacidades de IA de n8n están construidas sobre LangChain. La arquitectura usa dos tipos de nodos: nodos raíz (también llamados nodos cluster) que definen el comportamiento del agente, y subnodos que proporcionan capacidades específicas como el modelo de lenguaje, la memoria y las herramientas. Entender esta estructura te ayuda a construir y depurar workflows.
Nodos raíz:
- AI Agent: el orquestador principal. Recibe entrada, la envía al modelo de lenguaje, puede usar herramientas y devuelve una respuesta. Es el que más usarás.
- Basic LLM Chain: más simple que el Agent. Toma entrada, la envía al LLM, devuelve la salida. Sin uso de herramientas, sin bucle de razonamiento.
Subnodos (se adjuntan a los nodos raíz):
- Chat Model (Ollama Chat Model o Anthropic Chat Model): el LLM que genera respuestas
- Memory (Window Buffer Memory, etc.): almacena el historial de conversación
- Tools (HTTP Request, Code, Calculator, etc.): acciones que el agente puede realizar
- Output Parser: estructura la respuesta del LLM en datos utilizables
El punto importante: cambiar entre Ollama y Claude significa intercambiar un subnodo. El resto del workflow permanece idéntico. Por eso la arquitectura de n8n funciona bien para probar tanto inferencia local como en la nube.
¿Cómo construir un workflow de clasificación con IA en n8n?
Este workflow recibe contenido vía webhook, lo envía a un LLM para clasificación y resumen, y luego enruta el resultado según la urgencia. Es un patrón práctico para triaje de emails, enrutamiento de tickets de soporte o moderación de contenido. Lo construimos primero con Ollama y luego cambiamos a Claude.
Paso 1: Crear el trigger de webhook
- Crea un nuevo workflow en n8n
- Añade un nodo Webhook como trigger
- Establece el método HTTP en
POST - Establece la ruta en algo como
classify - En Response, selecciona "Respond to Webhook" (añadiremos ese nodo después)
- Guarda y anota la URL del webhook de prueba
El webhook recibirá JSON como este:
{
"title": "Server disk full alert",
"body": "Production server db-01 has reached 95% disk usage. Immediate action required.",
"source": "monitoring"
}
Paso 2: Añadir el nodo AI Agent con Ollama
- Añade un nodo AI Agent después del webhook
- En la configuración del Agent, establece el prompt del sistema:
You are a content classifier. For each incoming message, respond with valid JSON only:
{
"urgency": "high" or "low",
"category": "infrastructure" or "security" or "billing" or "general",
"summary": "one sentence summary"
}
Do not include any text outside the JSON object.
-
Conecta un subnodo Ollama Chat Model al Agent:
- Haz clic en el conector Chat Model del nodo AI Agent
- Selecciona Ollama Chat Model
- En el desplegable de credenciales, haz clic en Create New
- Establece la Base URL en
http://ollama:11434(el nombre del servicio Docker) - Guarda la credencial
- Selecciona tu modelo (por ejemplo,
llama3.2:3b)
-
Conecta la salida del webhook a la entrada del AI Agent. Mapea el texto del mensaje usando una expresión:
Title: {{ $json.title }}
Body: {{ $json.body }}
Source: {{ $json.source }}
Paso 3: Parsear y enrutar la respuesta
- Añade un nodo IF después del AI Agent
- Establece la condición: verifica si la respuesta de IA contiene
"urgency": "high"o parsea el JSON y comprueba el campourgency - Rama verdadera (urgencia alta): añade un nodo de notificación (Slack, email o HTTP Request a tu endpoint de alertas)
- Rama falsa (urgencia baja): añade otra acción (registrar en una hoja de cálculo, enviar un email de resumen, etc.)
- Añade un nodo Respond to Webhook al final de cada rama para devolver el resultado de la clasificación
Paso 4: Probar el workflow
Activa el workflow para pruebas. Envía una petición de prueba:
curl -X POST https://your-n8n-domain.com/webhook-test/classify \
-H "Content-Type: application/json" \
-d '{
"title": "Server disk full alert",
"body": "Production server db-01 reached 95% disk usage. Immediate action required.",
"source": "monitoring"
}'
Revisa el historial de ejecución de n8n. Deberías ver:
- El webhook recibió el payload
- El AI Agent lo envió a Ollama
- Ollama devolvió una clasificación en JSON
- El nodo IF lo enrutó a la rama correcta
Fíjate bien en el tiempo de ejecución del nodo AI Agent. Con Ollama en CPU (llama3.2:3b), espera 3-8 segundos según las especificaciones de tu VPS. Esto es suficiente para automatización en segundo plano, pero demasiado lento para respuestas en tiempo real al usuario.
¿Cómo se comporta el mismo workflow con Ollama vs Claude?
Cambiar de Ollama a Claude lleva unos 30 segundos. La estructura del workflow permanece idéntica. Solo cambia el subnodo Chat Model.
- Haz clic en el nodo AI Agent
- Elimina el subnodo Ollama Chat Model
- Añade un subnodo Anthropic Chat Model en su lugar
- Selecciona tu credencial de Anthropic
- Elige el modelo (por ejemplo,
claude-sonnet-4-6) - Ejecuta el mismo comando curl de prueba
Comparación lado a lado:
| Aspecto | Ollama (llama3.2:3b, CPU) | Claude (claude-sonnet-4-6) |
|---|---|---|
| Tiempo de respuesta | 3-8 segundos | 0,5-1,5 segundos |
| Formato JSON | Ocasionalmente añade texto fuera del JSON | Sigue la instrucción JSON-only de forma fiable |
| Precisión de clasificación | Buena para casos claros | Mejor con contenido ambiguo o matizado |
| Coste por petición | Gratis | Por token (ver precios de Anthropic) |
| Privacidad de datos | El contenido nunca sale de tu VPS | El contenido se envía a la API de Anthropic |
El formato de salida es idéntico. Tu nodo IF y la lógica de enrutamiento no necesitan cambios. Esto hace práctico usar Ollama para desarrollo y pruebas, y luego cambiar a Claude para workflows de producción que necesiten velocidad o mejor razonamiento.
¿Cuándo usar un LLM local en vez de una API en la nube?
Usa Ollama cuando la privacidad de datos importa, quieres cero costes de API, o procesas trabajos por lotes donde la latencia es aceptable. Usa Claude cuando necesitas respuestas rápidas, razonamiento fuerte, o gestionas workflows en tiempo real de cara al usuario. Puedes cambiar de modelo en n8n modificando un subnodo, así que no es una decisión permanente.
Elige Ollama cuando:
- Datos sensibles no pueden salir de tu infraestructura (historiales médicos, datos financieros, documentos internos)
- Procesas lotes donde unos segundos por petición están bien (resúmenes nocturnos de email, análisis de logs)
- Quieres costes predecibles. Después del coste del VPS, la inferencia es gratis sin importar cuántas peticiones
- Estás prototipando e iterando rápidamente sin preocuparte por facturas de API
Elige Claude cuando:
- Necesitas respuestas en menos de un segundo para funcionalidades de cara al usuario (chatbots, clasificación en tiempo real)
- La tarea requiere razonamiento fuerte o comprensión matizada (análisis de documentos legales, resumen complejo)
- Procesas bajo volumen pero peticiones de alto valor donde la calidad importa más que el coste
- Necesitas ventanas de contexto muy largas (Claude Sonnet soporta hasta 1M de tokens)
Enfoque híbrido: muchas configuraciones en producción usan ambos. Enruta las tareas simples y de alto volumen a Ollama. Enruta las tareas complejas y de bajo volumen a Claude. El nodo IF de n8n puede inspeccionar los datos entrantes y elegir el camino correcto.
¿Cómo añadir RAG con Qdrant a tu workflow de IA en n8n?
RAG (Retrieval-Augmented Generation, o generación aumentada por recuperación) permite que tu workflow de IA busque en tus propios documentos antes de generar una respuesta. Añade Qdrant como almacén de vectores a tu stack Docker Compose. n8n tiene nodos nativos de Qdrant que se conectan al AI Agent como herramienta.
Añade Qdrant a tu docker-compose.yml:
qdrant:
image: qdrant/qdrant:latest
container_name: qdrant
restart: unless-stopped
volumes:
- qdrant_data:/qdrant/storage
networks:
- n8n-network
environment:
- QDRANT__SERVICE__API_KEY=${QDRANT_API_KEY}
volumes:
qdrant_data:
Genera una clave API fuerte para Qdrant:
openssl rand -base64 32
Añade la clave a tu archivo .env:
QDRANT_API_KEY=<your-generated-key>
Establece permisos restrictivos en el archivo .env:
chmod 600 .env
Inicia Qdrant:
docker compose up -d qdrant
En n8n, ahora puedes:
- Añadir un nodo Qdrant Vector Store como herramienta para el AI Agent
- Crear un subnodo Ollama Embeddings (u otro modelo de embeddings) para vectorizar tus documentos
- Construir un workflow de ingesta que cargue documentos en Qdrant
- El AI Agent buscará contexto relevante en Qdrant antes de generar su respuesta
RAG es un tema extenso. Para un recorrido completo, consulta nuestra guía sobre autoalojar agentes de IA en un VPS. El kit de inicio de IA autoalojada de n8n agrupa n8n, Ollama, Qdrant y PostgreSQL en un solo archivo Docker Compose. Es una buena referencia para la arquitectura RAG, aunque está diseñado para prueba de concepto más que para producción.
¿Cuáles son los requisitos de recursos para workflows de IA en un VPS?
Ejecutar Ollama en un VPS requiere suficiente RAM para el modelo más el sistema operativo y otros servicios. n8n por sí solo usa unos 300-500 MB. La sobrecarga de Docker añade otros 200-300 MB. El resto va para Ollama y el modelo elegido. El número de CPU afecta a la velocidad de inferencia pero no a si el modelo se carga o no.
Tabla de planificación de recursos:
| Tamaño del VPS | Disponible para Ollama | Mejor modelo | Tipo de workflow |
|---|---|---|---|
| 4 GB de RAM | ~2,5 GB | llama3.2:3b (justo) | Solo clasificación ligera |
| 8 GB de RAM | ~5-6 GB | llama3.2:3b o mistral:7b | Automatización general |
| 16 GB de RAM | ~12-13 GB | llama3.1:8b o qwen2.5:14b | Agentes complejos, RAG |
| 32 GB de RAM | ~28 GB | Múltiples modelos cargados | Multi-agente en producción |
Si solo usas el camino de la API de Claude (sin Ollama), un VPS de 4 GB es suficiente para n8n. El LLM se ejecuta en la infraestructura de Anthropic.
Monitoriza el uso de recursos después del despliegue:
docker stats --no-stream
Esto muestra el consumo de CPU y memoria por contenedor. Vigila el contenedor de Ollama durante la inferencia. El uso de memoria sube al procesar una petición y baja después.
Revisa los logs de Ollama para problemas de rendimiento:
docker compose logs ollama --tail 50
Si ves errores de memoria insuficiente, cambia a un modelo más pequeño o aumenta la RAM de tu VPS.
Solución de problemas
n8n no puede conectarse a Ollama:
- Verifica que ambos contenedores están en la misma red Docker:
docker network inspect n8n-network - Comprueba que la Base URL de la credencial de Ollama es
http://ollama:11434(nolocalhost) - Comprueba que Ollama está ejecutándose:
docker compose exec ollama ollama ps - Comprueba que
OLLAMA_HOST=0.0.0.0está definido en el entorno de Ollama
Ollama está lento o no responde:
- Revisa la memoria:
docker stats ollama - Prueba un modelo más pequeño. Los modelos 3B son significativamente más rápidos que los 8B en CPU.
- Si la inferencia tarda más de 30 segundos, el modelo probablemente es demasiado grande para tu RAM. Ollama intercambia a disco, lo que destruye el rendimiento.
La API de Claude devuelve errores:
- Verifica tu clave API en las credenciales de n8n (introdúcela de nuevo si es necesario)
- Comprueba el HTTPS saliente desde tu VPS:
curl -I https://api.anthropic.com - Mira el log de ejecución de n8n para ver el mensaje de error específico. Problemas comunes: clave expirada, límite de tasa, créditos insuficientes.
El AI Agent devuelve una salida ilegible o no-JSON:
- Mejora el prompt del sistema. Sé explícito con el formato de salida.
- Claude sigue las instrucciones de formato de forma más fiable que los modelos locales pequeños.
- Añade un subnodo Output Parser (Structured Output Parser) para forzar un esquema JSON.
- Con Ollama, los modelos más grandes (8B+) siguen mejor las instrucciones que los modelos 3B.
¿Dónde están los logs?
# n8n logs
docker compose logs n8n --tail 100
# Ollama logs
docker compose logs ollama --tail 100
# All services
docker compose logs --tail 50
n8n también guarda el historial de ejecución en su interfaz web en Executions en la barra lateral izquierda. Cada ejecución muestra la entrada/salida de cada nodo, que es la forma más rápida de depurar problemas de workflow.
Copyright 2026 Virtua.Cloud. Todos los derechos reservados. Este contenido es una obra original del equipo de Virtua.Cloud. La reproducción, republicación o redistribución sin permiso escrito está prohibida.