n8n est une solution d’automatisation open source qui permet de connecter et d’automatiser des actions chronophages à partir d’un simple flux (workflow) entre différentes applications et services, sans nécessiter de compétences avancées en programmation. Contrairement à d’autres solutions propriétaires comme Make ou Zapier, n8n peut être hébergé localement ou dans le cloud, offrant ainsi plus de confidentialité et de contrôle total sur vos données sensibles.
Les workflows n8n peuvent être déclenchés par divers événements tels qu’une nouvelle entrée dans une base de données, un webhook recevant des données externes, une planification temporelle (cron), ou encore des intégrations avec plus de 400 services populaires.
Prérequis
Avant de commencer l’installation, assurez-vous de disposer des éléments suivants :
- Un serveur Linux (Debian 12/Ubuntu 22.04 ou supérieur) avec accès root ou sudo
- Minimum 2 Go de RAM (4 Go recommandés pour un usage en production)
- 20 Go d’espace disque disponible
- Une connexion internet stable
- Un nom de domaine (optionnel mais recommandé pour la production)
Installation de Docker
Docker est une plateforme de conteneurisation qui permet d’exécuter n8n de manière isolée et portable. Commençons par mettre à jour le système.
Mise à jour du système
Ouvrez un terminal et exécutez les commandes suivantes pour mettre à jour la liste des paquets disponibles et installer les mises à jour existantes :
sudo apt update && sudo apt upgrade -yInstallation des dépendances
Avant d’installer Docker, assurez-vous d’avoir installé les dépendances nécessaires en exécutant la commande suivante :
sudo apt install -y apt-transport-https ca-certificates curl gnupg2 software-properties-commonAjout du repository Docker officiel
Pour Debian :
Pour garantir l’authenticité des packages Docker téléchargés, ajoutez la clé GPG officielle et le dépôt :
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullPour Ubuntu :
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullInstallation de Docker Engine
Actualisez la liste des paquets et installez Docker en exécutant les commandes suivantes :
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginCes commandes installeront Docker Engine (le moteur Docker), Docker CLI (l’interface en ligne de commande), containerd.io (le runtime de conteneurs), ainsi que les plugins Docker Buildx et Docker Compose.
Activation et démarrage du service Docker
Activez et démarrez le service Docker pour qu’il se lance automatiquement au démarrage du système :
sudo systemctl enable --now docker.serviceVérifiez que Docker est bien installé et fonctionne correctement :
sudo docker --version
sudo docker compose versionConfiguration pour lancer Docker sans root
Pour exécuter les commandes Docker sans avoir besoin des privilèges root à chaque fois, ajoutez votre utilisateur au groupe Docker :
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp dockerNote : Vous devrez vous déconnecter puis vous reconnecter pour que les changements prennent effet, ou exécuter newgrp docker dans votre session actuelle.
Testez votre installation en exécutant la commande suivante sans sudo :
docker run hello-worldInstallation de n8n avec Docker Compose
Nous allons déployer n8n avec Docker Compose en utilisant PostgreSQL comme base de données pour assurer de meilleures performances et une meilleure fiabilité que SQLite (base de données par défaut).
Création du répertoire de projet
Créons un répertoire dédié pour notre installation n8n :
mkdir -p ~/n8n
cd ~/n8nConfiguration du fichier docker-compose.yml
Créez un fichier docker-compose.yml avec le contenu suivant :
version: "3.8"
services:
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
# Configuration de la base de données PostgreSQL
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=${DB_PASSWORD}
# Configuration d'authentification (à modifier impérativement)
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=${N8N_USER}
- N8N_BASIC_AUTH_PASSWORD=${N8N_PASSWORD}
# Configuration réseau
- N8N_PROTOCOL=http
- N8N_HOST=${N8N_HOST:-localhost}
- WEBHOOK_URL=http://${N8N_HOST:-localhost}:5678/
# Configuration générale
- GENERIC_TIMEZONE=Africa/Lome
- NODE_ENV=production
- N8N_SECURE_COOKIE=false
# Modules Node.js externes autorisés
- NODE_FUNCTION_ALLOW_EXTERNAL=axios,qs,moment,lodash
# Gestion des exécutions
- EXECUTIONS_DATA_PRUNE=true
- EXECUTIONS_DATA_MAX_AGE=168
volumes:
- n8n_data:/home/node/.n8n
- ./local-files:/files
depends_on:
postgres:
condition: service_healthy
networks:
- n8n-network
postgres:
image: postgres:15-alpine
container_name: n8n-postgres
restart: unless-stopped
environment:
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=n8n
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U n8n"]
interval: 10s
timeout: 5s
retries: 5
networks:
- n8n-network
volumes:
n8n_data:
driver: local
postgres_data:
driver: local
networks:
n8n-network:
driver: bridgeConfiguration des variables d’environnement
Pour sécuriser votre installation, créez un fichier .env dans le même répertoire :
nano .envAjoutez-y le contenu suivant en remplaçant les valeurs par les vôtres :
# Identifiants de connexion n8n (à personnaliser IMPÉRATIVEMENT)
N8N_USER=admin
N8N_PASSWORD=VotreMotDePasseSecurise123!
# Mot de passe PostgreSQL (à personnaliser IMPÉRATIVEMENT)
DB_PASSWORD=PostgresMotDePasseSecurise456!
# Nom d'hôte ou adresse IP du serveur
N8N_HOST=localhost⚠️ Important : Modifiez impérativement les mots de passe par défaut et utilisez des mots de passe forts !
Lancement des conteneurs
Démarrez les conteneurs en mode détaché (arrière-plan) :
docker compose up -dVérifiez que les conteneurs sont bien démarrés :
docker compose psVous devriez voir les deux conteneurs (n8n et postgres) avec le statut « Up ».
Vérification des logs
Pour surveiller les logs et vous assurer que tout fonctionne correctement :
# Logs de n8n
docker compose logs -f n8n
# Logs de PostgreSQL
docker compose logs -f postgresAppuyez sur Ctrl+C pour arrêter l’affichage des logs.
Gestion avec Portainer (Optionnel)
Portainer est une interface web graphique open-source et légère qui permet de gérer facilement vos conteneurs Docker. Son rôle principal est de fournir une interface conviviale pour la gestion des conteneurs, des images, des volumes et des réseaux Docker, ainsi que pour la surveillance des ressources système.
Si vous souhaitez gérer vos conteneurs Docker via une interface graphique, consultez notre guide dédié : Gérer vos conteneurs Docker avec Portainer
Une fois Portainer installé, vous pourrez :
- Visualiser l’état de vos conteneurs n8n et PostgreSQL
- Consulter les logs directement depuis l’interface web
- Gérer les volumes et les réseaux Docker
- Surveiller les ressources utilisées (CPU, mémoire, réseau)
- Déployer de nouvelles stacks facilement

