Creare workflow IA in n8n con Ollama e Claude su un VPS

14 min di lettura·Matthieu·self-hostedlangchaindocker-composeai-workflowsclaudeollaman8n|

Collega n8n ai modelli IA tramite due percorsi: Ollama per l'inferenza locale gratuita e l'API Claude per l'intelligenza cloud. Costruisci un workflow di classificazione dei contenuti con entrambi, su un VPS self-hosted.

n8n ha nodi IA nativi basati su LangChain. Puoi collegare un modello locale tramite Ollama o un modello cloud tramite l'API Claude. Entrambe le opzioni si connettono allo stesso modo: come sotto-nodi all'interno del nodo AI Agent di n8n. Questo tutorial configura entrambi i percorsi su un VPS self-hosted, costruisce un workflow pratico di classificazione dei contenuti e mostra come passare dall'inferenza locale a quella cloud cambiando un solo nodo.

Se non hai ancora installato n8n, inizia con la nostra guida sull'installazione di n8n con Docker Compose su un VPS.

Di cosa hai bisogno prima di aggiungere l'IA a n8n?

Serve un'istanza n8n funzionante su un VPS con Docker Compose, un dominio con TLS e accesso SSH. Per Ollama, servono almeno 8 GB di RAM sul VPS per eseguire modelli piccoli (7-8 miliardi di parametri). Per Claude, serve una chiave API Anthropic. Non è necessaria una GPU per Ollama su CPU, ma l'inferenza sarà più lenta.

Checklist dei prerequisiti:

  • Un VPS con almeno 8 GB di RAM (4 vCPU consigliati). Un Virtua Cloud VCS-8 va benissimo.
  • n8n in esecuzione via Docker Compose (vedi la guida all'installazione di n8n)
  • Accesso SSH come utente non root con sudo
  • Un dominio che punta al tuo VPS con TLS configurato (vedi la nostra guida su reverse proxy e autenticazione)
  • Per il percorso Claude: un account sulla console Anthropic con una chiave API

Come aggiungere Ollama al tuo stack Docker Compose di n8n?

Aggiungi Ollama come servizio nel tuo file Docker Compose esistente, sulla stessa rete di n8n. n8n raggiunge Ollama tramite il DNS interno di Docker usando il nome del servizio come hostname. Non serve una chiave API. Ollama resta solo sulla rete interna, mai esposto a internet.

Apri il tuo docker-compose.yml esistente e aggiungi il servizio ollama:

services:
  # ... il tuo servizio n8n esistente ...

  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:
  # ... i tuoi volumi esistenti ...
  ollama_data:

Punti importanti di questa configurazione:

  • Nessuna porta pubblicata. Ollama ascolta sulla porta 11434 all'interno del container, ma non la mappiamo sull'host. Solo i container su n8n-network possono raggiungerlo. Questo impedisce a chiunque su internet di usare la tua istanza Ollama.
  • OLLAMA_HOST=0.0.0.0 dice a Ollama di ascoltare su tutte le interfacce all'interno del container. Senza questo, si lega solo a localhost e n8n non può raggiungerlo da un altro container.
  • I limiti di memoria impediscono a Ollama di consumare tutta la RAM del VPS. Regola i valori in base alla dimensione del modello.
  • L'health check usa ollama ps per interrogare il server. Docker riavvia il container se Ollama smette di rispondere. L'immagine Ollama non include curl, quindi usiamo la CLI integrata.

Se il tuo VPS ha una GPU NVIDIA e hai installato il NVIDIA Container Toolkit, aggiungi il passthrough GPU:

  ollama:
    # ... stessa configurazione di sopra, più:
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]

Avvia lo stack aggiornato:

docker compose up -d ollama

Verifica che Ollama sia in esecuzione:

docker compose logs ollama --tail 20

L'output mostra Listening on [::]:11434. Ora scarica un modello:

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

