• Technologie

Comment héberger soi-même n8n sur un VPS Linux (étape par étape)

  • Felix Rose-Collins
  • ••
  • 16 min read

Introduction

n8n est l’un des outils d’automatisation des flux de travail open source les plus puissants disponibles à l’heure actuelle. Contrairement aux alternatives SaaS telles que Zapier ou Make, n8n vous offre un contrôle total sur vos données et vos automatisations — mais uniquement si vous l’hébergez vous-même. Un VPS Linux constitue l’environnement idéal pour cela : toujours disponible, abordable et entièrement sous votre contrôle.

Ce guide vous accompagne tout au long du processus de mise en place d’une instance n8n auto-hébergée et prête à l’emploi sur un VPS Linux. Vous passerez d’un serveur vierge à un déploiement n8n entièrement sécurisé et compatible SSL, avec Docker, Nginx, PostgreSQL, des sauvegardes automatisées et une configuration de sécurité renforcée.

Points clés

  • n8n sur un VPS vous offre un nombre illimité de workflows, aucune limite d’utilisation et la pleine propriété de vos données
  • Docker est la méthode d’installation recommandée pour faciliter les mises à jour et l’isolation
  • PostgreSQL est la base de données recommandée pour les charges de travail en production (et non SQLite)
  • Un proxy inverse (Nginx) avec un certificat SSL Let’s Encrypt est requis pour une utilisation en production
  • Votre VPS doit disposer d’au moins 1 vCPU et 2 Go de RAM pour une expérience n8n fluide avec PostgreSQL
  • Des sauvegardes automatisées régulières protègent les données de vos workflows et vos identifiants

Qu’est-ce que n8n ?

n8n (prononcé « n-huit-n ») est une plateforme d’automatisation des workflows open source qui vous permet de connecter des applications, des API et des services à l’aide d’un éditeur visuel basé sur des nœuds. Elle prend en charge plus de 400 intégrations prêtes à l’emploi et vous permet d’exécuter du code JavaScript ou Python personnalisé au sein des workflows.

La différence principale entre n8n et ses concurrents se résume à trois éléments : la propriété, le coût et la flexibilité.

**Propriété : **Lorsque vous hébergez vous-même n8n, vos données de flux de travail, vos identifiants et vos journaux d’exécution ne quittent jamais votre serveur. Pour les équipes traitant des données clients sensibles, des dossiers financiers ou une logique métier propriétaire, cela revêt une importance capitale. Les plateformes cloud stockent votre logique d’automatisation sur leur infrastructure, soumise à leurs politiques de conservation des données et à leur niveau de sécurité.

**Coût : **La formule cloud de n8n facture à l’exécution de workflow, ce qui peut rapidement représenter un coût important pour les automatisations à haut volume. Une équipe de taille moyenne effectuant des milliers d’exécutions par jour peut dépenser des centaines de dollars par mois. Sur votre propre VPS, une fois le serveur payé, les exécutions sont illimitées sans frais supplémentaires.

**Flexibilité : **La version auto-hébergée de n8n vous permet d’installer des nœuds communautaires, d’exécuter du code arbitraire au sein des workflows, de vous connecter à des services internes inaccessibles depuis l’Internet public et de configurer chaque aspect du déploiement à votre guise. Les formules cloud limitent bon nombre de ces fonctionnalités.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Un VPS Linux fonctionnant sous Ubuntu 22.04 ou 24.04 (recommandé). Vérifiez que votre hébergeur propose Ubuntu pour la formule que vous choisissez, car certaines formules d’entrée de gamme ne proposent que d’autres distributions
  • Un utilisateur non root disposant de privilèges sudo
  • Un nom de domaine pointant vers l’adresse IP de votre VPS (par exemple, n8n.votredomaine.com)
  • Un accès SSH à votre serveur
  • Connaissances de base de la ligne de commande Linux

Choisir le bon VPS

