n8n Self-Hosted mit Docker Compose: Der ultimative Setup-Guide

10 Min. LesezeitKIana

n8n Self-Hosted mit Docker Compose: Der ultimative Setup-Guide

Ihr wollt n8n self-hosted betreiben und maximale Kontrolle über eure Workflow-Automation haben? Mit n8n Docker Compose könnt ihr in wenigen Minuten eine produktionsreife Instanz aufsetzen. In diesem Guide zeige ich euch, wie ihr n8n professionell selbst hostet – mit allen wichtigen Konfigurationen, Sicherheits-Best-Practices und Tipps aus der Praxis.

Warum n8n Self-Hosted?

Bevor wir in die technische Umsetzung einsteigen, hier die wichtigsten Gründe für n8n self-hosted:

Volle Datenkontrolle

  • Alle Workflow-Daten bleiben auf euren eigenen Servern
  • DSGVO-konform ohne Drittanbieter-Abhängigkeiten
  • Keine Limits bei sensiblen Daten

Kosteneffizienz

  • Keine monatlichen SaaS-Gebühren
  • Unbegrenzte Workflows und Executions
  • Skalierbar nach Bedarf

Anpassbarkeit

  • Custom Nodes und Extensions möglich
  • Volle Kontrolle über Updates
  • Integration in bestehende Infrastruktur

Voraussetzungen

Für die n8n Docker Compose Installation benötigt ihr:

  • Docker (Version 20.10+)
  • Docker Compose (Version 2.0+)
  • Linux Server (Ubuntu 22.04 empfohlen) oder macOS
  • Domain mit SSL-Zertifikat (für Produktiv-Umgebung)
  • Mindestens 2GB RAM und 10GB Speicher

n8n installieren: Docker Compose ist nicht die einzige Option

Docker Compose ist der Weg für produktive Umgebungen, aber nicht der einzige, um n8n selbst zu hosten. Bevor Sie in Schritt für Schritt einsteigen, kurz zur Einordnung, welche Installationsart zu welchem Zweck passt – laut der n8n-Dokumentation zu den Installationsmethoden (öffnet in neuem Tab) stehen mehrere Varianten zur Wahl:

  • One-Line-Setup: Ein automatisiertes Installationsskript für Linux- oder macOS-Systeme mit curl, das Abhängigkeiten und Konfiguration selbst übernimmt. Geeignet für einen schnellen Einstieg mit minimalem Konfigurationsaufwand.
  • Docker Compose: der in diesem Guide beschriebene Weg – laut n8n am besten für produktive Deployments mit Datenbank und weiteren Diensten geeignet.
  • npm/npx: Für lokale Tests reicht laut n8n-Dokumentation zur npm-Installation (öffnet in neuem Tab) bereits npx n8n ohne feste Installation, oder npm install n8n -g für eine globale Installation. Vorausgesetzt wird Node.js in einer Version zwischen 20.19 und 24.x. Wichtig für die Planung: Der npm-Installationsweg gilt laut derselben Dokumentation ab n8n 3.0 als veraltet – für dauerhaften Betrieb rät n8n zu Docker Compose oder dem One-Line-Setup.
  • n8n Cloud: die von n8n selbst betriebene Variante ohne eigene Infrastruktur, sinnvoll, wenn Wartungsaufwand vermieden werden soll und volle Datenkontrolle keine Voraussetzung ist.

Wer produktiv und mit eigener Datenbank arbeiten will – etwa mit PostgreSQL wie im folgenden Setup –, ist mit Docker Compose weiterhin am besten bedient. Für einen schnellen lokalen Test vorab kann npx n8n aber Zeit sparen, bevor die produktive Umgebung aufgesetzt wird.

n8n Docker Compose Setup: Schritt für Schritt

1. Projektstruktur erstellen

Erstellt zunächst ein dediziertes Verzeichnis für eure n8n-Installation:

mkdir -p ~/n8n-docker
cd ~/n8n-docker
mkdir -p data

2. Docker Compose Datei erstellen

Erstellt eine docker-compose.yml mit folgender Konfiguration:

version: "3.8"

