Brouillon auto

Comment installer n8n sur un VPS ?

Le tutoriel complet, de la commande du serveur au premier webhook n8n

Un VPS à 4 € par mois fait tourner n8n en continu, avec vos identifiants, vos clés API et vos données d’exécution chez vous. Le même travail sur n8n Cloud se facture à l’exécution. C’est la raison pour laquelle la plupart des indépendants et des petites équipes finissent par auto-héberger.

Ce tutoriel part de zéro. Vous n’avez jamais ouvert un terminal. À la fin, vous aurez n8n accessible à l’adresse https://n8n.votredomaine.fr, en HTTPS, redémarré automatiquement après un reboot, avec une sauvegarde quotidienne. Comptez 45 minutes la première fois.

Les commandes sont celles de la documentation officielle n8n et Docker. Elles ciblent Ubuntu 24.04 LTS, le système que proposent les quatre hébergeurs cités.

Ce que ça coûte, et ce que ça remplace

Trois postes de dépense, pas plus.

  • Le VPS. Comptez 4 à 8 € HT par mois pour une configuration confortable.
  • Le nom de domaine, si vous n’en avez pas : 10 à 15 € par an. Un sous-domaine suffit, pas besoin d’un domaine dédié.
  • Rien d’autre. Les certificats HTTPS sont gratuits (Let’s Encrypt), Docker et n8n aussi.
HébergeurOffre d’entrée correctePrix relevé le 07/11/2026Ressources
OVHcloudVPS-13,81 € HT/mois2 vCores, 4 Go RAM, 40 Go NVMe, sauvegarde quotidienne incluse
OVHcloudVPS-27,21 € HT/mois4 vCores, 8 Go RAM, 75 Go
HostingerKVM 15,49 €/mois en promo 24 mois, 11,99 € au renouvellement1 vCPU, 4 Go RAM, 50 Go NVMe
HostingerKVM 27,79 €/mois en promo, 14,99 € au renouvellement2 vCPU, 8 Go RAM, 100 Go
ContaboCloud VPS 46,60 $/mois en engagement 24 mois4 vCPU, 8 Go RAM, 100 Go SSD
IONOSVPS M+4 € HT/mois 3 mois, puis 12 € HT2 vCPU, 4 Go RAM, 120 Go NVMe
Prix d’appel relevés le 7 novembre 2026 sur les pages éditeurs. Presque toujours liés à 24 mois d’engagement.

Deux recommandations qui vous éviteront de migrer dans six mois.

Prenez 2 vCPU et 4 Go de RAM minimum. n8n démarre très bien sur 1 vCPU et 2 Go, puis s’écroule dès qu’un workflow traite un fichier de 40 Mo. Si vous prévoyez Postgres, des runners externes et quelques workflows simultanés, prenez 8 Go.

Prenez un hébergeur dont le centre de données est en Europe si vous traitez des données clients françaises. OVHcloud, IONOS, Hostinger (Paris) et Contabo (Allemagne) le permettent tous les quatre.

Le vocabulaire indispensable

