Skip to main content
📝 n8n

Installeer n8n op Mac met Docker Desktop: stapsgewijze handleiding

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

12 min

Leestijd

2,276

Woorden

Nov 08, 2025

Gepubliceerd

Engr Mejba Ahmed

Geschreven door

Engr Mejba Ahmed

Artikel delen

Installeer n8n op Mac met Docker Desktop: stapsgewijze handleiding

Introductie

Automatisering hoeft niet moeilijk of riskant te zijn. Als je ooit hebt geprobeerd tools samen te voegen met aangepaste scripts of betaalde SaaS-zaps, dan ken je de pijn: fragiele logica, leverancierslock-in en groeiende kosten. n8n lost dat op. Het is een open source, zelf-hostbaar automatiseringsplatform dat uw apps en API's verbindt met een overzichtelijke, visuele bouwer, terwijl u toch de volledige controle krijgt.

In deze handleiding leert u hoe u n8n op macOS met Docker Desktop op de juiste manier kunt installeren: permanente opslag, PostgreSQL (niet SQLite), gecodeerde inloggegevens, veilige webhooks en schone upgrade-/back-uproutines. We houden het snel en beginnersvriendelijk, zonder de productiedetails over te slaan. Uiteindelijk beschikt u over een betrouwbare lokale automatiseringshub die u voor het echte werk kunt gebruiken (het testen van webhooks, het opbouwen van leadscapture-stromen of het orkestreren van AI-pijplijnen) en vervolgens met vertrouwen kunt promoveren naar een server.


Wat je gaat bouwen

  • Een lokale n8n-instantie die draait in Docker-containers
  • PostgreSQL-database voor duurzame opslag
  • Een opgeruimde projectmap met volumes voor back-ups en Git-vriendelijke exports
  • Een werkende webhook en een eenvoudige automatisering die u overal kunt hergebruiken
  • Optionele extra's (Redis-wachtrijwerkers, HTTPS, tunnel voor openbare webhooks)

Voor wie is deze gids bedoeld

  • Ontwikkelaars die een veilige lokale omgeving willen om automatiseringen te bouwen en te testen
  • Makers en marketeers die workflows in Zapier-stijl nodig hebben zonder de maandelijkse factuur
  • Teams die van plan zijn om n8n later zelf te hosten, maar vandaag nog op een Mac willen beginnen

Vereisten

  • macOS (Apple Silicon of Intel)
  • Docker Desktop geïnstalleerd en actief
  • Basis Terminal-comfort
  • (Optioneel) Homebrew om extra's zoals ngrok of Cloudflare Tunnel te installeren

Het grote geheel (waarom Docker + Postgres)

Waarom Docker? Consistentie. Je krijgt dezelfde omgeving zowel lokaal als in de productie – geen ‘werk op mijn machine’-drama. Waarom PostgreSQL? Het is robuust en heeft de voorkeur voor productie. SQLite is prima voor snelle tests, maar Postgres houdt uw workflows, uitvoeringslogboeken en inloggegevens solide en herstelbaar. Waarom eerst lokaal? U kunt veilig herhalen. Zodra uw workflow stabiel is, kunt u de exacte configuratie vrijwel zonder wijzigingen naar een VPS verplaatsen.


Stap 1: Maak een schoon project

Open Terminal en maak een speciale map:

mkdir -p ~/n8n-stack/{n8n_data,db_data}
cd ~/n8n-stack
  • n8n_data slaat n8n-configuratie, inloggegevens en exports op
  • db_data slaat uw PostgreSQL-databasebestanden op
  • Door ze naast elkaar te houden, zijn back-ups eenvoudig (kopieer gewoon de map)

Stap 2: Omgevingsvariabelen toevoegen

Maak een .env-bestand in ~/n8n-stack. Deze waarden configureren uw containers en houden geheimen buiten versiebeheer.

# ---- n8n-kern ----
N8N_HOST=lokalehost
N8N_PORT=5678
N8N_PROTOCOL=http
NODE_ENV=productie

# Gebruik een lange willekeurige reeks (opslaan in uw wachtwoordbeheerder)
N8N_ENCRYPTION_KEY=CHANGE_ME_TO_A_LONG_RANDOM_64_CHAR_STRING