Le serveur que vous choisissez a un impact direct sur les performances de n8n. Vous avez besoin au minimum d’un vCPU, de 2 Go de RAM et de 20 Go de stockage SSD. La RAM supplémentaire par rapport à une installation minimale basée sur SQLite est nécessaire car PostgreSQL, Nginx et n8n s’exécutent tous en même temps.

Rencontre avec Ranktracker

La plateforme tout-en-un pour un référencement efficace

Derrière chaque entreprise prospère se cache une solide campagne de référencement. Mais avec d'innombrables outils et techniques d'optimisation parmi lesquels choisir, il peut être difficile de savoir par où commencer. Eh bien, n'ayez crainte, car j'ai ce qu'il vous faut pour vous aider. Voici la plateforme tout-en-un Ranktracker pour un référencement efficace.

Nous avons enfin ouvert l'inscription à Ranktracker de manière totalement gratuite !

Créer un compte gratuit

Ou connectez-vous en utilisant vos informations d'identification

Pour les équipes comptant plusieurs utilisateurs, disposant de workflows complexes en plusieurs étapes ou générant un débit élevé de webhooks, passez à 2 vCPU et 4 Go de RAM. L’espace de stockage doit être d’au moins 40 Go si vous prévoyez de conserver des journaux d’exécution longs.

PetroSky propose des offres VPS NVMe à Paris et à Montréal, avec n8n disponible en un clic lors de la commande : un script d’installation open source déploie n8n avec Docker Compose et configure automatiquement le protocole HTTPS via Caddy et Let’s Encrypt. Ce guide décrit la procédure manuelle, qui fonctionne avec n’importe quel fournisseur.

Lors du choix d’un fournisseur de VPS, tenez également compte de l’emplacement géographique. Hébergez votre instance n8n dans la région la plus proche des services auxquels elle se connectera le plus souvent — cela réduit la latence des API lors de l’exécution de vos workflows.

Étape 1 : Mettre à jour votre serveur

Connectez-vous à votre VPS via SSH et effectuez une mise à jour complète du système avant toute installation :

    sudo apt update && sudo apt upgrade -y

Cela vous garantit de disposer des derniers correctifs de sécurité et de bibliothèques système à jour avant d’y ajouter Docker et d’autres logiciels.

Redémarrez si une mise à jour du noyau a été appliquée :

    sudo reboot

Après vous être reconnecté via SSH, créez un utilisateur système dédié pour l'exécution de n8n. L'exécution de services en tant que root présente un risque de sécurité :

    sudo adduser n8nuser
    sudo usermod -aG sudo n8nuser
    su - n8nuser

Étape 2 : Installation de Docker et de Docker Compose

La méthode d'installation officiellement recommandée par n8n est Docker. Docker isole n8n et ses dépendances du reste de votre système, ce qui facilite les mises à jour et les retours en arrière.

Installez Docker à l’aide du script officiel :

    curl -fsSL https://get.docker.com | sudo sh

La documentation de Docker précise que ce script pratique n’est pas recommandé pour les environnements de production, car il installe la dernière version sans vous permettre de choisir une version spécifique. Si vous souhaitez fixer une version de Docker, utilisez plutôt la méthode du dépôt apt décrite dans le guide d’installation de Docker pour Ubuntu (docs.docker.com/engine/install/ubuntu/).

Ajoutez votre utilisateur au groupe Docker afin de pouvoir exécuter les commandes Docker sans sudo :

    sudo usermod -aG docker $USER
    newgrp docker

Vérifiez que Docker fonctionne correctement :

    docker --version
    docker compose version

Ces deux commandes doivent afficher les chaînes de version sans erreur. Si Docker Compose est introuvable, installez-le manuellement :

    sudo apt install docker-compose-plugin -y

Étape 3 : Configurer PostgreSQL pour la production

Par défaut, n8n utilise SQLite comme base de données. SQLite convient pour un usage personnel et des workflows légers, mais il gère mal les écritures simultanées, ce qui se traduit par des ralentissements et des erreurs du type « base de données verrouillée » lorsque de nombreux workflows s’exécutent en même temps. Pour un déploiement en production, PostgreSQL est le choix qui s’impose.

