tva
← Insights

Guide complet de dépannage n8n auto-hébergé 2025 : résoudre les problèmes de taille des données d'exécution et de webhooks avec Traefik

Dernière mise à jour : 15 octobre 2025

L'auto-hébergement de n8n offre des exécutions de workflows illimitées, un contrôle total des données et des économies significatives par rapport aux plans cloud. Mais en réalité, les instances auto-hébergées font face à des défis uniques que les utilisateurs cloud ne rencontrent jamais — notamment autour de la gestion des gros volumes de données et de la configuration des webhooks avec les reverse proxies.

En juin 2025, nous avons publié deux guides de dépannage traitant ces problèmes séparément. Le problème est qu'aucun guide complet n'existe pour les déploiements n8n en production avec le reverse proxy Traefik qui aborde les deux problèmes courants ensemble.

Ce guide combine les deux correctifs originaux, fournit une configuration Traefik complète avec support WebSocket, inclut les nouvelles exigences des task runners de 2025 et livre des fichiers docker-compose prêts pour la production que vous pouvez déployer immédiatement.


Table des matières

  1. Diagnostic rapide : quel problème avez-vous ?
  2. Comprendre les deux problèmes principaux
  3. Correctif n°1 : erreur de données d'exécution trop volumineuses
  4. Correctif n°2 : problèmes d'URL de webhooks
  5. Configuration de production complète avec Traefik
  6. Exigence 2025 : Task Runners
  7. Référence des variables d'environnement
  8. Exemples Docker Compose
  9. Tester votre configuration
  10. Dépannage des problèmes courants

Diagnostic rapide : quel problème avez-vous ?

Symptôme : « Existing execution data is too large »

Vous voyez cette erreur quand :

  • Vous cliquez sur « Execute Node » pendant le développement d'un workflow
  • Vous testez des workflows avec de grands ensembles de données ou de nombreux éléments
  • Vous utilisez le mode d'exécution partielle (test de nœuds individuels)
  • Vous traitez des transformations complexes avec plusieurs branches

Il vous faut : Correctif n°1 : taille des données d'exécution


Symptôme : les webhooks affichent des URLs incorrectes ou ne fonctionnent pas

Vous constatez cela quand :

  • Les URLs des webhooks s'affichent avec des numéros de port (ex : :5678)
  • Les services externes (Slack, GitHub, Stripe) ne peuvent pas atteindre vos webhooks
  • Les webhooks fonctionnent en mode test mais échouent en production
  • Vous utilisez un reverse proxy (Nginx, Traefik, Caddy)

Il vous faut : Correctif n°2 : configuration des URLs de webhooks


Symptôme : avertissements de dépréciation concernant les task runners

Vous voyez dans les logs :

Running n8n without task runners is deprecated. Task runners will be
turned on by default in a future version.

Il vous faut : Configuration des Task Runners


Symptôme : vous souhaitez une configuration complète prête pour la production

Il vous faut :

  • Les deux correctifs appliqués correctement
  • Le reverse proxy Traefik avec HTTPS automatique
  • Les bonnes pratiques de production et la sécurité
  • Les limites de ressources et une surveillance appropriée

Aller à : Configuration de production complète


Comprendre les deux problèmes principaux

Pourquoi n8n Cloud n'a pas ces problèmes

n8n Cloud gère automatiquement des limites de mémoire plus élevées pour l'exécution partielle, les URLs de webhooks correctes, le stockage optimisé des données binaires et les mises à jour automatiques incluant toutes les nouvelles exigences. Lorsque vous auto-hébergez, vous êtes responsable de ces configurations.

Les causes profondes

Problème n°1 : limite de taille des données d'exécution

La limite par défaut de 16 Mo pour les données d'exécution partielle envoyées au backend déclenche des erreurs lors du travail avec de grands ensembles de données, de nombreuses branches de workflow ou des transformations complexes. Le problème est que le développement de workflows devient frustrant — vous ne pouvez pas tester les nœuds individuels pendant le développement. Le correctif est simple : la variable d'environnement N8N_PAYLOAD_SIZE_MAX.

Problème n°2 : génération des URLs de webhooks

n8n tente de détecter automatiquement votre URL publique, mais cette détection automatique échoue derrière un reverse proxy. Les services externes reçoivent des URLs de webhooks incorrectes avec des ports ou des noms d'hôtes internes — les intégrations échouent silencieusement. Le correctif : la variable d'environnement WEBHOOK_URL.


Correctif n°1 : erreur « Execution Data Too Large »

Le problème en détail

Lorsque vous exécutez seulement une partie d'un workflow (en cliquant sur « Execute Node » dans l'éditeur), n8n doit charger les données d'exécution précédentes pour fournir le contexte à ce nœud. Par défaut, n8n limite ce transfert de données à 16 Mo pour prévenir les problèmes de mémoire sur les serveurs plus petits.

Le message d'erreur

Selon la documentation officielle de n8n :

Please execute the whole workflow, rather than just the node.
(Existing execution data is too large.)

Cette erreur apparaît lors du traitement de milliers d'éléments dans un seul nœud, du travail avec de grandes réponses API en JSON, de la transformation de grands ensembles de données avec des nœuds Code ou de l'utilisation de workflows avec de nombreuses branches parallèles.

