n8n self-hosted sur VPS : installation complète pas à pas (2026)

n8n est devenu l’outil d’automatisation open source de référence. Self-hosted, il vous garantit la souveraineté de vos données et une maîtrise totale des coûts. Ce guide vous accompagne pas à pas pour installer n8n sur un VPS en 2026, avec Debian 12, Traefik SSL, PostgreSQL et des sauvegardes automatiques.

Prérequis

  • Un VPS avec minimum 2 vCPU et 4 GB RAM (recommandé : 4 vCPU / 8 GB RAM)
  • Debian 12 (Bookworm) fraîchement installé
  • Un nom de domaine pointant vers l’IP du VPS (ex. : automator.votre-domaine.be)
  • Accès SSH root au serveur
  • Connaissances de base en administration Linux

Phase 1 : Préparation du serveur

Commencez par sécuriser et mettre à jour votre serveur :

apt update && apt upgrade -y
apt install -y curl wget gnupg2 software-properties-common ufw fail2ban

Configurez le pare-feu :

ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

Configurez fail2ban pour protéger SSH contre le brute force. Créez le fichier /etc/fail2ban/jail.local avec les paramètres adaptés à votre usage.

Phase 2 : Installation de Node.js

n8n requiert Node.js 18 ou supérieur. Installez via NodeSource :

curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install -y nodejs
node --version  # Doit afficher v20.x

Phase 3 : Configuration de PostgreSQL

Par défaut, n8n utilise SQLite, mais PostgreSQL est recommandé pour la production :

apt install -y postgresql postgresql-contrib
sudo -u postgres createuser n8n
sudo -u postgres createdb n8n_db -O n8n
sudo -u postgres psql -c "ALTER USER n8n WITH PASSWORD 'votre_mot_de_passe_securise';"

Phase 4 : Installation et configuration de n8n

Installez n8n globalement via npm :

npm install -g n8n

Créez le fichier de configuration d’environnement /etc/n8n.env :

N8N_HOST=automator.votre-domaine.be
N8N_PORT=5678
N8N_PROTOCOL=https
WEBHOOK_URL=https://automator.votre-domaine.be/
N8N_ENCRYPTION_KEY=votre_cle_encryption_unique
DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=localhost
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=n8n_db
DB_POSTGRESDB_USER=n8n
DB_POSTGRESDB_PASSWORD=votre_mot_de_passe_securise
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=votre_password_admin
EXECUTIONS_DATA_PRUNE=true
EXECUTIONS_DATA_MAX_AGE=168

Phase 5 : Configuration de Traefik SSL

Traefik v3 sert de reverse proxy avec certificats SSL Let’s Encrypt automatiques :

wget https://github.com/traefik/traefik/releases/download/v3.0.0/traefik_v3.0.0_linux_amd64.tar.gz
tar xzf traefik_v3.0.0_linux_amd64.tar.gz
mv traefik /usr/local/bin/

Créez la configuration Traefik dans /etc/traefik/traefik.yml avec les entrypoints HTTP (80) et HTTPS (443), le resolver Let’s Encrypt avec votre email, et le routage vers n8n sur le port 5678.

Créez la configuration dynamique dans /etc/traefik/dynamic.yml avec le router pour votre domaine et le service pointant vers http://localhost:5678.

Phase 6 : Services systemd

Créez le service systemd pour n8n dans /etc/systemd/system/n8n.service :

[Unit]
Description=n8n Workflow Automation
After=network.target postgresql.service

[Service]
Type=simple
User=n8n
EnvironmentFile=/etc/n8n.env
ExecStart=/usr/bin/n8n start
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Créez également un service systemd pour Traefik. Puis activez et démarrez les deux services :

systemctl daemon-reload
systemctl enable n8n traefik
systemctl start traefik
systemctl start n8n

Phase 7 : Vérification

Testez votre installation :

  1. Vérifiez que n8n tourne : systemctl status n8n
  2. Vérifiez que Traefik tourne : systemctl status traefik
  3. Accédez à https://automator.votre-domaine.be dans votre navigateur
  4. Vérifiez le certificat SSL (cadenas vert)
  5. Connectez-vous avec vos identifiants
  6. Créez un workflow de test simple (Cron > HTTP Request)

Phase 8 : Sécurisation avancée

  • Désactivez l’accès root SSH : créez un utilisateur dédié et utilisez sudo
  • Clés SSH uniquement : désactivez l’authentification par mot de passe
  • Rate limiting : configurez les limites dans Traefik pour protéger les webhooks
  • Mises à jour automatiques : activez unattended-upgrades pour les patchs de sécurité
  • Monitoring : installez Uptime Kuma pour surveiller la disponibilité

Phase 9 : Sauvegarde automatique

Créez un script de sauvegarde dans /opt/backup-n8n.sh :

#!/bin/bash
BACKUP_DIR="/opt/backups/n8n"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR

# Sauvegarde PostgreSQL
pg_dump -U n8n n8n_db | gzip > "$BACKUP_DIR/n8n_db_$DATE.sql.gz"

# Rotation : garder les 30 dernières sauvegardes
ls -t $BACKUP_DIR/n8n_db_*.sql.gz | tail -n +31 | xargs rm -f

echo "Backup completed: $DATE"

Planifiez l’exécution quotidienne via cron :

chmod +x /opt/backup-n8n.sh
crontab -e
# Ajouter : 0 2 * * * /opt/backup-n8n.sh >> /var/log/n8n-backup.log 2>&1

Résultat final

Vous disposez maintenant d’une instance n8n de production avec :

  • SSL automatique via Let’s Encrypt
  • Base de données PostgreSQL robuste
  • Services systemd avec redémarrage automatique
  • Sécurisation SSH et pare-feu
  • Sauvegardes quotidiennes automatiques

C’est exactement le setup que nous utilisons chez Agile Minds sur automator.agile-minds.be pour orchestrer nos workflows d’automatisation et nos agents IA.

Besoin d’aide pour votre installation n8n ? Contactez-nous.


Patrick Impens · CEO Agile Minds SRL · agile-minds.be