Installer n8n sur VPS : tutoriel complet Ubuntu et Docker

Installer n8n sur un VPS vous permet de contrôler entièrement votre plateforme d’automatisation sans dépendre d’un abonnement cloud. Cette solution auto-hébergée offre une flexibilité maximale pour créer des workflow n8n guide complet personnalisés tout en maîtrisant vos coûts d’infrastructure.

Ce tutoriel couvre l’installation complète de n8n sur Ubuntu avec Docker, incluant la configuration SSL, le domaine personnalisé et un système de sauvegarde automatique. Vous disposerez d’une instance production-ready en moins de 30 minutes.

Prérequis techniques pour installer n8n sur VPS

Avant de commencer l’installation, vérifiez que votre environnement répond aux exigences minimales. Un VPS sous Ubuntu 20.04 LTS ou 22.04 LTS constitue la base recommandée par la documentation officielle n8n.

Ressources serveur minimales :

  • 1 CPU core
  • 2 Go de RAM (4 Go recommandés pour les workflows complexes)
  • 20 Go d’espace disque
  • Connexion réseau stable

Accès et logiciels requis :

  • Accès SSH root ou sudo au serveur
  • Docker version 20.10 ou supérieure
  • Docker Compose version 2.0 ou supérieure
  • Un nom de domaine pointant vers l’IP de votre VPS

Ports réseau à ouvrir :

  • Port 80 (HTTP, pour la validation Let’s Encrypt)
  • Port 443 (HTTPS, pour l’accès sécurisé)
  • Port 22 (SSH, pour l’administration)

Assurez-vous que votre fournisseur VPS n’impose pas de restrictions sur ces ports. La plupart des hébergeurs cloud (DigitalOcean, Vultr, Hetzner, OVH) autorisent ces configurations par défaut.

Installation n8n avec Docker Compose étape par étape

Connectez-vous à votre serveur via SSH et commencez par mettre à jour le système :

sudo apt update && sudo apt upgrade -y
sudo apt install -y docker.io docker-compose git
sudo systemctl enable docker
sudo systemctl start docker

Créez un répertoire dédié pour n8n et son fichier de configuration :

mkdir -p ~/n8n-docker
cd ~/n8n-docker
nano docker-compose.yml

Copiez cette configuration Docker Compose complète dans le fichier :

version: '3.8'

services:
  n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=admin
      - N8N_BASIC_AUTH_PASSWORD=VotreMotDePasseSecurise
      - N8N_HOST=votre-domaine.com
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://votre-domaine.com/
      - GENERIC_TIMEZONE=Europe/Paris
    volumes:
      - n8n_data:/home/node/.n8n
      - /etc/localtime:/etc/localtime:ro

volumes:
  n8n_data:
    driver: local

Variables d’environnement critiques :

  • N8N_BASIC_AUTH_USER et N8N_BASIC_AUTH_PASSWORD : identifiants de connexion initiaux (à modifier immédiatement)
  • N8N_HOST : votre nom de domaine complet sans https://
  • WEBHOOK_URL : URL complète pour les webhooks entrants
  • GENERIC_TIMEZONE : fuseau horaire pour l’exécution des workflows planifiés

Remplacez votre-domaine.com par votre domaine réel et définissez un mot de passe fort. Lancez ensuite le conteneur :

sudo docker-compose up -d

Vérifiez que n8n fonctionne :

sudo docker ps
sudo docker logs n8n

Le conteneur doit afficher « Editor is now accessible via http://localhost:5678 ». À ce stade, n8n écoute sur le port 5678 mais n’est pas encore accessible publiquement avec SSL.

Gros plan d'un technicien travaillant sur l'installation de panneaux solaires avec des gants verts à Tampa, en Floride. — installer n8n
Photo : Florida Solar Fix — Pexels

Configurer un domaine et un certificat SSL pour n8n

Pour exposer n8n en HTTPS avec un certificat valide, installez Nginx comme reverse proxy et Certbot pour Let’s Encrypt :

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

Créez un fichier de configuration Nginx pour votre domaine :

sudo nano /etc/nginx/sites-available/n8n

Ajoutez cette configuration initiale (sans SSL) :

server {
    listen 80;
    server_name votre-domaine.com;

    location / {
        proxy_pass http://localhost:5678;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header 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;
        proxy_cache_bypass $http_upgrade;
    }
}

Activez la configuration et testez-la :

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

Obtenez maintenant un certificat SSL avec Certbot :

sudo certbot --nginx -d votre-domaine.com

