Skip to main content
📝 n8n

Installer n8n sur Mac avec Docker Desktop : guide étape par étape

Install n8n on Mac with Docker Desktop step by step. From download to running workflows in minutes — the easiest local automation setup.

15 min

Temps de lecture

2,813

Mots

Nov 08, 2025

Publié

Engr Mejba Ahmed

Écrit par

Engr Mejba Ahmed

Partager l'article

Installer n8n sur Mac avec Docker Desktop : guide étape par étape

#Présentation

L’automatisation ne devrait pas être difficile ni risquée. Si vous avez déjà essayé d'assembler des outils avec des scripts personnalisés ou des zaps SaaS payants, vous connaissez la difficulté : logique fragile, dépendance vis-à-vis d'un fournisseur et coûts croissants. n8n corrige cela. Il s'agit d'une plate-forme d'automatisation open source auto-hébergable qui connecte vos applications et API à un constructeur visuel clair, tout en vous donnant un contrôle total.

Dans ce guide, vous apprendrez comment installer n8n sur macOS avec Docker Desktop de la bonne manière : stockage persistant, PostgreSQL (et non SQLite), informations d'identification chiffrées, webhooks sécurisés et routines de mise à niveau/sauvegarde propres. Nous veillerons à ce que les choses soient rapides et conviviales pour les débutants sans omettre les détails de production. À la fin, vous disposerez d'un hub d'automatisation local fiable que vous pourrez utiliser pour un travail réel (tester des webhooks, créer des flux de capture de leads ou orchestrer des pipelines d'IA), puis promouvoir sur un serveur en toute confiance.


