Loading...
Der ultimative n8n Self-Hosting Guide

Der ultimative n8n Self-Hosting Guide

Jonas Scholz - Co-Founder von sliplane.ioJonas Scholz
8 min

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

  1. 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)
  2. 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
  1. Security Best Practices:
    • Firewall einrichten (konfigurieren wir im nächsten Abschnitt)
    • Root-Login deaktivieren
    • fail2ban für SSH-Schutz einrichten
  2. 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?

  1. Füge deine Domain zu Cloudflare hinzu
  2. Setze A und AAAA Records auf deinen Server
  3. Deaktiviere Proxy (graue Wolke), lass Caddy das Zertifikat holen
  4. 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

  1. Registriere dich bei grafana.com
  2. Erstelle einen Grafana Cloud Stack
  3. 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

  • Email
  • Slack
  • Discord
  • Webhooks (z.B. zu n8n selbst, aber das ist wahrscheinlich nicht sehr smart )

Gesamte Kostenaufschlüsselung

ArtikelPreis pro Monat
Hetzner CCX1314,27€
Backup (R2 etc)~1,00€
DNS und Domain~1,00€
Grafana Cloud Free0,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?

Willkommen in der Container-Cloud

Sliplane macht es einfach, Container in der Cloud zu deployen und bei Bedarf zu skalieren. Probier es jetzt aus!