La solution : N8N_PAYLOAD_SIZE_MAX

Le correctif est simple mais nécessite de comprendre les ressources disponibles de votre serveur.

Paramètres recommandés selon la RAM du serveur

RAM du serveurN8N_PAYLOAD_SIZE_MAXValeur en octetsPourcentage de la RAM
2 Go ou moins64 Mo67108864~3 %
4 Go128 Mo134217728~3 %
8 Go256 Mo268435456~3 %
16 Go+512 Mo536870912~3 %

Règle générale : utilisez moins de 20 % de votre RAM disponible pour maintenir le système stable sous charge.

Implémentation Docker Compose

version: '3.8'

services:
  n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      - N8N_PORT=5678

      # Payload size fix (256MB for 8GB+ RAM servers)
      - N8N_PAYLOAD_SIZE_MAX=268435456

      # Binary data optimization (highly recommended)
      - N8N_DEFAULT_BINARY_DATA_MODE=filesystem
      - N8N_BINARY_DATA_TTL=1440  # 24 hours

    volumes:
      - n8n_data:/home/node/.n8n

    # Resource limits (adjust based on your server)
    deploy:
      resources:
        limits:
          memory: 2G
        reservations:
          memory: 1G

volumes:
  n8n_data:

Comprendre le mode de données binaires

Par défaut : stockage en mémoire (non recommandé)

# This is the default - DON'T use in production
N8N_DEFAULT_BINARY_DATA_MODE=default

Problèmes : stocke les fichiers (images, PDF, etc.) en RAM, gaspille de la mémoire précieuse, inadapté aux charges de production, limite le nombre de fichiers que vous pouvez traiter.

Selon nos tests : le mode par défaut utilise environ 315 Mo de RAM contre 211 Mo avec le mode filesystem — soit environ 100 Mo de RAM économisés.

Recommandé : stockage sur le système de fichiers

N8N_DEFAULT_BINARY_DATA_MODE=filesystem
N8N_BINARY_DATA_TTL=1440  # Clean up after 24 hours (value in minutes)

Avantages : stocke les fichiers sur disque plutôt qu'en RAM, performances nettement meilleures avec les gros fichiers, prêt pour la production et recommandé par n8n, nettoyage automatique avec TTL pour éviter l'engorgement du disque.

Important : si vous utilisez le mode file d'attente (exécution distribuée basée sur Redis), vous devez conserver le mode de données binaires par défaut car le stockage filesystem n'est pas supporté avec le mode file d'attente.

Impact réel

D'après nos tests Docker en octobre 2025 avec la version n8n 1.115.2 :

ConfigurationUtilisation mémoireDifférence
Par défaut (sans correctifs)315 MoRéférence
Avec correctif payload + mode filesystem211 Mo-104 Mo

Constat clé : la combinaison de l'augmentation de la taille du payload et du mode binaire filesystem réduit en fait l'utilisation mémoire car les données sont gérées plus efficacement sur disque plutôt qu'en RAM.


Correctif n°2 : problèmes d'URL de webhooks

Le problème en détail

Lorsque n8n génère des URLs de webhooks pour les afficher dans l'éditeur et les enregistrer auprès des services externes, il tente de détecter automatiquement votre URL publique. Derrière un reverse proxy, cette détection automatique échoue de manière spectaculaire.

Ce que vous verrez (les mauvaises URLs)

http://n8n.yourdomain.com:5678/webhook/abc123

Problèmes avec cette URL :

  1. Numéro de port inclus (:5678) — les services externes ne peuvent généralement pas atteindre les ports non standard
  2. Mauvais protocole (http au lieu de https) — de nombreux services exigent HTTPS
  3. Nom d'hôte interne — peut être le nom du conteneur Docker au lieu du domaine public

Pourquoi les services externes échouent

Des services comme GitHub, Slack, Stripe, Zoom, Google Sheets et des centaines d'autres tentent d'envoyer des webhooks à ces URLs incorrectes et échouent silencieusement. Vous configurez l'intégration, elle semble correcte dans l'interface, mais les notifications n'arrivent jamais.

La solution : variable d'environnement WEBHOOK_URL

Selon la documentation officielle de n8n :

« La variable d'environnement WEBHOOK_URL est utilisée pour définir manuellement l'URL du webhook afin que n8n puisse l'afficher dans l'interface de l'éditeur et enregistrer les URLs de webhooks correctes auprès des services externes. Lors de l'exécution de n8n derrière un reverse proxy, il est important de définir cette variable. »

Configuration de base

environment:
  - WEBHOOK_URL=https://n8n.yourdomain.com
  - N8N_EDITOR_BASE_URL=https://n8n.yourdomain.com
  - N8N_PROTOCOL=https
  - N8N_HOST=n8n.yourdomain.com
  - N8N_TRUST_PROXY_HEADER=true
  - N8N_PROXY_HOPS=1

Rôle de chaque variable