Ces mots reviennent dans chaque commande. Les comprendre maintenant évite de copier-coller sans savoir ce qu’on fait.

  • Serveur : une machine allumée en permanence, connectée à Internet, qui exécute des programmes. Elle n’a pas d’écran.
  • VPS (Virtual Private Server) : une machine virtuelle découpée dans un serveur physique plus gros. Vous en avez l’accès administrateur complet, mais les ressources sont partagées avec d’autres clients de l’hébergeur.
  • vCPU : un cœur de processeur virtuel. Deux vCPU suffisent pour n8n.
  • RAM : la mémoire de travail. C’est la ressource qui manque en premier sur un n8n chargé.
  • NVMe / SSD : le type de disque. NVMe est plus rapide, les deux conviennent.
  • Adresse IP : le numéro qui identifie votre serveur sur Internet, du type 203.0.113.42. Votre hébergeur vous la donne après la commande.
  • SSH (Secure Shell) : le protocole qui permet de piloter un serveur à distance, en tapant des commandes, dans une connexion chiffrée. Votre « terminal », c’est la fenêtre dans laquelle vous tapez ces commandes.
  • root : le compte administrateur total d’un serveur Linux. Il peut tout casser, y compris le système.
  • sudo : le préfixe qui autorise un utilisateur normal à exécuter une commande en tant qu’administrateur. sudo apt update signifie « exécute la mise à jour des paquets avec les droits admin ».
  • Port : une porte numérotée sur une machine. Le port 22 sert à SSH, le 80 au web non chiffré, le 443 au web chiffré. n8n écoute sur le 5678, mais uniquement en interne dans notre montage.
  • DNS (Domain Name System) : l’annuaire qui traduit un nom lisible (n8n.votredomaine.fr) en adresse IP. Sans DNS, le navigateur ne sait pas où aller.
  • Enregistrement A : la ligne DNS qui associe un nom à une adresse IPv4. C’est la seule ligne à créer dans ce tutoriel.
  • HTTP / HTTPS : le protocole du web. HTTPS est la version chiffrée. Depuis 2018, un navigateur affiche « non sécurisé » sur un site en HTTP, et les webhooks de services tiers refusent souvent d’envoyer des données en clair.
  • TLS / certificat : le mécanisme de chiffrement derrière HTTPS. Le certificat est le document qui prouve l’identité du site. Let’s Encrypt les délivre gratuitement, par renouvellement automatique.
  • Reverse proxy : un programme qui reçoit le trafic sur les ports 80 et 443, ajoute le chiffrement, puis transmet la requête au service interne. Ici, Caddy joue ce rôle devant n8n.
  • Docker : un logiciel qui exécute des applications dans des environnements isolés, sans les installer sur le système.
  • Image : le modèle figé d’une application, téléchargé depuis un registre. docker.n8n.io/n8nio/n8n:2.46.6 est une image.
  • Conteneur : une image en cours d’exécution. Un même conteneur peut être détruit et recréé sans perdre les données, à condition qu’elles soient dans un volume.
  • Volume : un espace de stockage géré par Docker, qui survit à la suppression du conteneur. C’est là que vivent votre base n8n et votre clé de chiffrement.
  • Docker Compose : un fichier texte (compose.yaml) qui décrit plusieurs conteneurs et leur réseau. Une seule commande les lance tous, dans le bon ordre.
  • Workflow / nœud / exécution : dans n8n, un workflow est une suite de nœuds reliés entre eux. Chaque passage d’un déclencheur dans le workflow est une exécution.
  • Webhook : une URL que vous donnez à un service tiers pour qu’il vous notifie d’un événement (paiement Stripe, formulaire rempli, message reçu). C’est le mécanisme qui rend un n8n auto-hébergé utile.

L’architecture cible

Comment installer n8n sur un VPS ?

Trois conteneurs, un seul point d’entrée.

  1. Caddy publie les ports 80 et 443, obtient le certificat TLS et transmet les requêtes à n8n.
  2. n8n écoute sur le port 5678, mais ce port n’est pas exposé sur Internet. Impossible d’y accéder sans passer par Caddy.
  3. runners exécute le code JavaScript et Python du nœud Code, isolé du conteneur principal.

Le montage réseau compte autant que le reste. Un n8n dont le port 5678 est publié directement est un n8n exposé en clair, sans HTTPS, à portée de scan.

Agents IA n8n : une formation pratique pour accélerer votre productivité avec le No Code !

Les formations n8n vous ouvrent les portes d’une automatisation intelligente, fluide et évolutive. Vous y apprendrez à construire des workflows sur mesure, à interconnecter vos outils métiers, à transformer vos données, et même à intégrer des agents IA ou des systèmes RAG dans vos scénarios.

Étape 1 : commander le VPS

La procédure change d’un hébergeur à l’autre, les points de vigilance non.

