Installer n8n avec Docker Compose (HTTPS + persistance + files d’attente)

Installer n8n avec Docker Compose (HTTPS + persistance + files d’attente)

Guide pas-à-pas pour installer n8n avec Docker Compose : HTTPS (Traefik/Let’s Encrypt), volumes persistants, variables .env, et option workers/queues pour la prod.

Installer n8n avec Docker Compose (HTTPS + persistance + files d’attente)

Objectif : déployer n8n proprement en production avec HTTPS, données persistantes, et une base prêvous pour évoluer (option queues/workers).

Prérequis

  • Un serveur Linux (Debian/Ubuntu), 2 vCPU / 2–4 Go RAM minimum
  • Un nom de domaine (ex: example.com) et un sous-domaine (ex: n8n.example.com)
  • Docker + Docker Compose installés

1) DNS : pointer le sous-domaine vers le serveur

Crée un enregistrement DNS A :

  • Nom : n8n (ou ce que vous voulez)
  • Type : A
  • Valeur : IP publique de votre serveur

Attends la propagation DNS (souvent 1–30 min).

2) Créer le dossier projet

Sur le serveur :

mkdir -p ~/n8n-compose && cd ~/n8n-compose
mkdir -p local-files

local-files sert à échanger des fichiers entre n8n et le serveur (nœud Read/Write Files).

3) Créer le fichier .env

Crée un fichier .env :

# Domaine où n8n sera accessible
DOMAIN_NAME=example.com
SUBDOMAIN=n8n

# Timezone
GENERIC_TIMEZONE=Europe/Paris

# Email utilisé par Let’s Encrypt
[email protected]

4) Docker Compose (HTTPS via Traefik + persistance)

Crée compose.yaml :

services:
  traefik:
    image: traefik
    restart: always
    command:
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.web.http.redirections.entryPoint.to=websecure"
      - "--entrypoints.web.http.redirections.entrypoint.scheme=https"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.mytlschallenge.acme.tlschallenge=true"
      - "--certificatesresolvers.mytlschallenge.acme.email=${SSL_EMAIL}"
      - "--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - traefik_data:/letsencrypt
      - /var/run/docker.sock:/var/run/docker.sock:ro

  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: always
    ports:
      - "127.0.0.1:5678:5678"
    labels:
      - traefik.enable=true
      - traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
      - traefik.http.routers.n8n.tls=true
      - traefik.http.routers.n8n.entrypoints=web,websecure
      - traefik.http.routers.n8n.tls.certresolver=mytlschallenge
      - traefik.http.middlewares.n8n.headers.SSLRedirect=true
      - traefik.http.middlewares.n8n.headers.STSSeconds=315360000
      - traefik.http.middlewares.n8n.headers.browserXSSFilter=true
      - traefik.http.middlewares.n8n.headers.contentTypeNosniff=true
      - traefik.http.middlewares.n8n.headers.forceSTSHeader=true
      - traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME}
      - traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true
      - traefik.http.middlewares.n8n.headers.STSPreload=true
      - traefik.http.routers.n8n.middlewares=n8n@docker
    environment:
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
      - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - N8N_RUNNERS_ENABLED=true
      - NODE_ENV=production
      - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
      - TZ=${GENERIC_TIMEZONE}
    volumes:
      - n8n_data:/home/node/.n8n
      - ./local-files:/files

volumes:
  n8n_data:
  traefik_data:

Points importants :

  • 127.0.0.1:5678:5678 : n8n n’est pas exposé directement, c’est Traefik qui publie en HTTPS
  • n8n_data : conserve la base SQLite + clé de chiffrement par défaut
  • N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true : évite des erreurs de permissions sur la config

5) Démarrer les conteneurs

docker compose up -d

Vérifier :

docker compose ps
docker compose logs -f

Accède ensuite à :

  • https://n8n.example.com

vous verras l’écran de création du premier compte admin.

6) Persistance & sauvegardes : ce qu’il faut retenir

