Auto-héberger n8n sur un VPS avec Docker

Photo Tyler / Unsplash
Points à retenir
- Héberger n8n soi-même élimine les frais de licence : la Community Edition est entièrement gratuite.
- Une fois le VPS provisionné et accessible via SSH, commencez par mettre à jour l'intégralité du système d'exploitation.
- Créez un fichier docker-compose.yml dans votre répertoire de travail.
- Déployez Caddy dans un conteneur Docker distinct ou installez-le directement sur l'hôte.
Auto-héberger n8n sur un VPS avec Docker offre un contrôle total, zéro coûts de licence, et l’indépendance face aux services cloud tiers. Cette approche s’adresse aux développeurs, DevOps, freelances et petites équipes qui souhaitent une solution d’automatisation portable, économique et maîtrisée. Le guide suivant couvre le choix du serveur, le déploiement via Docker Compose, la sécurisation HTTPS et la maintenance en production.
- Pourquoi auto-héberger n8n sur un VPS
- Prérequis et choix du VPS
- Préparer le serveur (Ubuntu ou Debian)
- Déployer n8n via Docker Compose
- Mettre en place HTTPS et un nom de domaine
- Sauvegarder et mettre à jour n8n
- Surveiller et dépanner l’instance n8n
Pourquoi auto-héberger n8n sur un VPS
Héberger n8n soi-même élimine les frais de licence : la Community Edition est entièrement gratuite. Vous conservez vos données sur votre infrastructure, sans dépendre de serveurs tiers, et disposez d’un nombre illimité de workflows et d’exécutions. Cette autonomie s’avère précieuse pour les équipes exploitant n8n régulièrement ou testant des intégrations métier exigeantes, où les quotas imposés par les services payants deviennent rapidement restrictifs.
L’alternative officielle, n8n Cloud, impose des frais mensuels et des limites strictes d’exécutions. Un VPS personnel, même modeste, vous garantit une indépendance budgétaire et une prévisibilité à long terme. Le revers : vous êtes responsable de la maintenance système, des mises à jour de sécurité, des sauvegardes et de la surveillance du serveur. Cet équilibre économie-responsabilité explique l’adoption croissante parmi les petites structures, les consultants indépendants et les équipes ayant besoin de stabilité durable sans verrouillage commercial.
Prérequis et choix du VPS
n8n impose des ressources minimales bien définies. Pour débuter ou pour des usages légers, deux gigaoctets de RAM, un processeur dual-core et vingt gigaoctets de stockage constituent le seuil viable. Au repos, l’application consomme environ cent mégaoctets de RAM. Dès que vous exploitez n8n en production réelle — avec des workflows actifs et des exécutions régulières — passez à quatre gigaoctets de RAM et deux vCPU minimum. Pour soutenir une charge intensifiée et éviter ralentissements ou interruptions, huit gigaoctets de RAM, quatre cœurs ou plus, et cinquante gigaoctets ou plus de stockage SSD demeurent la recommandation.
Le système d’exploitation idéal reste Linux Ubuntu version vingt-quatre point zéro-quatre LTS ou Debian version douze. Ces distributions bénéficient de mises à jour longue durée et d’une compatibilité éprouvée avec Docker, PostgreSQL et n8n. Si vous installez n8n directement via npm plutôt que via Docker, Node.js version vingt point dix-neuf ou supérieur s’impose. Pour un déploiement via Docker Compose, l’image officielle n8n inclut déjà la version compatible de Node.js, vous dispensant d’installation supplémentaire sur l’hôte.
Trois fournisseurs VPS offrent le meilleur rapport prix-performance en 2026 pour héberger n8n en tant que débutant ou PME. Hetzner propose sa gamme CX à partir de quatre euros trente-cinq centimes par mois — excellent compromis pour la production légère à modérée. OVH VPS Starter débute à trois euros cinquante-neuf centimes par mois — idéal pour tester et débuter, mais demande une montée de capacité dès les premiers workflows intensifs. Scaleway DEV1-S se situe à sept euros quatre-vingt-dix-neuf centimes par mois, combinant ressources suffisantes et facturation horaire flexible, utile si vous expérimentez. Pour commencer, l’OVH Starter ou le Hetzner restent pragmatiques. L’escalade vers quatre gigaoctets de RAM s’opère sans interruption majeure sur la plupart des providers et vous permet d’ajuster votre budget au fur et à mesure de vos besoins réels.
Préparer le serveur (Ubuntu ou Debian)
Une fois le VPS provisionné et accessible via SSH, commencez par mettre à jour l’intégralité du système d’exploitation. Exécutez un refresh complet des dépôts de paquets et une montée des versions existantes, puis installez Docker et Docker Compose. Ces outils servent de fondation à l’ensemble du déploiement de n8n et de sa base de données.
Vérifiez que Docker démarre automatiquement au redémarrage du serveur en activant le service approprié. Tout ce qui suit dépend de Docker opérationnel et sain. Si vous prévoyez une gestion multi-utilisateurs du VPS, ajoutez votre utilisateur au groupe Docker pour éviter les appels répétés à la commande sudo.
Créez un dossier de travail dédié pour n8n et pour PostgreSQL. Cet isolement simplifie les sauvegardes futures, les restaurations d’urgence et les migrations éventuelles vers un autre serveur. Utilisez une arborescence claire — par exemple un dossier racine n8n-production contenant des sous-dossiers pour la configuration et les données persistantes.
Déployer n8n via Docker Compose
Créez un fichier docker-compose.yml dans votre répertoire de travail. Ce fichier orchestre deux services : n8n lui-même et PostgreSQL. PostgreSQL stocke l’état persistent de n8n — workflows sauvegardés, credentials chiffrés, historique d’exécutions, variables d’environnement — et élimine la limite de la base de données SQLite embarquée, totalement insuffisante en production.
Voici la structure générale du fichier. Le service PostgreSQL crée un conteneur avec la base de données n8n, en attribuant un utilisateur et un mot de passe de connexion robuste, générés aléatoirement lors du déploiement. Les données persistent via un volume nommé, garantissant la survie intégrale de vos workflows et configurations en cas de redémarrage accidentel du serveur.
services:
postgres:
image: postgres:latest
container_name: n8n-postgres
environment:
POSTGRES_DB: n8n
POSTGRES_USER: n8n
POSTGRES_PASSWORD: [mot_de_passe_tres_securise]
volumes:
- postgres_data:/var/lib/postgresql/data
restart: unless-stopped
n8n:
image: n8nio/n8n:latest
container_name: n8n
depends_on:
- postgres
environment:
DB_TYPE: postgresdb
DB_POSTGRESDB_HOST: postgres
DB_POSTGRESDB_DATABASE: n8n
DB_POSTGRESDB_USER: n8n
DB_POSTGRESDB_PASSWORD: [mot_de_passe_tres_securise]
N8N_HOST: votredomaine.com
N8N_PROTOCOL: https
NODE_ENV: production
WEBHOOK_TUNNEL_URL:
volumes:
- n8n_data:/home/node/.n8n
restart: unless-stopped
volumes:
postgres_data:
n8n_data:
Adaptez les variables essentielles du fichier ci-dessus. Le mot de passe PostgreSQL doit être robuste, aléatoire et sécurisé. Le paramètre N8N_HOST doit pointer vers votre nom de domaine réel. L’URL WEBHOOK_TUNNEL_URL indique à n8n l’adresse externe utilisée par les webhooks entrants — elle doit correspondre à votre domaine pour que les intégrations externes fonctionnent correctement.
Lancez les services en arrière-plan via Docker Compose. Observez les logs initiaux pour détecter tout problème de démarrage ou de connectivité entre les conteneurs. Une fois les services actifs, n8n crée les tables nécessaires dans PostgreSQL et s’initialise. Accédez à n8n via un navigateur web. Une interface d’initialisation vous invite à créer votre compte administrateur et à configurer l’accès. Lors de cet accès initial, un certificat auto-signé peut s’afficher — c’est normal et disparaîtra une fois le reverse proxy HTTPS activé via Caddy.
Mettre en place HTTPS et un nom de domaine
n8n en production exige absolument HTTPS. Le chiffrement SSL/TLS protège les données sensibles en transit — credentials, API keys, données d’exécution — et établit la confiance auprès des clients externes, des webhooks et des appels d’intégration. Le reverse proxy Caddy automatise complètement l’obtention et le renouvellement de certificats via Let’s Encrypt, éliminant toute gestion manuelle fastidieuse ou renouvellements oubliés.
Déployez Caddy dans un conteneur Docker distinct ou installez-le directement sur l’hôte. Configurez Caddy pour faire reverse proxy vers l’instance n8n locale. Caddy détecte automatiquement votre nom de domaine via les enregistrements DNS, demande un certificat à Let’s Encrypt et le renouvelle sans intervention humaine. Après quelques secondes, n8n est accessible de manière sécurisée sur . Tous les appels HTTP non chiffrés sont redirigés vers HTTPS.
Cette mise en place est critique pour la viabilité en production. n8n refuse fonctionnellement de servir les webhooks et les authentifications OAuth 2 sur HTTP nu. Sans HTTPS, votre instance n8n restera inaccessible aux intégrations externes et vos workflows ne pourront pas recevoir d’événements externes. Caddy élimine cette contrainte en fournissant un certificat transparent et perpétuel.
Sauvegarder et mettre à jour n8n
Sauvegardez régulièrement votre base de données PostgreSQL. Exportez la base de données complète en format SQL à l’aide des outils Docker et stockez ces dumps sur un serveur distant, un service de stockage cloud ou un périphérique USB sécurisé. Une restauration d’urgence en cas de perte ou de corruption demande simplement de réimporter ce fichier SQL dans une nouvelle instance PostgreSQL — l’opération se déroule en quelques minutes sans perte de données.
Mettez à jour n8n en modifiant le tag d’image du service n8n dans votre docker-compose.yml. Le tag latest suit automatiquement les dernières versions publiques. Tirez l’image la plus récente et relancez les services. Les breaking changes demeurent rares dans l’évolution de n8n. Consultez le changelog officiel avant toute montée de version majeure. Si possible, testez d’abord en environnement de développement en clonant votre configuration et vos workflows complets sur un serveur secondaire ou un VPS temporaire.
Surveiller et dépanner l’instance n8n
Consultez les logs n8n en temps réel via Docker. Cela révèle les erreurs d’exécution de workflows, les problèmes de connectivité à la base de données, les anomalies de webhook et les alertes d’authentification. Vous pouvez redémarrer l’instance si elle semble bloquée, sans perte de données persistent grâce aux volumes Docker.
Surveillez la consommation RAM et CPU de vos conteneurs. Si n8n dépasse régulièrement votre allocation de RAM disponible ou si les workflows ralentissent sensiblement, l’escalade vers quatre gigaoctets de RAM et deux vCPU s’impose. Prévenez les surcharges en limitant le nombre de workflows actifs simultanés ou en optimisant la logique interne (réduisez les boucles redondantes, cachéz les appels API externes, divisez les workflows complexes).
Questions fréquentes
Quel est le coût réel d’auto-héberger n8n ?
Le coût principal se limite au VPS mensuel. Pour un usage modéré, l’OVH Starter à trois euros cinquante-neuf centimes ou le Hetzner à quatre euros trente-cinq centimes suffisent largement. Additionnez un nom de domaine (environ dix euros par an en moyenne) et, idéalement, un stockage de backup externe payant pour les dumps SQL. Comparé à n8n Cloud payant, auto-héberger demeure considérablement moins cher sur une année complète et vous évite toute dépendance commerciale ou limite d’exécution.
Puis-je migrer de n8n Cloud vers auto-hébergé ?
Oui. n8n Cloud propose une fonctionnalité native d’export JSON de vos workflows. Téléchargez ces fichiers JSON et importez-les dans votre instance auto-hébergée. Les credentials et variables d’environnement demeurent locales pour des raisons de sécurité et demandent une reconfiguration manuelle pointant vers vos fournisseurs réels (API keys, tokens OAuth, identifiants bases de données).
Comment sécuriser n8n en production ?
Activez l’authentification par mot de passe robuste dès la première connexion. Maintenez le serveur à jour en exécutant régulièrement les mises à jour système. Configurez un firewall au niveau du serveur, autorisant uniquement le trafic HTTP et HTTPS entrant. Limitez l’accès SSH à des adresses IP spécifiques ou à des clés publiques validées. Stockez les credentials n8n — API keys, tokens, identifiants — dans des variables d’environnement du docker-compose, jamais en dur dans le code source ni en clair dans les workflows ou les logs.
Combien de workflows et d’exécutions simultanées n8n peut-il gérer ?
Dépend de votre configuration matérielle, de la complexité des workflows et de la nature des tâches externes appelées. Sur quatre gigaoctets de RAM avec deux vCPU, attendez une concurrence modérée avant ralentissement notable. Au-delà des besoins légers, escaladez vers huit gigaoctets de RAM avec quatre cœurs ou envisagez un clustering de plusieurs instances — ce dernier point sort du cadre de ce guide introductif et demande une architecture avancée avec orchestration Kubernetes ou un balanceur de charge.
Pour aller plus loin sur le site, vous pouvez aussi lire notre article sur Zapier ou Make pour automatiser sans code.