Chez OVHcloud, choisissez la gamme VPS, puis VPS-1 ou VPS-2. Au moment de la configuration, sélectionnez Ubuntu 24.04 LTS et la localisation la plus proche de vos utilisateurs. La sauvegarde quotidienne est incluse.

Comment installer n8n sur un VPS ?

Chez Hostinger, prenez KVM 2 plutôt que KVM 1 : la différence de 2 € évite le 1 vCPU. À l’écran d’installation, choisissez le système d’exploitation Ubuntu 24.04 sans template applicatif, définissez un mot de passe root solide et notez l’adresse IP affichée.

Comment installer n8n sur un VPS ?

Chez Contabo, le Cloud VPS 4 est le meilleur rapport ressources/prix du comparatif, avec une réserve : les frais d’installation ponctuels sur les contrats mensuels, et un port réseau plus lent sur l’entrée de gamme. Sélectionnez Ubuntu 24.04.

Comment installer n8n sur un VPS ?

Chez IONOS, le VPS M+ est le minimum viable (2 vCPU, 4 Go). Attention au prix après les trois premiers mois : 12 € HT.

Comment installer n8n sur un VPS ?

Un mot sur les installations en un clic. Contabo et IONOS proposent n8n dans leur catalogue d’applications. C’est pratique pour tester, insuffisant pour travailler : pas de domaine personnalisé avec certificat géré, pas de runners externes, pas de procédure de sauvegarde documentée, et une version figée que vous ne maîtrisez pas. Le tutoriel ci-dessous vous prend vingt minutes de plus et vous donne la main sur les trois.

Notez trois informations avant de fermer l’onglet : l’adresse IP, le mot de passe root envoyé par email, et le système installé.

Étape 2 : première connexion en SSH

Ouvrez un terminal. Sur macOS et Linux, c’est l’application Terminal. Sur Windows, PowerShell fait l’affaire, ou Windows Terminal.

ssh root@203.0.113.42

Remplacez l’adresse IP par la vôtre. À la première connexion, le terminal affiche une empreinte de clé et demande yes/no. Tapez yes, puis le mot de passe root. Rien ne s’affiche quand vous tapez le mot de passe : c’est normal, le terminal n’affiche ni les caractères ni les astérisques.

Comment installer n8n sur un VPS ?

Le prompt change : root@vps-xxxx:~#. Le # indique que vous êtes administrateur. Vous êtes sur le serveur, à distance.

Étape 3 : arrêter de travailler en root

Travailler en root en permanence est la cause d’accident la plus banale : une commande mal collée et le système est détruit sans confirmation. On crée donc un compte normal.

adduser franck
usermod -aG sudo franck

adduser demande un mot de passe (solide, différent de celui de root) et quelques champs optionnels. La seconde commande ajoute le compte au groupe sudo, ce qui lui donne le droit d’administrer avec le préfixe sudo.

Vérifiez avant de fermer la session root :

su - franck
sudo whoami

La réponse doit être root. Si vous voyez franck is not in the sudoers file, la commande usermod a échoué et il faut la relancer depuis root.

Passez maintenant à une clé SSH plutôt qu’un mot de passe. Sur votre machine, pas sur le serveur :

ssh-keygen -t ed25519 -C "vps-n8n"
ssh-copy-id franck@203.0.113.42

ssh-keygen génère une paire de clés. La clé privée reste sur votre ordinateur, la publique part sur le serveur. ssh-copy-id fait le transfert et l’enregistrement. Sur Windows sans ssh-copy-id, cette variante fonctionne dans PowerShell :

type $env:USERPROFILE.sshid_ed25519.pub | ssh franck@203.0.113.42 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Testez la connexion sans mot de passe avant de durcir quoi que ce soit :

ssh franck@203.0.113.42

Si ça vous demande encore le mot de passe root, ne continuez pas, vous vous enfermeriez dehors. Une fois la connexion par clé confirmée, créez le fichier de durcissement :

