1. Qu'est-ce que n8n ?

n8n (prononcé "n-huit-n") est un outil qui permet d'automatiser des tâches entre différentes applications. En clair : tu lui dis quoi faire, et il le fait à ta place, automatiquement.

C'est quoi le principe ?

Imagine que tu reçois un email avec une facture en pièce jointe. Normalement, tu dois :

  1. Ouvrir l'email
  2. Télécharger la facture
  3. La renommer avec le bon nom
  4. La déposer dans le bon dossier
  5. Mettre à jour ton tableau de suivi

Avec n8n, tout ça se fait tout seul. Ton email arrive, et pouf : la facture est rangée, nommée correctement, et ton tableau est à jour.

Des exemples concrets

Tu es un particulier :

  • Tu reçois un email avec une facture ? n8n la sauvegarde automatiquement dans le bon dossier
  • Tu as un rendez-vous qui s'ajoute dans ton calendrier ? n8n t'envoie un rappel sur ton téléphone
  • Tu achètes quelque chose en ligne ? n8n ajoute la dépense dans ton fichier de budget
  • Tu veux suivre le prix d'un produit ? n8n vérifie le prix chaque jour et t'alerte quand il baisse

Tu as une petite activité :

  • Un client remplit un formulaire sur ton site ? n8n t'envoie une notification et ajoute le contact à ton fichier clients
  • Tu reçois une commande ? n8n génère automatiquement la facture et l'envoie au client
  • Quelqu'un t'envoie un message sur les réseaux sociaux ? n8n répond ou t'alerte
  • Tu dois faire un suivi régulier ? n8n t'envoie des rappels automatiques

Tu es curieux et bricoleur :

  • Connecte tes objets connectés entre eux (domotique)
  • Automatise les tâches répétitives que tu fais à la main
  • Crée des alertes personnalisées sur des sujets qui t'intéressent
  • Utilise l'intelligence artificielle pour traiter tes données

En résumé : pourquoi l'utiliser ?

Sans n8n Avec n8n
Tu fais les tâches répétitives à la main Elles se font toutes seules
Tu vas sur 5 sites différents pour vérifier des infos Tu reçois un résumé automatique
Tu oublies des rappels et des suivis Tu es notifié au bon moment
Tu copies-colles des données entre applications Les données passent toute seules
Tu perds du temps sur des tâches ennuyeuses Tu te concentres sur ce qui compte vraiment

Ce que n8n n'est pas :

  • Ce n'est pas une application magique qui lit dans tes pensées — tu dois lui dire quoi faire
  • Ce n'est pas un service en ligne stocké chez quelqu'un d'autre — tu l'installes chez toi
  • Ce n'est pas une solution clé en main pour tout — certains outils nécessitent un peu de configuration
L'analogie de la cuisine : Imagine que n8n est comme un robot cuistot programmable. Tu lui donnes les ingrédients (tes données) et la recette (les étapes à suivre), et il cuisine tout seul. Sauf qu'ici, la cuisine c'est de l'informatique, et les ingrédients ce sont tes emails, tes fichiers, tes notifications...

C'est quoi "self-hosted" ?

n8n est un outil que tu installes sur ta propre machine (ou ton propre serveur). Ça veut dire :

  • Tes données restent chez toi — elles ne passent pas par les serveurs d'une entreprise tierce
  • Tu contrôles tout — personne d'autre ne décide de ce qui se passe avec tes informations
  • C'est gratuit — tu ne paies pas d'abonnement mensuel comme avec d'autres services similaires
  • Tu dois l'installer toi-même — d'où ce tutoriel qui explique comment faire

En échange de this liberté, tu dois gérer l'installation et la maintenance. C'est pour ça que ce tutoriel existe : pour t'accompagner.

2. Comparaison : n8n vs Zapier vs Make

Trois solutions principales pour l'automatisation. Voici comment elles se comparent.

