Installer n8n sur un VPS : le guide complet pour débutants (Docker, HTTPS, sécurisation)

Vignette de l'article : Installer n8n sur un VPS — Docker, HTTPS et sécurisation, pas à pas

Écrit par

dans

·

n8n est devenu mon outil d’automatisation principal. Auto-hébergé sur un petit VPS, il exécute un nombre illimité de workflows pour le prix d’un café par semaine. Là où Zapier et Make facturent chaque étape exécutée, mon instance publie, lit des Google Sheets et appelle des API tous les jours sans aucun compteur, pour le seul prix du serveur. Soyons précis dès la première ligne : à faible volume, un abonnement Make coûte moins cher qu’un VPS. Le seuil à partir duquel l’auto-hébergement devient réellement rentable, je vous le donne chiffré juste en dessous.

Dans ce guide, je vous montre comment installer n8n sur un VPS, de zéro jusqu’à une installation propre, sécurisée et accessible en HTTPS. C’est celle que j’utilise en production. Aucune compétence d’administrateur système requise : si vous savez copier-coller des commandes et suivre des étapes dans l’ordre, vous y arriverez.

Une précision avant de commencer. Ce guide décrit l’installation que j’utilise, pas la seule possible ni forcément la meilleure. J’ai retenu Hostinger et Docker parce que cette configuration tourne chez moi sans incident depuis des mois, pas parce que j’aurais testé les quinze alternatives. À chaque étape, je vous dis pourquoi j’ai tranché ainsi, pour que vous puissiez trancher autrement en connaissance de cause. Et une section en fin d’article liste les alternatives sérieuses, avec les cas où elles valent mieux que ce montage.

💡 Cinq mots, si vous n’avez jamais touché à un serveur. Un VPS est un ordinateur loué chez un hébergeur, allumé en permanence, que vous pilotez à distance. SSH est le moyen de s’y connecter : une fenêtre de texte où vous tapez des commandes, sans souris ni bureau. Docker range chaque logiciel dans un conteneur, une boîte isolée contenant tout ce dont il a besoin, ce qui évite d’installer des dépendances à la main. Un reverse proxy est le portier placé devant ces conteneurs : il reçoit les visiteurs, gère le HTTPS et les oriente vers le bon service. Et un sous-domaine, c’est n8n.votredomaine.fr, une adresse rattachée à un domaine que vous possédez déjà.

n8n Cloud, Zapier, Make… ou auto-hébergement ?

Avant de sortir la carte bleue pour un abonnement d’automatisation, posons les chiffres. Le critère qui change tout, c’est le volume d’opérations. Zapier et Make facturent chaque étape exécutée, pas le workflow. Un workflow de 10 nœuds lancé 2 fois par jour consomme donc environ 600 opérations par mois ; un scénario de 30 modules à la même fréquence en consomme 1 800.

SolutionCoût mensuelCe qui est inclusPour qui
Make — plan gratuit0 €1 000 opérations/moisUn ou deux workflows légers
Make — Core≈ 12 $10 000 opérations/moisVolume faible à moyen
Zapier — Professionalà partir de ≈ 20 $Facturé à la tâche, selon le palier choisiLe plus large catalogue d’applications
n8n Cloud — Starter20 €2 500 exécutions/mois, workflows illimitésCeux qui refusent toute technique
n8n auto-hébergé (VPS)à partir de 5,49 €, puis ≈ 12 €Exécutions et workflows illimitésVolume élevé, maîtrise des données

Tarifs relevés en septembre 2026 sur les pages officielles des quatre éditeurs. Ils évoluent régulièrement : vérifiez avant de vous engager. Zapier et Make affichent leurs prix en dollars, n8n et Hostinger en euros.

Regardons ces chiffres honnêtement, parce qu’ils ne disent pas ce qu’on lit partout. À faible volume, l’auto-hébergement ne fait pas économiser d’argent. Et je suis très en dessous du seuil : le calcul ne bascule qu’au-delà de 10 000 opérations par mois, soit environ 330 par jour, là où mon instance en consomme quelques centaines. Tout ce qui tourne chez moi tiendrait dans le plan Core de Make. Sans doute même dans son offre gratuite.