sudo nano /etc/ssh/sshd_config.d/99-durcissement.conf

Collez ce contenu, enregistrez avec Ctrl+O puis Entrée, quittez avec Ctrl+X :

PermitRootLogin no
PasswordAuthentication no

Puis rechargez le service et vérifiez qu’il accepte la configuration :

sudo sshd -t
sudo systemctl reload ssh
Comment installer n8n sur un VPS ?

À partir de là, root ne peut plus se connecter et les mots de passe sont refusés. Gardez la connexion actuelle ouverte, ouvrez un second terminal et testez : ssh franck@203.0.113.42 doit entrer sans mot de passe.

Étape 4 : préparer le système

Mise à jour du système, puis les outils dont la suite a besoin.

sudo apt update
sudo apt upgrade -y
sudo apt install -y curl ca-certificates gnupg htop
timedatectl

apt update met à jour la liste des paquets disponibles, apt upgrade installe les versions récentes. htop servira à voir la mémoire disponible, curl à télécharger les clés de dépôt.

Réglez le fuseau horaire, sinon vos workflows planifiés tourneront à l’heure UTC et vos rapports de 8 h partiront à 10 h :

sudo timedatectl set-timezone Europe/Paris
timedatectl

Ajoutez un fichier d’échange (swap). C’est un espace disque utilisé comme mémoire de secours quand la RAM sature. Ça n’accélère rien, ça empêche le noyau de tuer brutalement le processus n8n.

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
free -h

Sur un VPS de 8 Go, passez à 1G seulement. La dernière ligne doit afficher une section Swap non nulle.

Étape 5 : le pare-feu

Seuls trois ports doivent répondre depuis Internet : 22 pour SSH, 80 et 443 pour le web.

sudo apt install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose

OpenSSH est un profil fourni par UFW qui ouvre le port 22. Ne l’oubliez pas dans la séquence, sinon vous vous coupez l’accès.

Un piège documenté par Docker mérite d’être connu avant la suite : une application qui publie un port Docker contourne les règles UFW. Autrement dit, un conteneur lancé avec -p 5678:5678 est joignable depuis Internet même si UFW refuse le 5678. C’est exactement pour cette raison que la stack ci-dessous ne publie que 80 et 443, et laisse n8n sur le réseau interne de Docker.

Comment installer n8n sur un VPS ?

Étape 6 : le DNS

Direction le gestionnaire de zone DNS de votre registrar. L’interface diffère, la ligne à créer est identique.

TypeNomCibleTTL
An8nvotre adresse IPv4300

Chez OVHcloud : Espace client, onglet Domaines, sélectionnez le domaine, Zone DNS, Ajouter une entrée, type A, sous-domaine n8n, cible votre IP, TTL 300.

Comment installer n8n sur un VPS ?

Chez Hostinger : hPanel, Domaines, DNS / Nameservers, Gérer les DNS, ajoutez un enregistrement A.

Comment installer n8n sur un VPS ?

Chez IONOS : Domaines & SSL, DNS, ajoutez un enregistrement de type A. Chez Contabo : DNS Zone Management si le domaine est chez eux, sinon chez le registrar du domaine, avec les mêmes valeurs.

Vérifiez la propagation depuis votre machine, pas depuis le serveur :

dig +short n8n.votredomaine.fr

La commande doit renvoyer votre adresse IP. Si la réponse est vide, attendez deux minutes et relancez. Un TTL à 300 secondes rend les corrections rapides.

Ne passez pas à l’étape suivante avant que ce dig renvoie la bonne IP. Caddy demandera un certificat dès le premier lancement, et Let’s Encrypt refusera si le nom ne pointe pas encore vers votre serveur.

Étape 7 : installer Docker

La méthode officielle utilise le dépôt apt de Docker, pas le script d’installation rapide que la documentation réserve au développement.