WEBHOOK_URL (LA PLUS IMPORTANTE)

  • L'URL publique pour tous les endpoints de webhooks
  • Utilisée lors de l'enregistrement des webhooks auprès des services externes
  • Doit correspondre exactement à votre configuration Traefik/reverse proxy
  • Note de version : renommée depuis WEBHOOK_TUNNEL_URL dans la v0.227.0, l'ancien nom a été supprimé dans n8n 1.0

N8N_EDITOR_BASE_URL

  • L'URL d'accès à l'interface web de n8n
  • Généralement identique à WEBHOOK_URL
  • S'affiche dans la barre d'adresse du navigateur et dans les invitations par e-mail

N8N_PROTOCOL

  • Définir à https pour la production (avec SSL/TLS)
  • Définir à http uniquement pour les tests locaux
  • Doit correspondre à la terminaison de votre reverse proxy

N8N_HOST

  • Votre nom de domaine public uniquement
  • Ne pas inclure le protocole (https://) ni le port
  • Exemple : n8n.yourdomain.com et non https://n8n.yourdomain.com:443

N8N_TRUST_PROXY_HEADER

  • Doit être true derrière un reverse proxy
  • Permet à n8n de voir les vraies adresses IP des clients depuis les en-têtes du proxy
  • Requis pour le traitement et la sécurité corrects des requêtes

N8N_PROXY_HOPS

  • Définir à 1 derrière un seul reverse proxy
  • Définir à 2 derrière deux proxies (rare)
  • Indique à n8n combien de couches de proxy approuver

Tester les URLs de webhooks

Avant le correctif

Dans l'interface n8n, créez un nœud Webhook et vérifiez l'URL affichée :

http://n8n.example.com:5678/webhook/abc123  ❌ Wrong

Après le correctif

Le même nœud webhook affiche maintenant :

https://n8n.example.com/webhook/abc123  ✅ Correct

Différence critique : les services externes peuvent maintenant atteindre cette URL car elle utilise le port HTTPS standard 443 (géré par votre reverse proxy) au lieu du port interne 5678.


Configuration de production complète avec Traefik

Pourquoi Traefik ?

Traefik est un reverse proxy moderne parfaitement adapté aux déploiements Docker — HTTPS automatique via Let's Encrypt sans gestion manuelle des certificats, découverte de services détectant automatiquement les conteneurs via les labels Docker, support WebSocket critique pour la fonctionnalité webhook de n8n, configuration facile avec de simples labels Docker au lieu de fichiers de configuration complexes, et un tableau de bord intégré pour surveiller le routage et les certificats en temps réel.

Vue d'ensemble de l'architecture

Internet
  ↓
[Traefik Reverse Proxy]
  ↓ HTTPS (Let's Encrypt)
  ↓ WebSocket Support

[n8n Container]

↓ Internal Network [PostgreSQL Database]

Configuration critique : support WebSocket

C'est la configuration la plus souvent oubliée et elle cause des échecs de webhooks :

labels:
  # WebSocket middleware (ABSOLUTELY REQUIRED)
  - "traefik.http.middlewares.n8n-websocket.headers.customrequestheaders.Upgrade=websocket"
  - "traefik.http.middlewares.n8n-websocket.headers.customrequestheaders.Connection=Upgrade"

  # Apply middleware to router
  - "traefik.http.routers.n8n.middlewares=n8n-websocket"

Sans les en-têtes WebSocket :

  • Les webhooks en temps réel échouent
  • Les webhooks de production expirent
  • Les services externes ne peuvent pas maintenir de connexions persistantes
  • Les erreurs d'intégration apparaissent de manière intermittente et imprévisible

Docker Compose de production complet

Cette configuration combine les deux correctifs, inclut Traefik avec un support WebSocket approprié et suit les bonnes pratiques de production :

version: '3.8'

networks:
  traefik-net:
    external: true
  n8n-internal:
    internal: true

services:
  # PostgreSQL Database
  postgres:
    image: postgres:16-alpine
    container_name: n8n-postgres
    restart: unless-stopped
    networks:
      - n8n-internal
    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
    deploy:
      resources:
        limits:
          memory: 512M

  # n8n Application
  n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    restart: unless-stopped
    depends_on:
      postgres:
        condition: service_healthy
    networks:
      - traefik-net
      - n8n-internal

    # Traefik Configuration Labels
    labels:
      # Enable Traefik for this container
      - "traefik.enable=true"
      - "traefik.docker.network=traefik-net"

      # Router configuration
      - "traefik.http.routers.n8n.rule=Host(`${N8N_DOMAIN}`)"
      - "traefik.http.routers.n8n.entrypoints=websecure"
      - "traefik.http.routers.n8n.tls.certresolver=letsencrypt"

      # Service configuration
      - "traefik.http.services.n8n.loadbalancer.server.port=5678"

      # Middleware: Request size limit (100MB)
      - "traefik.http.middlewares.n8n-buffering.buffering.maxRequestBodyBytes=104857600"

      # Middleware: WebSocket support (CRITICAL - DO NOT SKIP)
      - "traefik.http.middlewares.n8n-websocket.headers.customrequestheaders.Upgrade=websocket"
      - "traefik.http.middlewares.n8n-websocket.headers.customrequestheaders.Connection=Upgrade"

      # Middleware: Security headers
      - "traefik.http.middlewares.n8n-security.headers.customResponseHeaders.X-Robots-Tag=noindex,nofollow"
      - "traefik.http.middlewares.n8n-security.headers.sslProxyHeaders.X-Forwarded-Proto=https"

      # Apply ALL middlewares
      - "traefik.http.routers.n8n.middlewares=n8n-buffering,n8n-websocket,n8n-security"

    environment:
      # Database Configuration
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=n8n
      - DB_POSTGRESDB_USER=n8n
      - DB_POSTGRESDB_PASSWORD=${DB_PASSWORD}

      # FIX #2: Webhook URL Configuration
      - WEBHOOK_URL=https://${N8N_DOMAIN}
      - N8N_EDITOR_BASE_URL=https://${N8N_DOMAIN}
      - N8N_PROTOCOL=https
      - N8N_HOST=${N8N_DOMAIN}
      - N8N_PORT=5678
      - N8N_TRUST_PROXY_HEADER=true
      - N8N_PROXY_HOPS=1

      # FIX #1: Payload Size Configuration
      - N8N_PAYLOAD_SIZE_MAX=268435456  # 256MB

      # Binary Data Management
      - N8N_DEFAULT_BINARY_DATA_MODE=filesystem
      - N8N_BINARY_DATA_TTL=1440  # 24 hours

      # 2025 Requirement: Task Runners
      - N8N_RUNNERS_ENABLED=true
      - N8N_RUNNERS_MODE=internal
      - N8N_RUNNERS_MAX_CONCURRENCY=5

      # Production Optimizations
      - NODE_ENV=production
      - EXECUTIONS_DATA_MAX_AGE=168  # 7 days
      - EXECUTIONS_DATA_PRUNE_MAX_COUNT=1000
      - N8N_LOG_LEVEL=info
      - N8N_LOG_OUTPUT=console

      # Timezone (adjust to your location)
      - GENERIC_TIMEZONE=America/New_York
      - TZ=America/New_York

      # Security
      - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}

    volumes:
      - n8n_data:/home/node/.n8n

    # Resource Limits (8GB+ RAM server)
    deploy:
      resources:
        limits:
          memory: 2G
          cpus: '2.0'
        reservations:
          memory: 1G
          cpus: '1.0'

    # Health Check
    healthcheck:
      test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:5678/healthz"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s

volumes:
  n8n_data:
  postgres_data:

Configuration de Traefik

Si vous n'avez pas encore Traefik en fonctionnement, voici la configuration complète :

Étape 1 : créer le réseau Traefik

docker network create traefik-net

Étape 2 : créer la configuration Traefik

Créez traefik/traefik.yml :

api:
  dashboard: true

entryPoints:
  web:
    address: ":80"
    http:
      redirections:
        entryPoint:
          to: websecure
          scheme: https
  websecure:
    address: ":443"

providers:
  docker:
    endpoint: "unix:///var/run/docker.sock"
    exposedByDefault: false
    network: traefik-net

certificatesResolvers:
  letsencrypt:
    acme:
      email: your-email@example.com  # CHANGE THIS
      storage: /letsencrypt/acme.json
      httpChallenge:
        entryPoint: web

log:
  level: INFO

accessLog: {}

Étape 3 : créer le Docker Compose de Traefik

Créez traefik/docker-compose.yml :

version: '3.8'

networks:
  traefik-net:
    external: true

services:
  traefik:
    image: traefik:v2.10
    container_name: traefik
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    networks:
      - traefik-net
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"  # Dashboard (secure this in production!)
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./traefik.yml:/traefik.yml:ro
      - ./letsencrypt:/letsencrypt
    labels:
      - "traefik.enable=true"

Étape 4 : créer le fichier d'environnement

Créez .env dans votre répertoire n8n :

# Domain Configuration
N8N_DOMAIN=n8n.yourdomain.com

# Database Password (generate secure password)
DB_PASSWORD=your_secure_db_password_here

# n8n Encryption Key (generate random string)
N8N_ENCRYPTION_KEY=your_encryption_key_here

Générer des valeurs sécurisées :

# For DB_PASSWORD
openssl rand -base64 32

# For N8N_ENCRYPTION_KEY
openssl rand -hex 32

Étape 5 : tout lancer

# Start Traefik first
cd traefik
docker compose up -d

# Wait a few seconds, then start n8n
cd ../n8n
docker compose up -d

# Watch logs to verify startup
docker compose logs -f n8n

Vérifier votre configuration

Vérifier le tableau de bord Traefik

Visitez http://your-server-ip:8080 (ou configurez un domaine pour le tableau de bord)

Doit afficher :

  • Routeur n8n actif avec statut vert
  • Certificat obtenu de Let's Encrypt
  • Service marqué comme sain

Vérifier l'accès à n8n

Visitez https://n8n.yourdomain.com

Doit afficher :

  • HTTPS fonctionnel avec un certificat Let's Encrypt valide
  • Aucun avertissement de sécurité du navigateur
  • La page de connexion/configuration de n8n s'affiche correctement

Vérifier les URLs des webhooks

  1. Connectez-vous à n8n
  2. Créez un nouveau workflow
  3. Ajoutez un nœud Webhook
  4. Vérifiez l'« URL de production » affichée

Attendu :

https://n8n.yourdomain.com/webhook/abc123

PAS ceci (la configuration est incorrecte) :

http://n8n.yourdomain.com:5678/webhook/abc123  ❌

Exigence 2025 : Task Runners

Que sont les Task Runners ?

Les task runners exécutent le code défini dans les nœuds Code au sein de processus isolés plutôt que dans le processus principal de n8n. Cela offre une meilleure sécurité grâce à des environnements sandboxés, une stabilité améliorée où les erreurs de code ne font pas planter le processus principal, et une compatibilité future car ils seront requis dans les prochaines versions de n8n.

Pourquoi c'est important maintenant

D'après la documentation officielle de n8n :

« L'exécution de n8n sans task runners est dépréciée. Les task runners seront activés par défaut dans une future version. Il est conseillé aux utilisateurs de définir N8N_RUNNERS_ENABLED=true dès maintenant pour éviter d'éventuels problèmes à l'avenir. »

D'après nos logs de test (octobre 2025) :

There are deprecations related to your environment variables:
 - N8N_RUNNERS_ENABLED -> Running n8n without task runners is deprecated.

Configuration

Mode interne (recommandé pour un serveur unique)

environment:
  - N8N_RUNNERS_ENABLED=true
  - N8N_RUNNERS_MODE=internal
  - N8N_RUNNERS_MAX_CONCURRENCY=5

n8n lance le task runner comme processus enfant — configuration la plus simple, aucune infrastructure supplémentaire nécessaire, adapté à la plupart des déploiements auto-hébergés, surcoût de performance minimal.

Mode externe (pour les configurations distribuées)

environment:
  - N8N_RUNNERS_ENABLED=true
  - N8N_RUNNERS_MODE=external
  - N8N_RUNNERS_AUTH_TOKEN=your_secure_token

Des conteneurs de task runners séparés offrent une meilleure isolation des ressources pour les workflows à haut volume, permettent une mise à l'échelle horizontale sur plusieurs serveurs, mais nécessitent une orchestration (Docker Swarm, Kubernetes).

Vérifier les Task Runners

Vérifier la liste des processus

docker exec n8n ps aux

Sans task runners (3 processus) :

PID   USER     TIME  COMMAND
    1 node      0:00 tini -- /docker-entrypoint.sh
    7 node      0:12 node /usr/local/bin/n8n

Avec task runners (4 processus) :

PID   USER     TIME  COMMAND
    1 node      0:00 tini -- /docker-entrypoint.sh
    7 node      0:16 node /usr/local/bin/n8n
   18 node      0:10 node [...]/task-runner/dist/start.js

Preuve : processus task runner visible avec le PID 18.

Vérifier les logs

docker logs n8n | grep -i runner

Vous devriez voir :

n8n Task Broker ready on 127.0.0.1, port 5679
Registered runner "JS Task Runner" (zCWpF0Eb_LJsqWYvLm5t1)

Impact sur l'utilisation des ressources

D'après nos tests Docker (octobre 2025, version n8n 1.115.2) :

ConfigurationMémoireCPUProcessus
Sans task runners214 Mo0,14 %3
Avec task runners289 Mo0,29 %4
Différence+75 Mo+0,15 %+1

Surcoût minimal. Les avantages — sécurité, stabilité, pérennité — l'emportent largement sur le faible coût en ressources.


Référence des variables d'environnement

Liste complète des variables

VariableTypeDéfautFonctionPriorité
Variables critiques
WEBHOOK_URLStringURL publique des webhooksREQUIS avec reverse proxy
N8N_PAYLOAD_SIZE_MAXNumber16777216 (16 Mo)Taille max des données d'exécutionREQUIS pour les gros volumes
N8N_RUNNERS_ENABLEDBooleanfalseActiver les task runnersREQUIS pour 2025
N8N_TRUST_PROXY_HEADERBooleanfalseApprouver les en-têtes du reverse proxyREQUIS avec proxy
Configuration des webhooks
N8N_EDITOR_BASE_URLStringURL de l'interface éditeurRecommandé
N8N_PROTOCOLStringhttpProtocole (http/https)Production
N8N_HOSTStringlocalhostNom d'hôte publicProduction
N8N_PORTNumber5678Port interneOptionnel
N8N_PROXY_HOPSNumber0Nombre de reverse proxiesDéfinir à 1 avec proxy
Performance
N8N_DEFAULT_BINARY_DATA_MODEStringdefaultMode de stockage binaireRecommandé
N8N_BINARY_DATA_TTLNumber60Nettoyage binaire (minutes)Recommandé
Task Runners
N8N_RUNNERS_MODEStringinternalMode du task runnerSi runners activés
N8N_RUNNERS_MAX_CONCURRENCYNumber5Max de task runners simultanésOptionnel

Préréglages de configuration par scénario

Scénario A : développement (machine locale)

environment:
  - N8N_PORT=5678

À utiliser quand : tests en local, sans reverse proxy, sans exigences de production

Scénario B : derrière un reverse proxy (sans gros volumes de données)

environment:
  - N8N_PORT=5678
  - WEBHOOK_URL=https://n8n.yourdomain.com
  - N8N_EDITOR_BASE_URL=https://n8n.yourdomain.com
  - N8N_PROTOCOL=https
  - N8N_HOST=n8n.yourdomain.com
  - N8N_TRUST_PROXY_HEADER=true
  - N8N_PROXY_HOPS=1
  - N8N_RUNNERS_ENABLED=true

À utiliser quand : instance n8n publique, webhooks nécessaires, workflows de petite taille

Scénario C : configuration de production complète

environment:
  # Database
  - DB_TYPE=postgresdb
  - DB_POSTGRESDB_HOST=postgres
  - DB_POSTGRESDB_PORT=5432
  - DB_POSTGRESDB_DATABASE=n8n
  - DB_POSTGRESDB_USER=n8n
  - DB_POSTGRESDB_PASSWORD=${DB_PASSWORD}

  # Webhooks
  - WEBHOOK_URL=https://n8n.yourdomain.com
  - N8N_EDITOR_BASE_URL=https://n8n.yourdomain.com
  - N8N_PROTOCOL=https
  - N8N_HOST=n8n.yourdomain.com
  - N8N_PORT=5678
  - N8N_TRUST_PROXY_HEADER=true
  - N8N_PROXY_HOPS=1

  # Performance
  - N8N_PAYLOAD_SIZE_MAX=268435456  # 256MB
  - N8N_DEFAULT_BINARY_DATA_MODE=filesystem
  - N8N_BINARY_DATA_TTL=1440

  # Task Runners
  - N8N_RUNNERS_ENABLED=true
  - N8N_RUNNERS_MODE=internal
  - N8N_RUNNERS_MAX_CONCURRENCY=5

  # Production
  - NODE_ENV=production
  - EXECUTIONS_DATA_MAX_AGE=168  # 7 days
  - EXECUTIONS_DATA_PRUNE_MAX_COUNT=1000
  - N8N_LOG_LEVEL=info

  # Security
  - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}