Rencontre avec Ranktracker

La plateforme tout-en-un pour un référencement efficace

Derrière chaque entreprise prospère se cache une solide campagne de référencement. Mais avec d'innombrables outils et techniques d'optimisation parmi lesquels choisir, il peut être difficile de savoir par où commencer. Eh bien, n'ayez crainte, car j'ai ce qu'il vous faut pour vous aider. Voici la plateforme tout-en-un Ranktracker pour un référencement efficace.

Nous avons enfin ouvert l'inscription à Ranktracker de manière totalement gratuite !

Créer un compte gratuit

Ou connectez-vous en utilisant vos informations d'identification

Exécutez PostgreSQL dans Docker aux côtés de n8n :

    mkdir ~/n8n && cd ~/n8n

Créez un fichier d’environnement pour stocker vos secrets en toute sécurité. N’inscrivez jamais de mots de passe en dur dans votre fichier compose :

    nano ~/n8n/.env

Ajoutez ce qui suit, en remplaçant les valeurs par défaut par des mots de passe forts et uniques :

    POSTGRES_USER=n8n
    POSTGRES_PASSWORD=votre_mot_de_passe_fort_pour_la_base_de_données_ici
    POSTGRES_DB=n8n
    N8N_ENCRYPTION_KEY=votre_chaîne_aléatoire_de_32_caractères_ici

Générez une clé de chiffrement sécurisée à l'aide de la commande suivante :

    openssl rand -hex 16

Utilisez le résultat comme N8N_ENCRYPTION_KEY. Cette clé chiffre les identifiants stockés dans n8n — si vous la perdez, tous les identifiants enregistrés deviendront irrécupérables.

Étape 4 : Créer le fichier Docker Compose de n8n

Créez le fichier docker-compose.yml dans votre répertoire n8n :

    nano ~/n8n/docker-compose.yml

Collez la configuration suivante :


services:
  postgres:
    image: postgres:16-alpine
    restart: always
    environment:
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DB=${POSTGRES_DB}
    volumes :
      - postgres_data:/var/lib/postgresql/data
    healthcheck :
      test : ["CMD-SHELL", "pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
      interval : 5s
      timeout : 5s
      retries: 10


  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: always
    ports:
      - "127.0.0.1:5678:5678"
    environment:
      - N8N_HOST=n8n.votredomaine.com
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://n8n.yourdomain.com/
      - GENERIC_TIMEZONE=Europe/London
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
      - DB_POSTGRESDB_USER=${POSTGRES_USER}
      - DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
      - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
      - EXECUTIONS_MODE=regular
      - N8N_LOG_LEVEL=info
    volumes :
      - n8n_data:/home/node/.n8n
    depends_on :
      postgres :
        condition : service_healthy


volumes :
  postgres_data :
  n8n_data :

Remarques sur la configuration :

  • La liaison de port 127.0.0.1:5678:5678 garantit que n8n n'est accessible qu'en local. Nginx gérera tout le trafic externe — n'exposez jamais le port 5678 directement sur Internet.
  • L'utilisation de `depends_on` avec la condition `service_healthy` garantit que n8n attend que PostgreSQL soit entièrement prêt avant de démarrer. Sans cela, n8n échouera au premier démarrage si la base de données n'accepte pas encore les connexions.
  • N8N_LOG_LEVEL=info vous fournit des journaux d’exploitation utiles sans saturer l’espace de stockage sur disque, comme le ferait le niveau « debug ».

Étape 5 : Installation et configuration de Nginx

Nginx fera office de proxy inverse, redirigeant le trafic HTTPS du port 443 vers votre conteneur n8n sur le port 5678. Il gère également la terminaison SSL, ce qui signifie que n8n n'a pas besoin de gérer les certificats lui-même.

    sudo apt install nginx -y

Supprimez le site par défaut et créez un nouveau bloc de serveur pour n8n :

    sudo rm /etc/nginx/sites-enabled/default
    sudo nano /etc/nginx/sites-available/n8n

Collez ce qui suit :

    map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
    }
