Déployer n8n gratuitement avec Docker et ngrok
Déploie n8n gratuitement avec Docker et ngrok accessible partout sans frais d'hébergement.
Déploie n8n gratuitement avec Docker et ngrok accessible partout sans frais d'hébergement.
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.
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 :
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 :

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.
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 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 :
Le schéma est simple :

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.
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.
Voici les variables critiques que tu dois définir :
| Variable | Rôle |
|---|---|
| WEBHOOK_URL | Indique aux services tiers l'adresse exacte où envoyer les webhooks. Doit correspondre à ton URL ngrok. |
| N8N_EDITOR_BASE_URL | Définit l'URL publique pour accéder à l'interface de n8n. Doit correspondre à ton URL ngrok. |
| N8N_DEFAULT_BINARY_DATA_MODE | Configuré sur filesystem. Stocke les fichiers lourds (PDF, images) sur le disque plutôt qu'en RAM. |
| N8N_COMMUNITY_PACKAGES_ENABLED | Permet l'installation de nœuds communautaires (ex: nœuds MCP). |
Crée un fichier .env à la racine de ton dossier projet :
# 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=filesystemSans 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.

Ce mappage garantit que même si le conteneur est supprimé ou recréé, toutes tes données restent intactes sur ton disque.
Tu dois installer deux outils :
1. Docker Desktop
Télécharge et installe Docker Desktop pour ton système d'exploitation.

Vérifie que Docker est bien installé :
docker --version2. ngrok
Télécharge et installe ngrok.

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

Lie ta machine à ton compte ngrok :
ngrok config add-authtoken VOTRE_TOKENOuvre un nouveau terminal et lance le tunnel :
ngrok http 5678ngrok va te fournir une URL publique du type :

Crée un dossier pour ton projet, puis ajoute un fichier docker-compose.yml :
mkdir n8n-local && cd n8n-localVoici le contenu du fichier 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:
- n8nAttention : 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.
Lance le conteneur n8n :
docker compose up -d
Vérifie que le conteneur tourne :
docker psTu devrais voir quelque chose comme ceci :

Avec Docker :
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 http --domain=ton-domaine-fixe.ngrok-free.app 5678Comme ça, ton URL reste toujours la même, et tu n'as plus besoin de toucher à ta configuration Docker.
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 downTu 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 :
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.
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 :
Tu as désormais toutes les cartes en main pour transformer ton PC en une véritable usine à automatisations. À toi de jouer ! 🚀