me
Back to all articles
Post in FrenchFrench flag
Daryl Ngako

Déployer n8n gratuitement avec Docker et ngrok

Déploie n8n gratuitement avec Docker et ngrok accessible partout sans frais d'hébergement.

N8Ntutoriel

Se lancer dans l'automatisation avec n8n peut vite devenir frustrant quand on réalise qu'un hébergement cloud coûte cher, ou que le simple usage local bride les fonctionnalités essentielles comme les webhooks.

Dans ce guide complet, je vais te montrer comment lever ces barrières. Tu vas apprendre à déployer n8n localement, le rendre accessible depuis n'importe où et sécuriser tes données le tout gratuitement grâce à la puissance de Docker et ngrok.

C'est quoi N8N ?

n8n, c’est une plateforme open-source d’automatisation de workflows pensée pour connecter des outils entre eux et orchestrer des processus métier.

Imagine un assistant intelligent capable de :

  • Échanger avec tes prospects sur WhatsApp 24h/24.
  • Réserver des rendez-vous automatiquement dans ton calendrier.
  • Synchroniser les données dans ton CRM (Google Sheets, Airtable, Notion).
  • Alerter un humain uniquement en cas de demande complexe.

C’est l’équivalent open-source de Zapier ou Make, offrant une liberté technique totale sans les coûts par exécution.

Voici un aperçu des tarifs de leur offre Cloud :

Pricing n8n

Le constat est sans appel : 20$ / mois pour seulement 5 workflows actifs, c'est un investissement lourd quand on débute. Heureusement, l'auto-hébergement nous permet de briser ces limites.

Le problème du Localhost

Quand tu installes n8n sur localhost, tout semble bien fonctionner… jusqu'à ce que tu fasses face à ces trois obstacles majeurs :

  • Incompatibilité des Webhooks : Les plateformes comme Gmail, YouTube, Stripe ou Telegram ne peuvent pas envoyer de données à http://localhost:5678. Elles ont besoin d'une URL publique valide.

  • Exigence HTTPS : La majorité des APIs modernes imposent des connexions chiffrées HTTPS. Ton localhost ne fournit pas ça.

  • Accessibilité limitée : Impossible de déclencher tes workflows depuis un autre appareil (téléphone, autre PC) ou de partager l'accès à ton éditeur n8n.

En résumé : sans domaine public, n8n reste un outil isolé sur ta machine, incapable de communiquer avec le monde extérieur.

ngrok : le pont entre ta machine et Internet

ngrok est un service de tunnelisation qui va résoudre tous ces problèmes. Il crée un tunnel sécurisé entre ta machine locale et Internet.

Concrètement, ngrok te fournit :

  • Un domaine public gratuit : une URL unique du type https://ton-url.ngrok-free.app
  • Un tunnel chiffré : tout le trafic entre Internet et ta machine passe par un tunnel sécurisé
  • HTTPS automatique : indispensable pour que les services tiers acceptent d'envoyer leurs webhooks

Le schéma est simple :

Test

Voici les étapes à suivre :

  • Installez n8n globalement : npm install n8n -g.

  • Lancez n8n : n8n start (par défaut sur le port 5678).

  • Téléchargez et installez ngrok depuis ngrok.com, ajoutez votre authtoken si besoin : ngrok config add-authtoken VOTRE_TOKEN.

  • Exposez le port : ngrok http 5678. Ngrok génère une URL HTTPS publique accessible partout.

Mais je ne te recommande absolument pas cette méthode : elle est difficile à maintenir, pollue ton système et ne gère pas la persistance de manière isolée. C'est là que Docker entre en jeu.

Configuration optimale avec Docker

Utiliser Docker c'est choisir la stabilité. Ton instance n8n devient un environnement isolé, reproductible et facile à mettre à jour.

Pour qu'un conteneur n8n fonctionne correctement derrière un tunnel ngrok, tu dois configurer plusieurs variables d'environnement et gérer la persistance des données.

Les variables d'environnement essentielles

Voici les variables critiques que tu dois définir :

VariableRôle
WEBHOOK_URLIndique aux services tiers l'adresse exacte où envoyer les webhooks. Doit correspondre à ton URL ngrok.
N8N_EDITOR_BASE_URLDéfinit l'URL publique pour accéder à l'interface de n8n. Doit correspondre à ton URL ngrok.
N8N_DEFAULT_BINARY_DATA_MODEConfiguré sur filesystem. Stocke les fichiers lourds (PDF, images) sur le disque plutôt qu'en RAM.
N8N_COMMUNITY_PACKAGES_ENABLEDPermet l'installation de nœuds communautaires (ex: nœuds MCP).

Configuration du .env

Crée un fichier .env à la racine de ton dossier projet :

.env
# Ces variables seront injectées dans le conteneur n8n
NGROK_TOKEN=ton_token_ngrok_ici
NGROK_DOMAIN=ton-domaine-fixe.ngrok-free.app
N8N_EDITOR_BASE_URL=https://ton-url.ngrok-free.app
WEBHOOK_URL=https://ton-url.ngrok-free.app
N8N__COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
N8N_DEFAULT_BINARY_DATA_MODE=filesystem

Persistance des données avec les volumes Docker

Sans volume Docker, tu perds tout (workflows, identifiants, historique) à chaque redémarrage du conteneur.

Le principe est simple : on mappe un dossier local de ta machine vers le dossier de données de n8n dans le conteneur.

Test

Ce mappage garantit que même si le conteneur est supprimé ou recréé, toutes tes données restent intactes sur ton disque.

Installation étape par étape

Étape 1 : Préparer l'environnement

Tu dois installer deux outils :

