AI-workflows bouwen in n8n met Ollama en Claude op een VPS

13 min leestijd·Matthieu·self-hostedlangchaindocker-composeai-workflowsclaudeollaman8n|

Verbind n8n met AI-modellen via twee paden: Ollama voor gratis lokale inferentie en de Claude API voor cloud-intelligentie. Bouw een contentclassificatie-workflow met beide op een zelf gehoste VPS.

n8n heeft native AI-nodes gebouwd op LangChain. Je kunt een lokaal model aansluiten via Ollama of een cloudmodel via de Claude API. Beide opties worden op dezelfde manier verbonden: als sub-nodes binnen de AI Agent-node van n8n. Deze tutorial richt beide paden in op een zelf gehoste VPS, bouwt een praktische contentclassificatie-workflow en laat zien hoe je tussen lokale en cloud-inferentie wisselt door één node te veranderen.

Als je n8n nog niet hebt geïnstalleerd, begin dan met onze handleiding over het installeren van n8n met Docker Compose op een VPS.

Wat heb je nodig voordat je AI toevoegt aan n8n?

Je hebt een werkende n8n-instantie nodig op een VPS met Docker Compose, een domein met TLS en SSH-toegang. Voor Ollama heb je minstens 8 GB RAM nodig op je VPS om kleine modellen (7-8 miljard parameters) te draaien. Voor Claude heb je een Anthropic API-sleutel nodig. Er is geen GPU vereist voor Ollama op CPU, maar de inferentie zal langzamer zijn.

Checklist vereisten:

  • Een VPS met minstens 8 GB RAM (4 vCPU aanbevolen). Een Virtua Cloud VCS-8 werkt goed.
  • n8n draaiend via Docker Compose (zie de n8n-installatiehandleiding)
  • SSH-toegang als niet-root gebruiker met sudo
  • Een domein dat naar je VPS wijst met TLS geconfigureerd (zie onze handleiding over reverse proxy en authenticatie)
  • Voor het Claude-pad: een account op de Anthropic Console met een API-sleutel

Hoe voeg je Ollama toe aan je n8n Docker Compose-stack?

Voeg Ollama toe als service in je bestaande Docker Compose-bestand, op hetzelfde netwerk als n8n. n8n bereikt Ollama via Dockers interne DNS met de servicenaam als hostname. Geen API-sleutel nodig. Ollama blijft alleen op het interne netwerk, nooit blootgesteld aan internet.

Open je bestaande docker-compose.yml en voeg de ollama-service toe:

services:
  # ... je bestaande n8n-service ...

  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:
  # ... je bestaande volumes ...
  ollama_data:

Belangrijke punten over deze configuratie:

  • Geen gepubliceerde poorten. Ollama luistert op poort 11434 binnen de container, maar we mappen die niet naar de host. Alleen containers op n8n-network kunnen het bereiken. Dit voorkomt dat iemand op internet je Ollama-instantie gebruikt.
  • OLLAMA_HOST=0.0.0.0 vertelt Ollama om op alle interfaces binnen de container te luisteren. Zonder dit bindt het alleen aan localhost en kan n8n het niet bereiken vanuit een andere container.
  • Geheugenlimieten voorkomen dat Ollama al het VPS-RAM verbruikt. Pas aan op basis van je modelgrootte.
  • De health check gebruikt ollama ps om de server te bevragen. Docker herstart de container als Ollama niet meer reageert. Het Ollama-image bevat geen curl, dus gebruiken we de ingebouwde CLI.

Als je VPS een NVIDIA GPU heeft en je het NVIDIA Container Toolkit hebt geïnstalleerd, voeg dan GPU-passthrough toe:

  ollama:
    # ... zelfde configuratie als hierboven, plus:
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]

Start de bijgewerkte stack:

docker compose up -d ollama

Controleer of Ollama draait:

docker compose logs ollama --tail 20

De output toont Listening on [::]:11434 moeten zien. Download nu een model:

docker compose exec ollama ollama pull llama3.2:3b