Ce que vous construirez

  • Une instance n8n locale exécutée dans des conteneurs Docker
  • Base de données PostgreSQL pour un stockage durable
  • Un dossier de projet bien rangé avec des volumes pour les sauvegardes et les exportations compatibles Git
  • Un webhook fonctionnel et une automatisation simple que vous pouvez réutiliser n'importe où
  • Extras facultatifs (travailleurs de file d'attente Redis, HTTPS, tunnel pour les webhooks publics)

À qui s'adresse ce guide

* Développeurs qui souhaitent un environnement local sécurisé pour créer et tester des automatisations

  • Créateurs et spécialistes du marketing qui ont besoin de flux de travail de style Zapier sans la facture mensuelle * Équipes qui prévoient d'auto-héberger n8n plus tard mais souhaitent démarrer sur un Mac aujourd'hui

Prérequis

  • macOS (Apple Silicon ou Intel)
  • Docker Desktop installé et en cours d'exécution
  • Confort de base du terminal
  • (Facultatif) Homebrew pour installer des extras comme ngrok ou Cloudflare Tunnel

Vue d'ensemble (Pourquoi Docker + Postgres)

Pourquoi Docker ? Cohérence. Vous bénéficiez du même environnement localement et en production : pas de drame du type « travaille sur ma machine ». Pourquoi PostgreSQL ? Il est robuste et privilégié par la production. SQLite convient aux tests rapides, mais Postgres maintient vos flux de travail, journaux d'exécution et informations d'identification solides et récupérables. Pourquoi le local d'abord ? Vous pouvez itérer en toute sécurité. Une fois votre flux de travail stable, vous pouvez déplacer la configuration exacte vers un VPS sans presque aucune modification.


Étape 1 : Créer un projet propre

Ouvrez Terminal et créez un dossier dédié :

mkdir -p ~/n8n-stack/{n8n_data,db_data}
cd ~/n8n-pile
  • n8n_data stocke la configuration, les informations d'identification et les exportations n8n
  • db_data stocke vos fichiers de base de données PostgreSQL
  • Les garder côte à côte simplifie les sauvegardes (copiez simplement le dossier)

Étape 2 : Ajouter des variables d'environnement

Créez un fichier .env dans ~/n8n-stack. Ces valeurs configurent vos conteneurs et gardent les secrets hors du contrôle de version.

# ---- Noyau n8n ----
N8N_HOST=hôte local
N8N_PORT=5678
N8N_PROTOCOL=http
NODE_ENV=production

# Utilisez une longue chaîne aléatoire (stockez-la dans votre gestionnaire de mots de passe)
N8N_ENCRYPTION_KEY=CHANGE_ME_TO_A_LONG_RANDOM_64_CHAR_STRING

# Paramètres de confidentialité et UX
N8N_USER_MANAGEMENT_DISABLED=faux
N8N_DIAGNOSTICS_ENABLED=faux
N8N_PERSONALIZATION_ENABLED=faux

# Entretien ménager de l'exécution (garde la base de données mince)
EXECUTIONS_DATA_PRUNE=vrai
EXECUTIONS_DATA_MAX_AGE=336 # heures (14 jours)
EXECUTIONS_DATA_PRUNE_MAX_COUNT=10 000

# ---- base de données ----
DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=base de données
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=n8n
DB_POSTGRESDB_USER=n8n_user
DB_POSTGRESDB_PASSWORD=CHANGE_THIS_STRONG_PASSWORD

# ---- mode file d'attente (facultatif) ----
N8N_EXECUTIONS_MODE=régulier
QUEUE_BULL_REDIS_HOST=redis
QUEUE_BULL_REDIS_PORT=6379

Conseil de pro : Générez une clé sécurisée directement dans Terminal :

python3 - <<'PY'
importer des secrets, chaîne
alphabet = chaîne.ascii_letters + chaîne.chiffres + chaîne.ponctuation
print(''.join(secrets.choice(alphabet) for _ in range(80)))
PY

Collez la sortie dans N8N_ENCRYPTION_KEY.


Étape 3 : Créer le fichier Docker Compose

Ajoutez un docker-compose.yml dans le même dossier :

version : "3.8"

prestations :
  n8n :
    image : n8nio/n8n : dernière
    redémarrage : à moins d'être arrêté
    fichier_env : .env
    ports :
      - "5678:5678"
    environnement :
      - WEBHOOK_URL=${N8N_PROTOCOL}://${N8N_HOST} :${N8N_PORT}/
    tomes :
      - ./n8n_data:/home/node/.n8n
    cela dépend :
      - base de données

  base de données :
    image : postgres : 15
    redémarrage : à moins d'être arrêté
    environnement :
      - POSTGRES_USER=${DB_POSTGRESDB_USER}
      - POSTGRES_PASSWORD=${DB_POSTGRESDB_PASSWORD}
      - POSTGRES_DB=${DB_POSTGRESDB_DATABASE}
    tomes :
      - ./db_data:/var/lib/postgresql/data
# Facultatif : activer plus tard pour les exécutions en parallèle/en file d'attente
  # redis :
  # image : redis:7-alpine
  # redémarrage : à moins d'être arrêté

Pourquoi cette mise en page fonctionne :

  • Le conteneur n8n conserve tout ce qui est important dans ./n8n_data
  • Les données Postgres se trouvent dans ./db_data
  • env_file garde les secrets en dehors de YAML et de Git

Étape 4 : Démarrer n8n

Depuis ~/n8n-stack :

docker compose -d
ouvrez http://localhost:5678

L'écran Configuration du propriétaire s'affiche. Créez votre compte administrateur avec un mot de passe fort.


Étape 5 : Verrouillez vos paramètres de base

Accédez à Paramètres → Général et confirmez :

  • Fuseau horaire : définissez votre heure locale
  • URL du webhook : http://localhost:5678/ pour les tests locaux
  • Exécutions : élagage activé (déjà défini via .env)

Enregistrez les modifications.


Étape 6 : Testez un Webhook (votre première automatisation)

  1. Cliquez sur Créer un workflow → Repartir de zéro

  2. Ajouter un nœud Webhook

    • Méthode HTTP : POST
    • Chemin : bonjour (ou quittez le chemin automatique)
  3. Ajoutez le nœud Répondre au Webhook

    • Réponse : JSON *Corps :

      { "ok": vrai, "reçu": "{{$json.body.ping || 'pong'}}" }
      
  4. Connectez Webhook → Répondre au Webhook

  5. Cliquez sur Écouter l'événement de test sur le nœud Webhook.

  6. Dans Terminal :

curl -X POST "http://localhost:5678/webhook-test/<votre-id>" \
  -H "Type de contenu : application/json" \
  -d '{"ping": "pong"}'

Vous verrez la requête arriver dans la sortie du nœud et recevrez une réponse JSON « 200 ». Cliquez sur Activer pour obtenir une URL de production que vous pouvez appeler même lorsque l'éditeur n'écoute pas.


Étape 7 : exposez votre Webhook publiquement (facultatif, pratique)

Lorsque vous souhaitez tester des webhooks depuis des services externes (formulaires, Stripe, GitHub), utilisez un tunnel sécurisé.

Option A — ngrok

brasser installer ngrok/ngrok/ngrok
ngrok http http://localhost:5678

Option B — Cloudflare Tunnel (gratuit, stable)

Brew installer cloudflare/cloudflare/cloudflared
tunnel cloudflared --url http://localhost:5678

Copiez l'URL HTTPS qu'il vous donne. Dans n8n Paramètres → Général, définissez temporairement Webhook URL sur cette valeur afin que vos URL de production utilisent HTTPS.


Étape 8 : Construire une automatisation simple mais significative

Voici un démarreur réel et utile : Uptime & Error Watchdog.

  • Toutes les 5 minutes : pingez une liste d'URL
  • Si un renvoie >= 400, envoyez une alerte Slack avec l'URL et le code d'état

Importez le workflow ci-dessous (n8n → Importer → coller JSON). Modifiez ensuite la liste d'URL et la chaîne Slack.

{
  "name": "Chien de surveillance de la disponibilité et des erreurs",
  "nœuds": [
    {
      "paramètres": {
        "triggerTimes": { "item": [ { "mode": "everyX", "unit": "minutes", "value": 5 } ] }
      },
      "identifiant": "Cron",
      "name": "Cron (tous les 5 m)",
      "type": "n8n-nodes-base.cron",
      "typeVersion": 1,
      "position": [220, 280]
    },
    {
      "paramètres": {
        "functionCode": "const urls = [\n 'https://www.ramlit.com/',\n 'https://www.colorpark.io/',\n 'https://www.xcybersecurity.io/',\n 'https://www.mejba.me/'\n];\nreturn urls.map(u => ({ url: u }));"
      },
      "id": "Graine",
      "name": "URL de départ",
      "type": "n8n-nodes-base.fonction",
      "typeVersion": 2,
      "position": [440, 280]
    },
    {
      "paramètres": {
        "url": "={{$json.url}}",
        "responseFormat": "chaîne",
        "options": { "ignoreResponseCode": vrai, "timeout": 10000 }
      },
      "identifiant": "HTTP",
      "name": "Vérification HTTP",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4,
      "position": [660, 280]
    },
    {
      "paramètres": {
        "conditions": {
          "number": [ { "value1": "={{$json.statusCode}}", "opération": "largerEqual", "value2": 400 } ]
        }
      },
      "id": "SI",
      "name": "IF erreur (>=400)",
      "type": "n8n-nodes-base.if",
      "typeVersion": 1,
      "position": [880, 280]
    },
    {
      "paramètres": {
        "channel": "#alertes",
        "text": "Alerte de disponibilité : {{$json.url}} a renvoyé HTTP {{$json.statusCode}}"
      },
      "id": "Slack",
      "name": "Alerte Slack",
      "type": "n8n-nodes-base.slack",
      "typeVersion": 1,
      "position": [1100, 240],
      "credentials": { "slackApi": { "id": "replace-in-ui" } }
    }
  ],
  "connexions": {
    "Cron (tous les 5 mois)": { "main": [ [ { "node": "URL de départ", "type": "main", "index": 0 } ] ] },
    "URL de départ": { "main": [ [ { "node": "HTTP Check", "type": "main", "index": 0 } ] ] },
"HTTP Check": { "main": [ [ { "node": "IF error (>=400)", "type": "main", "index": 0 } ] ] },
    "IF error (>=400)": { "main": [ [ { "node": "Slack Alert", "type": "main", "index": 0 } ], [] ] }
  }
}

Pourquoi c'est utile : Vous détecterez rapidement les temps d'arrêt ou les erreurs de routage, avant les clients. Étendez-le en enregistrant les échecs dans Google Sheets ou Notion.


Étape 9 : Identifiants, confidentialité et bases de sécurité

Même localement, traitez les secrets avec précaution :

  • Stockez les jetons API dans Credentials (ils sont cryptés avec votre N8N_ENCRYPTION_KEY).
  • Pour les webhooks entrants, ajoutez un en-tête secret (par exemple, X-Webhook-Secret) et vérifiez-le avec un nœud Function.
  • Gardez les diagnostics et la personnalisation désactivés pour des raisons de confidentialité.
  • Utilisez un gestionnaire de mots de passe pour stocker vos secrets .env : ne les confiez pas à Git.

Étape 10 : Sauvegardes et exportations de workflow

Vos atouts les plus importants se trouvent à deux endroits :

  • ~/n8n-stack/n8n_data (configuration n8n et magasin d'informations d'identification)
  • ~/n8n-stack/db_data (données Postgres)

Sauvegarde manuelle rapide :

  • Arrêter les conteneurs : docker compose down
  • Copiez l'intégralité du dossier ~/n8n-stack sur un lecteur sécurisé ou S3
  • Recommencez : docker compose up -d

Exporter les workflows vers un seul fichier JSON (idéal pour Git) :

docker exec -it $(docker ps --filter name=n8n -q) \
  n8n export:workflow --all --output=/home/node/.n8n/exports.json
# Le fichier apparaîtra à l'intérieur de ./n8n_data

Étape 11 : Mettre à niveau n8n en toute sécurité

  1. Exportez vos workflows (exports.json)
  2. Faites une copie rapide des dossiers n8n_data et db_data
  3. Extrayez la dernière image et recréez :
docker compose pull
docker compose -d

Si quelque chose ne va pas, vous pouvez revenir en arrière en échangeant vos dossiers de sauvegarde.


Étape 12 : Amélioration facultative des performances (Workers + Redis)

Lorsque les flux de travail deviennent lourds (appels IA, téléchargements de fichiers, API lentes), passez en mode file d'attente et générez des nœuds de calcul.

  • Décommentez le service redis dans docker-compose.yml *Défini dans .env :

    N8N_EXECUTIONS_MODE=file d'attente
    
  • Démarrer les services et un travailleur :

docker compose -d
docker compose run --no-deps --name n8n-worker-1 \
  -e N8N_EXECUTIONS_MODE=file d'attente \
  -e QUEUE_BULL_REDIS_HOST=redis\
  n8n n8n travailleur

Vous pouvez exécuter plusieurs travailleurs pour une exécution parallèle.


Étape 13 : Du Mac à la production (quand vous êtes prêt)

La beauté de Docker est que la promotion est simple. Sur un VPS (ou dans Kubernetes) :

  • Réutilisez les mêmes images et variables d'environnement
  • Mettez n8n derrière Caddy/Nginx avec HTTPS (Let's Encrypt)
  • Ajoutez Cloudflare Access ou votre SSO pour une interface utilisateur d'administration sécurisée
  • Planifiez des sauvegardes régulières de la base de données Postgres et de n8n_data

Vos apprentissages locaux évoluent avec vous, aucune reconstruction n'est nécessaire.


Pièges courants (et solutions rapides)

** « Port déjà utilisé. » ** Modifiez N8N_PORT dans .env et le mappage ports dans docker-compose.yml, puis docker compose up -d.

** « Autorisation refusée » sur les volumes.** Corriger la propriété/autorisations :

chmod -R 775 ~/n8n-stack/n8n_data ~/n8n-stack/db_data

Erreurs d'URL de test du webhook.

  • Utilisez l'URL de test uniquement lorsque « Écouter l'événement de test » est actif.
  • Après avoir cliqué sur Activer, utilisez l'URL de production.

Grande croissance de la base de données.

  • Continuez à tailler (déjà configuré).
  • Évitez de sauvegarder des données binaires volumineuses dans les nœuds ; utilisez S3/Drive lorsque cela est possible.

Comparaisons : Pourquoi n8n contre Zapier/Make ?

  • Contrôle des coûts : n8n est open source et auto-hébergable – évolutif sans pénalités par zap.
  • Flexibilité : logique au niveau du code via les nœuds de fonction ; créez des nœuds personnalisés si nécessaire.
  • Contrôle des données : exécuté sur votre matériel ; s'aligner sur la conformité ou les demandes des clients.
  • Portabilité : La configuration Dockerisée reflète la production : changez facilement d'environnement.

Cas d'utilisation réels que vous pouvez créer ensuite

  • Admission de leads : Webhook → Normaliser → Notifier Slack → Ajouter Google Sheets
  • Daily AI Digest : Cron → API de recherche → Résumé OpenAI → Publier sur Notion
  • Routage des incidents : Webhook GitHub/CI → Analyser les journaux → Alerte Slack/PagerDuty
  • Finance Ops : Import CSV → nettoyer les données → stocker dans Postgres → rapport par e-mail
  • Opérations de vente : Événement Stripe → enrichir avec CRM → notifier et identifier dans Slack

Chacun d'entre eux peut démarrer sur votre Mac et être mis en production ultérieurement avec des files d'attente et HTTPS.


Points à puces / Points à retenir

  • Docker + Postgres vous offre un n8n stable et de type production sur macOS.
  • Chiffrez les informations d'identification avec N8N_ENCRYPTION_KEY et évitez de commettre des secrets. * Utilisez Tester les URL pendant l'écoute ; URL de production après activation.
  • Sauvegardez régulièrement n8n_data et db_data ou exportez les flux de travail.
  • Ajoutez Redis + Workers lorsque les flux deviennent plus lourds ; vous gagnerez en parallélisme.
  • Les tunnels (ngrok/Cloudflare) rendent les tests de webhooks externes simples et sécurisés.
  • La promotion vers un VPS se fait principalement en copier-coller : même fichier Compose, périmètre plus fort.

Appel à l'action

Si vous êtes sérieux au sujet de l’automatisation, ne vous arrêtez pas à « bonjour tout le monde ». Choisissez un processus (admission de leads, alertes de disponibilité ou rapport quotidien d'IA) et expédiez-le dès aujourd'hui. Vous souhaitez un workflow de démarrage sur mesure (Slack + Sheets, ou résumé IA → Notion) ? Dites-moi vos outils de destination et je vous fournirai un JSON prêt à être importé que vous pourrez exécuter immédiatement.


🤝 Embaucher / Travailler avec moi :


##FAQ

1) Puis-je utiliser SQLite au lieu de Postgres ? Vous pouvez, mais ce n’est pas idéal pour autre chose que des expériences rapides. Postgres est plus fiable, plus facile à sauvegarder et recommandé pour un travail réel.

2) Ai-je besoin de HTTPS sur mon Mac ? Pour le développement local, non. Si vous exposez publiquement des webhooks, utilisez un tunnel (ngrok/Cloudflare). Pour la production, placez n8n derrière un proxy inverse avec HTTPS.

3) Comment puis-je protéger mes flux de travail pendant les mises à niveau ? Exportez les workflows vers JSON, sauvegardez « n8n_data » et « db_data », puis effectuez la mise à niveau. Si quelque chose se casse, restaurez les dossiers.