server {
    listen 80;
    server_name n8n.votredomaine.com;


    location / {
        proxy_pass http://127.0.0.1:5678;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        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;
        chunked_transfer_encoding on;
        proxy_buffering off;
        proxy_cache désactivé ;
        proxy_read_timeout 90s ;
        client_max_body_size 50m ;
    }
}

Le bloc « map » en haut gère correctement les en-têtes de mise à niveau WebSocket. n8n utilise les WebSockets pour les mises à jour en temps réel dans l’éditeur ; cette configuration est donc importante — sans elle, l’éditeur visuel ne fonctionnera pas correctement.

La directive `client_max_body_size 50m` permet aux workflows de recevoir des charges utiles de webhooks volumineuses. La limite par défaut de Nginx est de 1 Mo, ce qui est insuffisant pour les workflows traitant des téléchargements de fichiers ou des réponses JSON volumineuses.

Activez la configuration et testez-la :

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

Étape 6 : Émettre un certificat SSL avec Let’s Encrypt

Installez Certbot et le plugin Nginx :

    sudo apt install certbot python3-certbot-nginx -y

Demandez un certificat pour votre domaine :

    sudo certbot --nginx -d n8n.votredomaine.com

Suivez les instructions à l’écran. Lorsqu’on vous demande si vous souhaitez rediriger le trafic HTTP vers HTTPS, choisissez Oui (option 2). Certbot mettra automatiquement à jour votre configuration Nginx pour gérer cette redirection et installera la chaîne de certificats complète.

Vérifiez que le renouvellement automatique est correctement configuré :

    sudo certbot renew --dry-run

Certbot installe une tâche systemd qui renouvelle automatiquement les certificats toutes les 12 heures. Les certificats sont renouvelés lorsqu'ils sont à moins de 30 jours de leur expiration. Vous ne devriez jamais avoir à les renouveler manuellement.

Étape 7 : Démarrer n8n

Revenez dans votre répertoire n8n et démarrez tous les services :

    cd ~/n8n
    docker compose up -d

Docker va récupérer les images PostgreSQL et n8n, créer les volumes, démarrer d'abord PostgreSQL, attendre que le contrôle d'intégrité soit réussi, puis démarrer n8n. Ce processus prend entre 1 et 3 minutes lors de la première exécution.

Vérifiez que les deux conteneurs sont en cours d'exécution :

    docker compose ps

Vous devriez voir « postgres » et « n8n » apparaître dans la liste avec le statut « Up ». Si n8n affiche « Restarting », vérifiez les journaux :

    docker compose logs n8n --tail=50

Une fois que les deux conteneurs sont opérationnels, ouvrez votre navigateur et rendez-vous sur https://n8n.yourdomain.com. Vous serez invité à créer un compte propriétaire avec une adresse e-mail et un mot de passe. Ce compte dispose d’un accès administrateur complet à votre instance n8n.

Étape 8 : Configurer n8n pour qu’il démarre au démarrage du système

La directive « restart: always » dans votre fichier docker-compose.yml garantit que tous les conteneurs redémarrent automatiquement en cas de panne ou de redémarrage du serveur.

Vérifiez cela en redémarrant votre serveur :

    sudo reboot

Après vous être reconnecté via SSH, vérifiez que n8n s’est relancé automatiquement :

    docker compose -f ~/n8n/docker-compose.yml ps

Les deux conteneurs devraient apparaître comme étant en cours d'exécution sans aucune intervention manuelle.

Étape 9 : Configurer les sauvegardes automatisées

Vos données n8n — workflows, identifiants et historique d’exécution — sont stockées à deux endroits : la base de données PostgreSQL et le volume Docker n8n_data (qui stocke les clés de chiffrement et certaines configurations). Sauvegardez-les régulièrement.