services:
  n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      # Basis-Konfiguration
      - N8N_HOST=${N8N_HOST}
      - N8N_PORT=5678
      - N8N_PROTOCOL=${N8N_PROTOCOL}
      - NODE_ENV=production

      # Datenbank (PostgreSQL empfohlen für Produktion)
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
      - DB_POSTGRESDB_USER=${POSTGRES_USER}
      - DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}

      # Webhook-URL
      - WEBHOOK_URL=${WEBHOOK_URL}

      # Timezone
      - GENERIC_TIMEZONE=Europe/Berlin
      - TZ=Europe/Berlin

    volumes:
      - ./data:/home/node/.n8n
    depends_on:
      - postgres
    networks:
      - n8n-network

  postgres:
    image: postgres:15-alpine
    container_name: n8n-postgres
    restart: unless-stopped
    environment:
      - POSTGRES_DB=${POSTGRES_DB}
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
    volumes:
      - postgres-data:/var/lib/postgresql/data
    networks:
      - n8n-network

volumes:
  postgres-data:

networks:
  n8n-network:
    driver: bridge

3. Environment-Variablen konfigurieren

Erstellt eine .env Datei für eure Konfiguration:

# n8n Konfiguration
N8N_HOST=n8n.euredomain.de
N8N_PROTOCOL=https
WEBHOOK_URL=https://n8n.euredomain.de/

# PostgreSQL Datenbank
POSTGRES_DB=n8n
POSTGRES_USER=n8n
POSTGRES_PASSWORD=IhrDatenbankPasswort456!

⚠️ Wichtig: Ändert unbedingt das Datenbank-Passwort vor dem produktiven Einsatz!

Hinweis (Stand August 2026): N8N_BASIC_AUTH_USER und N8N_BASIC_AUTH_PASSWORD funktionieren in aktuellen n8n-Versionen nicht mehr. Laut der n8n-Dokumentation zur Nutzerverwaltung (öffnet in neuem Tab) wurde die Unterstützung für Basic Auth und JWT-Authentifizierung bereits mit n8n 1.0 entfernt – wörtlich: „No supported way to disable the login screen exists in recent versions of n8n". Wer heute eine frische Instanz startet, landet stattdessen automatisch beim eingebauten Setup-Bildschirm und legt dort E-Mail-Adresse und Passwort für das Owner-Konto fest. Mehr dazu, was sich mit n8n 2.0 an dieser Stelle sonst noch ändert, im neuen Abschnitt weiter unten.

4. n8n starten

Startet eure n8n self-hosted Instanz:

docker-compose up -d

Überprüft den Status:

docker-compose ps
docker-compose logs -f n8n

5. Zugriff auf n8n

Öffnet euren Browser und navigiert zu:

  • Lokal: http://localhost:5678
  • Produktiv: https://n8n.euredomain.de

Beim ersten Aufruf zeigt n8n den Setup-Bildschirm: Dort legen Sie E-Mail-Adresse und Passwort für das Owner-Konto fest (siehe Hinweis zu Schritt 3 oben).

Produktiv-Setup: SSL & Reverse Proxy

Für den produktiven Einsatz empfehle ich Traefik oder Nginx als Reverse Proxy mit automatischem SSL.

Traefik Integration

Erweitert eure docker-compose.yml:

services:
  traefik:
    image: traefik:v2.10
    container_name: traefik
    restart: unless-stopped
    command:
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.letsencrypt.acme.email=info@euredomain.de"
      - "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
      - "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./letsencrypt:/letsencrypt
    networks:
      - n8n-network

  n8n:
    # ... bestehende Konfiguration
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.n8n.rule=Host(`n8n.euredomain.de`)"
      - "traefik.http.routers.n8n.entrypoints=websecure"
      - "traefik.http.routers.n8n.tls.certresolver=letsencrypt"
      - "traefik.http.services.n8n.loadbalancer.server.port=5678"

Best Practices für n8n Self-Hosted

1. Regelmäßige Backups

Erstellt ein Backup-Script:

#!/bin/bash
# backup-n8n.sh

BACKUP_DIR="/backups/n8n"
DATE=$(date +%Y%m%d_%H%M%S)

# PostgreSQL Backup
docker exec n8n-postgres pg_dump -U n8n n8n > "$BACKUP_DIR/n8n_db_$DATE.sql"

# n8n Daten Backup
tar -czf "$BACKUP_DIR/n8n_data_$DATE.tar.gz" -C ~/n8n-docker data/

# Alte Backups löschen (älter als 30 Tage)
find $BACKUP_DIR -name "*.sql" -mtime +30 -delete
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete

Automatisiert mit Cron:

0 2 * * * /path/to/backup-n8n.sh

2. Monitoring & Logging

Integriert Monitoring mit Prometheus und Grafana:

services:
  prometheus:
    image: prom/prometheus:latest
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
    networks:
      - n8n-network

  grafana:
    image: grafana/grafana:latest
    ports:
      - "3000:3000"
    networks:
      - n8n-network

3. Ressourcen-Limits

Begrenzt CPU und RAM in der docker-compose.yml:

services:
  n8n:
    # ... bestehende Konfiguration
    deploy:
      resources:
        limits:
          cpus: "2"
          memory: 2G
        reservations:
          cpus: "1"
          memory: 1G

4. Updates durchführen

Regelmäßige Updates sind wichtig:

# Images aktualisieren
docker-compose pull

# Container neu starten
docker-compose up -d

# Alte Images aufräumen
docker image prune -a

Erweiterte Konfiguration

Custom Nodes installieren

Erstellt ein Dockerfile für Custom Nodes:

FROM n8nio/n8n:latest

USER root

# Custom Node installieren
RUN cd /usr/local/lib/node_modules/n8n && \
    npm install n8n-nodes-custom-package

USER node

Aktualisiert die docker-compose.yml:

services:
  n8n:
    build: .
    # statt: image: n8nio/n8n:latest

Mehrere n8n Instanzen (Queue Mode)

Für High-Availability Setup:

services:
  n8n-main:
    # Main Instance
    environment:
      - EXECUTIONS_MODE=queue
      - QUEUE_BULL_REDIS_HOST=redis

  n8n-worker:
    # Worker Instance
    command: worker
    environment:
      - EXECUTIONS_MODE=queue
      - QUEUE_BULL_REDIS_HOST=redis

  redis:
    image: redis:7-alpine

Troubleshooting

Problem: Container startet nicht

# Logs prüfen
docker-compose logs n8n

# Container neu erstellen
docker-compose down
docker-compose up -d --force-recreate

Problem: Webhooks funktionieren nicht

Überprüft die WEBHOOK_URL in der .env:

WEBHOOK_URL=https://n8n.euredomain.de/

Problem: Datenbank-Verbindung fehlgeschlagen

# PostgreSQL Container prüfen
docker-compose logs postgres

# Datenbank-Verbindung testen
docker exec -it n8n-postgres psql -U n8n -d n8n

Performance-Optimierung

1. PostgreSQL Tuning

Erstellt postgres.conf:

# Für 2GB RAM Server
shared_buffers = 512MB
effective_cache_size = 1536MB
maintenance_work_mem = 128MB
checkpoint_completion_target = 0.9
wal_buffers = 16MB
default_statistics_target = 100
random_page_cost = 1.1
effective_io_concurrency = 200
work_mem = 2621kB
min_wal_size = 1GB
max_wal_size = 4GB

2. n8n Execution Settings

In der .env:

# Execution Limits
EXECUTIONS_TIMEOUT=300
EXECUTIONS_TIMEOUT_MAX=600
EXECUTIONS_DATA_SAVE_ON_ERROR=all
EXECUTIONS_DATA_SAVE_ON_SUCCESS=all
EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=true

Kosten-Vergleich: Self-Hosted vs. Cloud

Aspektn8n Cloudn8n Self-Hosted
Monatliche Kostenab 20€/MonatServer: ~5-20€/Monat
WorkflowsLimitiertUnbegrenzt
ExecutionsLimitiertUnbegrenzt
DatenkontrolleBei n8n100% bei euch
WartungsaufwandKeineGering (Updates, Backups)
SkalierungAutomatischManuell

Fazit: Ab ~5 Workflows lohnt sich n8n self-hosted finanziell.

Was sich mit n8n 2.0 ändert: Drei Punkte für dieses Setup

n8n hat 2.0 veröffentlicht und laut den offiziellen Breaking Changes (öffnet in neuem Tab) drei Punkte eingeführt, die für ein Setup wie das obige direkt relevant sind:

Task Runners sind jetzt Pflicht statt Empfehlung. Ab 2.0 laufen alle Code-Node-Ausführungen zwingend über Task Runners – die Umgebungsvariable N8N_RUNNERS_ENABLED, die dies bisher optional aktivierte, ist laut Dokumentation entfallen: „You no longer need to set it." Wer noch auf 1.x läuft und plant zu aktualisieren, sollte laut n8n vorher N8N_RUNNERS_ENABLED=true testweise setzen, um die Umstellung zu prüfen, bevor sie mit 2.0 verpflichtend wird.

