Aller au contenu principal

Installation avec Docker

n8n recommande l'utilisation de Docker dans la majorité des cas d’usage en auto-hébergement. Docker fournit un environnement propre et isolé, évitant ainsi les problèmes d'incompatibilité liés au système d'exploitation ou à la chaîne d'outils, tout en simplifiant la gestion de la base de données et de l'environnement.

Vous pouvez également utiliser Docker Compose pour exécuter n8n dans Docker. Des fichiers de configuration Docker Compose adaptés à différentes architectures sont disponibles dans le dépôt n8n-hosting.

Prérequis techniques pour l’auto-hébergement

L’auto-hébergement de n8n nécessite certaines compétences techniques, notamment :

  • La configuration et la mise en place de serveurs et de conteneurs
  • La gestion et la mise à l’échelle des ressources applicatives
  • Le renforcement de la sécurité du serveur et de l’application
  • La gestion de la configuration de n8n

n8n recommande l’auto-hébergement uniquement aux utilisateurs expérimentés. Une mauvaise manipulation peut entraîner une perte de données, des failles de sécurité ou une interruption de service. Si vous n’avez pas d’expérience en administration de serveurs, nous vous conseillons d’utiliser n8n Cloud.

Vous pouvez également suivre notre tutoriel vidéo :

Conditions préalables

Avant de commencer, installez Docker :

  • Docker Desktop est disponible pour Mac, Windows et Linux. Il inclut Docker Engine et Docker Compose.
  • Docker Engine et Docker Compose peuvent également être installés séparément sur Linux. Cette option convient aux serveurs Linux sans interface graphique ou si vous préférez ne pas utiliser l’interface utilisateur de Docker Desktop.

Versions stable et bêta

n8n publie presque chaque semaine une nouvelle version mineure. La version stable est destinée à la production, tandis que la version beta correspond à la dernière version publiée et peut être moins stable. Pour signaler un problème, utilisez le forum communautaire.

Version stable actuelle : 2.10.2
Version beta actuelle : 2.11.1

Démarrage de n8n

Exécutez la commande suivante dans votre terminal, en remplaçant l’espace réservé <YOUR_TIMEZONE> par votre fuseau horaire :

docker volume create n8n_data

docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e GENERIC_TIMEZONE="<YOUR_TIMEZONE>" \
-e TZ="<YOUR_TIMEZONE>" \
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
-e N8N_RUNNERS_ENABLED=true \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n

Cette commande crée un volume pour stocker les données persistantes, télécharge l’image n8n requise, et démarre le conteneur avec les paramètres suivants :

  • Le port 5678 du conteneur est mappé sur le port 5678 de l’hôte.
  • Le fuseau horaire du conteneur est configuré :
    • La variable d’environnement TZ définit le fuseau horaire système, utilisé par des commandes comme date.
    • La variable GENERIC_TIMEZONE configure le fuseau horaire pour les nœuds orientés planification, tels que le Déclencheur de planification.
  • Les permissions des fichiers de configuration de n8n sont renforcées pour plus de sécurité.
  • Les exécuteurs (runners) sont activés, ce qui constitue la méthode recommandée pour exécuter des tâches dans n8n.
  • Le volume n8n_data est monté sur le répertoire /home/node/.n8n, permettant de conserver les données après un redémarrage du conteneur.

Une fois le conteneur démarré, ouvrez votre navigateur et accédez à http://localhost:5678 pour utiliser n8n.

Utilisation de PostgreSQL

Par défaut, n8n utilise SQLite pour stocker les identifiants, l’historique des exécutions et les workflows. n8n prend également en charge PostgreSQL, configurable via des variables d’environnement comme indiqué ci-dessous.

Persistance du répertoire .n8n toujours recommandée

Lorsque vous utilisez PostgreSQL, n8n n’a plus besoin du répertoire .n8n pour stocker la base de données SQLite. Toutefois, ce répertoire contient d’autres données essentielles, telles que la clé de chiffrement, les journaux d’instance et les ressources liées au contrôle de version du code source. Bien qu’il soit possible de contourner certains besoins (par exemple en définissant la variable d’environnement N8N_ENCRYPTION_KEY), il est fortement conseillé de continuer à monter un volume persistant sur ce répertoire afin d’éviter tout problème potentiel.

Pour utiliser n8n avec PostgreSQL, exécutez la commande suivante en remplaçant les espaces réservés entre chevrons (comme <nom_base_données>) par vos propres valeurs :

docker volume create n8n_data

docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e GENERIC_TIMEZONE="<YOUR_TIMEZONE>" \
-e TZ="<YOUR_TIMEZONE>" \
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
-e N8N_RUNNERS_ENABLED=true \
-e DB_TYPE=postgresdb \
-e DB_POSTGRESDB_DATABASE=<nom_base_données> \
-e DB_POSTGRESDB_HOST=<adresse_hôte> \
-e DB_POSTGRESDB_PORT=<numéro_port> \
-e DB_POSTGRESDB_USER=<nom_utilisateur> \
-e DB_POSTGRESDB_SCHEMA=<nom_schéma> \
-e DB_POSTGRESDB_PASSWORD=<mot_de_passe> \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n

Vous trouverez un fichier docker-compose complet pour PostgreSQL dans le dépôt n8n-hosting.

Mise à jour

Pour mettre à jour n8n, dans Docker Desktop, accédez à l’onglet Images, puis sélectionnez Pull dans le menu contextuel pour télécharger la dernière image n8n :

Docker Desktop

Vous pouvez également utiliser la ligne de commande pour récupérer la dernière version ou une version spécifique :

# Récupérer la dernière version (stable)
docker pull docker.n8n.io/n8nio/n8n

# Récupérer une version spécifique
docker pull docker.n8n.io/n8nio/n8n:1.81.0

# Récupérer la version next (instable)
docker pull docker.n8n.io/n8nio/n8n:next

Après avoir téléchargé la nouvelle image, arrêtez votre conteneur n8n et redémarrez-le. Vous pouvez effectuer ces opérations en ligne de commande. Dans les commandes suivantes, remplacez <ID_conteneur> par l’identifiant obtenu avec la première commande :

# Trouver l’ID de votre conteneur
docker ps -a

# Arrêter le conteneur ayant l’ID <ID_conteneur>
docker stop <ID_conteneur>

# Supprimer le conteneur ayant l’ID <ID_conteneur>
docker rm <ID_conteneur>

# Redémarrer le conteneur
docker run --name=<nom_conteneur> [options] -d docker.n8n.io/n8nio/n8n

Mise à jour avec Docker Compose

Si vous exécutez n8n à l’aide d’un fichier Docker Compose, suivez ces étapes pour le mettre à jour :

# Accéder au répertoire contenant le fichier docker-compose
cd <votre_répertoire>

# Télécharger la dernière version
docker compose pull

# Arrêter et supprimer l’ancienne version
docker compose down

# Démarrer les conteneurs
docker compose up -d

Utilisation de n8n avec un tunnel

⚠️ Avertissement
Réservé au développement local et aux tests. Ne doit pas être utilisé en production.

Outils de développement

La fonctionnalité de tunnel est un outil pratique pour le développement local. Son implémentation sous-jacente peut évoluer avec les versions de n8n.

Pour permettre aux nœuds déclencheurs externes (comme GitHub) d’utiliser des Webhooks, votre instance n8n doit être accessible depuis Internet. n8n intègre un service de tunnel basé sur cloudflared pour rediriger les requêtes vers votre instance locale. Cette fonctionnalité nécessite Docker.

Selon la manière dont vous exécutez n8n, deux approches sont possibles :

Stack complète (Full stack)

Cette méthode exécute n8n et cloudflared ensemble dans un même conteneur. L’URL du tunnel est affichée au démarrage, et tout est automatiquement connecté :

pnpm stack --tunnel

Services uniquement (Services only)

Si vous préférez exécuter n8n localement avec pnpm dev ou pnpm start, vous pouvez lancer cloudflared comme service indépendant :

# Terminal 1 : démarrer le service de tunnel cloudflared
pnpm --filter n8n-containers services --services cloudflared

# Terminal 2 : démarrer n8n localement
pnpm dev

La commande services effectue les actions suivantes :

  1. Lance cloudflared en pointant vers host.docker.internal:5678 (votre instance locale de n8n).
  2. Récupère l’URL publique du tunnel depuis l’endpoint de métriques de cloudflared.
  3. Génère un fichier .env contenant WEBHOOK_URL et N8N_PROXY_HOPS=1 dans packages/cli/bin/.env.
  4. Les commandes pnpm dev et pnpm start chargent automatiquement ce fichier .env via dotenv.

Pour nettoyer après utilisation :

pnpm --filter n8n-containers services:clean

Étapes suivantes

  • Consultez le fichier README de l’image Docker pour en savoir plus sur la configuration de Docker.
  • Apprenez à configurer et à étendre n8n.
  • Ou lancez-vous directement avec le guide de démarrage rapide.