Créez un script de sauvegarde :

    nano ~/n8n/backup.sh

Collez le contenu suivant :

    #!/bin/bash
    BACKUP_DIR="/home/n8nuser/backups"
    DATE=$(date +%Y-%m-%d_%H-%M)
    LOG_FILE="$BACKUP_DIR/backup.log"
# Vérifiez que le répertoire de sauvegarde existe avant toute autre opération
mkdir -p "$BACKUP_DIR"


# Sauvegarder la base de données PostgreSQL
DUMP_FILE="$BACKUP_DIR/n8n_db_$DATE.sql"
docker compose -f /home/n8nuser/n8n/docker-compose.yml exec -T postgres \
  pg_dump -U n8n n8n > "$DUMP_FILE"


# Vérifier que la sauvegarde a réussi et que le fichier n'est pas vide
if [ $? -ne 0 ] || [ ! -s "$DUMP_FILE" ]; then
    echo "ERREUR : échec de la sauvegarde de la base de données à la date $DATE" >> "$LOG_FILE"
    rm -f "$DUMP_FILE"
    exit 1
fi


# Sauvegarder la clé de chiffrement et les variables d’environnement
cp /home/n8nuser/n8n/.env "$BACKUP_DIR/n8n_env_$DATE.bak"
# Sauvegarder le volume n8n_data (configuration de l’instance et nœuds communautaires installés)
docker run --rm -v n8n_n8n_data:/data -v "$BACKUP_DIR":/backup alpine \
  tar czf /backup/n8n_data_$DATE.tar.gz -C /data .


# Compresser le dump de la base de données
gzip "$DUMP_FILE"


# Ne conserver que les sauvegardes des 7 derniers jours
find "$BACKUP_DIR" -name "*.sql.gz" -mtime +7 -delete
find "$BACKUP_DIR" -name "*.bak" -mtime +7 -delete
find "$BACKUP_DIR" -name "n8n_data_*.tar.gz" -mtime +7 -delete


echo "Sauvegarde terminée : n8n_db_$DATE.sql.gz" >> "$LOG_FILE"

Le nom du volume « n8n_n8n_data » provient du fait que Docker Compose ajoute en préfixe au volume le nom du dossier du projet (n8n). Vérifiez le vôtre avec la commande `docker volume ls`.

Rendez le script exécutable et programmez-le avec cron :

    chmod +x ~/n8n/backup.sh
    crontab -e

Ajoutez cette ligne pour lancer la sauvegarde tous les jours à 2 h du matin :

    0 2 * * * /home/n8nuser/n8n/backup.sh >> /home/n8nuser/backups/backup.log 2>&1

Pour une redondance hors site, pensez à synchroniser votre répertoire de sauvegarde vers un fournisseur de stockage d’objets compatible S3 à l’aide de rclone ou de aws s3 sync.

Étape 10 : Activer les mesures de sécurité de base

Configurer un pare-feu

Installez UFW et n'autorisez que les ports dont votre serveur a besoin :

    sudo ufw allow OpenSSH
    sudo ufw allow 'Nginx Full'
    sudo ufw enable

Vérifiez que les règles sont actives :

    sudo ufw status verbose

Vous devriez voir que les ports 22 (SSH), 80 (HTTP) et 443 (HTTPS) sont autorisés. Une mise en garde : Docker écrit ses propres règles de pare-feu et contourne UFW pour les ports de conteneurs publiés. Le port 5678 reste privé car le fichier compose le lie à 127.0.0.1, et non à cause d'UFW ; ne modifiez donc jamais cette liaison pour la remplacer par 0.0.0.0.

Désactivez l’authentification par mot de passe pour SSH

Si vous utilisez des clés SSH (ce que vous devriez faire), désactivez complètement la connexion SSH par mot de passe. Commencez par vous assurer que le compte n8nuser peut se connecter avec votre clé. Depuis votre machine locale, exécutez :

    ssh-copy-id n8nuser@votre_adresse_IP_du_serveur