Alors pourquoi j’auto-héberge quand même ? Pour trois raisons qui n’ont rien à voir avec le prix. La première, c’est que je teste beaucoup. Mon instance héberge aujourd’hui quatorze workflows, dont un seul tourne vraiment en continu. Les autres sont des essais : des montages construits puis laissés en pause, des idées reprises un mois plus tard, quelques-unes abandonnées. Chez un service facturé à l’opération, cette façon de travailler se paie, et on finit par hésiter avant de tenter quoi que ce soit. Sur mon serveur, la question ne se pose pas. Je n’ai encore parlé d’aucun de ces montages ici ; ils arriveront quand ils auront tourné assez longtemps pour que j’aie quelque chose d’honnête à en dire.

Les identifiants de mes comptes (Pinterest, Google, diverses API) restent par ailleurs sur mon serveur et ne transitent par aucun tiers. Et un workflow complexe ne me coûte pas plus cher qu’un workflow simple, alors que chez Make chaque module ajouté est facturé à chaque exécution. Le vrai coût de l’auto-hébergement se paie en temps : une heure d’installation, celle que ce guide va vous faire gagner, puis quelques minutes de maintenance par mois.

Étape 1 — Choisir et commander son VPS

n8n est léger. Deux gigaoctets de RAM et 1 à 2 vCPU suffisent largement pour plusieurs dizaines de workflows. En pratique, les offres d’entrée de gamme démarrent aujourd’hui à 4 Go, vous serez donc confortable d’emblée. Inutile de surdimensionner : vous pourrez augmenter la taille du serveur plus tard en quelques clics.

J’utilise personnellement un VPS Hostinger. L’interface est en français et, gros avantage pour les débutants, un template n8n est proposé préinstallé. Au moment de créer le VPS, vous choisissez « Ubuntu 24.04 avec n8n » comme système d’exploitation, et l’application est déployée automatiquement dans Docker. L’offre d’entrée (KVM 1 : 4 Go de RAM, 1 vCPU, 50 Go NVMe) est affichée à 5,49 €/mois et suffit largement. Attention à ce prix d’appel : il suppose un engagement long, et le renouvellement passe à 11,99 €/mois. Intégrez-le à votre calcul dès le départ, et comparez les tarifs de renouvellement chez les autres hébergeurs plutôt que les prix affichés.

Commander le serveur avant d'installer n8n sur un VPS : emplacement France, système Ubuntu 24.04 avec n8n préinstallé, sauvegardes hebdomadaires
L’image « Ubuntu avec n8n » proposée au moment de la commande : l’installation est faite, il ne reste qu’à configurer. L’IP et le nom d’hôte sont des exemples.

Deux chemins mènent au même résultat, et l’étape 3 les détaille tous les deux. Avec le template, Hostinger déploie n8n et Traefik pour vous : il ne vous reste qu’à vérifier la configuration. Sans template, chez n’importe quel hébergeur, vous installez la même chose à la main en quelques commandes. Le montage obtenu est identique dans les deux cas.

Étape 2 — Quelle adresse pour votre instance

Avant d’installer quoi que ce soit, une décision à prendre. Elle paraît anodine et elle ne l’est pas.

Si vous avez pris le template Hostinger, vous avez déjà une adresse qui fonctionne : n8n répond sur https://n8n.[nom-d-hôte-de-votre-VPS], avec un certificat HTTPS valide, sans rien configurer. Pour la plupart des gens, c’est la bonne réponse, et vous pouvez passer directement à l’étape 3.

Si vous installez à la main chez un autre hébergeur, il vous faut en revanche une adresse à vous avant de lancer les conteneurs. Traefik demande le certificat au démarrage, pour le nom que vous lui indiquez ; sans enregistrement DNS déjà en place, la demande échoue.

Les deux options, et ce qu’elles coûtent

Le nom d’hôte fourni par l’hébergeur ne coûte rien, fonctionne immédiatement, et surtout il isole votre marque. Si un robot classe un jour votre outil comme suspect, c’est ce nom d’hôte qui porte l’étiquette. Sa faiblesse : il ne vous appartient pas. Le jour où vous changez d’hébergeur, l’adresse disparaît, et toutes vos URL de rappel OAuth sont à refaire. Quand on a mis trois semaines à obtenir un accès API, ce n’est pas un détail.

Un domaine à vous donne une adresse stable, que vous emportez d’un hébergeur à l’autre. Sa faiblesse, je l’ai apprise à mes dépens : un sous-domaine partage la réputation du domaine principal. J’ai mis mon instance sur un sous-domaine de ma marque, Google l’a classée « page trompeuse », et c’est le nom du blog qui s’est retrouvé derrière un avertissement rouge.