Questo scarica il modello Llama 3.2 da 3 miliardi di parametri (circa 2 GB). Per un VPS da 8 GB, è il punto di partenza più sicuro. Consulta la tabella di dimensionamento dei modelli qui sotto per altre opzioni.

Verifica che il modello sia caricato:

docker compose exec ollama ollama list

Testa l'inferenza direttamente:

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

Dovresti ottenere una risposta in pochi secondi. Se funziona, Ollama è pronto per n8n.

Quale modello Ollama scegliere per il tuo VPS?

Il modello giusto dipende dalla RAM disponibile. Regola pratica: 1 miliardo di parametri richiede circa 1 GB di RAM con quantizzazione Q4. Su un VPS senza GPU, il modello gira su CPU: più lento ma funzionale per workflow batch e in background.

Modello Parametri Dimensione disco RAM necessaria Ideale per
llama3.2:3b 3B ~2 GB 4 GB Task leggeri, RAM limitata
llama3.1:8b 8B ~4,9 GB 8 GB Uso generale, contesto 128K
mistral:7b 7B ~4,4 GB 7 GB Inferenza veloce, modello europeo
qwen2.5:7b 7B ~4,7 GB 8 GB Multilingue, task di codice
gemma3:4b 4B ~3,3 GB 5 GB Multimodale, buon rapporto qualità/dimensione

Su un VPS con 4 vCPU e 8 GB di RAM (come il Virtua Cloud VCS-8), llama3.2:3b gira con margine per n8n e il sistema operativo. I modelli 7-8B ci stanno ma lasciano meno margine. Per quelli, considera un VPS da 16 GB.

Scarica il modello scelto prima di continuare. Tutti i passaggi seguenti funzionano con qualsiasi modello della tabella.

Come collegare n8n all'API Claude?

Crea una credenziale Anthropic in n8n con la tua chiave API. Poi usa il sotto-nodo Anthropic Chat Model all'interno di qualsiasi workflow AI Agent. n8n gestisce le chiamate API nativamente. Non serve un nodo HTTP Request.

Generare una chiave API

  1. Vai su Anthropic Console > Settings > API Keys
  2. Clicca su Create Key
  3. Dagli un nome riconoscibile come n8n-vps
  4. Copia la chiave immediatamente. Non la vedrai più.

Conserva la chiave in sicurezza. Non incollarla in file su disco. La inserirai direttamente nel gestore credenziali di n8n, che la cifra.

Aggiungere la credenziale in n8n

  1. In n8n, vai su Credentials nella barra laterale sinistra
  2. Clicca su Add Credential
  3. Cerca Anthropic API
  4. Incolla la tua chiave API
  5. Clicca su Save

n8n testa la connessione al salvataggio. L'output mostra "Connection tested successfully". Se fallisce, verifica che la chiave API sia valida e che il tuo VPS possa raggiungere https://api.anthropic.com (l'HTTPS in uscita non deve essere bloccato dal firewall).

Come funziona il sistema AI Agent di n8n?

Le capacità IA di n8n sono costruite su LangChain. L'architettura usa due tipi di nodi: nodi radice (chiamati anche nodi cluster) che definiscono il comportamento dell'agente, e sotto-nodi che forniscono capacità specifiche come il modello linguistico, la memoria e gli strumenti. Capire questa struttura aiuta a costruire e fare il debug dei workflow.

Nodi radice:

  • AI Agent: l'orchestratore principale. Riceve l'input, lo invia al modello linguistico, può usare strumenti e restituisce una risposta. È quello che userai di più.
  • Basic LLM Chain: più semplice dell'Agent. Prende l'input, lo invia al LLM, restituisce l'output. Nessun uso di strumenti, nessun ciclo di ragionamento.

Sotto-nodi (si collegano ai nodi radice):

  • Chat Model (Ollama Chat Model o Anthropic Chat Model): il LLM che genera le risposte
  • Memory (Window Buffer Memory, ecc.): memorizza la cronologia della conversazione
  • Tools (HTTP Request, Code, Calculator, ecc.): azioni che l'agente può eseguire
  • Output Parser: struttura la risposta del LLM in dati utilizzabili

