Back to blog
Self-Hosted n8n

Wie stellst du n8n mit Docker auf einem eigenen VPS bereit?

Okt. 6, 2026

Wenn du n8n mit Docker auf einem eigenen VPS betreibst, behältst du die Kontrolle über deine Automatisierungsumgebung, Daten, Workflows und Serverressourcen. Deine n8n-Instanz kann rund um die Uhr online bleiben, geplante Workflows ausführen und Webhooks empfangen, ohne von deinem lokalen Computer abhängig zu sein.

Du kannst die Umgebung manuell mit Docker Compose einrichten oder die n8n-Bereitstellungsvorlage von Time4VPS nutzen, um den Aufwand bei der Ersteinrichtung zu reduzieren. In dieser Anleitung erklären wir beide Vorgehensweisen und zeigen praktische Konfigurationsbeispiele.

Was ist n8n mit Docker?

n8n ist eine Plattform zur Workflow-Automatisierung, die Anwendungen, APIs, Datenbanken und andere Dienste miteinander verbindet. Du kannst damit Daten synchronisieren, Bestellungen verarbeiten, Berichte erstellen, betriebliche Benachrichtigungen versenden oder KI-gestützte Workflows aufbauen.

Docker bündelt n8n und seine Abhängigkeiten in einem Container. Dadurch entsteht eine isolierte und reproduzierbare Umgebung, die sich verschieben, neu starten oder aktualisieren lässt, ohne n8n direkt auf dem Betriebssystem des VPS zu installieren.

Eine typische n8n-Bereitstellung mit Docker kann mehrere Komponenten umfassen:

  • Die n8n-Anwendung
  • Eine PostgreSQL-Datenbank
  • Einen Reverse Proxy wie Traefik
  • HTTPS-Zertifikate
  • Persistente Docker-Volumes
  • Umgebungsvariablen und Verschlüsselungsschlüssel

Was ist n8n mit Docker Compose?

Mit Docker Compose kannst du mehrere Container über eine einzige Datei namens compose.yaml definieren und verwalten. Anstatt n8n, PostgreSQL und Traefik einzeln zu starten, beschreibst du den gesamten Stack in einer Konfiguration.

Mit Docker Compose kannst du die vollständige n8n-Umgebung mit einem einzigen Befehl starten:

docker compose up -d

Die Option -d führt die Container im Hintergrund aus. Dadurch läuft n8n auch dann weiter, wenn du die Verbindung zum VPS trennst.

Die offizielle Docker-Compose-Dokumentation von n8n enthält ebenfalls ein Bereitstellungsbeispiel mit persistentem Speicher, Traefik und HTTPS.

Warum solltest du n8n mit Docker auf einem VPS betreiben?

n8n auf einem VPS bietet eine dauerhaft verfügbare Umgebung für Workflows, die kontinuierlich laufen müssen. Außerdem hast du mehr Kontrolle als beim lokalen Betrieb oder in einer Hosting-Umgebung mit eingeschränkten Möglichkeiten.

Zu den wichtigsten Vorteilen gehören:

  • Workflow-Ausführung rund um die Uhr: Geplante Workflows können auch dann ausgeführt werden, wenn dein Computer ausgeschaltet ist.
  • Erreichbare Webhooks: Externe Anwendungen können Daten an einen öffentlichen HTTPS-Endpunkt senden.
  • Kontrolle über deine Daten: Du entscheidest, wo die Anwendung und ihre Datenbank gehostet werden.
  • Zugewiesene Serverressourcen: Deine n8n-Instanz nutzt die CPU-, Arbeitsspeicher- und Speicherressourcen deines VPS.
  • Persistenter Speicher: Workflows, Zugangsdaten und Ausführungsdaten bleiben nach einem Neustart der Container erhalten.
  • Flexible Konfiguration: Du kannst Umgebungsvariablen ändern, zusätzliche Tools installieren und den Server an deine Arbeitslast anpassen.
  • Einfachere Updates: Docker-Images lassen sich aktualisieren, ohne die gesamte Anwendung manuell neu zu installieren.

Ein VPS für selbst gehostetes n8n eignet sich besonders für Entwickler, Systemadministratoren, Automatisierungsexperten und technische Teams, die mit der Verwaltung eines Linux-Servers vertraut sind.

Was benötigst du, bevor du n8n mit Docker bereitstellst?

Für eine manuelle Bereitstellung benötigst du:

  • Einen Linux-VPS mit ausreichenden Ressourcen für deine Workflows
  • Root- oder sudo-Zugriff
  • Docker Engine und Docker Compose
  • Eine Domain oder Subdomain, die auf den VPS verweist
  • Grundkenntnisse in SSH und Linux-Befehlen
  • Einen Plan für Serversicherheit, Updates, Überwachung und Backups