⚠ La configuration que je recommanderais aujourd’hui : soit le nom d’hôte de l’hébergeur, soit un domaine séparé acheté quelques euros pour vos outils techniques. Pas le domaine de votre marque. Je n’ai pas encore déplacé le mien parce qu’une autorisation d’API en cours dépend de cette adresse, mais c’est la première chose que je ferai ensuite.

Si vous choisissez votre propre domaine

Il s’agit de faire pointer un sous-domaine, par exemple n8n.votredomaine.fr, vers l’adresse de votre serveur. Trois manipulations, dans l’ordre :

  • Récupérez l’adresse IP publique de votre VPS (affichée dans le panel de votre hébergeur).
  • Dans la zone DNS de votre domaine, créez un enregistrement de type A : nom n8n, valeur = l’IP du VPS.
  • Patientez le temps de la propagation DNS (souvent quelques minutes, parfois quelques heures), puis vérifiez que l’adresse répond avant de lancer l’installation.
Formulaire d'ajout d'un enregistrement DNS : champs Nom, TTL, Type et Enregistrement
L’ajout d’un enregistrement DNS. Le champ Nom attend le seul sous-domaine, ici n8n : le domaine est complété automatiquement.
Enregistrement DNS de type A faisant pointer le sous-domaine n8n vers l'adresse IP du serveur, avec un TTL de 14400
L’enregistrement une fois créé : type A, TTL 14400, pointant vers l’IP du serveur. C’est le résultat à obtenir avant de continuer.

Étape 3 — Installer n8n sur un VPS avec Docker

Commençons par le point commun aux deux chemins : se connecter au serveur. Sur Windows, ouvrez PowerShell ; sur Mac ou Linux, le Terminal. Tapez la commande ci-dessous en remplaçant l’adresse par l’IP de votre VPS, puis saisissez le mot de passe fourni par votre hébergeur. Rien ne s’affiche pendant que vous tapez le mot de passe, c’est normal.

ssh root@VOTRE.IP.DU.VPS

⚠ À partir de cette commande, vous n’êtes plus sur votre ordinateur. La fenêtre PowerShell n’est qu’une porte d’entrée : tout ce que vous taperez ensuite s’exécute sur le serveur distant, et rien de tout cela n’apparaîtra sur votre PC. C’est la confusion la plus fréquente quand on débute.

3A — Avec le template, l’installation est déjà faite

Si vous avez choisi l’image « Ubuntu 24.04 avec n8n » au moment de commander le VPS, tout est déjà en place quand le serveur démarre. n8n et Traefik tournent, le certificat HTTPS est demandé automatiquement, et il n’y a aucune configuration à écrire. C’est le chemin que j’ai pris. Placez-vous dans le dossier de configuration et regardez ce qui s’y trouve :

cd /docker/n8n
ls -la
docker compose ps

Deux fichiers vous attendent. docker-compose.yml décrit les conteneurs à lancer. Le fichier .env contient les valeurs qu’il utilise : votre domaine, le sous-domaine, l’adresse e-mail pour le certificat et le fuseau horaire. Ce sont les quatre variables de la capture ci-dessus. Ouvrez-le pour vérifier qu’elles correspondent bien à votre domaine :

nano .env

nano est un éditeur de texte qui fonctionne directement dans la fenêtre SSH. On enregistre avec Ctrl+O suivi d’Entrée, on quitte avec Ctrl+X. Si vous changez une valeur, appliquez-la avec docker compose up -d.

Contenu du fichier .env : sous-domaine, nom de domaine, adresse pour le certificat SSL et fuseau horaire
Le fichier .env : quatre variables suffisent. La clé de chiffrement, volontairement absente de cette capture, ne doit jamais être partagée.

Ce raccourci fait gagner une heure, et je ne le regrette pas. Sa contrepartie, c’est qu’on ignore ce qui tourne sur sa machine tant qu’on n’a pas ouvert ces deux fichiers. D’où la section suivante, qui reconstruit exactement la même chose à la main. Lisez-la même si vous n’en avez pas besoin aujourd’hui : le jour où quelque chose casse, c’est là-dedans qu’il faudra aller.

3B — Sans template, chez n’importe quel hébergeur

