n8n : automatiser ses workflows sans les quotas de Zapier
Un outil d'automatisation visuel, open-source et auto-hébergeable, qui connecte des centaines de services sans facturer à la tâche exécutée.
Zapier facture au "task" — chaque étape exécutée dans un workflow consomme un quota mensuel. Un workflow qui synchronise 500 lignes entre deux tableurs peut cramer un mois de forfait en une seule exécution. Make (ex-Integromat) fonctionne pareil, avec des "operations". n8n a un modèle radicalement différent : vous hébergez le moteur d'exécution, donc il n'y a rien à facturer à la tâche.
n8n est un outil d'automatisation par workflows visuels — un canevas où chaque nœud représente une action (appeler une API, lire une base de données, envoyer un email, transformer du JSON) reliée aux autres par des flèches. La version cloud existe et facture un abonnement, mais l'auto-hébergement est gratuit et illimité en exécutions — seule la version cloud limite le nombre d'"active workflows" sur les plans bas de gamme.
Installation avec Docker
docker volume create n8n_data
docker run -d \
--name n8n \
--restart=always \
-p 5678:5678 \
-e N8N_HOST="automation.mondomaine.fr" \
-e N8N_PROTOCOL=https \
-e WEBHOOK_URL="https://automation.mondomaine.fr/" \
-v n8n_data:/home/node/.n8n \
n8nio/n8nWEBHOOK_URL est critique : c'est l'URL que n8n communique aux services externes pour les webhooks entrants. Si elle ne correspond pas à l'URL publique réelle (derrière le reverse proxy), les webhooks de déclenchement ne fonctionneront jamais.
Pour une instance de production, PostgreSQL remplace avantageusement la base SQLite par défaut :
services:
n8n:
image: n8nio/n8n
restart: always
environment:
DB_TYPE: postgresdb
DB_POSTGRESDB_HOST: postgres
DB_POSTGRESDB_DATABASE: n8n
DB_POSTGRESDB_USER: n8n
DB_POSTGRESDB_PASSWORD: n8npass
N8N_HOST: automation.mondomaine.fr
N8N_PROTOCOL: https
WEBHOOK_URL: "https://automation.mondomaine.fr/"
volumes:
- n8n_data:/home/node/.n8n
depends_on:
- postgres
postgres:
image: postgres:16-alpine
restart: always
environment:
POSTGRES_USER: n8n
POSTGRES_PASSWORD: n8npass
POSTGRES_DB: n8n
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
n8n_data:
postgres_data:Un premier workflow concret
Cas d'usage classique : surveiller un flux RSS et poster les nouveaux articles dans un canal Slack ou Mattermost.
- Nœud RSS Trigger — vérifie le flux toutes les 15 minutes
- Nœud IF — filtre les articles publiés dans les dernières 24h
- Nœud HTTP Request — poste le titre et le lien vers un webhook Slack/Mattermost
Chaque nœud se configure par formulaire, pas par code — mais un nœud Code existe pour écrire du JavaScript arbitraire quand la logique dépasse ce que les nœuds visuels permettent :
// Nœud Code — transformer les données entre deux étapes
const items = $input.all();
return items
.filter(item => new Date(item.json.pubDate) > Date.now() - 86400000)
.map(item => ({
json: {
text: `Nouvel article : ${item.json.title} — ${item.json.link}`
}
}));Ce mélange no-code/code est ce qui distingue n8n des outils purement visuels : on reste dans l'éditeur graphique pour 90% du workflow, et on tombe dans du JS uniquement pour la logique qui le justifie.
Credentials et sécurité
n8n stocke les identifiants de connexion (clés API, OAuth tokens) chiffrés dans sa base, séparément des workflows. Un workflow partagé ou exporté en JSON ne contient jamais les secrets — seulement une référence au credential stocké côté serveur.
# Variable obligatoire pour chiffrer les credentials au repos
-e N8N_ENCRYPTION_KEY="une-clé-longue-et-aléatoire"Sans N8N_ENCRYPTION_KEY fixée explicitement, n8n en génère une au premier démarrage — mais si le container est recréé sans persister cette clé, tous les credentials stockés deviennent illisibles. Fixez-la et sauvegardez-la avec le reste de la config.
Cas d'usage réels
| Besoin | Workflow n8n |
|---|---|
| Backup automatique | Cron nocturne → dump PostgreSQL → upload vers S3/Backblaze |
| Veille technique | RSS Trigger → filtre mots-clés → post Mattermost |
| Onboarding client | Formulaire Typeform → création compte → email Postmark → ligne Notion |
| Monitoring custom | Cron → requête HTTP santé service → alerte si code ≠ 200 |
| Synchro CRM ↔ facturation | Webhook nouveau client → création facture → mise à jour tableur |
Le nœud Webhook transforme n8n en petit backend d'automatisation : n'importe quel service qui peut envoyer une requête HTTP POST peut déclencher un workflow n8n, qui peut à son tour appeler n'importe quelle autre API. C'est un glue-code visuel entre systèmes qui ne se parlent pas nativement.
n8n vs Zapier vs Make
| Critère | n8n (self-hosted) | Zapier | Make |
|---|---|---|---|
| Coût à l'exécution | Aucun | Par tâche | Par opération |
| Nombre d'intégrations | ~400 | ~7000 | ~2000 |
| Code custom dans un nœud | Oui (JS/Python) | Limité | Limité |
| Données hébergées où | Chez vous | Chez Zapier | Chez Make |
| Complexité workflow | Élevée possible | Simple | Moyenne |
Zapier gagne largement en nombre d'intégrations préconstruites — pour connecter deux SaaS obscurs sans écrire de code, c'est souvent plus rapide. n8n compense avec le nœud HTTP Request générique : si un service expose une API REST, n8n peut s'y connecter même sans intégration native dédiée.
n8n demande un serveur et une base de données — ce n'est pas un outil "cinq minutes et c'est parti" comme Zapier. Mais sur une infrastructure qui tourne déjà Docker et PostgreSQL, le coût marginal est nul, et la limite d'exécutions disparaît complètement. Pour qui automatise beaucoup, c'est la différence entre payer un abonnement qui grimpe avec l'usage et payer une fois pour un serveur qui tourne indéfiniment.