# Privacy- en UX-instellingen
N8N_USER_MANAGEMENT_DISABLED=onwaar
N8N_DIAGNOSTICS_ENABLED=onwaar
N8N_PERSONALIZATION_ENABLED=onwaar

# Uitvoering housekeeping (houdt DB slank)
EXECUTIONS_DATA_PRUNE=waar
EXECUTIONS_DATA_MAX_AGE=336 # uur (14 dagen)
EXECUTIONS_DATA_PRUNE_MAX_COUNT=10000

# ---- databank ----
DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=db
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=n8n
DB_POSTGRESDB_USER=n8n_gebruiker
DB_POSTGRESDB_PASSWORD=WIJZIG_THIS_STRONG_PASSWORD

# ---- wachtrijmodus (optioneel) ----
N8N_EXECUTIONS_MODE=normaal
QUEUE_BULL_REDIS_HOST=herdis
QUEUE_BULL_REDIS_PORT=6379

Pro tip: Genereer een veilige sleutel rechtstreeks in Terminal:

python3 - <<'PY'
geheimen importeren, string
alfabet = string.ascii_letters + string.cijfers + string.interpunctie
print(''.join(geheimen.keuze(alfabet) voor _ binnen bereik(80)))
PY

Plak de uitvoer in N8N_ENCRYPTION_KEY.


Stap 3: Maak het Docker Compose-bestand

Voeg een docker-compose.yml toe in dezelfde map:

versie: "3.8"

diensten:
  n8n:
    afbeelding: n8nio/n8n: nieuwste
    herstarten: tenzij-gestopt
    env_bestand: .env
    poorten:
      - "5678:5678"
    omgeving:
      - WEBHOOK_URL=${N8N_PROTOCOL}://${N8N_HOST}:${N8N_PORT}/
    volumes:
      - ./n8n_data:/home/node/.n8n
    hangt af van:
      - db

  database:
    afbeelding: postgres:15
    herstarten: tenzij-gestopt
    omgeving:
      - POSTGRES_USER=${DB_POSTGRESDB_USER}
      - POSTGRES_PASSWORD=${DB_POSTGRESDB_PASSWORD}
      - POSTGRES_DB=${DB_POSTGRESDB_DATABASE}
    volumes:
      - ./db_data:/var/lib/postgresql/data
# Optioneel: later inschakelen voor parallelle/in de wachtrij geplaatste uitvoeringen
  # opnieuw indienen:
  # afbeelding: redis:7-alpine
  # herstart: tenzij gestopt

Waarom deze lay-out werkt:

  • De n8n-container bewaart al het belangrijke binnen ./n8n_data
  • Postgres-gegevens bevinden zich in ./db_data
  • env_file bewaart geheimen buiten de YAML en buiten Git

Stap 4: Start n8n

Van ~/n8n-stack:

docker componeren -d
open http://localhost:5678

U ziet het scherm eigenaar instellen. Maak uw beheerdersaccount aan met een sterk wachtwoord.


Stap 5: Vergrendel uw basisinstellingen

Ga naar Instellingen → Algemeen en bevestig:

  • Tijdzone: stel uw lokale tijd in
  • Webhook-URL: http://localhost:5678/ voor lokaal testen
  • Uitvoeringen: snoeien ingeschakeld (al ingesteld via .env)

Wijzigingen opslaan.


Stap 6: Rooktest een webhook (uw eerste automatisering)

  1. Klik op Workflow maken → Helemaal opnieuw beginnen

  2. Voeg het Webhook-knooppunt toe

    • HTTP-methode: POST
    • Pad: hallo (of verlaat het automatische pad)
  3. Voeg het knooppunt Reageren op Webhook toe

    • Reactie: JSON

    • Lichaam:

      { "ok": waar, "ontvangen": "{{$json.body.ping || 'pong'}}" }
      
  4. Verbinden Webhook → Reageren op Webhook

  5. Klik op Luister naar testgebeurtenis op het Webhook-knooppunt

  6. In de terminal:

curl -X POST "http://localhost:5678/webhook-test/<uw-id>" \
  -H "Inhoudstype: applicatie/json" \
  -d '{"ping:pong"}'

U ziet het verzoek aankomen in de knooppuntuitvoer en ontvangt een '200' JSON-antwoord. Klik op Activeren om een ​​productie-URL te krijgen die u kunt bellen, zelfs als de redacteur niet luistert.