Installez d’abord Docker s’il n’est pas déjà là :

curl -fsSL https://get.docker.com | sh

Créez le dossier qui contiendra la configuration, placez-vous dedans, et ouvrez un éditeur :

mkdir -p /docker/n8n && cd /docker/n8n
nano docker-compose.yml

Collez le contenu ci-dessous (dans PowerShell, un clic droit colle), puis enregistrez avec Ctrl+O et Entrée, et quittez avec Ctrl+X. Cette configuration installe deux conteneurs : n8n, et Traefik qui sert de portier et obtient le certificat HTTPS tout seul auprès de Let’s Encrypt.

services:
  traefik:
    image: traefik
    restart: always
    command:
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.web.http.redirections.entryPoint.to=websecure"
      - "--entrypoints.web.http.redirections.entryPoint.scheme=https"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.mytlschallenge.acme.tlschallenge=true"
      - "--certificatesresolvers.mytlschallenge.acme.email=${SSL_EMAIL}"
      - "--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json"
      - "--accesslog=true"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - traefik_data:/letsencrypt
      - /var/run/docker.sock:/var/run/docker.sock:ro
  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: always
    ports:
      - "127.0.0.1:5678:5678"
    labels:
      - traefik.enable=true
      - traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
      - traefik.http.routers.n8n.entrypoints=web,websecure
      - traefik.http.routers.n8n.tls.certresolver=mytlschallenge
    environment:
      - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
      - N8N_PROTOCOL=https
      - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
      - N8N_PROXY_HOPS=1
    volumes:
      - n8n_data:/home/node/.n8n
volumes:
  traefik_data:
  n8n_data:

Créez ensuite le fichier des variables, celui de la capture plus haut :

nano .env
DOMAIN_NAME=votredomaine.fr
SUBDOMAIN=n8n
SSL_EMAIL=vous@votredomaine.fr
GENERIC_TIMEZONE=Europe/Paris

Lancez le tout, puis vérifiez que les deux conteneurs sont bien démarrés :

docker compose up -d
docker compose ps

Dans les deux cas, une à deux minutes plus tard, ouvrez https://n8n.votredomaine.fr dans votre navigateur : n8n vous accueille avec la création du compte propriétaire. Le cadenas HTTPS est déjà là, Traefik s’est occupé du certificat sans rien demander.

Écran de connexion n8n servi en HTTPS sur le sous-domaine, certificat valide
L’écran de connexion, servi en HTTPS avec un certificat valide obtenu automatiquement par Traefik.

💡 Le détail qui évite des heures de débogage. Dans le fichier ci-dessus, la ligne WEBHOOK_URL sert à dire à n8n quelle est son adresse vue de l’extérieur. Il en a besoin parce qu’il fabrique lui-même des adresses qu’il vous demandera ensuite de recopier chez Google, Pinterest ou ailleurs : celle d’un webhook, le point d’entrée par lequel un service extérieur vient déclencher un workflow, et celle du retour après une autorisation. Si cette ligne est fausse ou absente, n8n fabrique ces adresses avec son nom interne, du genre localhost:5678, qui ne veut rien dire en dehors du serveur. Elles s’affichent normalement, vous les recopiez, et le service extérieur n’atteint jamais votre instance. Aucun message d’erreur ne vous prévient.

Étape 4 — Fermer l’interface, puis entretenir

⚠ Avant de commencer : c’est la partie la plus technique du guide, et la seule où une erreur de frappe peut empêcher votre instance de redémarrer. Rien d’irréversible, je vous donne la marche arrière plus bas. Mais si vous préférez ne pas y toucher, il y a une alternative honnête : n8n Cloud gère cette sécurité pour vous, et 20 € par mois pour ne jamais ouvrir un fichier de configuration est un arbitrage parfaitement défendable. Vous pouvez aussi vous arrêter à l’étape 3 pour aujourd’hui et revenir ici plus tard, à tête reposée.

C’est la partie sur laquelle j’ai appris le plus cher, et celle que la plupart des guides sautent. Une instance n8n installée comme ci-dessus présente au monde entier une page demandant une adresse e-mail et un mot de passe, sur un domaine que personne ne connaît. Vue par un robot, elle ressemble à s’y méprendre à une page d’hameçonnage. J’ai fini avec mon sous-domaine classé « page trompeuse » par Google et un avertissement rouge « Site dangereux » devant l’adresse. Voici le correctif.

