Héberger n8n sur un VPS : installation pas à pas, du serveur au HTTPS

Pour héberger n8n, il faut un VPS de 4 Go de RAM (dès 3,81 € HT par mois), un nom de domaine et Docker Compose. Comptez une à deux heures.

Pour héberger n8n sur un serveur, il vous faut un VPS Linux d’au moins 4 Go de RAM, vendu entre 3,81 € HT et 6,49 $ HT par mois chez OVHcloud, Hetzner ou Hostinger, un nom de domaine, et le fichier Docker Compose officiel de n8n, qui ajoute le HTTPS. Comptez une à deux heures pour une première installation, hors temps de propagation du DNS. Ce guide suit la procédure de la documentation de n8n, de la commande du serveur aux sauvegardes.

Ce qu’il vous faut avant de commencer

Quatre éléments, dont un seul se paie chaque mois : le serveur.

Élément À quoi il sert Coût
Un VPS Linux Faire tourner n8n en continu De 3,81 € HT à 6,49 $ HT par mois pour la première offre à 4 Go de RAM
Un nom de domaine Donner à n8n une adresse fixe, comme n8n.votredomaine.fr Celui que vous avez déjà, ou un domaine acheté chez un registraire
Docker et Docker Compose Lancer n8n et le reverse proxy dans des conteneurs Gratuits
Une adresse e-mail Créer le certificat HTTPS Gratuite

La documentation de n8n réserve l’auto-hébergement aux utilisateurs à l’aise avec l’administration d’un serveur : une erreur de configuration peut coûter des données, ouvrir une faille ou couper le service. Si vous n’avez jamais ouvert de terminal sur un serveur, faites d’abord vos essais sur votre ordinateur avec le guide d’installation locale avec Docker.

Choisir un VPS pour n8n

Prenez 4 Go de RAM au minimum : c’est la mémoire de la plus petite offre « n8n » de Hostinger, et celle des premières offres des deux autres hébergeurs comparés ici. La documentation de n8n ne fixe pas de minimum général pour une instance seule.

Hébergeur et offre vCPU RAM Stockage Prix relevé le 9 novembre 2026 n8n préinstallé
OVHcloud VPS-1 2 4 Go 40 Go NVMe À partir de 3,81 € HT (4,57 € TTC) par mois Sur une sélection de VPS, selon OVHcloud
Hetzner CX23 2 4 Go 40 Go NVMe 5,99 € HT par mois Non indiqué sur la page tarifs
Hostinger KVM 1 1 4 Go 50 Go NVMe 6,49 $ HT par mois sur 24 mois, puis 11,99 $ Oui, modèle « Ubuntu 24.04 with n8n »
Hostinger KVM 2 2 8 Go 100 Go NVMe 8,79 $ HT par mois sur 24 mois, puis 14,99 $ Oui, même modèle

Trois différences comptent plus que le prix affiché :

  • Le renouvellement. Chez Hostinger, le tarif promotionnel se paie pour 24 mois d’avance, et le prix de renouvellement est presque le double. OVHcloud et Hetzner affichent un prix mensuel sans durée d’engagement indiquée sur leur page.
  • Les sauvegardes. Les VPS d’OVHcloud affichent une sauvegarde quotidienne incluse ; les options de restauration plus longues et les snapshots sont payants. Chez Hostinger, sauvegardes et snapshots se pilotent depuis l’agent de l’hébergeur, sans figurer dans la liste des inclusions de chaque offre.
  • La disponibilité. Le jour du relevé, la page de Hetzner signalait ses offres comme momentanément indisponibles à la commande : vérifiez-le au moment de souscrire.

L’offre Hostinger « n8n en un clic »

Hostinger livre n8n déjà installé dans Docker, à partir de son modèle de serveur « Ubuntu 24.04 with n8n ». L’hébergeur fait l’installation à votre place, mais l’instance reste auto-hébergée : mises à jour, sauvegardes et sécurité restent à votre charge, comme dans le reste de ce guide. La page de l’offre annonce des workflows et des exécutions simultanées illimités sur toutes les formules, et un modèle séparé pour le mode file d’attente (queue mode), présenté comme une option.

Si vous partez de ce modèle, sautez l’installation ci-dessous et passez directement au nom de domaine, à la sécurité et aux sauvegardes. Les liens vers l’offre VPS n8n de Hostinger, l’offre VPS n8n d’OVHcloud et les serveurs Cloud de Hetzner mènent aux pages de tarifs relevées.

Installer n8n sur le VPS avec Docker Compose