À utiliser quand : déploiement de production avec toutes les fonctionnalités, gros workflows, accès public


Exemples Docker Compose

Les quatre scénarios de notre environnement de test sont disponibles. Ces configurations ont été validées avec la version n8n 1.115.2 en octobre 2025.

Comparaison de l'utilisation des ressources (d'après nos tests)

ScénarioMémoireCPUProcessusDescription
Par défaut315 Mo0,00 %3Sans correctifs, référence
Correctif Payload211 Mo0,00 %3Payload + mode filesystem
Correctif Webhook215 Mo0,14 %3Configuration webhook uniquement
Production289 Mo0,29 %4Tous les correctifs + task runners

Constat clé : la configuration de production avec tous les correctifs utilise MOINS de mémoire que la configuration par défaut grâce au mode binaire filesystem.


Tester votre configuration

Checklist pré-déploiement

1. Configuration DNS

# Verify DNS points to your server
nslookup n8n.yourdomain.com

# Should return your server's public IP

2. Disponibilité des ports

# Check if required ports are free
sudo netstat -tlnp | grep -E '(80|443|5678)'

# Should show nothing or only Traefik on 80/443

3. Installation de Docker

# Verify Docker
docker --version

# Verify Docker Compose
docker compose version

4. Variables d'environnement