Le principe : ajouter une demande de mot de passe au niveau du reverse proxy, devant l’application. Le visiteur non authentifié ne voit plus de page de connexion, il reçoit un refus. Mais il ne faut pas tout fermer : les webhooks et l’adresse de rappel OAuth2 doivent rester joignables, sans quoi vos intégrations cessent de fonctionner. D’où deux règles de routage vers le même conteneur, l’une protégée, l’autre ouverte sur les seuls chemins nécessaires.

Premier réflexe, avant de modifier quoi que ce soit : faites une copie des deux fichiers. Cinq secondes qui vous permettront de tout remettre en place si ça tourne mal.

cd /docker/n8n
cp docker-compose.yml docker-compose.yml.sauvegarde
cp .env .env.sauvegarde

Générez ensuite un identifiant chiffré. La commande vous demande un mot de passe deux fois, puis affiche une ligne de la forme identifiant:$2y$05$… :

docker run --rm -it httpd:alpine htpasswd -nB VOTRE_IDENTIFIANT

Reportez cette ligne dans votre .env sous la clé N8N_AUTH, en doublant chaque caractère dollar :

N8N_AUTH=identifiant:$$2y$$05$$le_reste_de_votre_empreinte

⚠ Ce doublement n’est pas un détail. Sans lui, Docker Compose prend les dollars pour des variables, tronque silencieusement l’empreinte, et l’authentification ne protège plus rien. Aucun message d’erreur ne vous prévient. Cette seule subtilité m’a coûté une demi-heure.