Stap 7: Maak uw webhook openbaar (optioneel, handig)

Wanneer u webhooks van externe services (formulieren, Stripe, GitHub) wilt testen, gebruikt u een beveiligde tunnel.

Optie A — ngrok

brouw installeer ngrok/ngrok/ngrok
ngrok http://localhost:5678

Optie B — Cloudflare Tunnel (gratis, stabiel)

brouw installeer cloudflare/cloudflare/cloudflared
cloudflared tunnel --url http://localhost:5678

Kopieer de HTTPS-URL die u krijgt. Stel in n8n Instellingen → Algemeen tijdelijk Webhook-URL in op die waarde, zodat uw productie-URL's HTTPS gebruiken.


Stap 8: Bouw een eenvoudige maar significante automatisering

Hier is een echte, nuttige starter: Uptime & Error Watchdog.

  • Elke 5 minuten: ping een lijst met URL's
  • Als er een resultaat >= 400 is, stuur dan een Slack-waarschuwing met de URL en statuscode

Importeer de onderstaande workflow (n8n → Importeren → JSON plakken). Bewerk vervolgens de URL-lijst en het Slack-kanaal.

{
  "name": "Uptime- en foutwatchdog",
  "knooppunten": [
    {
      "parameters": {
        "triggerTimes": { "item": [ { "modus": "everyX", "eenheid": "minuten", "waarde": 5 } ] }
      },
      "id": "Cron",
      "name": "Cron (elke 5m)",
      "type": "n8n-nodes-base.cron",
      "typeVersie": 1,
      "positie": [220, 280]
    },
    {
      "parameters": {
        "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": "Zaad",
      "name": "Seed-URL's",
      "type": "n8n-nodes-base.function",
      "typeVersie": 2,
      "positie": [440, 280]
    },
    {
      "parameters": {
        "url": "={{$json.url}}",
        "responseFormat": "string",
        "options": { "ignoreResponseCode": true, "time-out": 10000 }
      },
      "id": "HTTP",
      "name": "HTTP-controle",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersie": 4,
      "positie": [660, 280]
    },
    {
      "parameters": {
        "voorwaarden": {
          "number": [ { "value1": "={{$json.statusCode}}", "operation": "largerEqual", "value2": 400 } ]
        }
      },
      "id": "ALS",
      "name": "IF-fout (>=400)",
      "type": "n8n-nodes-base.if",
      "typeVersie": 1,
      "positie": [880, 280]
    },
    {
      "parameters": {
        "channel": "#waarschuwingen",
        "text": "Uptime-waarschuwing: {{$json.url}} heeft HTTP geretourneerd {{$json.statusCode}}"
      },
      "id": "Slap",
      "name": "Slack-waarschuwing",
      "type": "n8n-nodes-base.slack",
      "typeVersie": 1,
      "positie": [1100, 240],
      "referenties": { "slackApi": { "id": "replace-in-ui" } }
    }
  ],
  "verbindingen": {
    "Cron (elke 5m)": { "main": [ [ { "node": "Seed-URL's", "type": "main", "index": 0 } ] ] },
    "Seed-URL's": { "main": [ [ { "node": "HTTP Check", "type": "main", "index": 0 } ] ] },
"HTTP-controle": { "main": [ [ { "node": "IF-fout (>=400)", "type": "main", "index": 0 } ] ] },
    "IF-fout (>=400)": { "main": [ [ { "node": "Slack Alert", "type": "main", "index": 0 } ], [] ] }
  }
}

Waarom dit waardevol is: U ontdekt snel downtime of routeringsfouten, voordat klanten dat doen. Breid het uit door fouten in Google Spreadsheets of Notion te loggen.


Stap 9: Basisbeginselen van inloggegevens, privacy en beveiliging

Ga zelfs lokaal voorzichtig om met geheimen:

  • Bewaar API-tokens in Credentials (ze zijn gecodeerd met uw N8N_ENCRYPTION_KEY).
  • Voeg voor inkomende webhooks een geheime header toe (bijvoorbeeld X-Webhook-Secret) en verifieer deze met een Function-knooppunt.
  • Houd diagnostiek en personalisatie uitgeschakeld vanwege privacy.
  • Gebruik een wachtwoordbeheerder om je .env-geheimen op te slaan; commit ze niet aan Git.

Stap 10: Back-ups en workflow-exports

Uw belangrijkste bezittingen bevinden zich op twee plaatsen:

  • ~/n8n-stack/n8n_data (n8n-configuratie en inloggegevensopslag)
  • ~/n8n-stack/db_data (Postgres-gegevens)

Snelle handmatige back-up:

  • Stop containers: docker compose down
  • Kopieer de hele map ~/n8n-stack naar een veilige schijf of S3
  • Begin opnieuw: docker compose up -d

Exporteer workflows naar één JSON-bestand (ideaal voor Git):

docker exec -it $(docker ps --filternaam=n8n -q) \
  n8n export:workflow --all --output=/home/node/.n8n/exports.json
# Het bestand verschijnt in ./n8n_data

Stap 11: n8n veilig upgraden

  1. Exporteer uw workflows (exports.json)
  2. Maak een snelle kopie van de mappen n8n_data en db_data
  3. Haal de nieuwste afbeelding op en maak deze opnieuw:
docker componeer pull
docker componeren -d

Als er iets niet klopt, kunt u teruggaan door uw back-upmappen weer in te wisselen.


Stap 12: Optionele prestatieverbetering (werknemers + Redis)

Wanneer workflows zwaar worden (AI-aanroepen, bestandsuploads, trage API's), schakel dan over naar de wachtrijmodus en spawn-workers.

  • Verwijder de commentaartekens voor de redis-service in docker-compose.yml

  • Ingesteld in .env:

    N8N_EXECUTIONS_MODE=wachtrij
    
  • Startdiensten en een werknemer:

docker componeren -d
docker compose run --no-deps --name n8n-worker-1 \
  -e N8N_EXECUTIONS_MODE=wachtrij \
  -e QUEUE_BULL_REDIS_HOST=redis \
  n8n n8n werknemer

U kunt meerdere werk nemers uitvoeren voor parallelle uitvoering.


Stap 13: Van Mac naar productie (als u er klaar voor bent)

Het mooie van Docker is dat promotie eenvoudig is. Op een VPS (of in Kubernetes):

  • Hergebruik de dezelfde afbeeldingen en omgevingsvariabelen
  • Zet n8n achter Caddy/Nginx met HTTPS (Let’s Encrypt)
  • Voeg Cloudflare Access of uw SSO toe voor een veilige beheerdersinterface
  • Plan regelmatige back-ups van de Postgres DB en n8n_data

Uw lokale kennis beweegt met u mee, er is geen herbouw nodig.


Veelvoorkomende valkuilen (en snelle oplossingen)

“Poort al in gebruik.” Wijzig N8N_PORT in .env en de ports-toewijzing in docker-compose.yml, en vervolgens docker compose up -d.

“Toestemming geweigerd” op volumes. Eigendom/rechten repareren:

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

Webhook-test-URL-fouten.

  • Gebruik de Test-URL alleen als “Luister naar testgebeurtenis” actief is.
  • Nadat u op Activeren heeft geklikt, gebruikt u de Productie-URL.

Grote databasegroei.

  • Blijf snoeien (reeds geconfigureerd).
  • Vermijd het opslaan van grote binaire gegevens in knooppunten; gebruik waar mogelijk S3/Drive.

Vergelijkingen: waarom n8n versus Zapier/Make?

  • Kostenbeheersing: n8n is open source en zelf-hostbaar: schaalbaar zonder boetes per zap.
  • Flexibiliteit: logica op codeniveau via functieknooppunten; maak indien nodig aangepaste knooppunten.
  • Gegevenscontrole: draait op uw hardware; afstemmen op compliance of klanteisen.
  • Draagbaarheid: De gedockeriseerde installatie weerspiegelt de productie: verander eenvoudig van omgeving.

Gebruiksscenario's uit de praktijk die u vervolgens kunt bouwen

  • Leadinname: Webhook → Normaliseren → Slack-melding → Google Spreadsheets toevoegen
  • Dagelijkse AI-samenvatting: Cron → Zoek-API → OpenAI-samenvatting → Posten in Notion
  • Incidentrouting: GitHub/CI Webhook → Logboeken parseren → Slack/PagerDuty-waarschuwing
  • Finance Ops: CSV-import → gegevens opschonen → opslaan in Postgres → e-mailrapport
  • Sales Ops: Stripe-evenement → verrijken met CRM → notificeren en taggen in Slack

Elk van deze kan op je Mac starten en later worden geproduceerd met wachtrijen en HTTPS.


Opsommingstekens / Snelle afhaalrestaurants

  • Docker + Postgres geeft je een stabiele, productie-achtige n8n op macOS.
  • Versleutel inloggegevens met N8N_ENCRYPTION_KEY en voorkom het plegen van geheimen.
  • Gebruik Test-URL's tijdens het luisteren; Productie-URL's na activering.
  • Maak regelmatig een back-up van n8n_data en db_data of exporteer workflows.
  • Voeg Redis + werknemers toe wanneer de stromen zwaarder worden; je zult parallellisme verkrijgen.
  • Tunnels (ngrok/Cloudflare) maken het testen van externe webhook eenvoudig en veilig.
  • Promotie naar een VPS is meestal copy-paste: hetzelfde Compose-bestand, sterkere omtrek.

Oproep tot actie

Als u serieus bezig bent met automatisering, stop dan niet bij ‘Hallo wereld’. Kies één proces (leadintake, uptime-waarschuwingen of een dagelijks AI-rapport) en verzend het vandaag nog. Wilt u een op maat gemaakte startersworkflow (Slack + Sheets of AI-samenvatting → Notion)? Vertel mij uw bestemmingstools en ik zorg voor een importklare JSON die u onmiddellijk kunt uitvoeren.


🤝 Huur/werk met mij:


Veelgestelde vragen

1) Kan ik SQLite gebruiken in plaats van Postgres? Dat kan, maar het is niet ideaal voor iets anders dan snelle experimenten. Postgres is betrouwbaarder, gemakkelijker te back-uppen en aanbevolen voor echt werk.

2) Heb ik HTTPS nodig op mijn Mac? Voor lokale ontwikkeling: nee. Als u webhooks openbaar maakt, gebruik dan een tunnel (ngrok/Cloudflare). Voor productie plaatst u n8n achter een reverse proxy met HTTPS.