Dit downloadt het Llama 3.2-model met 3 miljard parameters (ongeveer 2 GB). Voor een VPS met 8 GB is dit het veiligste startpunt. Zie de modelgrootte-tabel hieronder voor andere opties.

Controleer of het model geladen is:

docker compose exec ollama ollama list

Test de inferentie direct:

docker compose exec ollama ollama run llama3.2:3b "Say hello in one sentence"

De output toont binnen een paar seconden een antwoord moeten krijgen. Als dit werkt, is Ollama klaar voor n8n.

Welk Ollama-model moet je kiezen voor je VPS?

Het juiste model hangt af van je beschikbare RAM. Vuistregel: 1 miljard parameters vereist ongeveer 1 GB RAM bij Q4-kwantisatie. Op een VPS zonder GPU draait het model op CPU, wat langzamer is maar functioneel voor batch- en achtergrondworkflows.

Model Parameters Schijfgrootte RAM nodig Geschikt voor
llama3.2:3b 3B ~2 GB 4 GB Lichte taken, beperkt RAM
llama3.1:8b 8B ~4,9 GB 8 GB Algemeen gebruik, 128K context
mistral:7b 7B ~4,4 GB 7 GB Snelle inferentie, Europees model
qwen2.5:7b 7B ~4,7 GB 8 GB Meertalig, coderingstaken
gemma3:4b 4B ~3,3 GB 5 GB Multimodaal, goede kwaliteit/grootte-verhouding

Op een VPS met 4 vCPU en 8 GB RAM (zoals de Virtua Cloud VCS-8) draait llama3.2:3b met ruimte over voor n8n en het besturingssysteem. De 7-8B-modellen passen maar laten minder ruimte over. Overweeg voor die modellen een VPS met 16 GB.

Download je gekozen model voordat je verdergaat. Alle volgende stappen werken met elk model uit de tabel.

Hoe verbind je n8n met de Claude API?

Maak een Anthropic-credential aan in n8n met je API-sleutel. Gebruik vervolgens de Anthropic Chat Model sub-node binnen elke AI Agent-workflow. n8n handelt de API-aanroepen native af. Geen HTTP Request-node nodig.

Een API-sleutel genereren

  1. Ga naar Anthropic Console > Settings > API Keys
  2. Klik op Create Key
  3. Geef het een herkenbare naam zoals n8n-vps
  4. Kopieer de sleutel onmiddellijk. Je ziet hem niet meer terug.

Bewaar de sleutel veilig. Plak hem niet in bestanden op schijf. Je voert hem rechtstreeks in de credential-manager van n8n in, die hem versleutelt.

De credential toevoegen in n8n

  1. Ga in n8n naar Credentials in de linkerzijbalk
  2. Klik op Add Credential
  3. Zoek naar Anthropic API
  4. Plak je API-sleutel
  5. Klik op Save

n8n test de verbinding bij het opslaan. De output toont "Connection tested successfully" moeten zien. Als het mislukt, controleer dan of je API-sleutel geldig is en of je VPS https://api.anthropic.com kan bereiken (uitgaande HTTPS mag niet geblokkeerd zijn door je firewall).

Hoe werkt het AI Agent-systeem van n8n?

De AI-mogelijkheden van n8n zijn gebouwd op LangChain. De architectuur gebruikt twee soorten nodes: root-nodes (ook wel cluster-nodes genoemd) die het gedrag van de agent definiëren, en sub-nodes die specifieke mogelijkheden bieden zoals het taalmodel, geheugen en tools. Het begrijpen van deze structuur helpt bij het bouwen en debuggen van workflows.

Root-nodes:

  • AI Agent: de hoofdorchestrator. Ontvangt input, stuurt het naar het taalmodel, kan tools gebruiken en geeft een antwoord terug. Dit is wat je het meest zult gebruiken.
  • Basic LLM Chain: eenvoudiger dan de Agent. Neemt input, stuurt naar LLM, geeft output terug. Geen toolgebruik, geen redeneerloop.