# Verify .env file exists
cat .env

# Should show N8N_DOMAIN, DB_PASSWORD, N8N_ENCRYPTION_KEY

Étapes de déploiement

# Step 1: Create Traefik network
docker network create traefik-net

# Step 2: Start Traefik
cd traefik
docker compose up -d

# Step 3: Wait for Traefik to be ready
sleep 10

# Step 4: Start n8n
cd ../n8n
docker compose up -d

# Step 5: Watch logs for any errors
docker compose logs -f n8n

Tests post-déploiement

Test 1 : accès HTTPS

curl -I https://n8n.yourdomain.com

Attendu : HTTP/2 200 (ou HTTP/1.1 200)

Test 2 : redirection HTTP vers HTTPS

curl -I http://n8n.yourdomain.com

Attendu : HTTP/1.1 308 Permanent Redirect avec Location: https://n8n.yourdomain.com

Test 3 : santé des conteneurs

docker ps

Attendu : n8n et n8n-postgres affichant le statut (healthy)

Test 4 : format des URLs de webhooks

  1. Connectez-vous à l'interface web de n8n
  2. Créez un nouveau workflow
  3. Ajoutez un nœud Webhook
  4. Vérifiez l'URL de production affichée

Format attendu :

https://n8n.yourdomain.com/webhook/abc123