Critère n8n Zapier Make (Integromat)
Coût Gratuit (self-hosted) Freemium (limité) puis ~20$/mois Freemium (limité) puis ~10$/mois
Self-hosted ✅ Oui, sur ton serveur ❌ Non, cloud uniquement ❌ Non, cloud uniquement
Données Restent chez toi Passent par les serveurs Zapier Passent par les serveurs Make
Intégrations ~400+ nodes ~6000+ apps ~1500+ apps
Code custom ✅ JavaScript complet ⚠️ Limité (Python, JS) ⚠️ Limité
Interface Visuelle, technique Très simple Visuelle, plus complexe
Exécutions Illimitées (self-hosted) Limitées par plan Limitées par plan
IA intégrée ✅ Native (Ollama, OpenAI...) ⚠️ Via partenaires ⚠️ Via partenaires
Courbe d'apprentissage Moyenne Faible Moyenne
Pourquoi n8n ? Si tu veux contrôler tes données, éviter les coûts récurrents, et que t'as un serveur (ou Docker), c'est le meilleur choix. L'inconvénient : tu gères l'infrastructure toi-même.
Quand choisir Zapier ou Make ?

Zapier si :

  • Tu veux pas gérer de serveur
  • T'as besoin d'une intégration exotique (supporte 6000 apps)
  • Tu veux un outil super simple, clé en main

Make si :

  • Tu veux de la granularité sur le pricing
  • T'as des workflows complexes avec beaucoup de branchements

n8n si :

  • Tu veux du self-hosted gratuit
  • Tes données doivent rester locales (RGPD, sécurité)
  • Tu veux de l'IA locale (Ollama)
  • T'as déjà un serveur ou Docker

3. Installation Docker

n8n se lance facilement avec Docker. C'est la méthode recommandée pour Windows.

Commande simple

Pour démarrer rapidement :

docker run -d --name n8n --restart=unless-stopped -p 5678:5678 -v n8n_data:/home/node/.n8n n8nio/n8n

n8n tourne sur le port 5678. Ouvre http://localhost:5678 dans ton navigateur.