Sub-nodes (worden aan root-nodes gekoppeld):

  • Chat Model (Ollama Chat Model of Anthropic Chat Model): het LLM dat antwoorden genereert
  • Memory (Window Buffer Memory, enz.): slaat gespreksgeschiedenis op
  • Tools (HTTP Request, Code, Calculator, enz.): acties die de agent kan uitvoeren
  • Output Parser: structureert het LLM-antwoord in bruikbare data

Het belangrijke punt: wisselen tussen Ollama en Claude betekent één sub-node verwisselen. De rest van de workflow blijft identiek. Daarom werkt de architectuur van n8n goed voor het testen van zowel lokale als cloud-inferentie.

Hoe bouw je een AI-classificatieworkflow in n8n?

Deze workflow ontvangt content via een webhook, stuurt het naar een LLM voor classificatie en samenvatting, en routeert het resultaat op basis van urgentie. Het is een praktisch patroon voor e-mailtriage, support-ticketroutering of contentmoderatie. We bouwen het eerst met Ollama en wisselen dan naar Claude.

Stap 1: De webhook-trigger aanmaken

  1. Maak een nieuwe workflow aan in n8n
  2. Voeg een Webhook-node toe als trigger
  3. Stel de HTTP-methode in op POST
  4. Stel het pad in op iets als classify
  5. Selecteer onder Response "Respond to Webhook" (die node voegen we later toe)
  6. Sla op en noteer de test-webhook-URL

De webhook ontvangt JSON zoals dit:

{
  "title": "Server disk full alert",
  "body": "Production server db-01 has reached 95% disk usage. Immediate action required.",
  "source": "monitoring"
}

Stap 2: De AI Agent-node toevoegen met Ollama

  1. Voeg een AI Agent-node toe na de webhook
  2. Stel in de Agent-instellingen de systeemprompt in:
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.
  1. Koppel een Ollama Chat Model sub-node aan de Agent:

    • Klik op de Chat Model-connector op de AI Agent
    • Selecteer Ollama Chat Model
    • Klik in de credential-dropdown op Create New
    • Stel de Base URL in op http://ollama:11434 (de Docker-servicenaam)
    • Sla de credential op
    • Selecteer je model (bijv. llama3.2:3b)
  2. Verbind de webhook-output met de AI Agent-input. Map de berichttekst met een expressie:

Title: {{ $json.title }}
Body: {{ $json.body }}
Source: {{ $json.source }}

Stap 3: Het antwoord parsen en routeren

  1. Voeg een IF-node toe na de AI Agent
  2. Stel de voorwaarde in: controleer of het AI-antwoord "urgency": "high" bevat of parse de JSON en controleer het urgency-veld
  3. True-branch (hoge urgentie): voeg een notificatienode toe (Slack, e-mail of HTTP Request naar je alerting-endpoint)
  4. False-branch (lage urgentie): voeg een andere actie toe (loggen naar een spreadsheet, een samenvattingsmail sturen, enz.)
  5. Voeg een Respond to Webhook-node toe aan het einde van elke branch om het classificatieresultaat terug te geven

Stap 4: De workflow testen

Activeer de workflow voor testen. Stuur een testverzoek:

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"
  }'

Controleer de uitvoeringsgeschiedenis van n8n. De output toont moeten zien:

  1. De webhook heeft de payload ontvangen
  2. De AI Agent heeft het naar Ollama gestuurd
  3. Ollama heeft een JSON-classificatie teruggestuurd
  4. De IF-node heeft het naar de juiste branch gerouteerd

Let goed op de uitvoeringstijd op de AI Agent-node. Met Ollama op CPU (llama3.2:3b), reken op 3-8 seconden afhankelijk van je VPS-specificaties. Dit is prima voor achtergrondautomatisering maar te langzaam voor realtime gebruikersgerichte antwoorden.

Hoe gedraagt dezelfde workflow zich op Ollama vs Claude?

Wisselen van Ollama naar Claude duurt ongeveer 30 seconden. De workflowstructuur blijft identiek. Alleen de Chat Model sub-node verandert.

  1. Klik op de AI Agent-node
  2. Verwijder de Ollama Chat Model sub-node
  3. Voeg een Anthropic Chat Model sub-node toe
  4. Selecteer je Anthropic-credential
  5. Kies het model (bijv. claude-sonnet-4-6)
  6. Voer hetzelfde test-curl-commando uit