sudo apt update
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Le bloc tee écrit la configuration du dépôt au format deb822, celui qu’utilise Ubuntu 24.04. Les variables $(...) sont évaluées par le shell avant l’écriture : vous n’avez rien à remplacer dans ce bloc.

Autorisez votre compte à piloter Docker sans sudo, puis vérifiez :

sudo usermod -aG docker $USER
newgrp docker
docker run hello-world
docker compose version

hello-world télécharge une image minuscule, affiche un message et s’arrête. Si vous voyez permission denied while trying to connect to the Docker daemon, déconnectez-vous puis reconnectez-vous en SSH : l’appartenance au groupe docker ne s’applique qu’aux nouvelles sessions.

Comment installer n8n sur un VPS ?

Pour la suite, l’article héberger n8n vous-même sur Docker en 5 étapes couvre le cas d’un Docker installé sur votre poste, sans VPS ni nom de domaine.

Étape 8 : la stack n8n

Créez le dossier de travail et les trois fichiers de configuration.

mkdir -p ~/n8n-compose/local-files
cd ~/n8n-compose

Générez deux secrets. Copiez les deux résultats, ils servent juste après.

openssl rand -hex 32
openssl rand -hex 32

Le premier sera la clé de chiffrement de n8n. Elle protège vos identifiants stockés en base. Si vous la perdez, vos credentials sont définitivement illisibles, y compris après restauration d’une sauvegarde. Le second est le jeton partagé entre n8n et les runners.

Créez le fichier .env :

nano .env
DOMAIN=n8n.votredomaine.fr
TZ=Europe/Paris
N8N_VERSION=2.46.6
N8N_ENCRYPTION_KEY=collez_le_premier_secret_ici
RUNNERS_AUTH_TOKEN=collez_le_second_secret_ici

N8N_VERSION=2.46.6 est la version stable au 7 novembre 2026. On épingle la version plutôt que de suivre latest : une mise à jour non testée qui casse un workflow en production coûte plus cher que la sécurité apportée par la dernière version.

Créez le Caddyfile :

nano Caddyfile
{$DOMAIN} {
	encode zstd gzip
	reverse_proxy n8n:5678
}

Caddy lit {$DOMAIN} dans l’environnement du conteneur, demande le certificat à Let’s Encrypt pour ce nom, renouvelle automatiquement, et transmet le trafic à l’hôte n8n sur le port 5678. L’indentation utilise des tabulations, pas des espaces.

Créez compose.yaml :

nano compose.yaml
services:
  n8n:
    image: docker.n8n.io/n8nio/n8n:${N8N_VERSION}
    container_name: n8n
    restart: unless-stopped
    environment:
      - N8N_HOST=${DOMAIN}
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - N8N_WEBHOOK_URL=https://${DOMAIN}/
      - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
      - N8N_RUNNERS_MODE=external
      - N8N_RUNNERS_AUTH_TOKEN=${RUNNERS_AUTH_TOKEN}
      - N8N_RUNNERS_BROKER_LISTEN_ADDRESS=0.0.0.0
      - GENERIC_TIMEZONE=${TZ}
      - TZ=${TZ}
    volumes:
      - n8n_data:/home/node/.n8n
    expose:
      - "5678"

  runners:
    image: n8nio/runners:${N8N_VERSION}
    container_name: n8n-runners
    restart: unless-stopped
    environment:
      - N8N_RUNNERS_AUTH_TOKEN=${RUNNERS_AUTH_TOKEN}
      - N8N_RUNNERS_TASK_BROKER_URI=http://n8n:5679

  caddy:
    image: caddy:2
    container_name: caddy
    restart: unless-stopped
    environment:
      - DOMAIN=${DOMAIN}
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - caddy_data:/data
      - caddy_config:/config
    depends_on:
      - n8n

volumes:
  n8n_data:
    name: n8n_data
  caddy_data:
  caddy_config:

Quatre points de lecture, parce que c’est ce fichier qu’on modifie un jour.

