Intermedio 18 minn8n

n8n + Ollama : automatizzare con IA al 100 % locale

n8n è lo strumento di automazione no-code più credibile come alternativa a Zapier o Make, con un vantaggio decisivo: puoi ospitarlo autonomamente. Abbinato a Ollama, ti offre una catena completa in cui i dati non lasciano mai la tua macchina — email tradotte, articoli riassunti, lead classificati, il tutto senza chiamate ad API esterne. Questa guida all'automazione con n8n e Ollama illustra in dettaglio l'installazione, il nodo Ollama nativo e tre workflow concreti pronti da copiare.

Di Mohamed Meguedmi·Agg. 2026-08-27·Testato su Windows, macOS e Linux

#Perché combinare n8n e Ollama?

n8n è un orchestratore visivo: colleghi nodi (trigger, HTTP, database, LLM…) senza scrivere codice, e il workflow viene eseguito in background tramite un cron, un webhook o una casella di posta. Tutti i concorrenti rivolti al grande pubblico (Zapier, Make, Power Automate) fanno pagare in base al volume e richiedono che i tuoi dati passino per i loro server.

Ollama, invece, espone un LLM locale su http://localhost:11434 con un'API HTTP compatibile. Dalla fine del 2023, n8n include un nodo Ollama nativo (e anche un nodo compatibile con OpenAI che funziona). Risultato: un workflow che riassume i PDF dei clienti o smista le email delle risorse umane non fa mai uscire un solo byte dalla tua infrastruttura.

i
La combinazione in una frase
n8n = il cervello che coordina. Ollama = la mano che scrive, traduce o classifica. Entrambi girano sulla tua macchina e si parlano tramite HTTP locale.

#Prerequisiti

Il kit Agenti Locali

Agenti che agiscono sulla tua macchina: Cline agentico, MCP, n8n + Ollama, automazioni locali.

  • Spazio online a vita
  • PDF + file
  • Aggiornamenti a vita
Ollama installato
Daemon attivo sulla porta 11434. Verifica con curl http://localhost:11434. Se parti da zero, segui prima la guida all'installazione di Ollama del sito.
Un modello scaricato
ollama pull qwen3.5:9b pour la polyvalence, ou qwen3.5:4b si vous voulez plus léger. Pour les workflows de classification, granite4.2:8b est solide et très sobre en tokens.
Docker + Docker Compose
Il deployment di n8n richiede pochi secondi con Docker. Docker Desktop su Windows/macOS, Docker Engine su Linux.
8 GB di RAM liberi
n8n consuma circa 500 MB, Ollama carica il modello nella VRAM (~6,6 GB per un 9B Q4). Prevedi un ampio margine se vuoi eseguire più workflow contemporaneamente.
Un po' di pazienza per il no-code
n8n è visivo ma non magico: capire JSON e le espressioni {{ $json.field }} rimane utile.
→
Modello consigliato per iniziare
qwen3.5:9b in Q4_K_M. Buono in francese, 256k di contesto, supporta gli strumenti (function calling) e la visione, occupa 6,6 GB di VRAM. Se hai 12 GB o più, passa a qwen3.5:9b-q8_0 (11 GB) per la classificazione — la precisione migliora nettamente.

#1. Installare n8n in modalità self-hosted tramite Docker

Il metodo ufficiale e più semplice consiste nell'usare un'immagine Docker mantenuta dal team n8n. Crea una cartella dedicata e un file docker-compose.yml:

docker-compose.yml
services:
  n8n:
    image: docker.n8n.io/n8nio/n8n
    container_name: n8n
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      - N8N_HOST=localhost
      - N8N_PORT=5678
      - N8N_PROTOCOL=http
      - GENERIC_TIMEZONE=Europe/Paris
      - N8N_SECURE_COOKIE=false
    volumes:
      - ./n8n_data:/home/node/.n8n
    extra_hosts:
      - "host.docker.internal:host-gateway"