Modifiez ensuite la configuration du serveur SSH :

    sudo nano /etc/ssh/sshd_config

Définissez les valeurs suivantes :

    PasswordAuthentication no
    PermitRootLogin no
    sudo systemctl restart ssh

Sur de nombreuses images cloud Ubuntu, un fichier situé dans /etc/ssh/sshd_config.d/ (souvent 50-cloud-init.conf) définit PasswordAuthentication sur « yes », et c'est cette valeur qui prévaut car sshd utilise la première valeur qu'il lit. Vérifiez le paramètre qui est effectivement appliqué :

    sudo sshd -T | grep -i passwordauthentication

La commande devrait afficher « passwordauthentication no ». Si ce n'est pas le cas, modifiez la valeur dans le fichier de remplacement et redémarrez SSH.

Ne fermez pas votre session SSH en cours avant d’avoir vérifié que la connexion par clé fonctionne dans une nouvelle fenêtre de terminal.

Limiter le débit de la page de connexion n8n

Ajoutez une limitation de débit pour ralentir les attaques par force brute contre le point de terminaison de connexion n8n.

Rencontre avec Ranktracker

La plateforme tout-en-un pour un référencement efficace

Derrière chaque entreprise prospère se cache une solide campagne de référencement. Mais avec d'innombrables outils et techniques d'optimisation parmi lesquels choisir, il peut être difficile de savoir par où commencer. Eh bien, n'ayez crainte, car j'ai ce qu'il vous faut pour vous aider. Voici la plateforme tout-en-un Ranktracker pour un référencement efficace.

Nous avons enfin ouvert l'inscription à Ranktracker de manière totalement gratuite !

Créer un compte gratuit

Ou connectez-vous en utilisant vos informations d'identification

**Important : **La directive limit_req_zone doit figurer à l’intérieur du bloc http {} de votre configuration Nginx principale — et non à l’intérieur du bloc server. Ouvrez la configuration principale :

    sudo nano /etc/nginx/nginx.conf

Ajoutez cette ligne à l’intérieur du bloc http {} existant :

    http {
        ...
        limit_req_zone $binary_remote_addr zone=n8n_login:10m rate=5r/m;
        ...
    }

Ensuite, dans la configuration de votre site n8n (/etc/nginx/sites-available/n8n), ajoutez ce bloc `location` à l’intérieur du bloc `server` qui écoute sur le port 443 (Créé par Certbot à l’étape 6), à côté de la `location` existante `/`. Nginx ne transmet pas les en-têtes de proxy depuis la `location /`, ils sont donc répétés ici :

    location /rest/login {
        limit_req zone=n8n_login burst=5 nodelay;
        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;
    }

Rechargez Nginx pour appliquer les modifications :

    sudo nginx -t && sudo systemctl reload nginx

Cela limite chaque adresse IP à environ 5 tentatives de connexion par minute, avec une petite marge tolérée en cas de pic.

Maintenez n8n et PostgreSQL à jour

Récupérez régulièrement les dernières images et redémarrez :

    cd ~/n8n
    docker compose pull
    docker compose up -d

Docker récupérera les dernières images n8nio/n8n et postgres et redémarrera uniquement les conteneurs pour lesquels une version plus récente est disponible.

En production, pensez à verrouiller l’image n8n sur une balise de version spécifique (docker.n8n.io/n8nio/n8n:<version>, tirée des notes de mise à jour de n8n) et à effectuer les mises à jour de manière contrôlée, afin qu’une récupération de routine ne passe jamais à une version majeure avant que vous n’ayez lu le journal des modifications.

Dépannage des problèmes courants

Le conteneur n8n redémarre sans cesse

Vérifiez les journaux du conteneur dès que la boucle de redémarrage commence :

    docker compose logs n8n --tail=100