Rouvrez le fichier de configuration avec nano docker-compose.yml. Sous le service n8n, repérez la section labels : ce sont les consignes que le conteneur transmet à Traefik, et c’est là que tout se joue. Remplacez cette section par celle-ci, en respectant l’indentation au caractère près. En YAML, deux espaces de décalage changent le sens du fichier.

    labels:
      - traefik.enable=true
      - traefik.http.middlewares.n8n-auth.basicauth.users=${N8N_AUTH}
      - traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
      - traefik.http.routers.n8n.entrypoints=web,websecure
      - traefik.http.routers.n8n.tls.certresolver=mytlschallenge
      - traefik.http.routers.n8n.middlewares=n8n-auth@docker
      - traefik.http.routers.n8n-public.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`) && (PathPrefix(`/webhook`) || PathPrefix(`/webhook-test`) || PathPrefix(`/webhook-waiting`) || PathPrefix(`/rest/oauth2-credential/callback`))
      - traefik.http.routers.n8n-public.priority=100
      - traefik.http.routers.n8n-public.entrypoints=web,websecure
      - traefik.http.routers.n8n-public.tls.certresolver=mytlschallenge

La deuxième ligne crée le contrôle par mot de passe. Les quatre suivantes définissent le routeur de l’interface et lui appliquent ce contrôle. Les quatre dernières créent un second routeur vers le même conteneur, qui ne répond qu’aux adresses de webhook et au retour d’autorisation : sa priorité plus élevée le fait consulter en premier, donc ces chemins-là passent sans mot de passe pendant que tout le reste est fermé.

⚠ Si vous êtes passé par le template, votre section labels contient déjà des lignes traefik.http.middlewares.n8n.headers… Gardez-les, elles règlent les en-têtes de sécurité et n’ont rien à voir avec l’authentification. Dans ce cas, écrivez la ligne middlewares du routeur de l’interface ainsi : traefik.http.routers.n8n.middlewares=n8n@docker,n8n-auth@docker, et ajoutez la même mention au routeur n8n-public.

Relancez, puis vérifiez deux choses plutôt qu’une.

docker compose up -d
docker compose ps

Les deux conteneurs doivent afficher running. Ouvrez ensuite votre adresse dans une fenêtre de navigation privée : une petite boîte doit vous demander un identifiant et un mot de passe avant tout affichage de n8n. Tant que vous ne l’avez pas vue de vos yeux, considérez que votre interface est restée ouverte à tous.

Sortie de docker ps montrant les deux conteneurs n8n et Traefik en fonctionnement
Les deux conteneurs en fonctionnement : n8n, et Traefik qui gère le HTTPS. Si les deux sont « Up », l’installation a réussi.

Vérifiez aussi que vous n’avez pas tout fermé. Dans n8n, ouvrez un workflow contenant un webhook et appelez son adresse depuis votre navigateur : elle doit répondre sans rien demander. Si elle réclame un mot de passe, c’est que la seconde règle de routage n’est pas prise en compte, et vos intégrations extérieures cesseront de fonctionner.

💡 Si quelque chose ne redémarre pas, rien n’est perdu. Les messages d’erreur de Docker désignent presque toujours une ligne précise du fichier, et neuf fois sur dix il s’agit d’un problème d’indentation ou d’un dollar non doublé. Pour revenir à l’état d’avant en une commande : cp docker-compose.yml.sauvegarde docker-compose.yml puis docker compose up -d. Vous retrouvez une instance qui fonctionne, et vous pouvez retenter tranquillement.

⚠ Si vous avez choisi un sous-domaine de votre marque à l’étape 2, c’est le moment de relire cette section. L’authentification ci-dessus supprime la cause du signalement, mais elle ne change rien au fait que ce serait votre nom commercial qui porterait l’étiquette en cas de récidive.

Une fois l’interface fermée, quatre habitudes d’entretien suffisent.

  • Un mot de passe fort et unique sur le compte propriétaire n8n. C’est la porte d’entrée de tout le reste.
  • Des mises à jour régulières : docker compose pull && docker compose up -d une fois par mois. n8n évolue vite et les correctifs de sécurité sont fréquents. Pour savoir où vous en êtes, la version installée s’affiche dans le menu Help, entrée About n8n.
  • Des sauvegardes : le volume n8n_data contient workflows et credentials chiffrés. Sauvegardez-le régulièrement (la plupart des hébergeurs proposent des snapshots automatiques du VPS en option à quelques euros).
  • Le pare-feu du VPS : n’ouvrez que les ports 22 (SSH), 80 et 443. Tout le reste fermé.
Fenêtre À propos de n8n indiquant la version installée, la licence et le lien vers le code source
La version installée, accessible par Help puis About n8n. À comparer régulièrement avec la dernière version publiée : rien ne vous avertit d’une mise à jour.

Coût réel après installation

Voici ce que coûte réellement une installation comme celle décrite dans ce guide, sur l’offre d’entrée :

PosteCoût
VPS (Hostinger KVM 1, 4 Go RAM)5,49 €/mois la première période, puis 11,99 €/mois
n8n (licence Community auto-hébergée)0 €
Certificat HTTPS (Let’s Encrypt via Traefik)0 €
Sous-domaine0 € (inclus avec votre domaine)
Total5,49 € puis ≈12 €/mois, exécutions et workflows illimités

À titre de comparaison, ce qui tourne réellement chez moi (lectures et mises à jour de Google Sheets, quelques appels d’API, un workflow quotidien) représente quelques centaines d’opérations par mois. Chez Make, cela tiendrait dans le plan Core, et sans doute encore dans le plan gratuit. À ce volume, l’auto-hébergement ne me fait donc pas économiser d’argent. Il me débarrasse d’un plafond, ce qui est autre chose. Le jour où j’ajoute cinq workflows quotidiens, ma facture reste identique au centime près ; chez Make, elle change de palier.

Les alternatives à ce montage (et quand elles valent mieux)

Autant le dire clairement plutôt que de vendre ma solution comme la seule : l’auto-hébergement décrit ici n’est pas le bon choix pour tout le monde.

Si vous ne voulez pas être responsable des mises à jour, des sauvegardes et de la sécurité d’un serveur, prenez n8n Cloud. C’est un travail léger, mais réel, et il n’est jamais terminé. À 20 €/mois, vous achetez surtout le droit de ne plus y penser. Et en dessous de 10 000 opérations par mois, Make et Zapier restent moins chers, plus rapides à mettre en place, sans aucune maintenance. Il n’y a aucune honte à y rester. Si vous débutez, commencer là puis migrer plus tard est sans doute plus sage que l’inverse.

Côté hébergeur, Hetzner et Contabo sont souvent moins chers à performances comparables ; OVH et Scaleway hébergent en France si la localisation de vos données compte. Je suis chez Hostinger pour le template n8n préinstallé et l’interface en français, pas au terme d’un comparatif sérieux. Il existe aussi des interfaces de déploiement comme Coolify ou Dokploy, qui gèrent Docker, les certificats et les mises à jour à votre place. Plus confortable sur la durée que le Docker Compose de ce guide, au prix d’une couche supplémentaire à comprendre. Je ne les utilise pas, je préfère savoir exactement ce qui tourne sur ma machine, mais c’est une préférence personnelle et pas une recommandation technique.

Reste la contrepartie honnête de l’auto-hébergement : vous devenez l’administrateur système. Les mises à jour de n8n, les sauvegardes, le renouvellement des certificats, la surveillance de l’espace disque, c’est vous. Si l’instance tombe un dimanche matin, personne ne la relèvera à votre place. Comptez quelques minutes par mois en régime normal, et une soirée de temps en temps quand une mise à jour se passe mal. Si cette phrase vous a fait grimacer, n8n Cloud est un meilleur choix que ce guide.

FAQ

Faut-il savoir coder pour utiliser n8n ?

Non pour l’essentiel : les workflows se construisent visuellement en reliant des nœuds. Un peu de JavaScript est utile pour les cas avancés (nœud Code), mais on peut déjà automatiser énormément sans écrire une ligne.

n8n auto-hébergé est-il vraiment gratuit ?

Oui, pour l’usage décrit dans ce guide. La licence Community (Sustainable Use License) autorise gratuitement l’auto-hébergement pour vos besoins internes ou personnels : automatiser votre propre activité, synchroniser vos données, construire vos intégrations. Le seul coût est votre serveur. Deux nuances à connaître. n8n est fair-code et non open source : le code est consultable, mais la licence pose des limites d’usage. Et revendre l’accès à une instance, l’héberger pour des clients payants ou la proposer en marque blanche exige une licence commerciale distincte. Certaines fonctionnalités avancées (SSO, collaboration d’équipe poussée) sont par ailleurs réservées aux plans payants.

Quel hébergeur choisir pour n8n ?

N’importe quel VPS avec au moins 2 Go de RAM fait l’affaire, et les offres d’entrée actuelles démarrent à 4 Go. J’utilise Hostinger pour le tarif de départ et le template n8n préinstallé ; OVH, Contabo ou Scaleway fonctionnent aussi très bien. Comparez les prix de renouvellement et pas seulement les prix d’appel : l’écart est souvent du simple au double.

Que se passe-t-il si mon serveur redémarre ?

Grâce à la directive restart: unless-stopped du docker-compose, n8n et Traefik redémarrent automatiquement avec le serveur. Vos workflows actifs reprennent sans intervention.

Puis-je migrer plus tard de n8n Cloud vers l’auto-hébergé (ou inversement) ?

Oui : les workflows s’exportent et s’importent en JSON en quelques clics. Seules les credentials devront être reconnectées sur la nouvelle instance.

Et après ? Votre premier workflow en production

Votre instance tourne, en HTTPS, sur votre propre domaine : le plus dur est fait. La suite logique, c’est de lui donner du travail. Pour voir un cas réel de bout en bout, avec ses pièges et ses solutions, je vous montre dans cet article comment publier automatiquement des épingles Pinterest 2 fois par jour depuis un simple planning Google Sheets : création de l’app développeur, OAuth2, et même l’astuce pour héberger vos pages légales directement sur n8n.

Les coulisses, par e-mail

J’écris ici ce que je teste, ce que ça coûte et ce qui ne marche pas. Pour recevoir les prochains articles et les points d’étape, laissez votre adresse. Une ou deux fois par mois, pas plus, et un lien de désinscription dans chaque message.

À propos de l’auteur

Je m’appelle Eric, je suis micro-entrepreneur, et je mène en parallèle un catalogue de livres de coloriage auto-édités sur Amazon et une activité d’affiliation. Aucune des deux n’a d’équipe derrière elle. J’automatise donc ce qui peut l’être, avec une instance n8n que j’héberge moi-même sur un VPS et des outils d’IA quand ils font réellement gagner du temps.

Ce blog est le carnet de bord de ces montages. Vous y trouverez des guides testés de bout en bout, les configurations que j’utilise en production, et les montants que j’ai effectivement payés. Je publie mes coûts, jamais mes revenus : un coût est vérifiable et comparable au vôtre, un revenu hors contexte ne vous apprend rien.

Et quand ça rate, je le raconte aussi. Une demande d’accès API refusée sans motif, un sous-domaine signalé comme dangereux par Google, un workflow arrêté trois jours sans que je le voie : c’est en général plus utile qu’un récit de réussite.