La riga extra_hosts è la chiave: dal container n8n, chiamerai Ollama tramite http://host.docker.internal:11434 anziché localhost (che punterebbe al container stesso). Solo su Linux, questo accorgimento richiede la direttiva host-gateway.

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

Apri http://localhost:5678. Al primo accesso, n8n ti chiede di creare un account proprietario — rimane locale, nessuna telemetria obbligatoria. Una volta connesso, ti trovi su un canvas vuoto.

!
Esporre n8n su Internet?
Per un uso personale, mantieni n8n all'interno della tua LAN. Se devi esporlo (webhook pubblici), passa necessariamente attraverso un reverse proxy con HTTPS (Caddy, Traefik) e attiva N8N_BASIC_AUTH_ACTIVE=true. Un'istanza n8n esposta senza autenticazione = accesso completo ai tuoi workflow e alle tue credenziali.

#2. Configurare il nodo Ollama in n8n

n8n offre due modi per chiamare Ollama: il nodo dedicato "Ollama Chat Model" (integrato nel ramo LangChain di n8n) e una chiamata HTTP generica. Il nodo dedicato è una soluzione più pulita per agenti e catene; la chiamata HTTP offre maggiore controllo. Entrambi funzionano.

  1. 01
    Aggiungere un nodo Ollama
    Sul canvas, digita '/' e cerca "Ollama". Seleziona "Ollama Chat Model" (sotto AI > Language Models).
  2. 02
    Creare una credenziale
    Nel campo Credential, clicca "Create new". Base URL: http://host.docker.internal:11434 (dal container Docker) o http://localhost:11434 se n8n funziona in modo nativo. Nessuna chiave API — è locale.
  3. 03
    Testare la connessione
    n8n esegue automaticamente un test ed elenca i modelli disponibili. Se l'elenco è vuoto, verifica dall'host con docker exec n8n curl http://host.docker.internal:11434/api/tags.
  4. 04
    Scegliere il modello
    Nel menu a discesa Model, seleziona qwen3.5:9b (o il modello che hai scaricato). Lascia Temperature al valore predefinito di 0.7 e abbassalo a 0.2 per compiti deterministici (classificazione, estrazione).
i
Il nodo HTTP Request rimane utile
Per chiamate più esotiche (streaming, formato JSON obbligatorio, parametri avanzati num_ctx o stop), un nodo HTTP Request POST su http://host.docker.internal:11434/api/generate offre il 100% di controllo. Il body è lo stesso JSON della documentazione Ollama.

#3. Primo workflow: riassumere un flusso RSS

