Quand j’ai découvert n8n pour la première fois, j’étais encore sur le plan gratuit de Zapier. Cinq workflows, 100 tâches par mois… et bam, le quota était atteint en deux jours. La solution était évidente : le self-hosting. Depuis que j’ai déployé n8n sur mon propre VPS avec Coolify, je n’ai plus jamais regardé en arrière.
Zapier et Make : super, mais vite hors de prix
Zapier et Make sont de très bons outils. Mais dès que tu commences à automatiser sérieusement (collecte de leads, synchronisation de bases de données), tu te heurtes à un mur tarifaire.
Ce qui m’a fait bondir :
- Zapier : le plan gratuit limite à 5 Zaps et 100 tâches par mois. Le plan Professional commence à 29,99 €/mois pour 750 tâches. Pas de logique conditionnelle avancée sans payer.
- Make : un peu plus généreux avec 1 000 opérations gratuites. Mais dès que tu veux des exécutions rapides ou plus de volume, le plan Core démarre à 9 €/mois, et la facture grimpe vite.
n8n est open-source (source-available). En l’hébergeant toi-même, tu débloques des workflows et des exécutions illimitées, avec une interface visuelle tout aussi claire que celle des concurrents. Tout ça pour le prix de ton VPS, soit quelques euros par mois.
Prérequis
Avant de te lancer, vérifie que tu as :
- Un VPS sous Debian ou Ubuntu (2 Go de RAM minimum recommandé)
- Coolify déjà installé et accessible dans ton navigateur
- Un nom de domaine ou un sous-domaine qui pointe vers l’IP de ton VPS (ex:
n8n.tondomaine.fr) - Un accès SSH à ton serveur pour dépanner si besoin
Si Coolify n’est pas encore installé, lance cette commande :
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash
Déployer n8n sur Coolify
Coolify transforme un déploiement Docker qui prendrait normalement une demi-heure en quelques clics.
Étape 1 : Créer un nouveau service
- Dans ton tableau de bord Coolify, clique sur New Resource puis sur Service.
- Cherche n8n dans le catalogue. Coolify propose un template officiel.
- Sélectionne le template et choisis ton serveur cible.
Étape 2 : Configurer le domaine
Dans le champ Domain, saisis ton sous-domaine :
https://n8n.tondomaine.fr
Coolify configure automatiquement le reverse proxy Traefik et génère le certificat SSL Let’s Encrypt.
Étape 3 : Les variables d’environnement
C’est l’étape décisive. Dans l’onglet Environment Variables de ton service Coolify, ajoute ces variables :
# L'URL publique de ton instance (pour que les webhooks fonctionnent)
N8N_HOST=n8n.tondomaine.fr
N8N_PORT=5678
N8N_PROTOCOL=https
WEBHOOK_URL=https://n8n.tondomaine.fr/
# Compte administrateur initial
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=un_mot_de_passe_tres_solide
# Fuseau horaire (important pour les triggers CRON !)
GENERIC_TIMEZONE=Europe/Paris
TZ=Europe/Paris
# Chiffrement des credentials stockés (génère une chaîne aléatoire)
N8N_ENCRYPTION_KEY=ta_cle_secrete_aleatoire_de_32_chars
# Email pour les notifications et la récupération de compte
N8N_EMAIL_MODE=smtp
N8N_SMTP_HOST=smtp.tonprovider.fr
N8N_SMTP_PORT=587
N8N_SMTP_USER=ton@email.fr
N8N_SMTP_PASS=mot_de_passe_smtp
N8N_SMTP_SENDER=n8n@tondomaine.fr
N8N_ENCRYPTION_KEY vide ou avec une valeur par défaut. Cette clé chiffre tous tes credentials (tokens API, mots de passe) dans la base de données. Si tu la perds ou la changes, tes credentials existants deviendront inutilisables. Génère-la avec la commande : openssl rand -hex 24
Étape 4 : Configurer le volume persistant
Dans l’onglet Storages de Coolify, vérifie qu’un volume est bien monté sur /home/node/.n8n. C’est le dossier où n8n stocke sa base SQLite et tes workflows. Sans ça, tu perds toutes tes données au prochain redémarrage du container.
# Équivalent Docker Compose pour référence
volumes:
- n8n_data:/home/node/.n8n
Étape 5 : Lancer le déploiement
Clique sur Deploy. Coolify va télécharger l’image n8nio/n8n:latest, appliquer les variables, configurer Traefik et démarrer le container. Ton instance sera en ligne sur https://n8n.tondomaine.fr d’ici une ou deux minutes.
ufw allow 80 && ufw allow 443).
Sécuriser l’accès à ton interface n8n
L’authentification basique (N8N_BASIC_AUTH_ACTIVE) offre une première protection, mais on peut faire plus robuste.
Activer l’authentification native
Sur les versions récentes de n8n, tu peux activer le système d’authentification intégré. Ajoute ceci dans tes variables d’environnement :
N8N_USER_MANAGEMENT_DISABLED=false
Au premier lancement, n8n te demandera de créer un compte propriétaire avec un email et un mot de passe.
Restreindre l’accès par IP
Si tu veux masquer l’interface au public tout en gardant les webhooks fonctionnels, tu peux configurer une règle Traefik via les labels Docker. Une méthode encore plus simple consiste à utiliser Cloudflare Access pour protéger le sous-domaine avec une authentification SSO.
Mettre à jour n8n
Avec Coolify, les mises à jour sont triviales. Va dans ton service n8n, remplace le tag latest par une version spécifique (comme 1.45.0) pour contrôler ce que tu installes, puis clique sur Redeploy. Le volume persistant garde tes données intactes.
Gérer la consommation de RAM
Sur un VPS à 2 Go de RAM partagés avec d'autres apps, garde un œil sur ta consommation avec <code>docker stats</code>. Si n8n ralentit ou subit des OOM kills, il faudra peut-être passer à un VPS de 4 Go ou limiter les exécutions parallèles via la variable <code>EXECUTIONS_PROCESS=main</code>.
Ton premier workflow : RSS vers Discord
Maintenant que tout fonctionne, créons un cas d’usage concret. Ce workflow va surveiller un flux RSS (le blog de Hacker News, par exemple) et envoyer un message Discord pour chaque nouvel article.
Étape 1 : Créer le workflow
Dans l’interface n8n, clique sur New Workflow puis sur Add first step.
Étape 2 : Le déclencheur (Schedule Trigger)
Ajoute un nœud Schedule Trigger configuré pour tourner toutes les 15 minutes. Il vérifiera le flux RSS à intervalle régulier.
Trigger type : Interval
Every : 15
Unit : Minutes
Étape 3 : Lire le flux (RSS Read)
Connecte un nœud RSS Read au déclencheur. Renseigne l’URL du flux :
URL: https://hnrss.org/newest
Étape 4 : Filtrer les doublons (IF)
Pour ne pas spammer ton salon avec d’anciens articles, ajoute un nœud IF qui vérifie si la publication date de moins de 15 minutes :
// Dans le nœud IF, condition :
{{ $json.isoDate }} > {{ $now.minus(15, 'minutes').toISO() }}
Étape 5 : Envoyer la notification (Discord)
Connecte un nœud Discord sur la sortie true du nœud IF. Tu auras besoin de l’URL d’un webhook Discord, que tu peux générer dans les paramètres de ton salon (Intégrations > Webhooks).
Webhook URL: https://discord.com/api/webhooks/TON_ID/TON_TOKEN
Content: Nouvel article : {{ $json.title }}
Lien : {{ $json.link }}
Résultat final
Clique sur Save puis Activate. Ton automatisation tourne maintenant en tâche de fond sur ton serveur, sans aucune limite d’exécution.
Si tu utilises Telegram, il suffit de remplacer le nœud Discord par un nœud Telegram. Renseigne le token de ton bot et l’ID de la conversation. Le principe reste exactement le même.
- Synchroniser les réponses d'un formulaire vers un Google Sheet et envoyer un email de bienvenue.
- Surveiller le prix d'un produit et recevoir une alerte quand il baisse.
- Générer un résumé quotidien de tes nouvelles issues GitHub.
- Déclencher des actions à chaque nouvelle soumission de formulaire sur ton site web.
L’auto-hébergement te sort des quotas frustrants du SaaS pour te redonner le contrôle de tes données. Voir son premier workflow tourner dans le vide sans jamais afficher l’erreur “quota dépassé” est une satisfaction dont on ne se lasse pas.
Pour aller plus loin
- Installer Coolify sur un VPS Hostinger : Ce guide couvre l’installation de Coolify de A à Z en moins de 10 minutes.
- Sécuriser son VPS Linux : Avant d’exposer n8n au monde entier, verrouille ton serveur avec les clés SSH, UFW et Fail2ban.
- Top 5 des alternatives open-source à vos SaaS payants : Découvre Vaultwarden, Umami, Coolify et Linkwarden pour remplacer tes autres abonnements.