expose: "5678" déclare le port aux autres conteneurs sans le publier sur la machine. C’est la différence entre un n8n joignable par Caddy et un n8n joignable par Internet.

N8N_ENCRYPTION_KEY est passée explicitement. Sans elle, n8n génère une clé au premier démarrage et la range dans le volume. La définir évite les mauvaises surprises au changement de disque.

N8N_WEBHOOK_URL construit les URL publiques des webhooks et les liens envoyés par email. Depuis n8n 2.30, cette variable remplace l’ancienne WEBHOOK_URL. Les vieux tutoriels utilisent encore l’ancien nom : il fonctionne toujours, mais autant prendre l’habitude du nouveau.

restart: unless-stopped relance les conteneurs après un redémarrage du VPS. Combiné à systemctl enable docker, qui est déjà actif après l’installation, ça vous donne un n8n qui revient tout seul.

Le conteneur runners mérite une explication. Le mode de runners par défaut est internal : le code du nœud Code s’exécute dans le même processus que n8n, sans isolation. La documentation n8n est sans ambiguïté sur le risque : dans ce mode, toute personne qui peut éditer un workflow peut lire la base, la clé de chiffrement et les identifiants stockés. Le mode external déplace cette exécution dans un conteneur séparé. C’est trois lignes de YAML et un conteneur de plus, largement rentabilisé.

Lancez la stack :

docker compose up -d
docker compose ps

up -d télécharge les trois images et démarre les conteneurs en arrière-plan. ps affiche leur état. Sur un VPS 2 vCPU, le premier téléchargement prend deux à quatre minutes.

Comment installer n8n sur un VPS ?

Étape 9 : le premier accès

Ouvrez https://n8n.votredomaine.fr dans un navigateur. Le certificat doit être valide, cadenas fermé, sans avertissement.

Comment installer n8n sur un VPS ?

n8n demande de créer le compte propriétaire : email, prénom, nom, mot de passe. Utilisez un email que vous consultez, il servira aux réinitialisations. Activez la double authentification dans les réglages du compte dès que vous y êtes.

Pendant l’inscription, n8n propose d’enregistrer l’instance. C’est gratuit et ça débloque les dossiers, le débogage dans l’éditeur et les métadonnées d’exécution. Acceptez, sauf si votre politique interne interdit ce type d’enregistrement.

Si la page reste blanche ou renvoie une erreur 502, la cause est presque toujours Caddy qui n’arrive pas à joindre n8n. docker compose logs -f caddy puis docker compose logs -f n8n, dans cet ordre.

Étape 10 : vérifier qu’un webhook répond vraiment

Un n8n qui affiche son éditeur n’est pas un n8n qui reçoit des appels externes. Le test tient en trois minutes.

Comment installer n8n sur un VPS ?

Créez un workflow, ajoutez un nœud Webhook, méthode POST, chemin test-article. Cliquez sur Listen for test event ou Execute workflow, puis copiez l’URL de test affichée. Depuis votre machine :

curl -X POST https://n8n.votredomaine.fr/webhook-test/test-article 
  -H "Content-Type: application/json" 
  -d '{"email":"test@example.com"}'
Comment installer n8n sur un VPS ?

Si le nœud passe au vert et que vous voyez test@example.com dans la sortie, la chaîne DNS, TLS, proxy et n8n fonctionne de bout en bout.

L’URL webhook-test n’existe que pendant l’écoute. Pour un appel permanent, activez le workflow et utilisez /webhook/test-article, sans le suffixe -test. C’est la confusion numéro un chez les débutants : l’URL de test ne répond jamais une fois le workflow activé, et l’URL de production ne répond pas si le workflow est inactif.

Pour aller plus loin sur la construction des flux eux-mêmes, voyez maîtriser l’automatisation avec n8n étape par étape.

Étape 11 : mises à jour et sauvegardes

Deux routines, à faire une fois.