Unsere Linux-VPS-Tarife bei Time4VPS bieten vollständigen Root-Zugriff und skalierbare Serverressourcen. So kannst du die n8n-Docker-Umgebung entsprechend deinen Anforderungen konfigurieren.

n8n mit Docker schneller bei Time4VPS bereitstellen

Wenn du den vollständigen n8n-Stack mit Docker Compose nicht manuell aufbauen möchtest, bietet Time4VPS eine n8n-Bereitstellungsvorlage für einen selbst verwalteten VPS.

Die Vorlage verwendet Ubuntu 24.04 und Docker; n8n ist bereits vorinstalliert. Sie richtet die wichtigsten Komponenten ein, die du für den Start deiner selbst gehosteten n8n-Instanz benötigst. Dadurch sinken der Einrichtungsaufwand und das Risiko von Konfigurationsfehlern.

So installierst du die Vorlage:

  1. Melde dich im Time4VPS-Kundenbereich an.
  2. Öffne Services → VPS.
  3. Wähle neben deinem VPS Manage aus.
  4. Klicke auf Install OS.
  5. Wähle n8n (Ubuntu 24.04, Docker) (64-bit) aus.
  6. Bestätige die Installation und warte, bis der Vorgang abgeschlossen ist.

Die Installation dauert normalerweise zwischen 10 und 20 Minuten. Verbinde dich anschließend über SSH mit dem Server:

ssh root@your_server_ip

Ersetze your_server_ip durch die deinem VPS zugewiesene IP-Adresse.

Die automatisch generierten Zugangsdaten werden hier gespeichert:

/root/n8n_logins

Du kannst sie mit folgendem Befehl anzeigen:

cat /root/n8n_logins

Nachdem du die Zugangsdaten abgerufen hast, öffne den deinem Server zugewiesenen Hostnamen:

https://your_hostname.time4vps.cloud

Gib die zusätzlichen Zugangsdaten ein und erstelle anschließend das Besitzerkonto für dein n8n-Dashboard. Den vollständigen Ablauf findest du in unserer Anleitung zur n8n-Vorlage von Time4VPS.

So richtest du n8n manuell mit Docker Compose ein

Die Time4VPS-Vorlage ist die schnellere Möglichkeit. Wenn du eine individuell angepasste Konfiguration benötigst, kannst du die Umgebung aber auch selbst einrichten.

Das folgende Beispiel verwendet:

  • n8n
  • PostgreSQL
  • Traefik
  • HTTPS-Zertifikate von Let’s Encrypt
  • Persistente Docker-Volumes

Schritt 1: Eine Subdomain auf deinen VPS verweisen lassen

Erstelle in deinen DNS-Einstellungen einen A-Eintrag:

Typ: A
Name: n8n
Wert: your_server_ip

In diesem Beispiel ist n8n anschließend unter folgender Adresse erreichbar:

https://n8n.example.com

Es kann etwas dauern, bis DNS-Änderungen wirksam werden.

Schritt 2: Mit dem VPS verbinden

Stelle die Verbindung über SSH her:

ssh root@your_server_ip

Prüfe, ob Docker und Docker Compose verfügbar sind:

docker –version
docker compose version

Falls einer der Befehle nicht verfügbar ist, installiere die aktuell unterstützte Version anhand der offiziellen Docker-Anleitung für deine Linux-Distribution.

Schritt 3: Das Projektverzeichnis erstellen

Erstelle ein eigenes Verzeichnis für die n8n-Docker-Bereitstellung:

mkdir -p /opt/n8n
cd /opt/n8n

Erstelle eine Datei für die Umgebungsvariablen:

nano .env

Füge die folgenden Werte ein:

N8N_HOST=n8n.example.com
GENERIC_TIMEZONE=Europe/Vilnius
[email protected]

POSTGRES_DB=n8n
POSTGRES_USER=n8n
POSTGRES_PASSWORD=replace_with_a_long_random_password

N8N_ENCRYPTION_KEY=replace_with_a_long_random_encryption_key

Ersetze die Beispieldomain, die E-Mail-Adresse, die Zeitzone und die Passwörter durch deine eigenen Werte.

Zufällige Werte kannst du mit folgendem Befehl generieren:

openssl rand -hex 32

Führe den Befehl jeweils separat für das PostgreSQL-Passwort und den n8n-Verschlüsselungsschlüssel aus. Beschränke anschließend den Zugriff auf die Datei:

chmod 600 .env

Bewahre den Verschlüsselungsschlüssel sicher auf. n8n verwendet ihn zur Verschlüsselung gespeicherter Zugangsdaten. Wenn du ihn verlierst oder unerwartet änderst, können diese Zugangsdaten unbrauchbar werden.

