Aller au contenu principal

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 :

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​

ComposantMinimumRecommandé
RAM1 Go2-4 Go
CPU1 cƓur2 cƓurs
Stockage5 Go10 Go
Réseau100 Mbps1 Gbps
Port par défaut

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
VariableDescription
N8N_HOSTNom de domaine public de n8n
N8N_PROTOCOLProtocole (https en production)
WEBHOOK_URLURL de base pour les webhooks (doit ĂȘtre en HTTPS)
N8N_EDITOR_BASE_URLURL de l’éditeur (mĂȘme que l’accĂšs public)
GENERIC_TIMEZONEFuseau horaire (ex. Europe/Paris, UTC)
Remplacez le domaine

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​

  1. Ouvrez un navigateur et allez Ă  : https://n8n.votredomaine.com
  2. Créez le compte administrateur : email, nom et mot de passe.
  3. 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.
Webhooks

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​

CommandeDescription
docker logs -f n8nSuivre les logs en direct
docker compose downArrĂȘter et supprimer le conteneur
docker compose restartRedémarrer le conteneur
docker compose pull && docker compose up -dMettre Ă  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​

CheminDescription
~/n8n/Répertoire du projet n8n
~/n8n/docker-compose.ymlConfiguration 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.confConfiguration 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-data et local-files ont bien les droits 1000: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_URL et N8N_EDITOR_BASE_URL dans docker-compose.yml utilisent 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.

RĂ©fĂ©rences​