Vergelijking naast elkaar:

Aspect Ollama (llama3.2:3b, CPU) Claude (claude-sonnet-4-6)
Responstijd 3-8 seconden 0,5-1,5 seconden
JSON-opmaak Voegt af en toe tekst buiten JSON toe Volgt JSON-only instructie betrouwbaar
Classificatienauwkeurigheid Goed voor duidelijke gevallen Beter met ambigue of genuanceerde content
Kosten per verzoek Gratis Per token (zie Anthropic-prijzen)
Dataprivacy Content verlaat nooit je VPS Content wordt naar Anthropics API gestuurd

Het outputformaat is identiek. Je IF-node en routeringslogica hoeven niet aangepast te worden. Dit maakt het praktisch om Ollama te gebruiken voor ontwikkeling en testen, en dan over te schakelen naar Claude voor productie-workflows die snelheid of beter redeneren nodig hebben.

Wanneer moet je een lokaal LLM gebruiken vs een cloud-API?

Gebruik Ollama wanneer dataprivacy belangrijk is, je geen API-kosten wilt, of je batchtaken verwerkt waarbij latentie acceptabel is. Gebruik Claude wanneer je snelle antwoorden, sterk redeneren of realtime gebruikersgerichte workflows nodig hebt. Je kunt modellen wisselen in n8n door één sub-node te veranderen, dus het is geen definitieve beslissing.

Kies Ollama wanneer:

  • Gevoelige data je infrastructuur niet mag verlaten (medische dossiers, financiële data, interne documenten)
  • Je batchverwerking doet waarbij een paar seconden per verzoek prima is (nachtelijke e-mailsamenvattingen, loganalyse)
  • Je voorspelbare kosten wilt. Na de VPS-kosten is inferentie gratis, ongeacht het aantal verzoeken
  • Je snel prototypet en itereert zonder je zorgen te maken over API-rekeningen

Kies Claude wanneer:

  • Je antwoorden onder een seconde nodig hebt voor gebruikersgerichte functies (chatbots, realtime classificatie)
  • De taak sterk redeneren of genuanceerd begrip vereist (analyse van juridische documenten, complexe samenvattingen)
  • Je een laag volume maar hoogwaardige verzoeken verwerkt waarbij kwaliteit belangrijker is dan kosten
  • Je zeer lange contextvensters nodig hebt (Claude Sonnet ondersteunt tot 1M tokens)

Hybride aanpak: veel productie-setups gebruiken beide. Routeer eenvoudige taken met hoog volume naar Ollama. Routeer complexe taken met laag volume naar Claude. De IF-node van n8n kan de inkomende data inspecteren en het juiste pad kiezen.

Hoe voeg je RAG met Qdrant toe aan je n8n AI-workflow?

RAG (Retrieval-Augmented Generation) laat je AI-workflow in je eigen documenten zoeken voordat het een antwoord genereert. Voeg Qdrant als vectoropslag toe aan je Docker Compose-stack. n8n heeft native Qdrant-nodes die als tool verbinden met de AI Agent.

Voeg Qdrant toe aan je 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:

Genereer een sterke API-sleutel voor Qdrant:

openssl rand -base64 32

Voeg de sleutel toe aan je .env-bestand:

QDRANT_API_KEY=<your-generated-key>

Stel restrictieve rechten in op het .env-bestand:

chmod 600 .env

Start Qdrant:

docker compose up -d qdrant

In n8n kun je nu:

  1. Een Qdrant Vector Store-node toevoegen als tool voor de AI Agent
  2. Een Ollama Embeddings sub-node aanmaken (of een ander embedding-model gebruiken) om je documenten te vectoriseren
  3. Een ingestie-workflow bouwen die documenten in Qdrant laadt
  4. De AI Agent zoekt in Qdrant naar relevante context voordat het antwoord genereert

RAG is een uitgebreid onderwerp. Voor een complete handleiding, zie onze gids over het zelf hosten van AI-agenten op een VPS. De n8n self-hosted AI starter kit bundelt n8n, Ollama, Qdrant en PostgreSQL in één Docker Compose-bestand. Het is een goede referentie voor RAG-architectuur, hoewel het ontworpen is voor proof-of-concept in plaats van productie.

