Intermédiaire ⏱ 20 min de mise en œuvre Mis à jour le 10 août 2026

Auto-héberger n8n sur un VPS français

n8n Cloud est pratique, mais auto-héberger n8n vous rend le contrôle : vos données, vos mises à jour, vos ressources. Voici comment l'installer proprement sur un VPS, en France.

n8n permet de relier des API, des bases de données et des modèles d’intelligence artificielle dans des workflows visuels. Sa version Cloud facilite le démarrage, mais son abonnement et la délégation de l’infrastructure ne conviennent pas à tous les projets.

Auto-héberger n8n sur un VPS offre davantage de contrôle : vous choisissez où résident les données, vous maîtrisez les mises à jour et vous adaptez les ressources à vos automatisations. Pour un freelance, une agence ou une équipe qui manipule des données clients, des documents ou des prompts confidentiels, héberger n8n en France permet aussi de réduire la dépendance à un cloud étranger.

Ce guide présente une installation reproductible de n8n avec Docker Compose, un domaine dédié, HTTPS et une persistance des données.

Pourquoi auto-héberger n8n sur un VPS français ?

n8n Cloud prend en charge l’installation, les mises à jour et l’exploitation de la plateforme. C’est pratique, mais cette simplicité implique un coût récurrent et moins de contrôle sur l’environnement d’exécution.

Avec une instance auto-hébergée, vous contrôlez notamment :

  • l’emplacement du serveur ;
  • les ressources attribuées à n8n ;
  • le calendrier des mises à jour ;
  • les règles réseau et les sauvegardes ;
  • la durée de conservation des exécutions ;
  • les services auxquels l’instance peut accéder.

Le coût devient généralement plus prévisible, surtout lorsque le nombre de workflows augmente. Il faut toutefois intégrer le temps consacré à l’administration du VPS, à la sécurité et aux sauvegardes.

La localisation compte également. Un workflow d’IA peut transporter des adresses e-mail, des documents internes, des données commerciales ou des requêtes envoyées à un LLM. Choisir un VPS français permet de conserver l’instance n8n et son stockage en France, plutôt que de les placer chez un fournisseur étranger comme Contabo ou Hetzner. Cela facilite une démarche de souveraineté et de conformité au RGPD, sans dispenser de documenter les traitements ni de vérifier les services tiers appelés par les workflows.

Prérequis pour héberger n8n

Avant de commencer, prévoyez :

  • un VPS Linux récent, par exemple sous Ubuntu LTS ;
  • un accès SSH avec un compte disposant de sudo (voir notre guide se connecter en SSH) ;
  • une adresse IPv4 publique ;
  • un sous-domaine, par exemple n8n.example.fr ;
  • un enregistrement DNS de type A pointant vers l’adresse du VPS ;
  • Docker Engine et le plugin Docker Compose ;
  • les ports 80 et 443 accessibles depuis Internet.

Les besoins en ressources varient fortement selon les workflows. Une automatisation exécutée quelques fois par jour ne consomme pas autant qu’un pipeline d’IA traitant des fichiers volumineux ou plusieurs tâches simultanées. Commencez raisonnablement, puis surveillez la mémoire, le processeur et l’espace disque.

Installez Docker en suivant notre guide installer Docker sur un VPS, puis vérifiez l’installation :

docker --version
docker compose version
sudo systemctl status docker

La syntaxe actuelle est bien docker compose, avec un espace. L’ancien exécutable docker-compose est désormais considéré comme une méthode historique.

Installer n8n avec Docker Compose

Créer le répertoire de travail

Connectez-vous au VPS et préparez un répertoire consacré à n8n :

sudo mkdir -p /opt/n8n
sudo chown "$USER":"$USER" /opt/n8n
cd /opt/n8n

Générez ensuite une clé de chiffrement aléatoire :

openssl rand -hex 32

Conservez le résultat dans un gestionnaire de mots de passe. n8n utilise cette clé pour chiffrer les identifiants enregistrés dans l’application. Sa perte peut rendre les credentials restaurés depuis une sauvegarde inutilisables.

Créez un fichier .env :

N8N_DOMAIN=n8n.example.fr
N8N_ENCRYPTION_KEY=remplacez_par_la_cle_generee

Remplacez le domaine et la clé, puis limitez les droits d’accès au fichier :

chmod 600 .env

Créer le fichier Compose

Créez compose.yaml dans /opt/n8n :

services:
  n8n:
    image: n8nio/n8n:latest
    restart: unless-stopped
    ports:
      - "127.0.0.1:5678:5678"
    environment:
      N8N_HOST: ${N8N_DOMAIN}
      N8N_PORT: 5678
      N8N_PROTOCOL: https
      N8N_EDITOR_BASE_URL: https://${N8N_DOMAIN}
      WEBHOOK_URL: https://${N8N_DOMAIN}/
      N8N_PROXY_HOPS: 1
      N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
      N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS: "true"
      GENERIC_TIMEZONE: Europe/Paris
      TZ: Europe/Paris
    volumes:
      - n8n_data:/home/node/.n8n

volumes:
  n8n_data:
    name: n8n_data

