Guide · VPS & hosting
Héberger n8n sur un VPS : méthode de déploiement et de vérification
Déployer n8n sur un VPS sans confondre installation rapide, exposition publique, secrets, sauvegardes et restauration.
Héberger n8n sur un VPS est pertinent lorsque vous voulez contrôler l’accès, les données et le calendrier de mise à jour de vos automatisations. La méthode la plus sûre consiste à séparer l’installation de l’exposition publique : on valide d’abord le conteneur, les données persistantes et la restauration ; on ajoute ensuite le proxy HTTPS et les identifiants externes. Une page qui répond ne prouve pas encore qu’un workflow, un webhook ou une sauvegarde survivra à un redémarrage.
Ce tutoriel décrit une démarche de déploiement. Il ne fournit pas de mot de passe, de clé ou de configuration universelle à recopier. Les noms de variables, les images et les options évoluent : vérifiez toujours la version de la documentation n8n correspondant à votre installation.
Ce que vous allez mettre en place
Vous allez préparer un VPS, lancer n8n dans un service isolé, rendre son stockage persistant, définir l’URL publique attendue, protéger l’administration et vérifier trois scénarios : redémarrage, exécution d’un workflow sans secret visible dans les logs, et restauration dans un environnement de test. Cette séquence convient à une petite instance. Une équipe avec beaucoup d’exécutions ou de données sensibles devra en plus étudier le mode queue, une base PostgreSQL séparée, les sauvegardes chiffrées et les accès par rôle documentés par n8n.
Prérequis
- Un VPS maintenu, un accès SSH par clé et un utilisateur d’administration distinct du compte applicatif.
- Un nom de domaine si vous exposez l’interface ou les webhooks au public.
- Docker Engine et Docker Compose installés depuis leur documentation officielle.
- Un emplacement persistant pour les données n8n, inclus dans votre stratégie de sauvegarde.
- Une décision explicite sur les services qui peuvent atteindre les webhooks.
Ne lancez pas une instance avec des identifiants de production pendant les premiers essais. Préparez plutôt un workflow bénin qui reçoit une donnée de test et écrit un résultat non sensible.
1. Préparer le serveur
Mettez à jour le système selon sa procédure habituelle, créez un répertoire réservé au service et limitez les connexions administratives au strict nécessaire. L’objectif n’est pas de rendre le serveur invulnérable avec une commande unique ; c’est de connaître les comptes, ports et services actifs avant d’ajouter n8n.
Vérifiez notamment le pare-feu, l’espace disque et l’horloge système. Les dates comptent pour les certificats, les signatures de webhook et l’analyse d’un incident. Évitez de monter le répertoire personnel d’un administrateur dans un conteneur : le volume de données n8n doit avoir un propriétaire et une sauvegarde identifiables.
Vérification : depuis un autre poste, confirmez que seul l’accès d’administration prévu est ouvert. Sur le VPS, listez les services en écoute et consignez l’espace libre avant le premier lancement.
2. Déclarer un service Compose minimal
Un fichier Compose doit déclarer au minimum l’image n8n choisie, un volume persistant et les variables nécessaires au mode d’exposition retenu. Épinglez une version plutôt que d’utiliser implicitement une étiquette mouvante : une mise à jour devient alors une décision testable et réversible. Ne placez pas de secrets dans le fichier s’il doit être partagé ou sauvegardé sans protection ; utilisez le mécanisme de secrets ou les variables d’environnement adapté à votre exploitation.
Définissez une clé de chiffrement n8n conformément à sa documentation, conservez-la dans un gestionnaire de secrets et sauvegardez-la séparément de manière contrôlée. Sans elle, certaines informations chiffrées peuvent ne plus être lisibles après une restauration. Cette clé n’est pas un détail d’installation : elle fait partie du plan de reprise.
Vérification : démarrez le service sans le publier sur Internet. Consultez son état, puis arrêtez-le et relancez-le. Créez un élément de test, redémarrez une seconde fois et confirmez qu’il est toujours présent. Si les données disparaissent, corrigez le montage persistant avant toute étape réseau.
3. Ajouter HTTPS et l’URL publique
Une interface d’administration et des webhooks ont des contraintes différentes. Placez généralement n8n derrière un reverse proxy HTTPS ; ne publiez pas directement un port de développement sur Internet. Déclarez l’URL publique selon les recommandations n8n afin que les liens et les webhooks générés correspondent réellement au domaine utilisé. Un certificat valide ne dispense pas de contrôler quels chemins sont accessibles ni de limiter les tentatives de connexion.
Si vous recevez des webhooks, testez-les avec un événement de démonstration. Vérifiez que l’URL affichée par n8n correspond au domaine HTTPS, qu’elle n’expose pas une adresse interne et que le reverse proxy transmet les en-têtes attendus. Ajoutez un délai d’expiration côté appelant lorsque cela est possible : un workflow bloqué ne doit pas laisser une connexion ouverte indéfiniment.
Vérification : ouvrez l’interface via HTTPS, inspectez le certificat et envoyez un événement de test. Consultez les journaux en cherchant l’identifiant de test, pas le contenu d’un jeton ou d’une charge utile sensible.
4. Protéger les identifiants et les workflows
Un workflow est du code opérationnel : il peut appeler une API, transmettre une pièce jointe ou modifier une base. Donnez-lui des identifiants dédiés et limités, jamais une clé d’administration générale. Vérifiez l’URL de destination, les opérations possibles et le propriétaire de chaque identifiant. À la révocation d’un accès, désactivez ou remplacez le secret puis testez explicitement que l’ancien secret échoue.
Évitez de stocker des données sensibles dans les noms d’exécutions ou dans les messages d’erreur. Définissez une durée de conservation des exécutions cohérente avec votre besoin de débogage. Un historique très détaillé peut aider à diagnostiquer un incident tout en augmentant le volume de données à protéger.
5. Sauvegarder et restaurer
Sauvegardez les données persistantes, la configuration contrôlée et les secrets nécessaires à la récupération, sans les mélanger dans une archive accessible à tous. La fréquence dépend du coût acceptable d’une perte de données. Une exportation occasionnelle de workflow ne remplace pas la sauvegarde de l’état et des identifiants selon votre configuration.
La vérification essentielle est une restauration sur un environnement isolé. Restaurez une copie, démarrez-la sans webhook de production, vérifiez les workflows attendus et assurez-vous que les données chiffrées sont récupérables avec la clé prévue. Documentez le temps, les étapes manuelles et les éléments manquants. Ce document est plus utile qu’une promesse de sauvegarde automatique.
Problèmes fréquents et solutions
Les données disparaissent après un redémarrage. Le volume est absent, mal monté ou pointe vers un chemin non persistant. Arrêtez l’exposition publique, identifiez le répertoire réellement utilisé et reprenez le test de redémarrage.
Un webhook génère une adresse incorrecte. Vérifiez l’URL publique et la configuration du reverse proxy ; n’essayez pas de masquer le problème avec une redirection aléatoire.
Les exécutions échouent après une restauration. Contrôlez les identifiants, les secrets et la clé de chiffrement avant de relancer des événements réels.
Les logs contiennent trop d’informations. Réduisez le niveau de détail, filtrez les champs sensibles et mettez en place un accès limité aux journaux.
FAQ
Peut-on utiliser SQLite pour commencer ?
La documentation n8n précise les options prises en charge selon le mode de déploiement. Pour une petite instance, le choix dépend surtout de la concurrence, de la sauvegarde et de la reprise. Vérifiez les recommandations actuelles avant de choisir une base pour la production.
Faut-il publier le port de n8n directement ?
Non en règle générale : utilisez un reverse proxy HTTPS et un pare-feu adapté. Cela facilite aussi le contrôle du domaine, des certificats et des accès.
Comment mettre à jour n8n ?
Épinglez une version, lisez les notes de version, sauvegardez, testez une mise à jour sur une copie puis validez les workflows critiques avant de toucher la production.
Un webhook est-il automatiquement sûr ?
Non. Validez l’origine lorsque le service le permet, utilisez des secrets de signature, limitez la taille et le débit, et traitez la charge utile comme une entrée non fiable.
Peut-on relier n8n à des outils IA ?
Oui, mais les entrées d’un modèle, les retours d’outils et les droits associés doivent être limités. Ne donnez pas à un workflow IA une clé qui permet plus que la tâche annoncée.
Conclusion
Héberger n8n sur un VPS consiste moins à démarrer un conteneur qu’à rendre ses données, son URL publique, ses identifiants et sa restauration vérifiables. Validez chaque couche séparément ; vous aurez un déploiement plus simple à maintenir et plus facile à arrêter proprement en cas d’incident.
Sources et limites
Les choix de configuration doivent être recoupés avec la documentation officielle n8n, la documentation Docker Compose et les recommandations de sécurité de votre système. Les fonctions, images et réglages peuvent changer. Ce guide ne remplace pas une revue de vos workflows, secrets ou obligations de protection des données.