Der version-Schlüssel in docker-compose.yml ist überflüssig. Das oben gezeigte version: "3.8" am Dateianfang wird laut der Docker-Dokumentation zum Compose-Format (öffnet in neuem Tab) von Compose ignoriert und nur aus Kompatibilitätsgründen akzeptiert – Compose validiert grundsätzlich gegen das neueste Schema, unabhängig vom angegebenen Wert. Neue Setups können die Zeile ersatzlos weglassen; an bestehenden ändert sie nichts, außer einer möglichen Warnmeldung.

Der Verschlüsselungsschlüssel verdient eigene Aufmerksamkeit beim Node-Wechsel. Wenn Sie – wie in den Best Practices oben beschrieben – die .n8n-Verzeichnisdaten sichern, sichern Sie damit auch den N8N_ENCRYPTION_KEY. Geht dieser Schlüssel verloren oder weicht er zwischen Backup und Wiederherstellung ab, werden laut n8n-Dokumentation zur Rotation von Verschlüsselungsschlüsseln (öffnet in neuem Tab) alle gespeicherten Zugangsdaten dauerhaft unlesbar – der einzige Weg zurück ist dann die Wiederherstellung aus einem Datenbank-Backup von vor der Änderung. Wer den Schlüssel per Umgebungsvariable statt über die .n8n-Datei verwaltet, sollte ihn deshalb zusätzlich außerhalb des Servers hinterlegen, etwa im Passwort-Manager des Teams.

n8n 3.0 ab Oktober 2026: Docker wird zur Pflicht

Docker Compose ist schon heute der von n8n empfohlene Weg für produktive Setups – mit n8n 3.0 wird er zur einzigen Option für Self-Hosting. Laut den offiziellen v3.0 Breaking Changes (öffnet in neuem Tab) von n8n, die den Umstieg für Oktober 2026 ankündigen, entfällt der npm- und npx-Installationsweg vollständig: „Self-hosted n8n will require a Docker-based deployment. n8n 3.0 will no longer support installations run using npm or npx n8n." Wer n8n bislang über npx n8n oder eine globale npm-Installation betreibt, muss vor dem Umstieg auf 3.0 auf Docker wechseln – für lokale Installationen empfiehlt n8n laut derselben Quelle Docker Compose als einfachsten Weg dorthin.

Wer wie in diesem Guide bereits auf Docker Compose setzt, ist von der Umstellung selbst nicht betroffen. Betroffen sind aber ältere Workflows: n8n 3.0 entfernt laut den Breaking Changes die veralteten Nodes Function, Function Item und Item Lists sowie Version 1 des AI Agent-Node mitsamt der Modi SQL Agent, Conversational Agent, OpenAI Functions Agent, Plan and Execute Agent und ReAct Agent. Wer solche Nodes in produktiven Workflows einsetzt, sollte sie vor dem Update auf die aktuellen Alternativen migrieren – etwa den Code-Node statt Function/Function Item oder eine aktuelle AI-Agent-Version im Tools Agent-Modus.

Neu seit August 2026: KI-Assistent auch für Self-Hosted-Instanzen

Seit n8n 2.35 lässt sich laut dem n8n-Changelog (öffnet in neuem Tab) der KI-Assistent auch auf selbstgehosteten Instanzen mit einem einzigen Befehl einrichten: curl -fsSL https://get.n8n.io | sh installiert n8n per Docker Compose und konfiguriert Sandbox sowie Websuche gleich mit. Für den produktiven Einsatz empfiehlt n8n laut demselben Changelog statt der mitgelieferten Sandbox eine verwaltete Lösung wie die von Daytona, da die eingebaute Sandbox laut n8n eher für lokale Entwicklung und Tests gedacht ist. Der Assistent selbst befindet sich laut n8n aktuell im Preview-Status – generierte Workflows sollten vor dem produktiven Einsatz geprüft werden.

Fazit: n8n Docker Compose lohnt sich

Mit n8n Docker Compose habt ihr in wenigen Minuten eine produktionsreife Workflow-Automation-Plattform am Laufen. Die Vorteile:

✅ Volle Kontrolle über Daten und Infrastruktur
✅ Kosteneffizient bei regelmäßiger Nutzung
✅ Skalierbar nach euren Anforderungen
✅ DSGVO-konform durch Self-Hosting
✅ Professionell mit PostgreSQL und SSL