L’installation suit la page Docker Compose sur un serveur de la documentation : deux conteneurs, n8n et Traefik, le reverse proxy qui obtient le certificat HTTPS et publie n8n sur votre domaine.

1. Installer Docker et vérifier les versions

Installez Docker Engine et Docker Compose selon la procédure de votre distribution Linux, puis vérifiez que les deux répondent :

docker --version
docker compose version

Pour lancer Docker sans sudo, la documentation propose d’ajouter votre utilisateur au groupe docker :

sudo usermod -aG docker ${USER}
# Register the `docker` group membership with current session without changing your primary group
exec sg docker newgrp

La commande groups affiche ensuite les groupes de votre session, docker compris.

2. Faire pointer le domaine vers le serveur

Chez votre registraire, créez un enregistrement DNS de type A pour un sous-domaine, par exemple n8n, qui pointe vers l’adresse IP de votre VPS. Traefik ne pourra obtenir le certificat HTTPS qu’une fois cet enregistrement visible depuis le web.

3. Créer le dossier du projet et le fichier .env

mkdir n8n-compose
cd n8n-compose

Dans ce dossier, créez un fichier .env. Voici l’exemple de la documentation :

# DOMAIN_NAME and SUBDOMAIN together determine where n8n will be reachable from
# The top level domain to serve from
DOMAIN_NAME=example.com

# The subdomain to serve from
SUBDOMAIN=n8n

# The above example serve n8n at: https://n8n.example.com

# Optional timezone to set which gets used by Cron and other scheduling nodes
# New York is the default value if not set
GENERIC_TIMEZONE=Europe/Berlin

# The email address to use for the TLS/SSL certificate creation
SSL_EMAIL=user@example.com

Remplacez example.com par votre domaine, Europe/Berlin par Europe/Paris pour que vos workflows planifiés partent à l’heure française, et user@example.com par votre adresse.

4. Créer le dossier de fichiers partagés

mkdir local-files

Ce dossier est monté dans le conteneur sous /files. Le créer vous-même lui donne le bon propriétaire et les bons droits.

5. Écrire le fichier compose.yaml

Toujours dans n8n-compose, créez compose.yaml avec le contenu de la documentation :

services:
  traefik:
    image: "traefik"
    restart: always
    command:
      - "--api.insecure=true"
      - "--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"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - traefik_data:/letsencrypt
      - /var/run/docker.sock:/var/run/docker.sock:ro

  n8n:
    image: 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.tls=true
      - traefik.http.routers.n8n.entrypoints=web,websecure
      - traefik.http.routers.n8n.tls.certresolver=mytlschallenge
      - traefik.http.middlewares.n8n.headers.SSLRedirect=true
      - traefik.http.middlewares.n8n.headers.STSSeconds=315360000
      - traefik.http.middlewares.n8n.headers.browserXSSFilter=true
      - traefik.http.middlewares.n8n.headers.contentTypeNosniff=true
      - traefik.http.middlewares.n8n.headers.forceSTSHeader=true
      - traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME}
      - traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true
      - traefik.http.middlewares.n8n.headers.STSPreload=true
      - traefik.http.routers.n8n.middlewares=n8n@docker
    environment:
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
      - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - N8N_WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
      - TZ=${GENERIC_TIMEZONE}
      - N8N_RESTRICT_FILE_ACCESS_TO=/files
    volumes:
      - n8n_data:/home/node/.n8n
      - ./local-files:/files

volumes:
  n8n_data:
  traefik_data:

Traefik publie les ports 80 et 443 et renvoie le port 80 vers le HTTPS. Le port 5678 de n8n n’écoute que sur 127.0.0.1 : n8n n’est joignable que par Traefik, donc uniquement en HTTPS.

6. Démarrer n8n

sudo docker compose up -d

Ouvrez ensuite https://n8n.votredomaine.fr : à la première visite, n8n vous fait créer le compte propriétaire de l’instance. Pour arrêter les conteneurs :

sudo docker compose stop

Les variables d’environnement à comprendre

Le fichier compose.yaml règle n8n par des variables d’environnement ; cinq d’entre elles décident du bon fonctionnement sur un serveur.

Variable Valeur dans l’exemple Ce qu’elle fait
N8N_HOST ${SUBDOMAIN}.${DOMAIN_NAME} Le nom de domaine complet de l’instance
N8N_PROTOCOL https Le protocole des adresses que n8n génère
N8N_WEBHOOK_URL https://${SUBDOMAIN}.${DOMAIN_NAME}/ L’adresse publique des webhooks, derrière le proxy
GENERIC_TIMEZONE et TZ Lues dans le .env Le fuseau des déclencheurs planifiés et celui du système ; New York par défaut
N8N_RESTRICT_FILE_ACCESS_TO /files Restreint l’accès aux fichiers au dossier /files, relié à local-files