Wat zijn de resourcevereisten voor AI-workflows op een VPS?

Ollama draaien op een VPS vereist genoeg RAM voor het model plus het besturingssysteem en andere services. n8n zelf gebruikt ongeveer 300-500 MB. Docker-overhead voegt nog 200-300 MB toe. De rest gaat naar Ollama en je gekozen model. Het aantal CPU's beïnvloedt de inferentiesnelheid maar niet of het model laadt.

Tabel voor resourceplanning:

VPS-grootte Beschikbaar voor Ollama Beste model Workflowtype
4 GB RAM ~2,5 GB llama3.2:3b (krap) Alleen lichte classificatie
8 GB RAM ~5-6 GB llama3.2:3b of mistral:7b Algemene automatisering
16 GB RAM ~12-13 GB llama3.1:8b of qwen2.5:14b Complexe agenten, RAG
32 GB RAM ~28 GB Meerdere modellen geladen Productie multi-agent

Als je alleen het Claude API-pad gebruikt (zonder Ollama), is een VPS met 4 GB voldoende voor n8n. Het LLM draait op de infrastructuur van Anthropic.

Monitor het resourcegebruik na deployment:

docker stats --no-stream

Dit toont CPU- en geheugenverbruik per container. Houd de Ollama-container in de gaten tijdens inferentie. Het geheugengebruik piekt bij het verwerken van een verzoek en daalt daarna weer.

Controleer Ollama-logs op prestatieproblemen:

docker compose logs ollama --tail 50

Als je out-of-memory fouten ziet, schakel over naar een kleiner model of verhoog het RAM van je VPS.

Probleemoplossing

n8n kan geen verbinding maken met Ollama:

  • Controleer of beide containers op hetzelfde Docker-netwerk zitten: docker network inspect n8n-network
  • Controleer of de Ollama credential Base URL http://ollama:11434 is (niet localhost)
  • Controleer of Ollama draait: docker compose exec ollama ollama ps
  • Controleer of OLLAMA_HOST=0.0.0.0 is ingesteld in de Ollama-omgeving

Ollama is langzaam of reageert niet:

  • Controleer het geheugen: docker stats ollama
  • Probeer een kleiner model. De 3B-modellen zijn aanzienlijk sneller dan 8B op CPU.
  • Als inferentie langer dan 30 seconden duurt, is het model waarschijnlijk te groot voor je RAM. Ollama swapt naar schijf, wat de prestaties vernietigt.

De Claude API geeft fouten:

  • Controleer je API-sleutel in de n8n-credentials (voer hem opnieuw in indien nodig)
  • Controleer uitgaande HTTPS van je VPS: curl -I https://api.anthropic.com
  • Bekijk het n8n-uitvoeringslog voor de specifieke foutmelding. Veelvoorkomende problemen: verlopen sleutel, snelheidslimiet, onvoldoende tegoed.

De AI Agent geeft verwarde of niet-JSON output:

  • Verbeter de systeemprompt. Wees expliciet over het outputformaat.
  • Claude volgt opmaakinstructies betrouwbaarder dan kleine lokale modellen.
  • Voeg een Output Parser sub-node (Structured Output Parser) toe om een JSON-schema af te dwingen.
  • Met Ollama volgen grotere modellen (8B+) instructies beter dan 3B-modellen.

Waar zijn de 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 bewaart ook de uitvoeringsgeschiedenis in zijn webinterface onder Executions in de linkerzijbalk. Elke uitvoering toont de input/output van elke node, wat de snelste manier is om workflowproblemen te debuggen.


Copyright 2026 Virtua.Cloud. Alle rechten voorbehouden. Deze inhoud is een origineel werk van het Virtua.Cloud-team. Reproductie, herpublicatie of herdistributie zonder schriftelijke toestemming is verboden.

Klaar om het zelf te proberen?

Host n8n met AI-integraties op uw VPS.

Bekijk VPS-aanbod