- Un VPS Linux (Ubuntu 22.04 recommandé) — à partir de 4-5 €/mois chez Hetzner ou OVH
- Un nom de domaine pointant vers l'IP du VPS
- Notions de base de ligne de commande Linux
- Docker et Docker Compose installés
Pourquoi auto-héberger n8n ?
n8n.cloud est pratique, mais l'auto-hébergement offre trois avantages majeurs pour les PME françaises :
- Conformité RGPD totale : vos données n'intègrent jamais les serveurs n8n — elles restent sur votre VPS (idéalement hébergé en Europe)
- Coût maîtrisé : 5-10 €/mois de VPS vs 24 €/mois minimum sur n8n.cloud pour un usage professionnel
- Pas de limite d'exécution : pas de plafond de workflows ou d'exécutions mensuelles
Étape 1 — Provisionner le VPS
Pour un usage PME standard, un VPS avec ces caractéristiques suffit :
- 2 vCPU / 4 Go RAM / 40 Go SSD
- Ubuntu 22.04 LTS
- Région : EU (Frankfurt, Amsterdam, Paris)
Options recommandées en Europe :
| Hébergeur | VPS | Prix/mois | Datacenter EU |
|---|---|---|---|
| Hetzner | CX22 (2 vCPU, 4 Go) | 4,35 € | Nuremberg, Falkenstein, Helsinki |
| OVHcloud | VPS Starter (2 vCPU, 2 Go) | 3,59 € | Strasbourg, Paris |
| Scaleway | DEV1-S (2 vCPU, 2 Go) | 7,99 € | Paris, Amsterdam |
| DigitalOcean | Basic Droplet (2 vCPU, 2 Go) | 12 $ | Amsterdam, Francfort |
Étape 2 — Sécuriser le VPS
Avant d'installer n8n, sécurisez le serveur :
sudo apt update && sudo apt upgrade -y
# Créer un utilisateur non-root
adduser n8nuser && usermod -aG sudo n8nuser
# Configurer SSH avec clé uniquement (désactiver mot de passe)
nano /etc/ssh/sshd_config
# PasswordAuthentication no
# PermitRootLogin no
sudo systemctl restart sshd
# Activer le pare-feu (UFW)
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
Étape 3 — Installer Docker et Docker Compose
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
# Vérifier l'installation
docker --version
docker compose version
Étape 4 — Configurer n8n avec Docker Compose
Créez un fichier docker-compose.yml avec la configuration recommandée pour la production :
services:
n8n:
image: n8nio/n8n:latest
restart: always
ports:
- "5678:5678"
environment:
- N8N_HOST=n8n.votredomaine.fr
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- WEBHOOK_URL=https://n8n.votredomaine.fr/
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=${N8N_BASIC_AUTH_USER}
- N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD}
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
Créez ensuite un fichier .env pour les secrets (ne jamais versionner ce fichier) :
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=mot-de-passe-fort-ici
Étape 5 — Configurer HTTPS avec Nginx et Certbot
sudo apt install nginx certbot python3-certbot-nginx -y
# Obtenir un certificat SSL (remplacez le domaine)
sudo certbot --nginx -d n8n.votredomaine.fr
# Configurer Nginx comme reverse proxy
sudo nano /etc/nginx/sites-available/n8n
Configuration Nginx recommandée :
listen 443 ssl;
server_name n8n.votredomaine.fr;
location / {
proxy_pass http://localhost:5678;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
chunked_transfer_encoding off;
proxy_buffering off;
}
}
Étape 6 — Lancer n8n
docker compose up -d
# Vérifier que n8n tourne
docker compose ps
docker compose logs n8n
n8n est maintenant accessible sur https://n8n.votredomaine.fr.
Étape 7 — Sauvegardes automatiques
Les workflows n8n sont précieux — configurez des sauvegardes automatiques :
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
docker run --rm -v n8n_data:/data -v /backup:/backup \
alpine tar czf /backup/n8n_backup_$DATE.tar.gz /data
# Garder uniquement les 7 dernières sauvegardes
ls -t /backup/n8n_backup_*.tar.gz | tail -n +8 | xargs rm -f
# Ajouter dans crontab (crontab -e)
0 2 * * * /home/n8nuser/backup.sh
Étape 8 — Mise à jour de n8n
./backup.sh
# Mettre à jour n8n
docker compose pull
docker compose up -d
Checklist de sécurité post-installation
- ☐ Authentification basique activée (ou mieux : LDAP/SSO si Enterprise)
- ☐ HTTPS configuré avec certificat valide
- ☐ Port 5678 fermé au public (accès uniquement via Nginx)
- ☐ UFW activé avec règles minimales
- ☐ Sauvegardes automatiques testées (vérifiez que la restauration fonctionne)
- ☐ Fichier .env exclu de tout système de versioning
- ☐ N8N_ENCRYPTION_KEY sauvegardée séparément (perte = perte des credentials)
- ☐ Mises à jour automatiques de sécurité Ubuntu configurées (unattended-upgrades)
FAQ — n8n self-hosted
Puis-je migrer mes workflows depuis n8n.cloud vers self-hosted ?
Oui. Exportez vos workflows depuis n8n.cloud (menu → Export All Workflows → JSON). Puis importez-les dans votre instance self-hosted. Attention : les credentials (clés API) ne sont pas exportables pour des raisons de sécurité — vous devrez les reconfigurer manuellement.
Faut-il PostgreSQL plutôt que SQLite pour la production ?
Pour une PME avec moins de 10 000 exécutions par mois, SQLite (par défaut) est suffisant. Pour des volumes plus élevés ou si vous avez plusieurs instances, PostgreSQL est recommandé pour la performance et la fiabilité. Ajoutez simplement un service PostgreSQL dans votre docker-compose.yml et configurez DB_TYPE=postgresdb.