3) Hoe houd ik mijn workflows veilig tijdens upgrades? Exporteer workflows naar JSON, maak een back-up van n8n_data en db_data en upgrade vervolgens. Als er iets kapot gaat, draait u de mappen terug.

4) Waarom werkt mijn test-URL na een minuut niet meer? Test-URL's werken alleen terwijl de editor naar gebeurtenissen luistert. Klik nogmaals op 'Luister naar testgebeurtenis' of gebruik de productie-URL na activering.

5) Kan ik meerdere workflows parallel uitvoeren op mijn Mac? Ja. Schakel over naar wachtrijmodus met Redis en start een of meer werkers.

6) Hoe maak ik verbinding met Slack, Google Spreadsheets of Notion? Maak inloggegevens aan in Credentials (OAuth of token) en selecteer ze vervolgens in het knooppunt. n8n slaat ze versleuteld op met uw N8N_ENCRYPTION_KEY.

7) Is n8n geschikt voor ondernemingen? Ja, wanneer het op de juiste manier door uzelf wordt gehost met SSO/OIDC, HTTPS, back-ups en op rollen gebaseerde toegang. Uw Mac-installatie weerspiegelt de architectuur die u in de productie gaat gebruiken.

8) Hoe zit het met AI-workflows? n8n kan worden geïntegreerd met OpenAI en andere providers. Voeg functieknooppunten toe voor aangepaste aanwijzingen, of koppel API's aan elkaar (zoeken → samenvatten → publiceren) met nieuwe pogingen en time-outs.


Je bent klaar. Je hebt n8n op je Mac geïnstalleerd met Docker Desktop, webhooks geverifieerd en een productiegerichte manier geleerd om automatiseringen te bouwen waarop je kunt vertrouwen. Zet het nu aan het werk.

Coffee cup

Vond u dit artikel leuk?

Uw steun helpt mij meer diepgaande technische content, open-source tools en gratis bronnen voor de ontwikkelaarsgemeenschap te maken.

Gerelateerde onderwerpen

Engr Mejba Ahmed

Over de 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

7  x  2  =  ?

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