La documentation précise que N8N_WEBHOOK_URL s’utilise à partir de n8n 2.30.0 ; les versions antérieures lisent WEBHOOK_URL. Sans cette variable, n8n compose l’adresse de ses webhooks avec son port interne, et les services externes appellent une adresse injoignable. Le guide des webhooks n8n explique ensuite la différence entre URL de test et URL de production.

Sécuriser l’instance

Un n8n exposé sur le web garde vos identifiants d’API : verrouillez l’accès avant d’y brancher vos premiers comptes.

  • Fermez tout sauf l’essentiel. Le fichier officiel n’a besoin que des ports 80 et 443, plus l’accès SSH dont vous administrez le serveur. Si l’instance ne répond pas, la documentation conseille de vérifier d’abord le pare-feu et le DNS.
  • Activez la double authentification sur le compte propriétaire et sur ceux de vos collaborateurs : n8n la propose pour chaque utilisateur.
  • Lancez l’audit de sécurité intégré. La commande n8n audit détecte les problèmes de sécurité courants. Dans Docker, la documentation donne la syntaxe docker exec -u node -it <n8n-container-name> <n8n-cli-command> ; docker ps affiche le nom du conteneur n8n.
  • Désactivez ce que vous n’utilisez pas. La page Sécurité de la documentation liste les réglages possibles : désactiver l’API publique, bloquer des nœuds, couper la télémétrie, activer la protection SSRF.

Vos clés d’API se rangent ensuite dans les identifiants de n8n, chiffrés par la clé de l’instance : le guide du nœud HTTP Request montre comment les y déclarer plutôt que de les coller dans un workflow.

Sauvegarder n8n

Une sauvegarde complète, selon la documentation, contient le dossier .n8n : il garde la base SQLite et le fichier config où vit la clé qui chiffre vos identifiants. Dans l’installation de ce guide, ce dossier se trouve dans le volume Docker n8n_data, monté sur /home/node/.n8n.

Trois règles tirées de la page Sauvegarder et restaurer :

  1. Arrêtez n8n avant de copier le dossier .n8n quand la base est SQLite, ou utilisez un outil qui prend un instantané cohérent, comme les snapshots de votre hébergeur.
  2. Gardez la clé de chiffrement avec la sauvegarde. Sans elle, une base restaurée ne déchiffre plus vos identifiants. Si vous avez défini N8N_ENCRYPTION_KEY, sauvegardez aussi vos variables d’environnement.
  3. Ne comptez pas sur l’export seul. La documentation fournit deux commandes d’export, pratiques pour garder une copie lisible :
n8n export:workflow --backup --output=backups/workflows/
n8n export:credentials --backup --output=backups/credentials/

L’option --backup exporte tout, un fichier par élément. Ces exports laissent de côté les utilisateurs, l’historique d’exécution, les variables, les réglages de l’instance et la clé de chiffrement. Et un dossier backups/ créé dans le conteneur disparaît quand le conteneur est recréé : avec le fichier de ce guide, écrivez plutôt l’export sous /files, qui correspond au dossier local-files du serveur.

Mettre à jour n8n

Depuis le dossier n8n-compose, trois commandes récupèrent la nouvelle image et relancent les conteneurs ; vos données restent dans le volume n8n_data.

docker compose pull
docker compose down
docker compose up -d

La documentation conseille de mettre à jour au moins une fois par mois, pour ne pas sauter plusieurs versions d’un coup, et de lire les notes de version avant chaque mise à jour. L’image n8nio/n8n sans étiquette correspond à la version stable ; la version beta, la plus récente, peut être instable et ne convient pas à la production. n8n 3.0 changera des réglages par défaut : n8n 2 ou n8n 3 détaille quand passer à la nouvelle version.

Les erreurs fréquentes

La plupart des pannes d’une première installation viennent du DNS, des ports ou d’une variable mal recopiée.