Causes courantes :

  • Échec de la connexion à la base de données : assurez-vous que PostgreSQL fonctionne correctement à l’aide de la commande `docker compose ps`. Vérifiez que la variable `POSTGRES_PASSWORD` dans votre fichier `.env` correspond au mot de passe utilisé lors de l’initialisation de la base de données.
  • Clé de chiffrement manquante ou modifiée : si N8N_ENCRYPTION_KEY n’est pas défini ou a été modifié après le premier démarrage, n8n ne peut pas déchiffrer les identifiants stockés et se bloquera.
  • Mémoire vive insuffisante : PostgreSQL et n8n peuvent utiliser ensemble entre 1 et 1,5 Go de mémoire vive. Vérifiez la mémoire disponible avec la commande `free -h`.

Les webhooks ne fonctionnent pas

Les webhooks nécessitent que n8n soit accessible depuis Internet sur votre domaine. Vérifiez :

  1. L'enregistrement DNS A de votre domaine pointe vers l'adresse IP de votre VPS : dig n8n.votredomaine.com
  2. Nginx est en cours d’exécution : sudo systemctl status nginx
  3. Le port 443 est ouvert : sudo ufw status
  4. La variable d’environnement WEBHOOK_URL correspond exactement à votre domaine public, y compris la barre oblique finale

L'éditeur n8n ne se charge pas correctement

Si l’éditeur visuel se charge mais affiche un canevas de workflow vide ou si les mises à jour en temps réel cessent de fonctionner, cela signifie que la connexion WebSocket échoue. Vérifiez que le bloc $http_upgrade est présent dans votre configuration Nginx et que vous utilisez la variable $connection_upgrade — et non la chaîne littérale « upgrade » — dans la ligne proxy_set_header Connection.

Erreurs de certificat SSL

Si Certbot échoue en raison d’une erreur de validation de domaine, vérifiez que le port 80 est accessible depuis Internet :

    curl -I http://n8n.yourdomain.com

Si la requête expire, le pare-feu de votre fournisseur de VPS bloque peut-être le port 80. Vérifiez les règles du pare-feu de la console cloud en plus de celles d’UFW.

Conclusion

L’auto-hébergement de n8n sur un VPS Linux vous offre une plateforme d’automatisation des workflows prête pour la production, sans limite d’exécution, garantissant une confidentialité totale des données et offrant la flexibilité nécessaire pour exécuter toutes les intégrations dont vous avez besoin. La configuration décrite dans ce guide — Docker, PostgreSQL, proxy inverse Nginx, certificat SSL Let’s Encrypt, sauvegardes automatisées et renforcement de la sécurité — correspond à la pile utilisée dans les environnements de production et vous offre une base stable et sécurisée sur laquelle vous appuyer.

Contrairement à une installation minimale via la commande `docker run`, cette configuration est conçue pour résister aux redémarrages du serveur, gérer les exécutions simultanées de workflows et se remettre en douceur des pannes. Vos identifiants sont chiffrés, vos données sont sauvegardées chaque nuit et votre point de connexion est soumis à une limitation de débit pour se prémunir contre les attaques par force brute.

Une fois votre instance en cours d’exécution, explorez les nœuds intégrés de n8n pour les bases de données, les API, les webhooks et les intégrations d’IA afin de commencer immédiatement à automatiser vos workflows. Le forum communautaire auto-hébergé sur community.n8n.io constitue également une excellente ressource pour trouver des idées de workflows, résoudre les problèmes liés aux nœuds et obtenir des conseils de déploiement.

Felix Rose-Collins

Felix Rose-Collins

Ranktracker's CEO/CMO & Co-founder

Felix Rose-Collins is the Co-founder and CEO/CMO of Ranktracker. With over 15 years of SEO experience, he has single-handedly scaled the Ranktracker site to over 500,000 monthly visits, with 390,000 of these stemming from organic searches each month.

Commencez à utiliser Ranktracker... gratuitement !

Découvrez ce qui empêche votre site Web de se classer.

Créer un compte gratuit

Ou connectez-vous en utilisant vos informations d'identification

Different views of Ranktracker app