Il punto importante: passare da Ollama a Claude significa sostituire un sotto-nodo. Il resto del workflow rimane identico. Per questo l'architettura di n8n funziona bene per testare sia l'inferenza locale che cloud.

Come costruire un workflow di classificazione IA in n8n?

Questo workflow riceve contenuto via webhook, lo invia a un LLM per classificazione e riassunto, poi instrada il risultato in base all'urgenza. È un pattern pratico per il triage delle email, l'instradamento dei ticket di supporto o la moderazione dei contenuti. Lo costruiamo prima con Ollama, poi passiamo a Claude.

Passo 1: Creare il trigger webhook

  1. Crea un nuovo workflow in n8n
  2. Aggiungi un nodo Webhook come trigger
  3. Imposta il metodo HTTP su POST
  4. Imposta il percorso su qualcosa come classify
  5. Sotto Response, seleziona "Respond to Webhook" (aggiungeremo quel nodo dopo)
  6. Salva e annota l'URL del webhook di test

Il webhook riceverà JSON come questo:

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

Passo 2: Aggiungere il nodo AI Agent con Ollama

  1. Aggiungi un nodo AI Agent dopo il webhook
  2. Nelle impostazioni dell'Agent, configura il prompt di 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.
  1. Collega un sotto-nodo Ollama Chat Model all'Agent:

    • Clicca sul connettore Chat Model del nodo AI Agent
    • Seleziona Ollama Chat Model
    • Nel menu a tendina delle credenziali, clicca su Create New
    • Imposta la Base URL su http://ollama:11434 (il nome del servizio Docker)
    • Salva la credenziale
    • Seleziona il tuo modello (es. llama3.2:3b)
  2. Collega l'output del webhook all'input dell'AI Agent. Mappa il testo del messaggio con un'espressione:

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

Passo 3: Analizzare e instradare la risposta

  1. Aggiungi un nodo IF dopo l'AI Agent
  2. Imposta la condizione: verifica se la risposta IA contiene "urgency": "high" o fai il parsing del JSON e controlla il campo urgency
  3. Ramo true (urgenza alta): aggiungi un nodo di notifica (Slack, email o HTTP Request al tuo endpoint di alerting)
  4. Ramo false (urgenza bassa): aggiungi un'altra azione (registrare in un foglio di calcolo, inviare un'email di riepilogo, ecc.)
  5. Aggiungi un nodo Respond to Webhook alla fine di ogni ramo per restituire il risultato della classificazione

Passo 4: Testare il workflow

Attiva il workflow per il test. Invia una richiesta di prova:

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

Controlla la cronologia delle esecuzioni di n8n. Dovresti vedere:

  1. Il webhook ha ricevuto il payload
  2. L'AI Agent lo ha inviato a Ollama
  3. Ollama ha restituito una classificazione JSON
  4. Il nodo IF lo ha instradato al ramo corretto

Osserva attentamente il tempo di esecuzione sul nodo AI Agent. Con Ollama su CPU (llama3.2:3b), aspettati 3-8 secondi a seconda delle specifiche del VPS. Sufficiente per automazione in background, ma troppo lento per risposte in tempo reale rivolte all'utente.

Come si comporta lo stesso workflow su Ollama vs Claude?

Passare da Ollama a Claude richiede circa 30 secondi. La struttura del workflow resta identica. Cambia solo il sotto-nodo Chat Model.

  1. Clicca sul nodo AI Agent
  2. Elimina il sotto-nodo Ollama Chat Model
  3. Aggiungi un sotto-nodo Anthropic Chat Model al suo posto
  4. Seleziona la tua credenziale Anthropic
  5. Scegli il modello (es. claude-sonnet-4-6)
  6. Esegui lo stesso comando curl di test

Confronto affiancato:

