n8n + Ollama : automatiser avec une IA 100 % locale (tutoriel)
n8n est l'outil d'automatisation no-code le plus crédible face à Zapier ou Make, avec un atout décisif : il s'auto-héberge. Couplé à Ollama, vous obtenez une chaîne complète où la donnée ne quitte jamais votre machine — emails traduits, articles résumés, leads triés, le tout sans appel API externe. Ce guide n8n ollama automatisation détaille l'installation, le nœud Ollama natif et trois workflows concrets prêts à copier.
#Pourquoi coupler n8n et Ollama ?
n8n est un orchestrateur visuel : vous connectez des nœuds (trigger, HTTP, base de données, LLM…) sans écrire de code, et le workflow tourne en arrière-plan sur un cron, un webhook ou une boîte mail. Tous les concurrents grand public (Zapier, Make, Power Automate) facturent au volume et exigent que vos données transitent par leurs serveurs.
Ollama, lui, expose un LLM local sur http://localhost:11434 avec une API HTTP compatible. n8n embarque depuis fin 2023 un nœud Ollama natif (et un nœud OpenAI-compatible qui marche aussi). Résultat : un workflow qui résume des PDF clients ou trie des emails RH ne fait jamais sortir un seul octet de votre infrastructure.
#Prérequis
- Ollama installé
- Daemon actif sur le port 11434. Vérifiez avec curl http://localhost:11434. Si vous partez de zéro, suivez d'abord le guide d'installation Ollama du site.
- Un modèle téléchargé
- ollama pull llama3.1:8b pour la polyvalence, ou mistral:7b si vous voulez plus léger. Pour les workflows de classification, qwen2.5:7b est solide.
- Docker + Docker Compose
- n8n se déploie en quelques secondes avec Docker. Docker Desktop sur Windows/macOS, Docker Engine sur Linux.
- 8 Go de RAM libres
- n8n consomme ~500 Mo, Ollama charge le modèle en VRAM (5 Go pour un 7B Q4). Comptez large si vous voulez plusieurs workflows simultanés.
- Un peu de patience pour le no-code
- n8n est visuel mais pas magique : comprendre JSON et les expressions {{ $json.field }} reste utile.
#1. Installer n8n en self-hosted via Docker
La méthode officielle et la plus simple est une image Docker maintenue par l'équipe n8n. Créez un dossier dédié et un fichier docker-compose.yml :
La ligne extra_hosts est la clé : depuis le conteneur n8n, vous appellerez Ollama via http://host.docker.internal:11434 plutôt que localhost (qui pointerait sur le conteneur lui-même). Sur Linux uniquement, cette astuce nécessite la directive host-gateway.
Ouvrez http://localhost:5678. À la première connexion, n8n vous demande de créer un compte propriétaire — il reste local, aucune télémétrie obligatoire. Une fois connecté, vous arrivez sur le canvas vide.
#2. Configurer le nœud Ollama dans n8n
n8n propose deux façons d'appeler Ollama : le nœud dédié "Ollama Chat Model" (intégré dans la branche LangChain de n8n) et un appel HTTP générique. Le nœud dédié est plus propre pour les agents et chaînes ; l'appel HTTP donne plus de contrôle. Les deux fonctionnent.
- 01Ajouter un nœud OllamaSur le canvas, tapez "/" et cherchez "Ollama". Choisissez "Ollama Chat Model" (sous AI > Language Models).
- 02Créer une credentialDans le champ Credential, cliquez "Create new". Base URL : http://host.docker.internal:11434 (depuis le conteneur Docker) ou http://localhost:11434 si n8n tourne en natif. Pas d'API key — c'est local.
- 03Tester la connexionn8n teste automatiquement et liste les modèles disponibles. Si la liste est vide, vérifiez avec docker exec n8n curl http://host.docker.internal:11434/api/tags depuis l'hôte.
- 04Choisir le modèleDans le dropdown Model, sélectionnez llama3.1:8b (ou celui que vous avez tiré). Laissez Temperature à 0.7 par défaut, abaissez à 0.2 pour des tâches déterministes (classification, extraction).
#3. Premier workflow : résumer un flux RSS
Cas type : vous suivez 15 blogs tech, vous voulez un résumé quotidien en français sans tout lire. n8n récupère les nouveaux articles, Ollama résume, le résultat part par email ou s'écrit dans un fichier Markdown.
- 01Trigger : Schedule TriggerRéglez-le sur tous les jours à 7h. Mode Cron expression : 0 7 * * *.
- 02Récupérer le flux : RSS Feed Trigger ou RSS ReadURL du flux (ex: https://blog.lemondeinformatique.fr/feed/). Activez "Return only new items" pour ne pas re-résumer les anciens.
- 03Découper si besoin : Split In BatchesSi le flux renvoie 10 articles, limitez à 5 pour éviter de saturer Ollama. Batch size : 1, pour traiter article par article.
- 04Appeler OllamaNœud Ollama Chat Model avec ce system prompt et l'article en message utilisateur.
- 01Agréger les résumés : Merge ou CodeCombinez les sorties article par article en un seul corps de mail. Un nœud Code (JavaScript) avec items.map(i => `**${i.json.title}**\n${i.json.response}`).join('\n\n') suffit.
- 02Envoyer : Send Email ou écrire fichierNœud Email (SMTP) vers votre adresse, ou nœud Write Binary File vers /home/node/.n8n/daily-digest.md (persisté dans le volume Docker).
#4. Workflow : traduction d'emails entrants
Cas type : vous recevez des emails fournisseurs en anglais, allemand, espagnol. Vous voulez les lire en français sans Google Translate (qui aspire le contenu). n8n surveille votre boîte IMAP, Ollama traduit, le résultat atterrit dans un label "Traduit" ou en réponse drafted.
- 01Trigger : IMAP EmailConfigurez vos credentials IMAP (Gmail nécessite un mot de passe d'application). Filtre : tous les emails non lus de la boîte INBOX. Polling toutes les 10 minutes.
- 02Détecter la langue : Ollama #1Premier appel Ollama avec system prompt : "Réponds uniquement par le code ISO 639-1 de la langue de ce texte (fr, en, de, es...). Pas de phrase, juste deux lettres." Prompt : {{ $json.subject }} {{ $json.textPlain }}.
- 03Brancher : nœud IFCondition : {{ $json.response }} ≠ "fr". Si vrai → traduire. Si faux → ignorer (déjà en français).
- 04Traduire : Ollama #2System prompt : "Traduis le texte suivant en français naturel. Préserve la mise en forme (paragraphes, listes). Ne commente pas, traduis directement." Prompt : le corps de l'email.
- 05Action finaleDeux options : nœud Gmail "Add Label" + écriture de la traduction en tête du message via "Reply Draft", ou simplement envoi d'une notification Slack/Telegram avec la version traduite.
#5. Workflow : classifier des leads entrants
Cas type : un formulaire de contact remplit une base Airtable / Notion / Postgres. Vous voulez auto-classer chaque lead : Hot / Warm / Cold, secteur d'activité, urgence. n8n écoute la base, Ollama lit le message libre, écrit les tags structurés.
Ce workflow exploite le mode JSON d'Ollama, qui force la sortie à respecter un schéma. Indispensable dès qu'on parle de données structurées.
- 01Trigger : Airtable/Postgres TriggerSur "New row in table Leads". Polling 5 min, ou webhook si votre source le permet (plus réactif).
- 02Appel Ollama en mode JSONNœud HTTP Request POST sur http://host.docker.internal:11434/api/generate avec le body ci-dessus. La réponse arrive dans $json.response (string JSON).
- 03Parser : nœud Code ou SetJSON.parse($input.first().json.response) extrait temperature, secteur, urgence. Si parse échoue (modèle qui hallucine), retry avec une température à 0.
- 04Écrire dans le CRMNœud Airtable Update / Postgres Update avec les trois champs. Optionnel : si temperature = Hot et urgence ≥ 4, déclencher un nœud Slack qui ping [email protected].
#Astuces & dépannage
- n8n ne joint pas Ollama
- Erreur ECONNREFUSED sur localhost:11434 ? Vous êtes dans Docker — utilisez host.docker.internal. Sur Linux, vérifiez que extra_hosts est bien dans le compose et que Ollama écoute sur 0.0.0.0 (OLLAMA_HOST=0.0.0.0:11434).
- Workflow lent
- Ollama charge le modèle à froid (5-15 s la première fois). Pour rester chaud, lancez en parallèle un cron qui ping /api/generate toutes les 4 minutes, ou augmentez OLLAMA_KEEP_ALIVE=30m.
- Le modèle hallucine en classification
- Toujours utiliser format: "json" + un system prompt qui liste les valeurs autorisées. Si Llama 3.1 8B reste flou, monter à qwen2.5:14b améliore nettement la robustesse JSON.
- Volumes Docker perdus
- Le workflow et les credentials vivent dans ./n8n_data. Ne supprimez jamais ce dossier sans backup. Exportez vos workflows en JSON via le menu (Settings > Workflows > Download) pour versionner sur Git.
- Trop d'appels = saturation VRAM
- Si un workflow déclenche 20 appels Ollama en parallèle, le GPU sature. Utilisez Split In Batches avec batch size 1 ou ajoutez OLLAMA_NUM_PARALLEL=1 pour sérialiser.
- Versions n8n
- n8n sort une release majeure tous les ~10 jours. docker compose pull && docker compose up -d met à jour. Le nœud Ollama est stable depuis la 1.18+.
#Pour aller plus loin
Vous avez une chaîne n8n + Ollama fonctionnelle. Quelques pistes naturelles ensuite :
- Brancher un RAG
- Le guide RAG ChromaDB du site montre comment indexer vos PDF/notes. Vous pouvez appeler ce pipeline RAG depuis n8n via un endpoint HTTP — vos workflows deviennent contextuels à votre base de connaissances.
- Optimiser le modèle
- Si vos workflows traitent du volume, lisez le guide quantification Q4/Q5/Q8 : descendre à Q4_K_M peut diviser la VRAM par deux sans perte visible sur de la classification.
- Choisir un GPU dédié
- Si n8n + Ollama doivent tourner 24/7 sur une machine, le guide d'achat GPU du site donne les seuils 12/16/24 Go selon vos workflows cibles.
Un retour, une erreur, une précision ? Faites-nous signe, ça améliore le guide pour tout le monde.