n8n is een toonaangevende visuele editor voor snelle iteraties, waarmee je automatiseringsworkflows kunt bouwen en direct resultaten ziet. Perfect voor dagelijkse automatiseringen en complexe AI-agent workflows.
Self-hosting ondersteuning en de low-code editor maken n8n favoriet bij elke ontwikkelaar. Wil je maximale controle, persoonlijke aanpassingen en op de lange termijn kosten besparen, dan is de self-hosted versie precies wat je zoekt.
Wil je n8n zelf hosten? We begeleiden je stap voor stap door de installatie en configuratie en laten je alles zien wat je moet weten.
Hoewel n8n lichtgewicht is, kan het gebruik van resources toenemen met het aantal workflows, API-calls en data-intensieve nodes. We raden de volgende hardware aan voor je VPS om n8n te hosten:
| Hardware | Minimum | Aanbevolen |
|---|---|---|
| CPU | 1 vCPU-kern | 2 vCPU-kernen |
| RAM | 2 GB | 4 GB |
| Opslag | 20 GB | 50 GB |
Nadat Docker op je server draait, controleer je de installatie met:
docker --version
docker compose version
Maak een projectmap aan om n8n lokale bestanden en omgevingsvariabelen op te slaan en ga naar die map:
mkdir n8n-compose
cd n8n-compose
Maak in de n8n-compose map een .env bestand met nano .env en voeg de volgende code met n8n omgevingsvariabelen toe:
# DOMAIN_NAME en SUBDOMAIN bepalen samen onder welk adres n8n bereikbaar is
# De top-level domein
DOMAIN_NAME=zap.cloud
# De subdomein
SUBDOMAIN=silver-octopus-xxxxx
# Het bovenstaande voorbeeld maakt n8n bereikbaar via: https://silver-octopus-xxxxx.zap.cloud
# Optionele tijdzone die gebruikt wordt door Cron en andere scheduling nodes
GENERIC_TIMEZONE=Europe/Berlin
# E-mailadres voor TLS/SSL-certificaat aanmaak
SSL_EMAIL=hello@zap-hosting.com
Hostname.
Vul het deel zap.cloud in bij DOMAIN_NAME en het eerste deel bij SUBDOMAIN (bijv. silver-octopus-xxxxx).
HTTPS-vereiste Gebruik in het .env bestand geen puur IP-adres. n8n vereist een HTTPS-verbinding en SSL-certificaten worden alleen uitgegeven voor domeinen, niet voor IP-adressen.
Als je n8n liever op je eigen domein host, maak dan een subdomein aan voor n8n door in de DNS-manager van je domein een A-record aan te maken die naar het IP-adres van je VPS verwijst.
| Naam | Type | Waarde | TTL | Prioriteit |
|---|---|---|---|---|
| n8n (subdomein) | A | IPv4-adres | 1440 | 0 |
In de projectmap maak je een extra map aan genaamd local-files om bestanden te delen tussen de n8n-instantie en het host-systeem:
mkdir local-files
Maak het Docker Compose bestand compose.yaml aan met nano compose.yaml en voeg de volgende inhoud toe:
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:
Dit installeert n8n, maakt een SSL-certificaat aan, configureert het en zet n8n live op het domein.
Start n8n met:
sudo docker compose up -d
Stop n8n met:
sudo docker compose stop
Na het starten open je n8n in je browser via de URL (of hostname als je die hebt gebruikt). Je moet eerst een admin-account aanmaken.
Onthoud je wachtwoord Bewaar je wachtwoord goed voor later gebruik!
Daarna verschijnt een korte enquête waarin je wat basisinformatie invult.
Optioneel kun je gratis toegang krijgen tot enkele betaalde functies door je e-mail in te vullen en een licentiesleutel per mail te ontvangen. Als je geïnteresseerd bent, vul dan je e-mail in en vraag de licentiesleutel aan.
De licentiesleutel ontvang je direct per mail. Kopieer deze en plak hem in Instellingen > Gebruik & Plannen > Licentiesleutel invoeren.
Daarna kun je direct naar het dashboard en n8n starten!
Begin met een leeg canvas of gebruik een vooraf gemaakt template. Je n8n-installatie is klaar!