Sauvegarde. Le volume n8n_data contient la base, la clé de chiffrement et les identifiants. Un script de dix lignes suffit.

sudo mkdir -p /var/backups/n8n
sudo nano /usr/local/bin/n8n-backup.sh
#!/usr/bin/env bash
set -euo pipefail
STAMP=$(date +%F-%H%M)
docker run --rm 
  -v n8n_data:/data 
  -v /var/backups/n8n:/backup 
  alpine tar czf /backup/n8n-$STAMP.tar.gz -C /data .
find /var/backups/n8n -name 'n8n-*.tar.gz' -mtime +14 -delete
sudo chmod +x /usr/local/bin/n8n-backup.sh
sudo /usr/local/bin/n8n-backup.sh
ls -lh /var/backups/n8n
crontab -e

Ajoutez cette ligne dans le crontab, qui programme l’exécution chaque nuit à 3 h :

0 3 * * * /usr/local/bin/n8n-backup.sh

Une sauvegarde sur le même serveur ne protège pas d’une perte du serveur. Copiez le dossier /var/backups/n8n ailleurs une fois par semaine, par scp vers votre poste ou vers un stockage objet. L’archive contient votre clé de chiffrement : traitez-la comme un secret.

Mise à jour. Sauvegardez, changez le numéro de version, relancez.

cd ~/n8n-compose
sudo /usr/local/bin/n8n-backup.sh
nano .env          # modifiez N8N_VERSION
docker compose pull
docker compose up -d
docker image prune -f

L’image des runners doit porter exactement la même version que n8n, sinon le nœud Code cesse de fonctionner. C’est pour cette raison que les deux services utilisent la même variable N8N_VERSION.

Une mise à jour majeure (2.x vers 3.x) se lit dans les notes de version avant d’être appliquée. Testez sur une copie : cp -r ~/n8n-compose ~/n8n-test, changez DOMAIN et le nom du volume, lancez sur un autre port.

Étape 12 : passer à Postgres (facultatif, à partir d’une vraie charge)

SQLite convient pour démarrer. Quand le volume d’exécutions quotidiennes grimpe, les écritures se sérialisent et l’interface ralentit.

Le dépôt officiel n8n-hosting fournit un compose.yaml prêt à l’emploi avec Postgres, workers et Redis pour le mode queue. Vous y retrouverez les mêmes variables, plus DB_TYPE=postgresdb, DB_POSTGRESDB_HOST, DB_POSTGRESDB_DATABASE, DB_POSTGRESDB_USER, DB_POSTGRESDB_PASSWORD et EXECUTIONS_MODE=queue. Le mode queue est inclus dans la Community Edition. Le guide déployer et scaler n8n couvre le sujet du dimensionnement.

Deux précautions pour la migration. Sauvegardez l’instance SQLite avant, et exportez vos workflows en JSON depuis l’interface (Ctrl+A puis téléchargement, ou sélection multiple). Une migration de base ne s’improvise pas : elle se prépare avec un export vérifié et un retour arrière possible.

Dépannage

SymptômeCause probableCorrection
Page blanche ou 502Caddy ne joint pas n8n, ou n8n redémarre en boucledocker compose ps, puis docker compose logs n8n
« Votre connexion n’est pas privée »Certificat non délivré : DNS pas propagé ou port 80 fermédig +short, sudo ufw status, docker compose logs caddy
dial tcp: lookup n8n dans les logs CaddyLe service n8n n’a pas démarrédocker compose up -d puis vérifier ps
n8n redémarre toutes les cinq minutesRAM saturée, noyau qui tue le processusdocker stats, ajouter du swap, passer à 8 Go
Nœud Code en erreur « task runner »Conteneur runners arrêté ou jeton différentdocker compose logs runners, vérifier RUNNERS_AUTH_TOKEN
Identifiants illisibles après restaurationN8N_ENCRYPTION_KEY différente de celle d’origineRestaurer la clé d’origine depuis la sauvegarde
Webhook en 404URL -test utilisée sur un workflow actif, ou workflow inactifUtiliser /webhook/ et activer le workflow
permission denied sur dockerSession ouverte avant l’ajout au groupeSe déconnecter et se reconnecter en SSH
Disque pleinImages et exécutions accumuléesdocker image prune -af, activer le nettoyage des exécutions