Der initiale Setup-Aufwand von 1-2 Stunden zahlt sich schnell aus. Mit den Best Practices aus diesem Guide habt ihr eine stabile, sichere und wartbare n8n-Installation.

Nächste Schritte

Ihr wollt n8n self-hosted produktiv einsetzen, aber euch fehlt die Zeit oder Expertise für Setup und Wartung? Wir bei Vinspire helfen euch:

  • Managed n8n Hosting auf eurer Infrastruktur
  • Custom Workflow-Entwicklung für eure Prozesse
  • Integration in bestehende Systeme (CRM, ERP, etc.)
  • Training & Support für euer Team

Kostenloses Erstgespräch: Kontakt aufnehmen


Habt ihr Fragen zum n8n Self-Hosting? Schreibt uns oder hinterlasst einen Kommentar!

Weitere Artikel:

Das könnte Sie auch interessieren

Alle zu „n8n“
n8n-Sicherheitslücken August 2026: Was Self-Hosting-Teams jetzt prüfen müssen
7 Min.
n8nSelf-HostingIT-Sicherheit

n8n-Sicherheitslücken August 2026: Was Self-Hosting-Teams jetzt prüfen müssen

n8n hat am 20. August 2026 neun Sicherheitslücken gemeldet, sechs davon mit hohem Schweregrad. Was betroffen ist, welche Version patcht und was Self-Hoster sofort tun sollten.

KIana
n8n 1 auf 2 migrieren: Breaking Changes & Checkliste
10 Min.
n8nSelf-HostingWorkflow Automation

n8n 1 auf 2 migrieren: Breaking Changes & Checkliste

n8n 2.0 bringt laut n8n zahlreiche Breaking Changes: MySQL/MariaDB als Speicher entfällt, Task Runner sind Standard, der Start-Node ist weg. Was Self-Hosting-Teams vor dem Upgrade prüfen müssen.

KIano
Windmill: Workflow-Automatisierung selbst hosten – ein Praxiseinstieg
9 Min.
AutomatisierungOpen SourceSelf-Hosting

Windmill: Workflow-Automatisierung selbst hosten – ein Praxiseinstieg

Windmill macht aus Skripten in Python, TypeScript oder Bash Webhooks, Workflows und UIs – Open Source und in Minuten per Docker Compose selbst gehostet. Was das Werkzeug leistet und wie der Einstieg gelingt.

KIano
KI-Tools: SaaS vs. Self-Hosting – Kosten und DSGVO im Vergleich
11 Min.
KI ToolsSelf-HostingDSGVO

KI-Tools: SaaS vs. Self-Hosting – Kosten und DSGVO im Vergleich

SaaS-KI-Tools oder Self-Hosting: Was kostet welcher Weg, und was verlangt die DSGVO? Ein Vergleich mit Zahlen von Bitkom, OpenAI und einer aktuellen Kostenanalyse.

KIlian
Hermes Agent auf einem VPS installieren: Schritt für Schritt
9 Min.
KI-AgentenAutomatisierungSelf-Hosting

Hermes Agent auf einem VPS installieren: Schritt für Schritt

Anleitung zur Installation von Hermes Agent auf einem eigenen Linux-Server: Installer, Non-Root-Setup als Systemdienst und Messaging-Anbindung – Schritt für Schritt nach der offiziellen Dokumentation.

KIano
n8n Error Handling: Workflows sicher abfangen & melden
8 Min.
n8nError HandlingWorkflow Automation

n8n Error Handling: Workflows sicher abfangen & melden

So richten Sie in n8n robustes Error Handling ein: Fehler abfangen, sauber loggen und automatisch benachrichtigen. Mit Best Practices für stabile Workflows.

KIana

Lasst uns über eure Zukunft sprechen

Habt ihr eine Idee, ein Projekt oder einfach eine Frage? Wir freuen uns auf eure Nachricht und melden uns innerhalb von 24 Stunden bei euch.

104+ Jahre Erfahrung im Team
50+ Erfolgreiche Projekte
30+ Zufriedene Kunden
Kostenlose Erstberatung
Antwort innerhalb von 24h
Unverbindlich & vertraulich

Beschreibe kurz welchen Bereich du automatisieren möchtest oder welche System du verbinden willst.