Schritt 4: Die Docker-Compose-Datei für n8n erstellen

Erstelle die Compose-Datei:

nano compose.yaml

Füge die folgende Konfiguration ein:

services: 
  postgres: 
    image: postgres:16 
    restart: unless-stopped 
    environment: 
      POSTGRES_DB: ${POSTGRES_DB} 
      POSTGRES_USER: ${POSTGRES_USER} 
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} 
    volumes: 
      – postgres_data:/var/lib/postgresql/data 
    healthcheck: 
      test: 
        – CMD-SHELL 
        – pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB} 
      interval: 5s 
      timeout: 5s 
      retries: 10 
    networks: 
      – internal 
 
  n8n: 
    image: docker.n8n.io/n8nio/n8n:stable 
    restart: unless-stopped 
    environment: 
      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} 
 
      N8N_HOST: ${N8N_HOST} 
      N8N_PORT: 5678 
      N8N_PROTOCOL: https 
      N8N_WEBHOOK_URL: https://${N8N_HOST}/ 
      N8N_PROXY_HOPS: 1 
 
      GENERIC_TIMEZONE: ${GENERIC_TIMEZONE} 
      TZ: ${GENERIC_TIMEZONE} 
      N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY} 
      N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS: „true“ 
    volumes: 
      – n8n_data:/home/node/.n8n 
    depends_on: 
      postgres: 
        condition: service_healthy 
    labels: 
      – „traefik.enable=true“ 
      – „traefik.docker.network=n8n_proxy“ 
      – „traefik.http.routers.n8n.rule=Host(`${N8N_HOST}`)“ 
      – „traefik.http.routers.n8n.entrypoints=websecure“ 
      – „traefik.http.routers.n8n.tls=true“ 
      – „traefik.http.routers.n8n.tls.certresolver=letsencrypt“ 
      – „traefik.http.services.n8n.loadbalancer.server.port=5678“ 
    networks: 
      – internal 
      – proxy 
 
  traefik: 
    image: traefik:v3 
    restart: unless-stopped 
    command: 
      – „–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.letsencrypt.acme.tlschallenge=true“ 
      – „–certificatesresolvers.letsencrypt.acme.email=${SSL_EMAIL}“ 
      – „–certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json“ 
    ports: 
      – „80:80“ 
      – „443:443“ 
    volumes: 
      – traefik_data:/letsencrypt 
      – /var/run/docker.sock:/var/run/docker.sock:ro 
    networks: 
      – proxy 
 
volumes: 
  postgres_data: 
  n8n_data: 
  traefik_data: 
 
networks: 
  internal: 
    name: n8n_internal 
  proxy: 
    name: n8n_proxy 
 

Der Wert N8N_WEBHOOK_URL teilt n8n mit, welche öffentliche Adresse externe Dienste für Webhooks verwenden sollen. Da Traefik als Reverse Proxy arbeitet, wird N8N_PROXY_HOPS auf 1 gesetzt. Diese Einstellungen entsprechen den aktuellen Konfigurationsempfehlungen von n8n für den Betrieb hinter einem Reverse Proxy.

Schritt 5: Die Konfiguration überprüfen

Prüfe die Konfiguration, bevor du die Container startest:

docker compose config

Wenn der Befehl die aufgelöste Konfiguration ohne Fehlermeldung ausgibt, lade die benötigten Images herunter:

docker compose pull

Starte den n8n-Stack mit Docker Compose:

docker compose up -d

Prüfe den Status der Container:

docker compose ps

Alle drei Dienste sollten laufen. Die n8n-Protokolle kannst du mit folgendem Befehl anzeigen:

docker compose logs –tail=100 n8n

Um neue Protokolleinträge in Echtzeit zu verfolgen, verwende:

docker compose logs -f n8n

Drücke Strg + C, um die laufende Anzeige der Protokolle zu beenden. Der n8n-Container wird dadurch nicht gestoppt.

Schritt 6: Die Firewall konfigurieren

Dein VPS sollte SSH-, HTTP- und HTTPS-Verbindungen zulassen. Unter Ubuntu mit UFW lauten die Befehle:

ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
ufw status

Stelle vor dem Aktivieren der Firewall sicher, dass der SSH-Zugriff korrekt funktioniert. Andernfalls könntest du dich vom Server aussperren.

Schritt 7: n8n öffnen

Rufe deine gewählte Subdomain auf:

https://n8n.example.com

Traefik fordert das HTTPS-Zertifikat an, und n8n zeigt die Einrichtung des Besitzerkontos an. Erstelle dein Konto, bevor du Anwendungen verbindest oder Workflows aktivierst.

So aktualisierst du n8n mit Docker