Pour les logs : docker compose logs -f --tail=100 n8n, docker compose logs -f caddy. Pour l’espace disque : df -h, docker system df.

FAQ

n8n est-il gratuit sur un VPS ?

La Community Edition est gratuite et fonctionne sans clé de licence. Elle exclut les fonctions d’entreprise : SSO, projets, secrets externes, environnements, log streaming, stockage binaire externe. Le mode queue, lui, est inclus. Ce n’est pas un logiciel open source au sens strict : la Sustainable Use License autorise l’usage interne, personnel ou non commercial, et interdit de revendre un accès hébergé à n8n.

1 vCPU et 2 Go suffisent-ils ?

Pour découvrir l’outil, oui. Pour un usage quotidien avec Postgres, runners et quelques workflows qui manipulent des fichiers, non. 2 vCPU et 4 Go sont le plancher raisonnable, 8 Go le confort.

Puis-je installer n8n chez un client et le facturer ?

Vous pouvez facturer l’installation, le paramétrage, la maintenance et la construction de workflows, c’est explicitement autorisé par la licence. Vous ne pouvez pas héberger n8n et faire payer l’accès à la plateforme, ni le proposer en marque blanche. En cas de doute sur un montage commercial, la licence prévoit un accord séparé avec n8n.

Docker ou npm ?

Docker. L’installation npm est dépréciée à partir de n8n 3.0, et elle vous laisse gérer à la main les mises à jour de Node.js, les processus systemd et les dépendances système.

Pourquoi pas l’image n8n en un clic de mon hébergeur ?

Parce que vous héritez d’une configuration que vous ne contrôlez pas : version figée, HTTPS souvent absent ou géré par un panneau propriétaire, runners en mode interne, sauvegardes non documentées. Vingt minutes de configuration manuelle vous donnent la main sur les trois points qui comptent : le domaine, les runners, les sauvegardes.

Sources

  1. n8n Docs, Install with Docker : docs.n8n.io/hosting/installation/docker
  2. n8n Docs, Use Docker Compose : docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/use-docker-compose
  3. n8n Docs, Install with npm : docs.n8n.io/hosting/installation/npm
  4. n8n Docs, Set up task runners : docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners
  5. n8n Docs, Task runner environment variables : docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/task-runners
  6. n8n Docs, Compare editions : docs.n8n.io/deploy/host-n8n/community-edition-features
  7. n8n Docs, Sustainable Use License : docs.n8n.io/privacy-and-security/sustainable-use-license
  8. n8n, dépôt n8n-hosting : github.com/n8n-io/n8n-hosting
  9. Docker Docs, Install Docker Engine on Ubuntu : docs.docker.com/engine/install/ubuntu
  10. Docker Docs, Firewall limitations : docs.docker.com/engine/install/ubuntu#prerequisites
  11. OVHcloud, VPS : ovhcloud.com/fr/vps (relevé 07/11/2026)
  12. Hostinger, Hébergement VPS : hostinger.com/fr/vps (relevé 07/11/2026)
  13. Contabo, VPS : contabo.com/en/vps (relevé 07/11/2026)
  14. IONOS, Serveurs virtuels VPS : ionos.fr/serveurs/vps (relevé 07/11/2026)

Passer de l’installation à la production

Installer n8n prend une heure. Concevoir des workflows qui tiennent six mois, gèrent les erreurs, les relances et les données personnelles, prend une formation. Le parcours n8n complet couvre les quatre niveaux, du premier webhook aux agents IA en production. Le détail des niveaux permet de démarrer au bon endroit.

Défiler vers le haut
Formations Analytics