Symptôme Cause probable Que vérifier
L’adresse ne répond pas Enregistrement DNS absent ou pas encore propagé, pare-feu fermé L’enregistrement A pointe vers la bonne IP ; les ports 80 et 443 sont ouverts
Erreur de certificat HTTPS Traefik n’a pas pu valider le domaine Le DNS pointe vers le serveur et le port 443 est joignable ; SSL_EMAIL est rempli
http://ip-du-serveur:5678 ne répond pas Comportement normal Le port 5678 n’écoute que sur 127.0.0.1 : passez par le domaine en HTTPS
Les webhooks affichent localhost ou le port 5678 N8N_WEBHOOK_URL absente ou erronée La variable vaut https://n8n.votredomaine.fr/
Les workflows planifiés partent avec un décalage Fuseau resté sur New York GENERIC_TIMEZONE=Europe/Paris dans le .env
Identifiants illisibles après une restauration Clé de chiffrement perdue Le fichier config du dossier .n8n, ou votre N8N_ENCRYPTION_KEY

Pour les erreurs qui surviennent ensuite dans vos workflows, la gestion d’erreurs de n8n met en place l’alerte qui vous prévient quand une exécution échoue.

FAQ

Quel VPS choisir pour héberger n8n ?

Un VPS Linux d’au moins 4 Go de RAM. Au 9 novembre 2026, les premières offres à 4 Go coûtaient 3,81 € HT par mois chez OVHcloud (VPS-1), 5,99 € HT chez Hetzner (CX23) et 6,49 $ HT chez Hostinger (KVM 1, sur 24 mois, puis 11,99 $). Comparez le prix de renouvellement, pas seulement le prix d’appel.

Hostinger installe-t-il n8n à ma place ?

Oui. Son modèle de serveur « Ubuntu 24.04 with n8n » livre n8n déjà installé dans Docker. L’instance reste auto-hébergée : les mises à jour, les sauvegardes et la sécurité restent à votre charge.

Combien de temps faut-il pour installer n8n sur un serveur ?

Comptez une à deux heures pour une première installation avec Docker Compose, en suivant les six étapes de ce guide, plus le temps que l’enregistrement DNS devienne visible. Avec un modèle préinstallé, l’installation elle-même disparaît, mais le domaine, la sécurité et les sauvegardes restent à faire.

Faut-il un nom de domaine pour héberger n8n ?

Pour l’installation officielle, oui : Traefik a besoin d’un domaine pour obtenir le certificat HTTPS, et les services externes ont besoin d’une adresse fixe pour appeler vos webhooks. Un sous-domaine d’un domaine que vous possédez déjà suffit.

Comment sauvegarder n8n auto-hébergé ?

Sauvegardez le dossier .n8n, stocké dans le volume Docker n8n_data : il contient la base SQLite et la clé de chiffrement des identifiants. Arrêtez n8n avant de le copier, ou utilisez les snapshots de votre hébergeur. Les commandes n8n export:workflow et n8n export:credentials complètent la sauvegarde sans la remplacer.

Comment mettre à jour n8n sur un VPS ?

Depuis le dossier du fichier compose.yaml, lancez docker compose pull, docker compose down, puis docker compose up -d. La documentation conseille une mise à jour au moins une fois par mois, après lecture des notes de version.

Et si je ne veux pas gérer de serveur ?

Prenez n8n Cloud : n8n s’occupe alors des mises à jour, des sauvegardes et du HTTPS, contre un abonnement. n8n self-hosted ou Cloud compare les deux options, et le guide des prix de n8n détaille les formules.


Une fois l’instance en ligne, reste à construire des workflows qui tiennent : ma formation n8n couvre en 31 leçons vidéo, réparties en 4 chapitres, les fondations, la transformation des données et le contrôle du flux. L’installation sur serveur n’en fait pas partie. Le hub n8n regroupe les autres guides dans l’ordre d’apprentissage.

Sources (consultées le 9 novembre 2026) : n8n Docs · Docker Compose sur un serveur, n8n Docs · mettre à jour n8n, n8n Docs · installer avec Docker, n8n Docs · sauvegarder et restaurer, n8n Docs · sécurité, n8n Docs · ligne de commande, Hostinger · VPS n8n, Hetzner · Cloud Cost-Optimized, OVHcloud · VPS n8n.

Créez des workflows fiables avec n8n.

Ce guide montre le principe sur un cas. La formation n8n déroule la construction complète : des fondamentaux jusqu’aux patterns qui tiennent en production chez un client qui paie.

  • 4 chapitres · 31 leçons
  • 249 € · paiement unique
  • Accès à vie
  • Garantie 14 jours

Les 3 automatisations par lesquelles je fais commencer mes clients

Trier ses e-mails, ne plus ressaisir les documents reçus, facturer à chaque commande : trois cas réels, avec leur schéma dans Make et dans n8n.

Recevoir le guide

Gratuit · le lien du guide part aussitôt par e-mail.