Héberger n8n soi-même sur un VPS : la config qui tient en production
Par koati romeo · Mis à jour le · 8 min de lecture
Cet article contient un lien affilié vers Hostinger. Si vous passez par ce lien, vous obtenez une réduction et le site touche une commission. Le prix ne change pas pour vous, et rien dans ce guide ne dépend de cet hébergeur.
En bref
- Ce que ça résout : l’installation n8n par défaut tourne sur SQLite en un seul processus, sans Python ni ffmpeg. Elle suffit pour essayer, pas pour tenir.
- Ce qu’on met à la place : Postgres, Redis, le mode queue, un worker, et une image maison qui embarque de quoi lire un PDF ou piloter un navigateur.
- Le temps : une demi-heure de durcissement du serveur, dix minutes de déploiement.
- Le coût : à partir d’environ 7 à 10 euros par mois pour un VPS de 8 Go.
- Le piège que presque personne ne montre : votre pare-feu ne bloque pas les ports que Docker publie.
Pourquoi l’installation par défaut ne tient pas
La commande d’installation officielle de n8n donne un service qui fonctionne en trente secondes. C’est sa qualité et c’est son piège, parce que deux choix par défaut se retournent contre vous dès que l’usage devient sérieux.
Le premier, c’est la base de données. n8n démarre sur SQLite, un fichier posé dans un volume. SQLite est excellent, mais il sérialise les écritures. Quand plusieurs exécutions veulent écrire leur journal au même moment, elles attendent. Vous ne voyez pas d’erreur, vous voyez des exécutions qui traînent.
Le second, c’est le mode d’exécution. Par défaut n8n exécute les workflows dans le processus qui reçoit la requête. Un webhook lent bloque donc les suivants. Sur un serveur de test, cela ne se remarque pas. Le jour où un client déclenche un traitement de trois minutes, tout ce qui arrive derrière fait la queue.
Et ce que l’image officielle n’embarque pas
L’image officielle ne contient ni Python, ni ffmpeg, ni bibliothèque de lecture de PDF, ni navigateur. Le nœud Code ne charge aucun module externe. Concrètement, dès qu’un workflow doit extraire le texte d’une facture, convertir un fichier audio, ou lire une page qui ne rend rien sans JavaScript, vous sortez du conteneur ou vous construisez le vôtre.
C’est la deuxième option qui rend l’auto-hébergement réellement intéressant. Une image maison ajoute Python et ses bibliothèques, ffmpeg, poppler pour les PDF, et un Chromium piloté. À partir de là, le nœud Code fait ce qu’un script ferait sur votre machine.
L’architecture qui tient
requête ──► n8n (principal) accepte, répond tout de suite
│
├──► Redis la file des travaux
│ │
│ └──► n8n-worker exécute, 6 en parallèle
│
└──► Postgres workflows, identifiants, exécutions
L’instance principale ne calcule plus rien. Elle encaisse la requête et rend la main immédiatement. Le travail part dans une file Redis, et un worker le prend. Un webhook lent ne bloque plus personne, et une montée de charge se traite en ajoutant un worker plutôt qu’en louant un serveur plus gros.
Postgres remplace SQLite pour la même raison qu’on ne tient pas une comptabilité dans un tableur partagé : plusieurs processus écrivent en même temps.
Le serveur, avant n8n
Un n8n bien configuré sur un serveur ouvert reste un serveur ouvert. L’ordre compte, et chaque étape se teste avant la suivante.
Le piège du fichier SSH qui ne sert à rien
Sur Ubuntu 24.04, /etc/ssh/sshd_config commence par une ligne Include, et en OpenSSH la première valeur obtenue gagne. Cloud-init dépose souvent un fichier dans sshd_config.d qui réactive les mots de passe. Vous éditez alors le fichier principal, vous redémarrez le service, et rien ne change. Sans la moindre erreur.
La seule vérification qui fait foi porte sur la configuration effective, pas sur un fichier :
sshd -T | grep -E « ^(passwordauthentication|permitrootlogin) »
Le pare-feu ne protège pas ce que Docker publie
C’est le point le plus important de cet article, et celui que la plupart des guides omettent.
UFW filtre la chaîne INPUT, c’est-à-dire le trafic destiné à la machine. Docker, lui, publie ses ports en écrivant dans FORWARD par la NAT, et ces règles sont évaluées avant. Résultat : un conteneur qui publie un port est joignable depuis Internet, alors que ufw status affiche un tableau impeccable.
La démonstration prend une minute :
docker run -d –name test-expose -p 9999:80 nginx:alpine
ufw status | grep 9999 # aucune règle n’autorise ce port
Depuis une autre machine, curl http://IP_DU_SERVEUR:9999 affiche la page nginx.
La correction passe par la chaîne DOCKER-USER, qui est évaluée avant les règles de publication de Docker. On y laisse passer le trafic de retour et les ports 80 et 443, on jette le reste. Les commandes exactes sont dans le dépôt public cité plus bas.
Deuxième filet, et il vaut le premier : le pare-feu de votre hébergeur. Il filtre avant la machine, donc Docker ne peut pas le contourner puisqu’il ne s’y exécute pas.
Les trois variables qui cassent tout
N8N_ENCRYPTION_KEYLaissée vide, n8n en génère une et l’écrit dans le volume. Le jour où le volume est recréé, toutes vos connexions sont à refaire à la main.
La même clé sur le principal et le workerC’est la faute la plus fréquente du mode queue. Le worker démarre, échoue à déchiffrer, et ne dit jamais pourquoi.
WEBHOOK_URLFausse ou absente, n8n fabrique des adresses en localhost. Aucune erreur au démarrage : vous le découvrez quand un service tiers ne rappelle jamais.
La clé de chiffrement se sauvegarde ailleurs que sur le serveur. Une base restaurée sans elle rend des identifiants illisibles.
Auto-hébergé ou infogéré : comment trancher
Coût mensuelle prix du VPS, environ 7 à 10 € pour 8 Gofacturation liée à l’usage, qui monte avec le volume
Exécutionsbornées par la machine, pas par un quotacomptées
Code arbitraireoui, Python et modules Node comprisrestreint
Donnéessur votre serveur, dans le pays que vous choisissezchez l’éditeur
Ce que ça coûte vraimentune demi-heure d’installation, puis la veille de sécuritérien, c’est le principe
L’auto-hébergement gagne dès que le volume monte ou qu’un workflow doit toucher un fichier. L’offre infogérée reste le bon choix si personne chez vous ne veut lire un journal système à 23 heures.
Ce qu’il faut comme machine
Comptez 8 Go de mémoire et 2 vCPU pour la pile complète, principal, worker, Postgres et Redis. Avec 4 Go ça tourne, mais la construction de l’image installe Chromium et c’est précisément le moment où la mémoire part. Le swap n’est pas un luxe, c’est ce qui évite que le processus se fasse tuer au milieu.
N’importe quel fournisseur convient : les commandes sont les mêmes partout, apt, ufw et sshd ne savent pas où ils tournent.
Le code
Le compose, le Dockerfile et toutes les commandes de durcissement sont publics, en français et en anglais :
Questions fréquentes
Combien coûte un n8n auto-hébergé par mois ?
Le prix du VPS, rien d’autre. Un serveur de 8 Go se trouve entre 7 et 10 euros par mois. Le nom de domaine s’ajoute, environ 10 euros par an, et le certificat est gratuit.
Faut-il savoir administrer un serveur Linux ?
Il faut savoir copier des commandes et lire ce qu’elles renvoient. Le vrai prérequis n’est pas technique, il est régulier : un serveur exposé demande d’appliquer les mises à jour de sécurité.
Que se passe-t-il si je perds la clé de chiffrement ?
Tous les identifiants enregistrés deviennent illisibles, et chaque intégration est à reconnecter à la main. C’est irréversible. Sauvegardez-la hors du serveur, dès le premier démarrage.
Un seul worker suffit-il ?
Un worker à six exécutions simultanées couvre largement un usage individuel ou une petite équipe. On en ajoute quand la file Redis ne revient plus à zéro entre deux pointes.
Le nœud Code ouvert en grand, est-ce dangereux ?
Oui, si plusieurs personnes ont accès à l’éditeur. Autoriser tous les modules Node revient à donner à quiconque écrit un workflow la capacité de lire le système de fichiers du conteneur. Sur une instance à un seul utilisateur c’est un confort. À plusieurs, il faut lister explicitement les modules autorisés.
Peut-on migrer d’une offre infogérée vers son propre serveur ?
Les workflows s’exportent en JSON et se réimportent. Les identifiants, non : ils sont chiffrés côté éditeur et se reconnectent un par un. C’est la partie longue de la migration, prévoyez-la.
Le stack IA du solopreneur
25 outils testés, le PDF + 1 email/semaine. Désinscription en 1 clic.
Merci ✓ Vérifiez votre boîte mail.