Aspetto Ollama (llama3.2:3b, CPU) Claude (claude-sonnet-4-6)
Tempo di risposta 3-8 secondi 0,5-1,5 secondi
Formattazione JSON Occasionalmente aggiunge testo fuori dal JSON Segue l'istruzione JSON-only in modo affidabile
Precisione classificazione Buona per casi chiari Migliore con contenuti ambigui o sfumati
Costo per richiesta Gratuito Per token (vedi prezzi Anthropic)
Privacy dei dati I contenuti non lasciano mai il tuo VPS I contenuti vengono inviati all'API di Anthropic

Il formato di output è identico. Il tuo nodo IF e la logica di instradamento non hanno bisogno di modifiche. Questo rende pratico usare Ollama per sviluppo e test, poi passare a Claude per workflow di produzione che necessitano velocità o ragionamento migliore.

Quando usare un LLM locale invece di un'API cloud?

Usa Ollama quando la privacy dei dati conta, vuoi zero costi API, o elabori job batch dove la latenza è accettabile. Usa Claude quando hai bisogno di risposte rapide, ragionamento forte, o gestisci workflow in tempo reale rivolti all'utente. Puoi cambiare modello in n8n modificando un sotto-nodo, quindi non è una decisione definitiva.

Scegli Ollama quando:

  • Dati sensibili non possono lasciare la tua infrastruttura (cartelle cliniche, dati finanziari, documenti interni)
  • Fai elaborazione batch dove qualche secondo per richiesta va bene (digest email notturni, analisi log)
  • Vuoi costi prevedibili. Dopo il costo del VPS, l'inferenza è gratuita indipendentemente dal numero di richieste
  • Stai prototipando e iterando velocemente senza preoccuparti delle fatture API

Scegli Claude quando:

  • Hai bisogno di risposte sotto il secondo per funzionalità rivolte all'utente (chatbot, classificazione in tempo reale)
  • Il task richiede ragionamento forte o comprensione sfumata (analisi documenti legali, riassunti complessi)
  • Elabori un basso volume di richieste ad alto valore dove la qualità conta più del costo
  • Hai bisogno di finestre di contesto molto lunghe (Claude Sonnet supporta fino a 1M di token)

Approccio ibrido: molte configurazioni di produzione usano entrambi. Instrada i task semplici e ad alto volume su Ollama. Instrada i task complessi e a basso volume su Claude. Il nodo IF di n8n può ispezionare i dati in ingresso e scegliere il percorso giusto.

Come aggiungere RAG con Qdrant al tuo workflow IA in n8n?

RAG (Retrieval-Augmented Generation) permette al tuo workflow IA di cercare nei tuoi documenti prima di generare una risposta. Aggiungi Qdrant come archivio vettoriale al tuo stack Docker Compose. n8n ha nodi Qdrant nativi che si collegano all'AI Agent come strumento.

Aggiungi Qdrant al tuo 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 chiave API forte per Qdrant:

openssl rand -base64 32

Aggiungi la chiave al tuo file .env:

QDRANT_API_KEY=<your-generated-key>

Imposta permessi restrittivi sul file .env:

chmod 600 .env

Avvia Qdrant:

docker compose up -d qdrant

In n8n, ora puoi:

  1. Aggiungere un nodo Qdrant Vector Store come strumento per l'AI Agent
  2. Creare un sotto-nodo Ollama Embeddings (o usare un altro modello di embedding) per vettorializzare i tuoi documenti
  3. Costruire un workflow di ingestione che carica i documenti in Qdrant
  4. L'AI Agent cercherà in Qdrant il contesto rilevante prima di generare la risposta

RAG è un argomento vasto. Per una guida completa, consulta la nostra guida sul self-hosting di agenti IA su un VPS. Il kit di avvio IA self-hosted di n8n include n8n, Ollama, Qdrant e PostgreSQL in un singolo file Docker Compose. È un buon riferimento per l'architettura RAG, anche se è progettato per proof-of-concept piuttosto che per la produzione.

Quali sono i requisiti di risorse per workflow IA su un VPS?