PAS attendu (erreur de configuration) :

http://n8n.yourdomain.com:5678/webhook/abc123  ❌

Test 5 : Task Runners actifs

docker logs n8n | grep -i runner

Sortie attendue :

Registered runner "JS Task Runner"

Test 6 : variables d'environnement appliquées

docker exec n8n env | grep N8N_PAYLOAD_SIZE_MAX

Attendu : N8N_PAYLOAD_SIZE_MAX=268435456


Dépannage des problèmes courants

Problème : HTTPS ne fonctionne pas

Symptômes : le navigateur affiche l'avertissement « Non sécurisé », messages d'erreur de certificat, impossible d'accéder via HTTPS

Diagnostic :

# Check Traefik logs for errors
docker logs traefik | grep -i error

# Check certificate file exists
ls -la traefik/letsencrypt/acme.json

# Verify DNS resolution
nslookup n8n.yourdomain.com

Solutions :

  1. DNS ne pointe pas vers le serveur : mettez à jour votre enregistrement DNS A pour pointer vers l'IP publique du serveur, attendez la propagation DNS (jusqu'à 24 heures, généralement beaucoup plus rapide), testez depuis un autre réseau : dig n8n.yourdomain.com +short
  2. Port 80 bloqué : Let's Encrypt a besoin du port 80 pour le challenge HTTP. Vérifiez le pare-feu : sudo ufw status. Autorisez si bloqué : sudo ufw allow 80/tcp && sudo ufw allow 443/tcp
  3. E-mail invalide dans la configuration Traefik : éditez traefik/traefik.yml, mettez à jour certificatesResolvers.letsencrypt.acme.email avec une adresse valide, redémarrez Traefik : docker compose restart