1. Docker Desktop

Télécharge et installe Docker Desktop pour ton système d'exploitation.

Télécharger Docker

Vérifie que Docker est bien installé :

docker
docker --version

2. ngrok

Télécharge et installe ngrok.

Télécharger ngrok

Ensuite, crée un compte gratuit sur ngrok.com et récupère ton authtoken depuis le tableau de bord.

Récupérer son authtoken

Lie ta machine à ton compte ngrok :

ngrok
ngrok config add-authtoken VOTRE_TOKEN

Étape 2 : Activer le tunnel ngrok

Ouvre un nouveau terminal et lance le tunnel :

ngrok
ngrok http 5678

ngrok va te fournir une URL publique du type :

Activer le tunnel ngrok

Étape 3 : Créer le fichier Docker Compose

Crée un dossier pour ton projet, puis ajoute un fichier docker-compose.yml :

mkdir n8n-local && cd n8n-local

Voici le contenu du fichier docker-compose.yml :

docker-compose.yml
services:
  n8n:
    image: n8nio/n8n:latest
    restart: always
    ports:
      - "5678:5678"
    environment:
      - WEBHOOK_URL=${WEBHOOK_URL}
      - N8N_EDITOR_BASE_URL=${N8N_EDITOR_BASE_URL}
      - N8N_COMMUNITY_PACKAGES_ENABLED=true
      - N8N_DEFAULT_BINARY_DATA_MODE=filesystem
    volumes:
      - ./n8n_data:/home/node/.n8n

  ngrok:
    image: wernight/ngrok
    restart: always
    # Le bloc command Optionnel
    command:
      - "http"
      - "n8n:5678"
      - "--domain=${NGROK_DOMAIN}" # optionnel
    environment:
      - NGROK_AUTHTOKEN=${NGROK_TOKEN}
    depends_on:
      - n8n

Attention : Assure-toi que les variables NGROK_TOKEN, WEBHOOK_URL, N8N_EDITOR_BASE_URL et NGROK_DOMAIN sont bien définies dans ton fichier .env. Pour le domaine, ngrok offre désormais un domaine statique gratuit par compte.

Grâce à cette configuration, le conteneur ngrok expose directement le conteneur n8n. Les deux communiquent dans le réseau interne de Docker, ce qui est plus sécurisé et performant.

Étape 4 : Lancer n8n avec Docker

Lance le conteneur n8n :

docker
docker compose up -d

Lancer n8n avec Docker

Vérifie que le conteneur tourne :

docker
docker ps

Tu devrais voir quelque chose comme ceci : Vérifier que le conteneur tourne

Avec Docker :

  • Les volumes Docker sauvegardent tes workflows et credentials même après suppression du conteneur.
  • Les variables d'environnement se passent directement dans docker run, sans config manuelle.
  • n8n tourne isolé, sans polluer ton Node local.

Astuce : obtenir un domaine ngrok fixe

Sur le plan gratuit de ngrok, l'URL change à chaque redémarrage. Pour éviter de modifier ton docker-compose.yml à chaque fois, tu peux réserver un domaine statique gratuit sur le tableau de bord ngrok.

Ensuite, lance ngrok avec ce domaine :

ngrok
ngrok http --domain=ton-domaine-fixe.ngrok-free.app 5678

Comme ça, ton URL reste toujours la même, et tu n'as plus besoin de toucher à ta configuration Docker.

Récapitulatif des commandes

Voici un résumé des commandes essentielles :

# 1. Lancer l'environnement (avec création du dossier data auto)
docker compose up -d

# 2. Vérifier que tout tourne
docker compose ps

# 3. Voir les logs en temps réel (pratique pour débugger)
docker compose logs -f n8n

# 4. Arrêter proprement le service
docker compose down

Pourquoi passer sur un serveur un jour ?

Tu te demandes sûrement : "Si c'est gratuit et que ça marche, pourquoi certains paient pour un serveur ?"

Le setup Docker + ngrok sur ton PC est le meilleur laboratoire au monde pour débuter. Mais pour une utilisation professionnelle, le serveur (VPS) devient indispensable pour trois raisons :

  1. Disponibilité 24h/7 : Ton PC doit rester allumé. Si tu fermes ton ordinateur pour dormir, tes automatisations dorment aussi. Un VPS à 6€/mois ne s'arrête jamais.
  2. Stabilité du lien : Une coupure Wi-Fi chez toi brise le tunnel. En centre de données, la connexion est redondée.
  3. Performance : Si tu commences à gérer des milliers de données ou des fichiers lourds, les ressources de ton PC et les limites de bande passante de ngrok (plan gratuit) deviendront un goulot d'étranglement.

Mon conseil : Commence en local pour tester tes idées, construire tes premières automatisations sans frais. Une fois que tes automatisations deviennent critiques pour ton business, transfère ton dossier n8n_data sur un petit VPS.

Conclusion

L'alliance de Docker et ngrok te permet de bénéficier des avantages d'un abonnement n8n Cloud, accessibilité à distance, déclencheurs en temps réel, intégrations complètes tout en conservant un contrôle total sur tes données et une gratuité absolue.

Tu as maintenant une instance n8n qui :

  • 🌐 Est accessible depuis n'importe où dans le monde
  • 🔒 Dispose d'une connexion HTTPS sécurisée
  • 📦 Persiste toutes tes données grâce aux volumes Docker
  • ⚡ Gère efficacement les fichiers lourds
  • 🔗 Peut recevoir des webhooks de n'importe quel service externe

Tu as désormais toutes les cartes en main pour transformer ton PC en une véritable usine à automatisations. À toi de jouer ! 🚀