4) Pourquoi mon URL de test ne fonctionne-t-elle pas après une minute ? Les URL de test ne fonctionnent que pendant que l'éditeur écoute les événements. Cliquez à nouveau sur « Écouter l'événement de test » ou utilisez l'URL de production après l'activation.

5) Puis-je exécuter plusieurs flux de travail en parallèle sur mon Mac ? Oui. Passez en mode file d'attente avec Redis et démarrez un ou plusieurs nœuds de calcul.

6) Comment puis-je me connecter à Slack, Google Sheets ou Notion ? Créez des informations d'identification dans Credentials (OAuth ou token), puis sélectionnez-les dans le nœud. n8n les stocke cryptés à l'aide de votre N8N_ENCRYPTION_KEY.

7) N8n est-il adapté aux entreprises ? Oui, lorsqu'il est auto-hébergé correctement avec SSO/OIDC, HTTPS, sauvegardes et accès basé sur les rôles. La configuration de votre Mac reflète l’architecture que vous utiliserez en production.

8) Qu'en est-il des workflows d'IA ? n8n s'intègre à OpenAI et à d'autres fournisseurs. Ajoutez des nœuds de fonction pour des invites personnalisées ou des API en chaîne (recherche → résumer → publier) avec des tentatives et des délais d'attente.


