
Der ultimative n8n Self-Hosting Guide

Hast du es satt, deine Automatisierungsinfrastruktur (und dein Portemonnaie) an SaaS-Plattformen abzugeben? Willst du volle Kontrolle ohne Vendor Lock-in? Perfekt. Dieser Guide zeigt dir, wie du n8n, die Open-Source-Alternative zu Zapier, auf deinem eigenen Server selbst hostest - inklusive Reverse Proxy, SSL, Backups, Monitoring und sogar Kostenvergleichen.
🧠 TLDR
- Du wirst n8n mit Docker einrichten
- Caddy als Reverse Proxy verwenden (automatisches HTTPS)
- PostgreSQL als deine Datenbank
- Backups mit S3-kompatiblem Storage
- Optional: Cloudflare, Monitoring, Alerts
0. Dein Server
Server-Anforderungen
Für n8n empfehle ich einen Server mit:
- CPU: Mindestens 2 vCPUs (dedizierte Cores bevorzugt)
- RAM: Minimum 4GB, empfohlen 8GB
- Storage: Mindestens 40GB SSD
Geht es auch mit weniger? Absolut. Aber wenn Hardware so günstig ist, besonders im Vergleich zur Cloud-Version von n8n, hätte ich lieber etwas mehr Power und schlafe nachts ruhig :)
Empfohlener Provider
Ich empfehle Hetzner Cloud (Referral bringt dir 20€: Link). Deren CCX13 Plan ist perfekt für n8n:
- 2 dedizierte vCPU
- 8 GB RAM
- 80 GB SSD
- 20 TB Traffic
- 14,27€ pro Monat
Du könntest auch einen shared CPU Server verwenden, aber das würde etwa die halbe Performance bedeuten und vor allem weniger vorhersagbare Performance. Meiner Erfahrung nach sind die dedizierten langfristig einfach einfacher zu nutzen.
Server Setup
- Neuen Server erstellen:
- Ubuntu 24.04 LTS wählen
- CCX13 Plan auswählen
- Sowohl IPv4 als auch IPv6 aktivieren
- SSH-Key für sicheren Zugang hinzufügen
- Automatische Backups aktivieren (empfohlen)
- Initiale Server-Konfiguration:
Login mit ssh -i ~/.ssh/your-key root@<your-ip>
# System-Pakete aktualisieren
sudo apt update
sudo apt upgrade -y
# Docker installieren
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# Benutzer zur Docker-Gruppe hinzufügen
sudo usermod -aG docker $USER
# Docker Compose installieren
sudo apt install docker-compose-plugin
# Installationen verifizieren
docker --version
docker compose version
- Security Best Practices:
- Firewall einrichten (konfigurieren wir im nächsten Abschnitt)
- Root-Login deaktivieren
- fail2ban für SSH-Schutz einrichten
- System-Optimierung:
# Swap-Space einrichten (falls nicht bereits konfiguriert) sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab # System-Einstellungen optimieren sudo sysctl -w vm.swappiness=10 sudo sysctl -w vm.vfs_cache_pressure=50
Das Server-Dashboard sollte etwa so aussehen:
Jetzt, da dein Server bereit ist, gehen wir zur Firewall und den Sicherheitsmaßnahmen über.
1. Firewall
Die Firewall ist ein entscheidender Teil der Sicherheit deines Servers. Sie ist die erste Verteidigungslinie gegen unbefugten Zugriff und sollte alle Ports außer denen, die du brauchst, blockieren.
Erlaube nur die folgenden Ports:
- Port 22 (SSH), damit du noch auf deinen Server zugreifen kannst
- Port 80 (HTTP), wir werden ihn auf 443 weiterleiten
- Port 443 (HTTPS), damit du über HTTPS auf n8n zugreifen kannst!
Blockiere alles andere. Stelle n8n nicht direkt zur Verfügung. Setze es hinter Caddy (Reverse Proxy)
Bei Hetzner würde das so aussehen:
Falls du nicht Hetzner verwendest, ist es sehr wahrscheinlich, dass du ein ähnliches Setup im Dashboard deines Providers findest.
2. Caddy (Reverse Proxy mit HTTPS)
Ein Reverse Proxy ist eine weitere Anwendung, die vor n8n sitzt, die Erstellung von SSL-Zertifikaten übernimmt und HTTP zu HTTPS weiterleitet. Es gibt viele Reverse Proxies, aber wir werden Caddy für diesen Guide verwenden.
Warum Caddy?
- Handhabt HTTPS automatisch (Let's Encrypt)
- Super einfache Konfiguration
- Funktioniert großartig mit Docker
Du brauchst
- Eine Domain (z.B.
n8n.yourdomain.com
) - DNS A und AAAA Records, die auf deine Server-IP zeigen
Caddy Docker Compose
services:
caddy:
image: caddy
container_name: caddy
restart: unless_stopped
ports:
- 80:80
- 443:443
volumes:
- ./data:/data
- ./config:/config
- ./Caddyfile:/etc/caddy/Caddyfile:ro
Caddyfile
n8n.yourdomain.com {
reverse_proxy n8n:5678
}
3. PostgreSQL (Datenbank)
n8n funktioniert am besten mit PostgreSQL
services:
postgres:
image: postgres:16.4
restart: unless_stopped
volumes:
- postgres_data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=change_this
- POSTGRES_USER=n8n_user
- POSTGRES_DB=n8n
volumes:
postgres_data:
4. n8n (Endlich)
services:
n8n:
image: docker.io/n8nio/n8n:latest
restart: always
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_USER=n8n_user
- DB_POSTGRESDB_PASSWORD=change_this
- WEBHOOK_URL=https://n8n.yourdomain.com/
volumes:
- n8n_data:/home/node/.n8n
caddy:
# gleiche Konfiguration wie vorher
volumes:
n8n_data:
Stelle sicher, dass deine WEBHOOK_URL
mit der Domain in deinem Caddyfile übereinstimmt
5. Backups (Nicht überspringen)
Disk-Backups sind nicht genug
Verwende etwas wie docker-volume-backup
, um Backups zu einem S3-kompatiblen Provider (wie Cloudflare R2, Wasabi oder Backblaze B2) hochzuladen
services:
backup:
image: offen/docker-volume-backup:v2
environment:
AWS_ENDPOINT: your.r2.endpoint
AWS_S3_BUCKET_NAME: backup_bucket
AWS_ACCESS_KEY_ID: your_key
AWS_SECRET_ACCESS_KEY: your_secret
volumes:
- n8n_data:/backup/n8n:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
Du kannst täglich, wöchentlich backuppen, was auch immer passt
6. Cloudflare (Kostenloses CDN und Sicherheit)
Gerade jetzt stellen wir n8n direkt ins Internet. Das ist normalerweise okay, aber wenn du nachts besser schlafen willst, kannst du Cloudflare verwenden, um
- Vor DDoS zu schützen
- Statische Inhalte zu cachen
- Zugriff zu beschränken (IP-Whitelisting, Rate Limiting)
Wie können wir das machen?
- Füge deine Domain zu Cloudflare hinzu
- Setze A und AAAA Records auf deinen Server
- Deaktiviere Proxy (graue Wolke), lass Caddy das Zertifikat holen
- Reaktiviere Proxy (orange Wolke) nachdem TLS funktioniert
7. Monitoring (Grafana und Alerts)
Monitoring ist optional, aber sehr empfehlenswert. Du willst wissen, wenn Dinge kaputtgehen, bevor es deine Nutzer tun
Du kannst entweder
- Grafana Cloud verwenden (Free Tier reicht)
- Prometheus, Grafana und node_exporter selbst hosten
Ich empfehle, mit Grafana Cloud für die Einfachheit zu beginnen
A. Basic Setup mit Grafana Cloud
- Registriere dich bei grafana.com
- Erstelle einen Grafana Cloud Stack
- Füge Grafana Agent zu deinem Server hinzu
Folge den "Linux server integration" Anweisungen, die sie bereitstellen. Du wirst grundsätzlich:
- Den Grafana Agent installieren
- Ihre vorgenerierte Konfiguration kopieren und einfügen
- Es mit systemd oder Docker starten
Das ist es. Du bekommst solche Dashboards out of the box
B. Custom Alerts
Sobald Daten in Grafana fließen, kannst du Alerts konfigurieren
Empfohlene Alerts
- Disk-Nutzung über 90 Prozent
- CPU-Last über 90 Prozent für mehr als 5 Minuten
- RAM-Nutzung über 90 Prozent
- Docker Container down
- n8n antwortet nicht auf Port 5678
- Backup-Job ist seit 24 Stunden nicht gelaufen
Grafana kann Alerts senden via
- Slack
- Discord
- Webhooks (z.B. zu n8n selbst, aber das ist wahrscheinlich nicht sehr smart
)
Gesamte Kostenaufschlüsselung
Artikel | Preis pro Monat |
---|---|
Hetzner CCX13 | 14,27€ |
Backup (R2 etc) | ~1,00€ |
DNS und Domain | ~1,00€ |
Grafana Cloud Free | 0,00€ |
Total | ~16€ pro Monat |
Verglichen mit n8n Cloud (startet bei 20€ pro Monat für 5 Workflows) zahlt sich Self-Hosting schnell aus
Wenn du bereits einen Server hast (z.B. für andere Projekte), sind die Grenzkosten sogar niedriger 1 bis 2€ pro Monat
Fazit
n8n selbst zu hosten ist
- Günstiger
- Mächtiger
- Überraschend einfach
Du bekommst volle Kontrolle über deine Daten, Integrationen und Automatisierungen. Keine Vendor-Limits. Keine versteckte Drosselung. Keine wiederkehrende SaaS-Steuer
Willst du mehr Posts wie diesen? Folge mir @jonasscholz oder probiere Sliplane.io aus, meine Plattform, die dir hilft, solche Sachen ohne Kopfschmerzen zu deployen
Lass es mich in den Kommentaren wissen. Betreibst du n8n self-hosted? Hast du Fragen oder andere Tools, die du hinzufügen würdest?