Par défaut (compose ci-dessus), n8n stocke ses données dans le volume :

  • n8n_data/home/node/.n8n (workflows, creds, exécutions, clé de chiffrement)

Recommandation :

  • sauvegarder régulièrement ce volume (snapshot + export)
  • si vous passes en PostgreSQL (recommandé si beaucoup de workflows), sauvegarder la DB aussi

7) Option production : PostgreSQL + Redis (queues/workers)

Si vous voulez tenir la charge (beaucoup d’exécutions, parallélisme, fiabilité), la structure la plus courante :

  • n8n + PostgreSQL (DB)
  • Redis + mode queue (un ou plusieurs workers)

Exemple (approche simple)

  • 1 service postgres (volume persistant)
  • 1 service redis
  • 1 service n8n (editor + webhook)
  • 1+ service(s) n8n-worker

Ensuite, vous actives les variables n8n correspondantes (selon votre version) pour :

  • DB Postgres (DB_TYPE=postgresdb + host/user/pass)
  • Redis / queue

Si vous voulez, je vous fournis un compose.yaml complet “editor + workers + redis + postgres” calé sur votre version exacte de n8n.

8) Checklist sécurité minimale

  • HTTPS obligatoire (ok via Traefik)
  • Firewall : n’ouvrir que 80/443
  • Mettre à jour Docker + images régulièrement
  • Sauvegardes (volumes + DB si Postgres)
  • Restreindre l’accès à l’UI (IP allowlist / SSO / VPN) si usage interne

9) Dépannage rapide

  • Certificat Let’s Encrypt ne sort pas : DNS pas propagé / port 80 bloqué
  • Webhooks KO : vérifier WEBHOOK_URL
  • Problèmes de fichiers : vérifier /files et permissions

Vidéo (FR)

  • https://youtu.be/p36-dGwrrb4

Images (CDN)

  • Schéma “n8n + reverse proxy + volumes” : https://cdn.adgents.cloud/media/blog/installer-n8n-docker-compose/diagrams/compose-architecture.svg
  • Illustration “dashboard/hosting” : https://cdn.adgents.cloud/media/blog/installer-n8n-docker-compose/diagrams/compose-architecture.svg

CTA — Héberger n8n sans prise de têvous

Envie d’éviter les nuits à débugger SSL/volumes/backups ?

  • Voir l’app : /applications/n8n
  • Essayer gratuitement

Avec adgents.cloud :

  • Déploiement en 1 clic
  • Facturation à l’heure
  • Stop/Start (compute non facturé à l’arrêt ; stockage conservé)
  • Backups automatiques (toutes les 24h par défaut, jusqu’à 1/h)
  • Rétention longue (jusqu’à 10 ans)
  • Scaling CPU/RAM à la demande

Sources (structure/intent alignés) :

  • https://docs.n8n.io/hosting/installation/server-setups/docker-compose/
  • https://www.it-connect.fr/tuto-installer-n8n-avec-docker-sur-linux/
  • https://dynops.fr/installer-n8n-avec-docker-compose-en-2-minutes/

Lancez-vous avec n8n.

Envie de vous lancer avec n8n ? Créez votre site web en quelques clics.

n8n

n8n

Automation sans limites

Déployer n8n

Aller plus loin


Essayer sur Adgents.cloud

Envie d’un déploiement propre sans passer des heures sur l’infra ? Sur Adgents.cloud, vous pouvez :

  • déployer en 1 clic
  • être facturé à l’heure
  • utiliser stop/start (compute non facturé �� l’arrêt)
  • activer des backups automatiques (24h par défaut, jusqu’à 1/h)
  • garder une rétention longue (jusqu’à 10 ans)
  • ajuster le scaling CPU/RAM à la demande

Découvrir n8n sur Adgents.cloudEssayer gratuitement

Cloud pattern

Cet article vous a été utile ?

N'hésitez pas à découvrir d'autres articles

Voir plus d'articles