Vous avez terminé. Vous avez installé n8n sur votre Mac avec Docker Desktop, vérifié les webhooks et appris une méthode axée sur la production pour créer des automatisations fiables. Maintenant, mettez-le au travail.

Publicité
Coffee cup

Vous avez apprécié cet article ?

Votre soutien m'aide à créer davantage de contenu technique approfondi, d'outils open source et de ressources gratuites pour la communauté des développeurs.

Sujets connexes

Engr Mejba Ahmed

À propos de l'auteur

Engr Mejba Ahmed

Engr. Mejba Ahmed builds AI-powered applications and secure cloud systems for businesses worldwide. With 10+ years shipping production software in Laravel, Python, and AWS, he's helped companies automate workflows, reduce infrastructure costs, and scale without security headaches. He writes about practical AI integration, cloud architecture, and developer productivity.

Discussion

Comments

0

No comments yet

Be the first to share your thoughts

Leave a Comment

Your email won't be published

6  x  3  =  ?

Comments

Leave a Comment

Comments are moderated before appearing.

Learning Resources

Expand Your Knowledge

Accelerate your growth with structured courses, verified certificates, interactive flashcards, and production-ready AI agent skills.

Sample Certificate of Completion

Sample certificate — complete any course to earn yours

Engr Mejba Ahmed

Engr Mejba Ahmed

Claude Code Expert · Online

👋

Hey there!

Quick Actions

WhatsApp Instant reply

Chat on WhatsApp

+880 1723 741224 · Instant reply

Popular Questions

Engr Mejba Ahmed is connected
Engr Mejba Ahmed is typing...
Engr Mejba Ahmed avatar

✉ Want me to follow up? Drop your email

Engr Mejba Ahmed avatar

📞 Connect Directly

Choose how you'd like to reach me

WhatsApp

+880 1723 741224

Email

[email protected]

✓ Details sent! I'll get back to you shortly.

Powered by OpenAI

335+

Blog Posts

25

AI Courses

63

Projects

Services & Expertise

Pricing & Process

Learning & Resources

Connect & Support