Explications des paramètres
  • -d : lance en arrière-plan (detached)
  • --name n8n : nomme le conteneur pour le retrouver
  • --restart=unless-stopped : redémarre automatiquement (sauf si tu l'arrêtes manuellement)
  • -p 5678:5678 : expose le port 5678
  • -v n8n_data:/home/node/.n8n : persiste les données
  • n8nio/n8n : l'image officielle

Docker Compose (recommandé)

Pour une installation propre avec variables d'environnement, crée un docker-compose.yml :

services:
  n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      - N8N_HOST=localhost
      - N8N_PORT=5678
      - N8N_PROTOCOL=http
      - NODE_ENV=production
      - WEBHOOK_URL=http://localhost:5678/
      - GENERIC_TIMEZONE=Europe/Paris
      - TZ=Europe/Paris
    volumes:
      - n8n_data:/home/node/.n8n
      - ./files:/files

volumes:
  n8n_data:

Lance avec :

docker-compose up -d
Variables d'environnement importantes
Variable Description
N8N_HOST Nom de domaine ou IP (ex: n8n.mon-domaine.fr)
N8N_PORT Port interne (défaut: 5678)
N8N_PROTOCOL http ou https
WEBHOOK_URL URL complète pour les webhooks
GENERIC_TIMEZONE Timezone pour les schedules (ex: Europe/Paris)
N8N_BASIC_AUTH_ACTIVE Active l'authentification basique (défaut: true)
N8N_BASIC_AUTH_USER Utilisateur pour l'auth basique
N8N_BASIC_AUTH_PASSWORD Mot de passe pour l'auth basique
Volume pour les fichiers locaux

Si tu veux que n8n puisse lire/écrire des fichiers sur ta machine :

volumes:
  - n8n_data:/home/node/.n8n
  - ./mes-fichiers:/data:ro  # :ro = read-only

Dans n8n, le chemin sera /data/ pour accéder aux fichiers.

4. Configuration initiale

À la première connexion, n8n te demande de créer un compte propriétaire.

  1. Ouvre http://localhost:5678
  2. Crée ton compte (email, prénom, mot de passe)
  3. Accepte les conditions d'utilisation
  4. Tu arrives sur l'interface principale
Conseil : Note bien ton mot de passe. Y'a pas de récupération par email en self-hosted (sauf si tu configures le SMTP).

Paramètres de base

Va dans Settings → Settings pour configurer :

  • Timezone : Important pour les workflows planifiés
  • Execution timeout : Temps max d'exécution d'un workflow
  • Save execution progress : Sauvegarde les logs d'exécution
  • Log level : Verbosité des logs (info, warn, error)
Configuration avec authentification basique

Pour protéger ton instance sans passer par le système de compte n8n :

environment:
  - N8N_BASIC_AUTH_ACTIVE=true
  - N8N_BASIC_AUTH_USER=admin
  - N8N_BASIC_AUTH_PASSWORD=ton-mot-de-passe-securise

5. Interface et premier workflow

L'interface de n8n est divisée en plusieurs zones :

  • Canvas : La zone centrale où tu construis tes workflows
  • Nodes panel : La liste des nodes disponibles (à gauche)
  • Parameters panel : La configuration du node sélectionné
  • Menu : Workflows, Credentials, Executions, Settings

Créer un premier workflow

On va créer un workflow simple : Manual Trigger → Set → Console

  1. Clique sur "Add workflow" en haut à gauche
  2. Tu vois un canvas vide
  3. Clique sur le + au centre
  4. Recherche "Manual Trigger" et ajoute-le
  5. Clique sur le + à droite du node Manual Trigger
  6. Recherche "Set" et ajoute-le
  7. Dans le node Set, ajoute une propriété message avec la valeur Hello World
  8. Ajoute un node "Console" après Set
  9. Clique sur "Execute Workflow" en haut
  10. Regarde le résultat dans le node Console
┌─────────────┐     ┌─────────┐     ┌───────────┐
│   Manual    │     │   Set   │     │  Console  │
│   Trigger   │────▶│ message │────▶│           │
│             │     │ "Hello" │     │  Output   │
└─────────────┘     └─────────┘     └───────────┘
          

Types de nodes :

Trigger Déclenche le workflow (Manual, Schedule, Webhook, etc.) Action Effectue une action (HTTP Request, Send Email, etc.) Logic Logique et contrôle (If, Switch, Loop, etc.) Output Résultat (Console, No-Op, etc.)

Sauvegarder et activer

  • Save : Sauvegarde le workflow (Ctrl+S)
  • Activate : Active le workflow pour qu'il s'exécute automatiquement
  • Deactivate : Désactive (le workflow reste sauvegardé mais ne tourne pas)
Active = production Un workflow activé s'exécute en permanence sur les triggers. Un workflow inactivé ne peut être exécuté que manuellement.

6. Reverse proxy avec Nginx

Pour accéder à n8n depuis l'extérieur avec HTTPS, utilise un reverse proxy.

Avec Nginx Proxy Manager

Si tu utilises Nginx Proxy Manager (NPM) :

  1. Connecte-toi à NPM (généralement http://localhost:81)
  2. Va dans Proxy Hosts
  3. Clique sur Add Proxy Host
  4. Configure :
Champ Valeur
Domain Names n8n.mon-domaine.fr
Scheme http
Forward Hostname / IP n8n (nom du container) ou host.docker.internal
Forward Port 5678

Dans l'onglet SSL :

  1. Cocher Request a new SSL Certificate
  2. Coche Force SSL
  3. Coche HTTP/2 Support
  4. Email pour Let's Encrypt
  5. Sauvegarde

Configuration Nginx manuelle

Exemple de config Nginx
server {
    listen 443 ssl http2;
    server_name n8n.mon-domaine.fr;

    ssl_certificate /etc/letsencrypt/live/n8n.mon-domaine.fr/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/n8n.mon-domaine.fr/privkey.pem;

    location / {
        proxy_pass http://localhost:5678;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # WebSocket support
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

Mettre à jour les variables d'environnement

Une fois le reverse proxy en place, mets à jour ton docker-compose.yml :

environment:
  - N8N_HOST=n8n.mon-domaine.fr
  - N8N_PORT=5678
  - N8N_PROTOCOL=https
  - WEBHOOK_URL=https://n8n.mon-domaine.fr/

Puis relance :

docker-compose down && docker-compose up -d

7. Intégration IA avec Ollama

n8n peut s'intégrer avec des modèles de langage locaux via Ollama. C'est pratique pour de l'automatisation intelligente.

Prérequis

  • Ollama installé et qui tourne
  • Un modèle téléchargé (llama3, mistral, etc.)

Configuration

Si Ollama tourne sur la même machine que n8n (en Docker), utilise l'adresse spéciale Docker :

# Dans docker-compose.yml, ajoute un network ou utilise l'IP host
extra_hosts:
  - "host.docker.internal:host-gateway"

# Ensuite dans n8n, Ollama URL = http://host.docker.internal:11434
Avec Docker Compose multi-services

Si tu mets Ollama et n8n dans le même fichier docker-compose :

services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    restart: unless-stopped
    ports:
      - "11434:11434"
    volumes:
      - ollama_data:/root/.ollama

  n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      - N8N_HOST=localhost
      - N8N_PORT=5678
      - N8N_PROTOCOL=http
    volumes:
      - n8n_data:/home/node/.n8n

volumes:
  ollama_data:
  n8n_data:

Dans n8n, l'URL Ollama sera : http://ollama:11434

Utiliser Ollama dans un workflow

  1. Ajoute un node "Ollama" dans ton workflow
  2. Configure les Credentials :
    • Base URL : http://host.docker.internal:11434 (ou http://ollama:11434)
  3. Choisis le modèle (ex: llama3, mistral)
  4. Configure le prompt
Note : L'intégration IA dans n8n est puissante mais gourmande en ressources. Ton GPU va chauffer si tu fais tourner des modèles locaux.

8. Exemples de workflows

Voici 4 workflows concrets pour démarrer.

Exemple 1 : Webhook → Traitement → Discord

Recevoir une requête HTTP et envoyer une notification Discord.

┌─────────────┐     ┌─────────┐     ┌───────────┐
│   Webhook   │     │  Edit   │     │  Discord  │
│   Trigger   │────▶│  Fields │────▶│   Send    │
│  (POST)     │     │         │     │  Message  │
└─────────────┘     └─────────┘     └───────────┘
          

Étapes :

  1. Ajoute un node Webhook Trigger
    • HTTP Method : POST
    • Path : notification
  2. Ajoute un node Edit Fields
    • Ajoute un champ message
    • Valeur : {{ $json.body.message }}
  3. Ajoute un node Discord
    • Configure les credentials Discord (bot token)
    • Channel ID : ton channel
    • Message : {{ $json.message }}
  4. Active le workflow
  5. Teste avec curl : curl -X POST http://localhost:5678/webhook/notification -d '{"message":"Test"}'

Exemple 2 : RSS Feed → Filtrage → Email

Surveiller un flux RSS et recevoir les nouveaux articles par email.

┌─────────────┐     ┌─────────┐     ┌─────────┐     ┌───────────┐
│   Schedule  │     │   RSS   │     │  Filter │     │   Email   │
│   Trigger   │────▶│  Feed   │────▶│  (if)   │────▶│   Send    │
│  (1h)       │     │  Read   │     │         │     │           │
└─────────────┘     └─────────┘     └─────────┘     └───────────┘
          

Étapes :

  1. Ajoute un node Schedule Trigger
    • Mode : Every hour
  2. Ajoute un node RSS Feed Read
    • URL : ton flux RSS
  3. Ajoute un node IF
    • Condition : titre contient un mot-clé
  4. Ajoute un node Send Email
    • Configure SMTP (Gmail, Outlook, etc.)
    • Sujet : {{ $json.title }}
    • Corps : {{ $json.content }}
Attention : Pour éviter de recevoir 50 emails pour le même article, stocke les articles déjà envoyés dans une base de données ou un fichier.

Exemple 3 : API externe → Ollama → Formatage

Appeler une API, traiter la réponse avec une IA locale, et formater le résultat.

┌─────────────┐     ┌─────────┐     ┌─────────┐     ┌───────────┐
│   Manual    │     │  HTTP   │     │ Ollama  │     │   Set     │
│   Trigger   │────▶│ Request │────▶│  Chat   │────▶│  Output   │
│             │     │  (API)  │     │         │     │           │
└─────────────┘     └─────────┘     └─────────┘     └───────────┘
          

Étapes :

  1. Ajoute un node HTTP Request
    • Method : GET
    • URL : l'API à interroger
  2. Ajoute un node Ollama Chat Model
    • Credentials : configure l'URL Ollama
    • Model : llama3
    • Prompt : Résume ce texte : {{ $json.body }}
  3. Ajoute un node Set
    • Formatage du résultat

Exemple 4 : Schedule → HTTP Request → Stockage

Exécuter une tâche planifiée qui récupère des données et les stocke.

┌─────────────┐     ┌─────────┐     ┌──────────┐     ┌───────────┐
│   Schedule  │     │  HTTP   │     │  Write   │     │   Local   │
│   Trigger   │────▶│ Request │────▶│  File   │────▶│   File    │
│  (daily)    │     │  (API)  │     │         │     │  Storage  │
└─────────────┘     └─────────┘     └──────────┘     └───────────┘
          

Étapes :

  1. Ajoute un node Schedule Trigger
    • Mode : Every day at 8:00 AM
  2. Ajoute un node HTTP Request
    • URL : l'API ou la source de données
  3. Ajoute un node Write Binary File
    • File Name : data-{{ $now.format('yyyy-MM-dd') }}.json
    • Data : {{ $json }}
  4. Ajoute un node Local File Storage
    • Configure le chemin de stockage
Importer un workflow depuis un fichier JSON

n8n permet d'exporter/importer des workflows en JSON. Pour importer :

  1. Va dans Workflows
  2. Clique sur ...Import from File
  3. Sélectionne ton fichier .json
  4. Configure les credentials si nécessaire

9. Sécurité et bonnes pratiques

Credentials

Ne stocke jamais de mots de passe en clair dans les workflows. Utilise le système de Credentials de n8n :

  1. Va dans Settings → Credentials
  2. Ajoute une nouvelle credential (Gmail, Discord, API Key, etc.)
  3. Dans le workflow, sélectionne la credential au lieu de taper le mot de passe
Important : Les credentials sont chiffrées dans la base de données n8n. Protège ton N8N_ENCRYPTION_KEY.

Variables d'environnement sensibles

Pour les secrets que tu ne veux pas mettre dans les workflows :

environment:
  - N8N_ENCRYPTION_KEY=ta-cle-secrete-tres-longue
  - N8N_USER_MANAGEMENTJwtSecret=un-autre-secret-pour-jwt

Bonnes pratiques

  • Sauvegardes régulières : Exporte tes workflows en JSON régulièrement
  • Active l'authentification : Ne laisse pas n8n ouvert au monde entier
  • Limite les executions : Configure un timeout pour éviter les boucles infinies
  • Logs : Vérifie les logs en cas de problème
  • Mises à jour : Tiens n8n à jour
Mettre à jour n8n
# Arrêter le conteneur
docker-compose down

# Tirer la nouvelle image
docker pull n8nio/n8n:latest

# Relancer
docker-compose up -d
Note : Sauvegarde tes workflows avant de mettre à jour. Les volumes Docker préservent les données, mais une sauvegarde externe ne fait pas de mal.

10. Dépannage

Le port 5678 est déjà utilisé

Si le port est pris par une autre application :

# Vérifier ce qui utilise le port
docker run -d --name n8n -p 5679:5678 n8nio/n8n

# Accès : http://localhost:5679
n8n ne démarre pas

Vérifie les logs :

docker logs n8n --tail 100

Erreurs courantes :

  • Permission denied : Vérifie les permissions du volume
  • Port already in use : Change le port dans docker-compose
  • Out of memory : Augmente la RAM allouée à Docker
Webhooks ne fonctionnent pas en externe

Si les webhooks ne sont pas accessibles depuis l'extérieur :

  • Vérifie que WEBHOOK_URL correspond à ton URL publique
  • Vérifie la config du reverse proxy (WebSocket doit être activé)
  • Vérifie que le port est ouvert sur ton firewall
# Dans docker-compose.yml
environment:
  - WEBHOOK_URL=https://n8n.mon-domaine.fr/
  - N8N_HOST=n8n.mon-domaine.fr
  - N8N_PROTOCOL=https
Les credentials ne fonctionnent pas
  • Vérifie que les credentials sont bien configurés dans Settings → Credentials
  • Teste la credential avec le bouton Test
  • Pour les APIs avec OAuth, vérifie le redirect URI
  • Pour Gmail/Outlook, utilise les "App passwords" si 2FA activé
Performance lente

Si n8n est lent :

  • Augmente les ressources Docker (CPU, RAM)
  • Optimise les workflows (évite les boucles infinies)
  • Désactive les logs excessifs : LOG_LEVEL=warn
  • Utilise des chunks pour les gros volumes de données

11. Pour aller plus loin

Et voilà ! Tu as installé n8n et tu sais créer des workflows. L'automatisation, c'est comme la cuisine : prends des ingrédients (nodes), mélange-les dans le bon ordre, et regarde ce qui sort du four. Parfois c'est brûlé, parfois c'est délicieux.
Retour aux tutoriels