n8n selbst hosten: Compose-Vorlage, Backup und Updates
n8n auf dem eigenen Server ist in zehn Minuten installiert. Die interessanten Fragen kommen am Tag danach: Wo liegen die Daten, was passiert beim nächsten Update, und funktioniert das Backup wirklich? Hier ist unsere Vorlage samt den Antworten.
150 € pro Stunde, pauschal für alles. Für Unternehmen, zzgl. USt.

Was bedeutet n8n self-hosted?
Self-hosted bedeutet, dass n8n nicht beim Hersteller in der Cloud läuft, sondern auf einem Server, den du kontrollierst: ein gemieteter virtueller Server, ein Rechner im eigenen Netz oder eine Maschine bei deinem Dienstleister. Die Daten deiner Workflows bleiben dort, und die Zahl der Ausführungen ist nur durch die Leistung des Servers begrenzt.
Rechtlich steht n8n unter der Sustainable Use License, einer sogenannten Fair-Code-Lizenz. Sie erlaubt den Einsatz für interne Zwecke deines Unternehmens. Wer n8n als eigenes Produkt an Dritte verkaufen oder als Dienst anbieten will, braucht eine andere Lizenz. Für die allermeisten Mittelständler ist das kein Thema.
Was n8n überhaupt kann und was die Cloud kostet, steht auf unserer Seite zur n8n-Agentur. Hier geht es nur um den Betrieb.
Selbst hosten oder n8n-Cloud?
Beides ist vernünftig. Die Entscheidung hängt an drei Dingen: Daten, Menge und wer nachts aufsteht.
| Frage | Selbst gehostet | n8n-Cloud |
|---|---|---|
| Lizenzkosten | keine für interne Zwecke (Community Edition) | Tarif nach Ausführungen |
| Laufende Kosten | Server, Betrieb, deine oder unsere Zeit | Monats- oder Jahresbeitrag |
| Wo liegen die Daten? | auf deinem Server, Standort wählst du | beim Hersteller |
| Zugriff auf interne Systeme | direkt im eigenen Netz möglich | nur über freigegebene Schnittstellen |
| Updates und Backups | deine Aufgabe | erledigt der Hersteller |
| Passt gut für | personenbezogene Daten, viele Ausführungen, interne Systeme | kleine Teams, wenige Abläufe, schneller Start |
Was du vorher brauchst
Sechs Dinge. Fehlt eins, merkst du es spätestens beim ersten Webhook oder beim ersten Ausfall.
Einen Server in der EU
Ein kleiner Linux-Server reicht für den Anfang. Wichtig sind Standort, Updates des Betriebssystems und ein Zugang nur per Schlüssel.
Docker mit Compose
Docker Engine und das Compose-Plugin. Damit ist die ganze Installation eine Datei, die du versionieren kannst.
Eine eigene Subdomain
Etwa n8n.deine-domain.de. Webhooks brauchen eine feste, öffentliche Adresse mit HTTPS.
Einen Reverse Proxy mit TLS
Er nimmt Anfragen auf Port 443 entgegen und reicht sie an n8n weiter. n8n selbst lauscht nur lokal.
Einen Mailzugang
Für Einladungen, Passwort-Rücksetzung und Alarme. Ohne SMTP sperrst du dich irgendwann selbst aus.
Ein Backup-Ziel außerhalb des Servers
Ein Backup auf derselben Platte ist eine Kopie, keine Sicherung.
Die Compose-Vorlage
n8n mit PostgreSQL, dauerhaftem Speicher, festem Schlüssel und Zeitzone Berlin. Die Datei haben wir am 14.11.2026 mit docker compose config geprüft.
Fünf Entscheidungen stecken in dieser Datei, und jede hat einen Grund:
- PostgreSQL statt SQLite: SQLite ist der Standard und reicht zum Ausprobieren. Für den Live-Betrieb mit vielen Ausführungen ist eine echte Datenbank robuster und leichter zu sichern.
- Feste Version statt „latest“: Trag eine konkrete Versionsnummer ein. Dann kommt ein Update, wenn du es willst, und nicht, wenn ein Neustart es zufällig zieht.
- Port nur lokal:
127.0.0.1:5678heißt, n8n ist von außen nur über den Reverse Proxy mit HTTPS erreichbar. - Eigener Verschlüsselungsschlüssel: n8n verschlüsselt damit alle gespeicherten Zugangsdaten. Setzt du ihn selbst, kannst du ihn sicher aufbewahren und bei einem Umzug mitnehmen.
- Ordner statt anonymer Volumes: Daten liegen in
./dataneben der Datei. Das macht Backups und Umzüge übersichtlich.
Die Geheimnisse POSTGRES_PASSWORD und N8N_ENCRYPTION_KEY gehören in eine .env-Datei neben der Compose-Datei, nie in ein Repository.
docker-compose.yml anzeigen
# docker-compose.yml: n8n mit PostgreSQL, Vorlage mediabrandcast (Stand 14.11.2026)
# Werte in <spitzen Klammern> ersetzen, Geheimnisse in eine .env-Datei auslagern.
services:
postgres:
image: postgres:16
restart: unless-stopped
environment:
POSTGRES_USER: n8n
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: n8n
volumes:
- ./data/postgres:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U n8n -d n8n"]
interval: 10s
retries: 5
n8n:
image: docker.n8n.io/n8nio/n8n:<VERSION>
restart: unless-stopped
ports:
- "127.0.0.1:5678:5678"
environment:
DB_TYPE: postgresdb
DB_POSTGRESDB_HOST: postgres
DB_POSTGRESDB_DATABASE: n8n
DB_POSTGRESDB_USER: n8n
DB_POSTGRESDB_PASSWORD: ${POSTGRES_PASSWORD}
N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
N8N_HOST: <n8n.deine-domain.de>
N8N_PROTOCOL: https
WEBHOOK_URL: https://<n8n.deine-domain.de>/
GENERIC_TIMEZONE: Europe/Berlin
TZ: Europe/Berlin
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS: "true"
volumes:
- ./data/n8n:/home/node/.n8n
depends_on:
postgres:
condition: service_healthy
Backup: was wirklich gesichert werden muss
Drei Teile. Fehlt einer, ist die Sicherung im Ernstfall wertlos.
- Die Datenbank mit Workflows, Zugangsdaten (verschlüsselt) und Ausführungsprotokollen, per
pg_dump. - Der Schlüssel aus dem n8n-Ordner. Ohne ihn lassen sich gesicherte Zugangsdaten nicht mehr entschlüsseln, du müsstest jeden Zugang neu anlegen.
- Ein Export der Workflows als JSON, zusätzlich. Er lässt sich lesen, vergleichen und notfalls in eine ganz neue Instanz importieren.
Wir haben es bei einer eigenen Instanz erlebt: Ein automatisches Container-Update ohne dauerhaften Speicher, und alle Workflows waren weg. Seitdem gilt bei uns: Daten liegen außerhalb des Containers, und jedes Backup wird einmal im Quartal testweise zurückgespielt. Ein Backup, das nie zurückgespielt wurde, ist eine Hoffnung.
Das Skript rechts legt jeden Tag einen Ordner mit allen drei Teilen an und löscht Sicherungen, die älter als 14 Tage sind. Kopier den Ordner danach auf ein anderes System.
backup.sh anzeigen
#!/bin/sh
# backup.sh: tägliche Sicherung von n8n (Vorlage mediabrandcast), per cron im Compose-Ordner aufrufen
set -eu
ZIEL=./backup/$(date +%F)
mkdir -p "$ZIEL"
docker compose exec -T postgres pg_dump -U n8n n8n | gzip > "$ZIEL/n8n-db.sql.gz"
docker compose exec -T n8n n8n export:workflow --all --output=/home/node/.n8n/export-workflows.json
docker compose exec -T n8n n8n export:credentials --all --output=/home/node/.n8n/export-credentials.json
cp ./data/n8n/export-workflows.json ./data/n8n/export-credentials.json "$ZIEL/"
cp ./data/n8n/config "$ZIEL/config" # enthält den Schlüssel, ohne ihn sind gesicherte Zugangsdaten wertlos
find ./backup -mindepth 1 -maxdepth 1 -type d -mtime +14 -exec rm -rf {} +
Updates ohne Herzklopfen
n8n erscheint in kurzen Abständen. Kleine Updates sind meist harmlos, große Versionssprünge nicht immer.
Backup ziehen
Skript laufen lassen und prüfen, dass Datenbank-Dump und Schlüssel im Ordner liegen.
Versionshinweise lesen
Besonders bei einer neuen Hauptversion: Was entfällt, was ändert sich an Knoten, Variablen oder Datenbank?
Version erhöhen
In der Compose-Datei die neue Versionsnummer eintragen, dann
docker compose pullunddocker compose up -d.Prüfen
Login, ein Testlauf der wichtigsten Workflows, ein Blick in die Ausführungsliste. Webhooks einmal von außen aufrufen.
Zurück können
Geht etwas schief: alte Versionsnummer eintragen, Datenbank aus dem Backup zurückspielen. Deshalb Schritt 1.
Was wir übernehmen
Wir richten n8n auf Servern in der EU ein, mit der Vorlage oben als Grundgerüst, HTTPS, Überwachung und täglichem Backup außerhalb des Servers. Updates planen wir, testen sie und spielen sie ein. Die Workflows bauen und verbessern wir im Servicevertrag. Das Hosting ist ein fester Monatsbetrag, die Arbeit 150 € pro Stunde, für Unternehmen, zzgl. USt. Mehr unter Hosting.
Wann du uns nicht brauchst
Wenn deine IT Docker-Server ohnehin betreibt, Backups testet und Updates plant, ist n8n nur ein weiterer Dienst. Dann reicht die Vorlage. Und wenn du drei kleine Workflows ohne sensible Daten hast, ist die n8n-Cloud oft der entspanntere Weg.
Häufige Fragen zu n8n self-hosted
Ist n8n kostenlos, wenn ich es selbst hoste?
Die Community Edition ist für interne Zwecke deines Unternehmens kostenlos, so regelt es die Sustainable Use License. Kosten entstehen für Server, Speicher, Backups und die Zeit für Betrieb und Updates. Für zusätzliche Unternehmensfunktionen bietet n8n kostenpflichtige Lizenzen an.
Wie viel Server braucht n8n?
Für einige Workflows mit moderater Last reicht ein kleiner virtueller Linux-Server. Mehr Leistung brauchst du bei vielen gleichzeitigen Ausführungen, großen Dateien oder lokal betriebenen KI-Modellen. Starte klein, beobachte Speicher und Auslastung und wachse dann. n8n lässt sich bei Bedarf auch auf mehrere Arbeitsprozesse verteilen.
SQLite oder PostgreSQL?
SQLite ist der Standard und genügt zum Ausprobieren. Für den Live-Betrieb empfehlen wir PostgreSQL: robuster bei vielen Ausführungen, sauber per pg_dump zu sichern und Voraussetzung, wenn du n8n später auf mehrere Arbeitsprozesse verteilst. Der n8n-Ordner mit dem Schlüssel muss in beiden Fällen dauerhaft gespeichert sein.
Wie update ich n8n mit Docker Compose?
Erst Backup, dann Versionshinweise lesen, dann in der Compose-Datei die neue Version eintragen und docker compose pull sowie docker compose up -d ausführen. Danach Login, Testläufe und Webhooks prüfen. Mit fester Versionsnummer kannst du jederzeit auf die alte Version zurück, wenn du das Backup zurückspielst.
Kann ich von der n8n-Cloud auf Self-Hosting umziehen?
Ja. Workflows exportierst du als JSON und importierst sie in die neue Instanz. Zugangsdaten legst du dort neu an oder überträgst sie mit einem entschlüsselten Export, der dann besonders sicher behandelt werden muss. Webhook-Adressen ändern sich, deshalb müssen angebundene Dienste auf die neue Adresse zeigen.
Quellen
- n8n-Dokumentation: Docker Compose, abgerufen am 14.11.2026.
- n8n-Dokumentation: Docker (Volumes, Zeitzone, PostgreSQL), abgerufen am 14.11.2026.
- n8n-Dokumentation: Set a custom encryption key, abgerufen am 14.11.2026.
- n8n-Dokumentation: CLI commands (Export und Import), abgerufen am 14.11.2026.
- n8n-Dokumentation: Updating, abgerufen am 14.11.2026.
- n8n-Dokumentation: Sustainable Use License, abgerufen am 14.11.2026.