Problème : les webhooks renvoient 404

Symptômes : les services externes signalent des échecs de webhooks, les URLs de webhooks semblent correctes mais ne fonctionnent pas, le mode test fonctionne mais le mode production échoue

Diagnostic :

# Test webhook directly
curl -v https://n8n.yourdomain.com/webhook/test

# Check Traefik routing logs
docker logs traefik | grep webhook

# Verify n8n sees requests
docker logs n8n | grep webhook

Solutions :

  1. Middleware WebSocket manquant : vérifiez ces labels dans docker-compose.yml :
- "traefik.http.middlewares.n8n-websocket.headers.customrequestheaders.Upgrade=websocket"
- "traefik.http.middlewares.n8n-websocket.headers.customrequestheaders.Connection=Upgrade"
- "traefik.http.routers.n8n.middlewares=n8n-websocket"
  1. WEBHOOK_URL mal configurée : vérifiez la variable d'environnement : docker exec n8n env | grep WEBHOOK_URL. Doit correspondre exactement à votre domaine : WEBHOOK_URL=https://n8n.yourdomain.com
  2. Mauvaise configuration réseau : vérifiez que n8n est sur traefik-net : docker inspect n8n | grep -A 5 Networks. Doit afficher « traefik-net » dans la sortie

Problème : « Execution Data Too Large » persiste

Symptômes : l'erreur persiste après avoir défini N8N_PAYLOAD_SIZE_MAX, les gros workflows échouent à « Execute Node »

Diagnostic :

# Verify variable is set
docker exec n8n env | grep PAYLOAD

# Should show N8N_PAYLOAD_SIZE_MAX=268435456

Solutions :

  1. Variable non appliquée (conteneur non redémarré) : redémarrez pour appliquer les changements : docker compose restart n8n. Vérifiez après redémarrage : docker exec n8n env | grep PAYLOAD
  2. Limite trop basse pour votre workflow : pour les serveurs avec 16 Go+ de RAM, augmentez à 512 Mo : N8N_PAYLOAD_SIZE_MAX=536870912
  3. Taille de requête Traefik trop petite : augmentez également la limite Traefik pour correspondre : "traefik.http.middlewares.n8n-buffering.buffering.maxRequestBodyBytes=209715200"

Problème : utilisation élevée de la mémoire

Symptômes : le conteneur utilise plus de 1,5 Go de RAM au repos, l'utilisation mémoire augmente avec le temps, erreurs de mémoire insuffisante

Diagnostic :

# Monitor memory
docker stats n8n

# Check binary data mode
docker exec n8n env | grep BINARY_DATA_MODE

Solutions :

  1. Mode filesystem non utilisé : ajoutez aux variables d'environnement : N8N_DEFAULT_BINARY_DATA_MODE=filesystem et N8N_BINARY_DATA_TTL=1440. Impact : environ 100 Mo de RAM économisés selon nos tests
  2. Anciennes exécutions accumulées : réduisez la période de rétention : EXECUTIONS_DATA_MAX_AGE=168 (7 jours au lieu de 14) et EXECUTIONS_DATA_PRUNE_MAX_COUNT=1000
  3. Limite du conteneur trop basse : augmentez si le serveur a la capacité. Changez la limite mémoire de 2G à 4G dans la section deploy resources

Conclusion

Ce que nous avons résolu

Ce guide complet aborde les deux problèmes les plus courants de n8n auto-hébergé :

  1. Erreur « Execution Data Too Large » — corrigée avec N8N_PAYLOAD_SIZE_MAX et le mode binaire filesystem
  2. Problèmes d'URL de webhooks — corrigés avec WEBHOOK_URL et une configuration appropriée du reverse proxy

Plus ces ajouts essentiels :

  1. Configuration complète de Traefik — configuration prête pour la production avec support WebSocket
  2. Configuration des Task Runners — exigence 2025 pour la compatibilité future
  3. Bonnes pratiques de production — limites de ressources, healthchecks, en-têtes de sécurité, surveillance
  4. Configurations validées — tous les fichiers docker-compose testés avec n8n 1.115.2 en octobre 2025

