Installer n8n sur Ubuntu
Ce guide vous explique comment installer et configurer n8n sur un serveur Ubuntu 24.04 LTS. n8n est un outil dâautomatisation de workflows open source : il permet de connecter des services (APIs, bases de donnĂ©es, webhooks) et dâautomatiser des tĂąches via une interface visuelle par nĆuds, en no-code ou low-code.
Le dĂ©ploiement sâappuie sur Docker et Docker Compose, avec Nginx en reverse proxy et Let's Encrypt pour le HTTPS.
Commander un serveurâ
Pour héberger votre instance n8n, HostMyServers propose plusieurs offres adaptées :
- VPS Performance - Idéal pour des workflows légers
- VPS NVMe - Excellent rapport qualité/prix
- Serveurs dédiés Eco - Pour des workflows nombreux ou longs
- Serveurs dédiés Performance - Performance maximale
PrĂ©requisâ
- AccĂšs SSH root ou utilisateur avec sudo
- SystĂšme Ubuntu 24.04 LTS
- Un nom de domaine (ex.
n8n.votredomaine.com) avec un enregistrement A pointant vers lâIP publique du serveur - Ports 80 (HTTP) et 443 (HTTPS) accessibles
Configuration requiseâ
| Composant | Minimum | Recommandé |
|---|---|---|
| RAM | 1 Go | 2-4 Go |
| CPU | 1 cĆur | 2 cĆurs |
| Stockage | 5 Go | 10 Go |
| Réseau | 100 Mbps | 1 Gbps |
n8n Ă©coute sur le port 5678 en interne. Nginx fait le reverse proxy vers ce port ; lâaccĂšs public se fait en HTTPS sur 443.
Connexion au serveurâ
Connectez-vous en SSH Ă votre serveur :
ssh utilisateur@adresse_ip_serveur
Mise Ă jour du systĂšmeâ
Mettez Ă jour la liste des paquets avant de commencer :
sudo apt update
sudo apt upgrade -y
Installation de Docker et Docker Composeâ
n8n est dĂ©ployĂ© en conteneur. Si Docker nâest pas encore installĂ©, suivez les Ă©tapes ci-dessous pour ajouter le dĂ©pĂŽt officiel Docker et installer le moteur ainsi que le plugin Docker Compose.
Paquets nĂ©cessaires et clĂ© GPG Dockerâ
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Ajouter le dĂ©pĂŽt Dockerâ
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
Installer Docker et Docker Composeâ
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
Utiliser Docker sans sudo (optionnel)â
Pour lancer les commandes Docker sans sudo, ajoutez votre utilisateur au groupe docker :
sudo usermod -aG docker $USER
newgrp docker
VĂ©rifiez lâinstallation :
docker --version
docker compose version
Structure des rĂ©pertoires n8nâ
Créez un répertoire dédié pour n8n, avec des dossiers pour les données persistantes et les fichiers locaux :
mkdir -p ~/n8n
cd ~/n8n
mkdir n8n-data
mkdir local-files
Le conteneur n8n sâexĂ©cute avec lâUID 1000. Donnez les droits correspondants pour que les donnĂ©es soient correctement persistĂ©es :
sudo chown -R 1000:1000 n8n-data local-files
Configuration Docker Compose pour n8nâ
Créez le fichier docker-compose.yml dans ~/n8n (remplacez n8n.votredomaine.com par votre domaine) :
cd ~/n8n
nano docker-compose.yml
Contenu :
services:
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
- N8N_HOST=n8n.votredomaine.com
- N8N_PORT=5678
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://n8n.votredomaine.com
- N8N_EDITOR_BASE_URL=https://n8n.votredomaine.com
- GENERIC_TIMEZONE=Europe/Paris
- N8N_USER_FOLDER=/home/node/.n8n
volumes:
- ./n8n-data:/home/node/.n8n
- ./local-files:/files
networks:
- n8n-network
networks:
n8n-network:
driver: bridge
| Variable | Description |
|---|---|
N8N_HOST | Nom de domaine public de n8n |
N8N_PROTOCOL | Protocole (https en production) |
WEBHOOK_URL | URL de base pour les webhooks (doit ĂȘtre en HTTPS) |
N8N_EDITOR_BASE_URL | URL de lâĂ©diteur (mĂȘme que lâaccĂšs public) |
GENERIC_TIMEZONE | Fuseau horaire (ex. Europe/Paris, UTC) |
Adaptez n8n.votredomaine.com dans toutes les variables dâenvironnement Ă votre vrai domaine.
Installation et configuration de Nginxâ
Nginx sert de reverse proxy : il reçoit les requĂȘtes HTTPS et les transmet au conteneur n8n sur le port 5678. La configuration inclut le support WebSocket et des timeouts adaptĂ©s aux workflows longs.
Installer Nginxâ
sudo apt install -y nginx
CrĂ©er le virtual host pour n8nâ
Créez un fichier de configuration (remplacez n8n.votredomaine.com par votre domaine) :
sudo nano /etc/nginx/sites-available/n8n.conf
Contenu :
server {
listen 80;
listen [::]:80;
server_name n8n.votredomaine.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;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_buffering off;
proxy_read_timeout 300s;
proxy_connect_timeout 75s;
}
}
Activez le site et testez la configuration :
sudo ln -s /etc/nginx/sites-available/n8n.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Configuration du pare-feuâ
Ouvrez les ports HTTP et HTTPS pour lâaccĂšs web et la validation Let's Encrypt :
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
Certificat TLS avec Certbot (Let's Encrypt)â
Certbot obtient et renouvelle automatiquement un certificat TLS pour votre domaine et adapte la configuration Nginx pour le HTTPS.
Installer Certbot et le plugin Nginxâ
sudo apt install -y certbot python3-certbot-nginx
Obtenir le certificat pour votre domaineâ
Remplacez n8n.votredomaine.com par votre domaine et admin@exemple.com par votre email :
sudo certbot --nginx -d n8n.votredomaine.com --email admin@exemple.com --agree-tos --non-interactive
Certbot modifie le virtual host Nginx pour activer HTTPS et configure le renouvellement automatique.
Tester le renouvellementâ
sudo certbot renew --dry-run
Un succÚs confirme que le renouvellement automatique est bien configuré.
DĂ©marrer n8nâ
Une fois Nginx et le certificat en place, lancez le conteneur n8n :
cd ~/n8n
docker compose up -d
Vérifiez que le conteneur tourne :
docker compose ps
Consultez les logs pour confirmer le démarrage :
docker logs n8n
Vous devriez voir une ligne du type : n8n ready on https://n8n.votredomaine.com.
AccĂšs et premiĂšre configurationâ
- Ouvrez un navigateur et allez Ă :
https://n8n.votredomaine.com - Créez le compte administrateur : email, nom et mot de passe.
- Vous accĂ©dez Ă lâĂ©diteur de workflows n8n : vous pouvez crĂ©er des workflows Ă partir de modĂšles ou from scratch, connecter des services (Google, Slack, bases de donnĂ©es, webhooks, etc.) et les enchaĂźner visuellement.
Les workflows n8n peuvent exposer des webhooks. LâURL de base utilisĂ©e est celle dĂ©finie dans WEBHOOK_URL (ex. https://n8n.votredomaine.com). Assurez-vous que le domaine et le certificat HTTPS sont corrects pour que les appels externes fonctionnent.
Gestion du conteneur n8nâ
| Commande | Description |
|---|---|
docker logs -f n8n | Suivre les logs en direct |
docker compose down | ArrĂȘter et supprimer le conteneur |
docker compose restart | Redémarrer le conteneur |
docker compose pull && docker compose up -d | Mettre Ă jour lâimage et redĂ©marrer |
Mise Ă jour de n8nâ
Pour passer Ă la derniĂšre version de lâimage :
cd ~/n8n
docker compose pull
docker compose up -d
Les données dans n8n-data sont conservées.
Structure des rĂ©pertoiresâ
| Chemin | Description |
|---|---|
~/n8n/ | Répertoire du projet n8n |
~/n8n/docker-compose.yml | Configuration Docker Compose |
~/n8n/n8n-data/ | Données n8n (workflows, credentials, etc.) |
~/n8n/local-files/ | Fichiers locaux accessibles depuis les nĆuds « Fichier » |
/etc/nginx/sites-available/n8n.conf | Configuration Nginx (reverse proxy) |
En cas de problĂšmeâ
Le conteneur ne dĂ©marre pasâ
- Vérifiez les logs :
docker logs n8n - Vérifiez que les répertoires
n8n-dataetlocal-filesont bien les droits1000:1000:ls -la ~/n8n - VĂ©rifiez que le port 5678 nâest pas dĂ©jĂ utilisĂ© :
ss -tlnp | grep 5678
Erreur 502 Bad Gateway dans le navigateurâ
- Vérifiez que le conteneur tourne :
docker compose ps - Vérifiez que n8n écoute sur 5678 :
curl -I http://127.0.0.1:5678 - Consultez les logs Nginx :
sudo tail -f /var/log/nginx/error.log
Les webhooks ne reçoivent pas les requĂȘtesâ
- Vérifiez que
WEBHOOK_URLetN8N_EDITOR_BASE_URLdansdocker-compose.ymlutilisent bien votre domaine en HTTPS. - Redémarrez le conteneur aprÚs toute modification des variables :
docker compose up -d --force-recreate
Workflows longs qui timeoutâ
La configuration Nginx inclut déjà proxy_read_timeout 300s. Pour des exécutions encore plus longues, augmentez cette valeur dans /etc/nginx/sites-available/n8n.conf puis rechargez Nginx : sudo systemctl reload nginx.