Eseguire Ollama su un VPS richiede abbastanza RAM per il modello più il sistema operativo e gli altri servizi. n8n usa circa 300-500 MB. L'overhead di Docker aggiunge altri 200-300 MB. Il resto va a Ollama e al modello scelto. Il numero di CPU influenza la velocità di inferenza ma non se il modello si carica.

Tabella di pianificazione risorse:

Dimensione VPS Disponibile per Ollama Miglior modello Tipo di workflow
4 GB di RAM ~2,5 GB llama3.2:3b (risicato) Solo classificazione leggera
8 GB di RAM ~5-6 GB llama3.2:3b o mistral:7b Automazione generale
16 GB di RAM ~12-13 GB llama3.1:8b o qwen2.5:14b Agenti complessi, RAG
32 GB di RAM ~28 GB Più modelli caricati Multi-agente in produzione

Se usi solo il percorso API Claude (senza Ollama), un VPS da 4 GB è sufficiente per n8n. Il LLM gira sull'infrastruttura di Anthropic.

Monitora l'utilizzo delle risorse dopo il deploy:

docker stats --no-stream

Questo mostra il consumo di CPU e memoria per container. Osserva il container Ollama durante l'inferenza. L'uso della memoria sale durante l'elaborazione di una richiesta e scende dopo.

Controlla i log di Ollama per problemi di prestazioni:

docker compose logs ollama --tail 50

Se vedi errori di memoria insufficiente, passa a un modello più piccolo o aumenta la RAM del VPS.

Risoluzione dei problemi

n8n non riesce a connettersi a Ollama:

  • Verifica che entrambi i container siano sulla stessa rete Docker: docker network inspect n8n-network
  • Controlla che la Base URL della credenziale Ollama sia http://ollama:11434 (non localhost)
  • Controlla che Ollama sia in esecuzione: docker compose exec ollama ollama ps
  • Controlla che OLLAMA_HOST=0.0.0.0 sia impostato nell'ambiente Ollama

Ollama è lento o non risponde:

  • Controlla la memoria: docker stats ollama
  • Prova un modello più piccolo. I modelli 3B sono molto più veloci degli 8B su CPU.
  • Se l'inferenza impiega più di 30 secondi, il modello è probabilmente troppo grande per la tua RAM. Ollama fa swap su disco, il che distrugge le prestazioni.

L'API Claude restituisce errori:

  • Verifica la tua chiave API nelle credenziali di n8n (reinseriscila se necessario)
  • Controlla l'HTTPS in uscita dal tuo VPS: curl -I https://api.anthropic.com
  • Guarda il log di esecuzione di n8n per il messaggio di errore specifico. Problemi comuni: chiave scaduta, limite di frequenza, crediti insufficienti.

L'AI Agent restituisce output illeggibile o non-JSON:

  • Migliora il prompt di sistema. Sii esplicito sul formato di output.
  • Claude segue le istruzioni di formattazione in modo più affidabile rispetto ai piccoli modelli locali.
  • Aggiungi un sotto-nodo Output Parser (Structured Output Parser) per imporre uno schema JSON.
  • Con Ollama, i modelli più grandi (8B+) seguono le istruzioni meglio dei modelli 3B.

Dove sono i log?

# n8n logs
docker compose logs n8n --tail 100

# Ollama logs
docker compose logs ollama --tail 100

# All services
docker compose logs --tail 50

n8n conserva anche la cronologia delle esecuzioni nella sua interfaccia web sotto Executions nella barra laterale sinistra. Ogni esecuzione mostra l'input/output di ogni nodo, che è il modo più veloce per fare il debug dei problemi del workflow.


Copyright 2026 Virtua.Cloud. Tutti i diritti riservati. Questo contenuto è un'opera originale del team Virtua.Cloud. La riproduzione, ripubblicazione o redistribuzione senza autorizzazione scritta è vietata.

Pronto a provare?

Ospita n8n con integrazioni IA sul tuo VPS.

Vedi piani VPS