Sichere vor einem Update deine Datenbank, persistenten Daten und Konfiguration. Prüfe außerdem die n8n-Versionshinweise auf Änderungen, die bestehende Funktionen oder die Kompatibilität beeinträchtigen könnten.

Um das aktuelle Image herunterzuladen und den Container neu zu erstellen, führe folgende Befehle aus:

cd /opt/n8n
docker compose pull
docker compose up -d
docker compose ps

Docker Compose behält die benannten Volumes bei. Das ersetzt jedoch keine geeignete Backup-Strategie.

Einen einfachen Export der PostgreSQL-Datenbank kannst du mit folgenden Befehlen erstellen:

mkdir -p /root/n8n-backups

docker compose exec -T postgres \
sh -c ‚pg_dump -U „$POSTGRES_USER“ „$POSTGRES_DB“‚ \
>/root/n8n-backups/n8n-$(date +%F).sql

Dein Backup-Plan sollte Folgendes abdecken:

  • Die PostgreSQL-Datenbank
  • Das persistente n8n-Volume
  • Die .env-Datei
  • Den n8n-Verschlüsselungsschlüssel
  • Alle lokalen Dateien, die von Workflows verwendet werden

Teste die Wiederherstellung, bevor du die Umgebung für wichtige Workflows einsetzt.

Selbst gehostet bedeutet nicht vollständig verwaltet

Ob du n8n mit Docker manuell bereitstellst oder die Time4VPS-Vorlage auswählst: Der VPS bleibt selbst verwaltet.

Du bist verantwortlich für:

  • Die Administration des Linux-Servers
  • Updates für n8n und das Betriebssystem
  • Die Konfiguration von Firewall und SSH
  • Die Überwachung der Ressourcennutzung
  • Den Schutz von Zugangsdaten und Verschlüsselungsschlüsseln
  • Die Einrichtung und Überprüfung von Backups
  • Die Pflege von Workflows und Integrationen
  • Die Fehlerbehebung bei n8n und verbundenen Diensten

Time4VPS stellt die VPS-Infrastruktur und die n8n-Bereitstellungsvorlage bereit, bietet aber keinen vollständig verwalteten n8n-Dienst.

Häufig gestellte Fragen

Was ist der Unterschied zwischen n8n mit Docker und n8n mit Docker Compose?

Docker kann einen einzelnen n8n-Container ausführen. Docker Compose definiert und verwaltet mehrere zusammengehörige Dienste wie n8n, PostgreSQL und Traefik über eine einzige Konfigurationsdatei.

Kann n8n mit Docker auf einem VPS dauerhaft laufen?

Ja. Ein VPS kann den n8n-Container rund um die Uhr ausführen. Dadurch funktionieren geplante Workflows und Webhooks unabhängig von deinem persönlichen Computer.

Benötige ich eine Domain, um n8n mit Docker zu nutzen?

Für eine manuell eingerichtete, öffentlich erreichbare Umgebung wird eine Domain oder Subdomain empfohlen. Sie bietet eine feste Adresse für HTTPS und Webhooks. Die n8n-Vorlage von Time4VPS ist auch über den dem VPS zugewiesenen Hostnamen erreichbar.

Wird der n8n-VPS von Time4VPS verwaltet?

Nein. Die n8n-Vorlage von Time4VPS wird auf einem selbst verwalteten VPS installiert. n8n ist vorinstalliert, aber du bleibst für Serveradministration, Sicherheit, Updates, Backups und die Verwaltung deiner Workflows verantwortlich.

Warum sollte ich die n8n-Vorlage von Time4VPS verwenden?

Die Vorlage reduziert die Anzahl der manuellen Installationsschritte, die für den Start von n8n mit Docker erforderlich sind. Sie eignet sich für Nutzer, die mit einer vorbereiteten Umgebung beginnen möchten und gleichzeitig die vollständige Kontrolle über ihren VPS und ihre n8n-Konfiguration behalten wollen.

Starte deinen VPS für selbst gehostetes n8n mit Time4VPS

Eine korrekt konfigurierte n8n-Docker-Umgebung bietet eine flexible Grundlage, um Workflows auszuführen, Webhooks zu empfangen und Anwendungen miteinander zu verbinden. Docker Compose erleichtert die Organisation der einzelnen Komponenten, während ein VPS deine Automatisierungsplattform dauerhaft verfügbar hält.

Mit der n8n-Vorlage von Time4VPS kannst du einen großen Teil der anfänglichen Installationsarbeit überspringen und mit einer bereits eingerichteten n8n-Instanz in einer Docker-Umgebung auf Ubuntu 24.04 beginnen. Wähle einen VPS-Tarif, installiere die n8n-Vorlage und erstelle deine selbst gehosteten Automatisierungsworkflows.