Points clés à retenir

Pour des correctifs rapides :

  • Définir N8N_PAYLOAD_SIZE_MAX=268435456 pour les problèmes de données d'exécution (256 Mo pour 8 Go+ de RAM)
  • Définir WEBHOOK_URL=https://your-domain.com pour les problèmes de webhooks
  • Définir N8N_RUNNERS_ENABLED=true pour éliminer les avertissements de dépréciation
  • Utiliser N8N_DEFAULT_BINARY_DATA_MODE=filesystem pour économiser environ 100 Mo de RAM

Pour le déploiement en production :

  • Utilisez notre docker-compose.yml complet avec la configuration Traefik
  • Ne sautez pas le middleware WebSocket — absolument requis pour les webhooks
  • Incluez PostgreSQL pour de meilleures performances sous charge
  • Définissez des limites de ressources appropriées en fonction de la capacité de votre serveur
  • Implémentez des healthchecks pour la récupération automatique

Pour les utilisateurs de Traefik (CRITIQUE) :

  • Le middleware WebSocket est non négociable pour la fonctionnalité webhook
  • Définissez la limite de taille du corps de requête égale ou supérieure à la taille du payload
  • Configurez les en-têtes de sécurité (X-Robots-Tag, X-Forwarded-Proto)
  • Assurez-vous que le DNS pointe vers votre serveur avant de démarrer Traefik (exigence Let's Encrypt)

Nouveautés par rapport aux articles de juin 2025

FonctionnalitéArticles de juin 2025Ce guide
Correctif données d'exécutionDétailléInclus + mesures de ressources
Correctif webhookDétailléInclus + intégration Traefik
Configuration TraefikNon couvertConfiguration complète
Support WebSocketNon couvertMis en avant
Task runnersNon couvertExigence 2025
Docker-compose combinéSéparésPrêt pour la production
Mesures de ressourcesThéoriquesDonnées de tests réels
Variables d'environnementCouvertesRéférence complète

Tests et validation

Notre environnement de test (octobre 2025) :

  • n8n version 1.115.2
  • Conteneurs Docker en fonctionnement depuis plus de 2 heures
  • Toutes les variables d'environnement vérifiées dans les conteneurs en cours d'exécution
  • Utilisation des ressources mesurée avec docker stats
  • Processus task runner confirmé dans la liste des processus
  • Endpoints HTTP testés et accessibles
  • Configurations validées comme fonctionnelles

Prochaines étapes

  1. Choisissez votre scénario :
    • Développement : configuration minimale
    • Derrière un reverse proxy : correctif webhook + task runners
    • Production : configuration complète avec Traefik (recommandé)
  2. Déployez :
    • Copiez le docker-compose.yml approprié
    • Créez le fichier .env avec votre domaine et des mots de passe sécurisés
    • Démarrez Traefik en premier, puis n8n
    • Exécutez les tests post-déploiement
  3. Validez :
    • Vérifiez que HTTPS fonctionne avec un certificat valide
    • Vérifiez que les URLs de webhooks affichent le bon format
    • Testez avec un grand ensemble de données (si nécessaire)
    • Confirmez que les task runners sont enregistrés
  4. Surveillez :
    • Observez l'utilisation des ressources avec docker stats
    • Mettez en place des alertes de healthcheck (surveillance externe)
    • Implémentez la rotation des logs pour éviter de remplir le disque
    • Planifiez des sauvegardes régulières des volumes de données

Ressources associées

De juin 2025 :

Documentation officielle de n8n :

Questions ou problèmes ?

Si vous rencontrez des problèmes non couverts par ce guide :

  1. Consultez nos articles détaillés de dépannage de juin 2025 pour des conseils supplémentaires
  2. Consultez la documentation officielle de n8n pour les dernières fonctionnalités
  3. Recherchez sur les forums de la communauté n8n des problèmes similaires
  4. Consultez la section Dépannage ci-dessus pour les problèmes courants
  5. Contactez tva pour un accompagnement professionnel à l'implémentation

Tests reproductibles

Toutes les configurations de ce guide peuvent être reproduites dans votre propre environnement — les fichiers Docker Compose sont prêts pour la production, les variables d'environnement sont documentées et vérifiées, les commandes de test sont fournies pour la validation et les sorties attendues sont clairement spécifiées. Vous pouvez valider chaque affirmation de ce guide en déployant les configurations vous-même et en exécutant les tests fournis.

Besoin d'aide pour l'implémentation ?

Si vous souhaitez que tva gère votre déploiement n8n ou si vous avez besoin d'assistance pour la mise en production, contactez-nous. Nous implémentons ces configurations pour les organisations recherchant une infrastructure n8n fiable et prête pour la production.


Publié : 15 octobre 2025
Testé avec : n8n v1.115.2, Docker Compose v3.8, Traefik v2.10
Configuration serveur requise : 4 Go+ de RAM, 2+ cœurs CPU recommandés pour la production
Basé sur : la documentation officielle de n8n, des tests Docker validés et les bonnes pratiques de la communauté