Plusieurs éléments sont importants :

  • le port 5678 écoute uniquement sur 127.0.0.1 et n’est donc pas exposé directement à Internet ;
  • WEBHOOK_URL fournit à n8n l’adresse publique utilisée pour générer les webhooks ;
  • N8N_EDITOR_BASE_URL définit l’URL publique de l’interface ;
  • N8N_PROXY_HOPS=1 indique qu’un reverse proxy se trouve devant n8n ;
  • le volume n8n_data conserve la base, les workflows, les credentials et la configuration après le remplacement du conteneur.

Validez la configuration puis démarrez l’instance :

docker compose config
docker compose pull
docker compose up -d
docker compose ps

Attention : docker compose config affiche les variables résolues. Ne partagez pas sa sortie puisqu’elle peut contenir la clé de chiffrement.

Pour examiner le démarrage :

docker compose logs --tail=100 n8n

À ce stade, n8n doit répondre localement :

curl -I http://127.0.0.1:5678

Configurer le domaine et HTTPS

L’interface et les webhooks ne doivent pas circuler en HTTP public. Nous allons placer Nginx devant le conteneur et obtenir un certificat Let’s Encrypt. Si vous débutez avec Nginx, consultez d’abord notre guide installer Nginx sur un VPS et celui pour activer HTTPS avec Let’s Encrypt.

Installez Nginx et Certbot :

sudo apt update
sudo apt install -y nginx certbot python3-certbot-nginx

Créez /etc/nginx/sites-available/n8n avec cette configuration :

server {
    listen 80;
    listen [::]:80;

    server_name n8n.example.fr;

    client_max_body_size 50m;

    location / {
        proxy_pass http://127.0.0.1:5678;
        proxy_http_version 1.1;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

Adaptez le domaine, activez le site et contrôlez la syntaxe :

sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/n8n
sudo nginx -t
sudo systemctl reload nginx

Une fois le DNS propagé, demandez le certificat :

sudo certbot --nginx -d n8n.example.fr

Certbot configure HTTPS et peut rediriger automatiquement HTTP vers HTTPS. Testez ensuite le renouvellement :

sudo certbot renew --dry-run

Ouvrez enfin https://n8n.example.fr. Lors de la première connexion, n8n demande de créer le compte propriétaire de l’instance.

Sécuriser une instance n8n auto-hébergée

HTTPS ne suffit pas à sécuriser le VPS. Commencez par restreindre les ports entrants avec un pare-feu UFW :

sudo ufw allow OpenSSH
sudo ufw allow "Nginx Full"
sudo ufw enable
sudo ufw status

Assurez-vous que votre connexion SSH par clé fonctionne avant d’envisager de désactiver l’authentification SSH par mot de passe.

Quelques mesures supplémentaires sont recommandées :

  • activez l’authentification à deux facteurs du compte n8n ;
  • n’installez que des community nodes dont vous avez vérifié la provenance ;
  • protégez les webhooks sensibles avec un secret ou une authentification ;
  • limitez les credentials aux permissions strictement nécessaires ;
  • surveillez les journaux avec docker compose logs ;
  • installez régulièrement les correctifs de sécurité du système ;
  • n’exposez jamais directement le port 5678 sur toutes les interfaces.

Pour mettre n8n à jour :

cd /opt/n8n
docker compose pull
docker compose up -d
docker compose logs --tail=100 n8n

En production, mieux vaut remplacer latest par une version précise après validation, afin d’éviter une mise à niveau majeure involontaire.

Sauvegarder les workflows et les credentials

Le volume Docker est persistant, mais il reste stocké sur le VPS. Il ne constitue donc pas une sauvegarde à lui seul. Pour aller plus loin, voyez notre guide sur la stratégie de sauvegarde d’un serveur.

Pour créer une archive cohérente, arrêtez brièvement n8n puis sauvegardez son volume :

cd /opt/n8n
mkdir -p backups
docker compose stop n8n
docker run --rm \
  -v n8n_data:/data:ro \
  -v "$PWD/backups:/backup" \
  alpine sh -c 'tar czf /backup/n8n-$(date +%F-%H%M%S).tar.gz -C /data .'
docker compose start n8n

Copiez ensuite l’archive vers un emplacement distinct du VPS et, idéalement, chiffré. Sauvegardez également la valeur de N8N_ENCRYPTION_KEY séparément : restaurer le volume sans cette clé ne suffit pas pour récupérer les credentials.

Automatisez cette opération selon votre tolérance à la perte de données et testez périodiquement une restauration sur une instance isolée. Une sauvegarde dont la restauration n’a jamais été vérifiée reste une hypothèse.

Passer en production sereinement

Auto-héberger n8n demande plus d’implication que n8n Cloud, mais apporte un contrôle concret sur l’infrastructure, les mises à jour et les données. Pour les développeurs et les professionnels de l’IA, un VPS situé en France constitue une base cohérente pour exécuter des automatisations sans placer leur stockage principal sur un cloud étranger.

L’offre VPS TalCloud démarre à 4,99 € par mois, avec des serveurs en France, du stockage NVMe, une protection Anti-DDoS Netrix incluse et un support humain, pour héberger n8n et vos agents IA au plus près de vos utilisateurs.