Certbot modifie automatiquement la configuration Nginx pour activer HTTPS et redirige le trafic HTTP vers HTTPS. Le certificat se renouvelle automatiquement via un cron job installé par Certbot.

Vérifiez le renouvellement automatique :

sudo certbot renew --dry-run

Votre instance n8n est maintenant accessible via https://votre-domaine.com avec un certificat valide. Vous pouvez commencer à créer des exemples workflows n8n entreprise directement depuis l’interface web.

Photos gratuites de barbe brune, casque, casque de chantier — installer n8n
Photo : Gustavo Fring — Pexels

Sécuriser votre instance n8n : authentification et firewall

La configuration de base inclut l’authentification HTTP Basic, mais plusieurs couches de sécurité supplémentaires sont recommandées pour une instance production.

Désactiver l’authentification basique et activer les utilisateurs n8n :

Une fois connecté à l’interface, créez un compte utilisateur permanent dans les paramètres. Modifiez ensuite le docker-compose.yml pour désactiver Basic Auth :

- N8N_BASIC_AUTH_ACTIVE=false
- N8N_USER_MANAGEMENT_DISABLED=false

Redémarrez le conteneur :

sudo docker-compose down && sudo docker-compose up -d

Configurer le firewall UFW :

Installez et configurez UFW pour limiter l’accès aux ports essentiels :

sudo apt install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status

Sécuriser l’accès SSH :

Désactivez l’authentification par mot de passe et utilisez uniquement les clés SSH. Éditez /etc/ssh/sshd_config :

PasswordAuthentication no
PermitRootLogin prohibit-password

Redémarrez SSH :

sudo systemctl restart sshd

Limiter les tentatives de connexion :

Installez Fail2Ban pour bloquer les tentatives de connexion répétées :

sudo apt install -y fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Ces mesures réduisent drastiquement la surface d’attaque de votre instance n8n. Pour des configurations avancées incluant l’authentification OAuth2 ou SAML, consultez le guide securiser workflows n8n.

Sauvegarde et restauration de vos workflows n8n

Les workflows n8n sont stockés dans le volume Docker n8n_data. Une stratégie de sauvegarde automatique garantit la continuité en cas de défaillance serveur.

Script de sauvegarde automatique :

Créez un script qui exporte les workflows et copie le volume Docker :

sudo nano /usr/local/bin/backup-n8n.sh

Ajoutez ce contenu :

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

# Export des workflows via l'API n8n
curl -u admin:VotreMotDePasse \
  https://votre-domaine.com/api/v1/workflows \
  -o $BACKUP_DIR/workflows_$DATE.json

# Sauvegarde du volume Docker
docker run --rm \
  -v n8n_data:/data \
  -v $BACKUP_DIR:/backup \
  alpine tar czf /backup/n8n_volume_$DATE.tar.gz -C /data .

# Suppression des sauvegardes de plus de 30 jours
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete
find $BACKUP_DIR -name "*.json" -mtime +30 -delete

Rendez le script exécutable :

sudo chmod +x /usr/local/bin/backup-n8n.sh

Automatisation avec cron :

Planifiez l’exécution quotidienne à 2h du matin :

sudo crontab -e

Ajoutez cette ligne :

0 2 * * * /usr/local/bin/backup-n8n.sh

Restauration depuis une sauvegarde :

Pour restaurer un volume complet :

sudo docker-compose down
sudo docker run --rm \
  -v n8n_data:/data \
  -v /var/backups/n8n:/backup \
  alpine sh -c "cd /data && tar xzf /backup/n8n_volume_YYYYMMDD_HHMMSS.tar.gz"
sudo docker-compose up -d

Pour restaurer uniquement les workflows via l’interface, importez le fichier JSON depuis les paramètres de n8n. Cette approche hybride (volume + export API) offre une redondance maximale.

Testez votre procédure de restauration au moins une fois par trimestre pour valider son efficacité. Une sauvegarde non testée est une sauvegarde inutile.


Vous disposez maintenant d’une instance n8n complètement opérationnelle, sécurisée et sauvegardée automatiquement. Cette base solide vous permet de développer des automatisations complexes en toute confiance, que ce soit pour connecter api n8n ou pour comparer les performances avec d’autres solutions via n8n vs zapier make. L’investissement initial dans une infrastructure robuste se rentabilise dès les premiers workflows déployés en production.

Prêt à automatiser votre activité ?

WivoAgency conçoit des solutions sur mesure d’automatisation, de chatbots WhatsApp Business et de transformation digitale pour les PME francophones. Discutons de votre projet en 15 minutes, sans engagement.

Retour en haut