Premier accès à n8n
Vous pouvez maintenant accéder à n8n depuis votre navigateur web préféré. Dans la barre d’adresse, saisissez :
http://VOTRE_IP_SERVEUR:5678ou si vous êtes sur le serveur local :
http://localhost:5678Vous serez invité à créer votre premier compte administrateur. Utilisez les identifiants définis dans votre fichier .env pour vous connecter.

Commandes utiles
Voici quelques commandes essentielles pour gérer votre installation n8n :
# Arrêter les conteneurs
docker compose stop
# Démarrer les conteneurs
docker compose start
# Redémarrer les conteneurs
docker compose restart
# Arrêter et supprimer les conteneurs (conserve les volumes)
docker compose down
# Mettre à jour n8n vers la dernière version
docker compose pull
docker compose up -d
# Voir l'utilisation des ressources
docker stats
# Sauvegarder les données PostgreSQL
docker exec n8n-postgres pg_dump -U n8n n8n > backup_n8n_$(date +%Y%m%d).sqlConfiguration pour la production
Configuration HTTPS avec Nginx et Let’s Encrypt
Pour une utilisation en production, il est fortement recommandé de configurer un reverse proxy avec HTTPS. Voici un exemple de configuration Nginx :
1. Installez Nginx et Certbot :
sudo apt install -y nginx certbot python3-certbot-nginx2. Créez la configuration Nginx pour n8n :
sudo nano /etc/nginx/sites-available/n8nAjoutez la configuration suivante (remplacez votre-domaine.com par votre nom de domaine) :
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_cache_bypass $http_upgrade;
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;
}
}3. Activez la configuration et obtenez un certificat SSL :
sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
sudo certbot --nginx -d votre-domaine.com4. Mettez à jour votre fichier .env :
N8N_HOST=votre-domaine.com
N8N_PROTOCOL=https
N8N_SECURE_COOKIE=true5. Redémarrez n8n :
docker compose down
docker compose up -dSauvegarde automatique
Créez un script de sauvegarde automatique avec cron :
sudo nano /usr/local/bin/backup-n8n.shContenu du script :
#!/bin/bash
BACKUP_DIR="/backup/n8n"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
# Sauvegarde de PostgreSQL
docker exec n8n-postgres pg_dump -U n8n n8n > $BACKUP_DIR/n8n_db_$DATE.sql
# Sauvegarde des fichiers n8n
docker run --rm \
-v n8n_data:/data \
-v $BACKUP_DIR:/backup \
alpine tar czf /backup/n8n_files_$DATE.tar.gz /data
# Suppression des sauvegardes de plus de 30 jours
find $BACKUP_DIR -name "*.sql" -mtime +30 -delete
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete
echo "Sauvegarde terminée : $DATE"Rendez le script exécutable et ajoutez-le au cron :
sudo chmod +x /usr/local/bin/backup-n8n.sh
sudo crontab -eAjoutez cette ligne pour une sauvegarde quotidienne à 2h du matin :
0 2 * * * /usr/local/bin/backup-n8n.sh >> /var/log/n8n-backup.log 2>&1Dépannage (Troubleshooting)
Problème : n8n ne peut pas se connecter à PostgreSQL
Solution : Vérifiez que PostgreSQL est bien démarré et accessible :
docker compose logs postgres
docker exec -it n8n-postgres psql -U n8n -d n8nProblème : Le port 5678 est déjà utilisé
Solution : Identifiez le processus utilisant le port et libérez-le, ou changez le port dans le docker-compose.yml :
sudo lsof -i :5678
# Ou changez le port mapping dans docker-compose.yml : "8080:5678"Problème : Les webhooks ne fonctionnent pas
Solution : Assurez-vous que la variable WEBHOOK_URL est correctement configurée avec votre domaine ou IP publique.
Problème : Les workflows s’exécutent lentement
Solution : Augmentez les ressources allouées au conteneur ou activez le mode de purge des exécutions :
# Dans .env
EXECUTIONS_DATA_PRUNE=true
EXECUTIONS_DATA_MAX_AGE=168 # 7 joursVous disposez maintenant d’une installation complète et sécurisée de n8n sur votre serveur Linux avec Docker. Cette configuration avec PostgreSQL vous garantit de meilleures performances et une meilleure stabilité qu’avec SQLite par défaut.
Pour aller plus loin, je vous recommande de consulter la documentation officielle de n8n pour découvrir toutes les possibilités d’automatisation offertes par cet outil puissant.
N’hésitez pas à partager cet article et à laisser un commentaire si vous avez des questions ou des suggestions d’amélioration !