Caso tipo: segui 15 blog tecnici, vuoi un riassunto quotidiano in francese senza leggere tutto. n8n recupera gli articoli nuovi, Ollama li riassume, il risultato viene inviato via e-mail o scritto in un file Markdown.

  1. 01
    Trigger: Schedule Trigger
    Impostalo per eseguirsi ogni giorno alle 7. Modalità Cron expression: 0 7 * * *.
  2. 02
    Recuperare il feed: RSS Feed Trigger o RSS Read
    URL del feed (es.: https://blog.lemondeinformatique.fr/feed/). Attiva "Return only new items" per evitare di riassumere di nuovo gli elementi precedenti.
  3. 03
    Dividere se necessario: Split In Batches
    Se il flusso restituisce 10 articoli, limita il numero a 5 per evitare di saturare Ollama. Batch size: 1, per elaborare un articolo alla volta.
  4. 04
    Chiamare Ollama
    Nodo Ollama Chat Model con questo system prompt e l'articolo come messaggio utente.
Contenuto del nodo Ollama
{
  "system": "Tu es un assistant éditorial. Résume l'article en 3 puces de 15 mots maximum, en français, ton neutre. Pas d'intro, juste les puces.",
  "prompt": "Titre : {{ $json.title }}\n\nContenu : {{ $json.content }}"
}
  1. 01
    Aggregare i riassunti: Merge o Code
    Combina i risultati di ciascun articolo in un unico corpo dell'email. Basta un nodo Code (JavaScript) con items.map(i => `**${i.json.title}**\n${i.json.response}`).join('\n\n').
  2. 02
    Inviare: Send Email o scrivere un file
    Nodo Email (SMTP) per inviare al tuo indirizzo email, oppure nodo Write Binary File per scrivere in /home/node/.n8n/daily-digest.md (salvato in modo persistente nel volume Docker).
→
Suggerimento: contesto breve = velocità
Con un modello 9B in Q4, un articolo di 800 parole viene riassunto in 4-6 secondi. Se vuoi accelerare, chiedi esplicitamente "Leggi solo le prime 500 parole" e tronca il testo lato n8n con un'espressione {{ $json.content.slice(0, 2000) }}.

#4. Workflow: traduzione di email in arrivo

Caso tipico: ricevi email dai fornitori in inglese, tedesco e spagnolo. Vuoi leggerle in francese senza Google Translate (che acquisisce il contenuto). n8n monitora la tua casella IMAP, Ollama traduce e il risultato finisce sotto un'etichetta "Tradotto" o in una risposta salvata come bozza.

  1. 01
    Trigger: IMAP Email
    Configura le tue credenziali IMAP (Gmail richiede una password per le app). Filtro: tutte le email non lette nella casella INBOX. Polling ogni 10 minuti.
  2. 02
    Rilevare la lingua: Ollama #1
    Prima chiamata a Ollama con prompt di sistema: "Rispondi solo con il codice ISO 639-1 della lingua di questo testo (fr, en, de, es...). Nessuna frase, solo due lettere." Prompt: {{ $json.subject }} {{ $json.textPlain }}.
  3. 03
    Creare una diramazione: nodo IF
    Condizione: {{ $json.response }} ≠ "fr". Se vero → tradurre. Se falso → ignorare (già in francese).
  4. 04
    Tradurre: Ollama #2
    Prompt di sistema: "Traduci il testo seguente in francese naturale. Preserva la formattazione (paragrafi, elenchi). Non commentare, traduci direttamente." Prompt: il corpo dell'email.
  5. 05
    Azione finale
    Due opzioni: nodo Gmail "Add Label" + inserimento della traduzione all'inizio del messaggio tramite "Reply Draft", oppure semplicemente l'invio di una notifica Slack/Telegram con la versione tradotta.
!
Trappola classica: l'HTML
Le email sono spesso in HTML (firme, immagini, tag di tracciamento). Usa il campo textPlain anziché html, oppure aggiungi un nodo HTML Extract per ripulire il contenuto prima di inviarlo a Ollama. Altrimenti il tuo LLM cerca di tradurre del <table>...

#5. Workflow: classificare i lead in arrivo

Caso tipico: un modulo di contatto alimenta un database Airtable / Notion / Postgres. Vuoi classificare automaticamente ogni lead: Hot / Warm / Cold, settore di attività, urgenza. n8n monitora il database, Ollama legge il messaggio in testo libero e scrive i tag strutturati.

Questo workflow utilizza la modalità JSON di Ollama, che obbliga l'output a rispettare uno schema. Indispensabile ogni volta che si parla di dati strutturati.

Corpo della richiesta del nodo HTTP Request verso Ollama
{
  "model": "qwen3.5:9b",
  "format": "json",
  "stream": false,
  "options": { "temperature": 0.1 },
  "system": "Tu es un assistant CRM. Réponds uniquement en JSON valide avec les clés : temperature (Hot/Warm/Cold), secteur (string court), urgence (1-5).",
  "prompt": "Message du lead : {{ $json.message }}\n\nEntreprise : {{ $json.company }}"
}
  1. 01
    Trigger: Airtable/Postgres Trigger
    Su "New row in table Leads". Polling ogni 5 minuti, oppure webhook se la tua fonte lo permette (più reattivo).
  2. 02
    Chiamata Ollama in modalità JSON
    Nodo HTTP Request con metodo POST su http://host.docker.internal:11434/api/generate e il corpo della richiesta indicato sopra. La risposta arriva in $json.response (stringa JSON).
  3. 03
    Eseguire il parsing: nodo Code o Set
    JSON.parse($input.first().json.response) estrae temperature, secteur, urgence. Se il parsing fallisce (il modello genera allucinazioni), riprova con una temperatura pari a 0.
  4. 04
    Scrivere nel CRM
    Nodo Airtable Update / Postgres Update con i tre campi. Opzionale: se temperature = Hot e urgenza ≥ 4, attivare un nodo Slack che invia una notifica a commercial@boite.fr.
→
Perché temperature 0.1 qui
Per la classificazione, vuoi coerenza: due lead identici devono ricevere lo stesso tag. Una temperatura bassa (da 0 a 0.2) elimina la casualità del campionamento. Riserva 0.7+ alle attività creative (scrittura, brainstorming).

#Suggerimenti e risoluzione dei problemi

n8n non riesce a connettersi a Ollama
Errore ECONNREFUSED su localhost:11434? Sei dentro Docker — usa host.docker.internal. Su Linux, verifica che extra_hosts sia presente nel file Compose e che Ollama ascolti su 0.0.0.0 (OLLAMA_HOST=0.0.0.0:11434).
Workflow lento
Ollama carica il modello a freddo (5-15 secondi la prima volta). Per mantenerlo caricato, avvia in parallelo un cron che invii un ping a /api/generate ogni 4 minuti, oppure aumenta il tempo di permanenza in memoria impostando OLLAMA_KEEP_ALIVE=30m.
Il modello genera allucinazioni durante la classificazione
Utilizzare sempre format: "json" + un prompt di sistema che elenca i valori ammessi. Se il 9B in Q4 continua a dare risultati poco chiari, passare a qwen3.5:9b-q8_0 migliora notevolmente la robustezza dell'output JSON.
Volumi Docker persi
Il workflow e le credenziali si trovano in ./n8n_data. Non eliminare mai questa cartella senza un backup. Esporta i tuoi workflow in JSON tramite il menu (Settings > Workflows > Download) per tenerli sotto controllo di versione con Git.
Troppe chiamate = saturazione della VRAM
Se un workflow attiva 20 chiamate Ollama in parallelo, la GPU si satura. Usa Split In Batches con batch size 1 o aggiungi OLLAMA_NUM_PARALLEL=1 per serializzare le chiamate.
Versioni n8n
n8n rilascia una versione principale ogni ~10 giorni. docker compose pull && docker compose up -d aggiorna. Il nodo Ollama è stabile da 1.18 in poi.
i
Versionare i tuoi workflow
Un workflow n8n esportato è un JSON pulito. Esegui un commit in un repository Git privato: conservi la cronologia, puoi ripristinarlo se rompi tutto e condividerlo facilmente con un collega.

#Per approfondire

Hai una pipeline n8n + Ollama funzionante. Ecco alcune idee per i prossimi passi:

Collegare un RAG
La guida RAG ChromaDB del sito mostra come indicizzare i tuoi PDF e le tue note. Puoi richiamare questa pipeline RAG da n8n tramite un endpoint HTTP: i tuoi workflow possono così usare il contesto della tua base di conoscenze.
Ottimizzare il modello
Se i tuoi workflow elaborano grandi volumi di dati, leggi la guida sulla quantizzazione Q4/Q5/Q8: passare a Q4_K_M può dimezzare la VRAM senza perdita visibile nella classificazione.
Scegliere una GPU dedicata
Se n8n + Ollama devono girare 24/7 su una macchina, la guida all'acquisto GPU del sito fornisce le soglie 12/16/24 GB in base ai tuoi workflow target.
Questa guida ti è stata utile?

Un feedback, un errore, una precisazione? Facci sapere, così la guida migliora per tutti.