The install is twenty minutes. What costs people a weekend six months later is the encryption key, the webhook URL and an executions table nobody ever pruned.Die Installation dauert zwanzig Minuten. Was Leute sechs Monate später ein Wochenende kostet, ist der Encryption Key, die Webhook-URL und eine Executions-Tabelle, die nie jemand aufgeräumt hat.
n8n is a Node application plus a database. Out of the box the database is SQLite — a single file inside the data directory — which is genuinely fine for a personal instance. Everything else is a reverse proxy and a certificate.n8n ist eine Node-Anwendung plus eine Datenbank. Ab Werk ist die Datenbank SQLite — eine einzelne Datei im Datenverzeichnis —, was für eine persönliche Instanz wirklich in Ordnung ist. Alles andere ist ein Reverse-Proxy und ein Zertifikat.
Memory is the honest constraint. Idle, n8n sits comfortably under 1 GiB. Load comes from concurrent executions and from the size of the payloads moving through them: a workflow that pulls a 50 MB CSV into memory is a different animal from one that posts a webhook to Slack. Start at 1 GiB, watch it, size up when you actually see pressure.Der Arbeitsspeicher ist die ehrliche Grenze. Im Leerlauf bleibt n8n bequem unter 1 GiB. Last entsteht durch gleichzeitige Ausführungen und durch die Größe der Payloads, die dabei durchlaufen: Ein Workflow, der eine 50-MB-CSV in den Speicher zieht, ist ein anderes Tier als einer, der einen Webhook an Slack schickt. Starten Sie mit 1 GiB, beobachten Sie es, und dimensionieren Sie hoch, sobald Sie tatsächlich Druck sehen.
One thing that is not obvious until it bites: n8n is not a bot. A Discord bot only makes outbound connections, so it will run anywhere. n8n's whole point is Webhook nodes, and those need inbound HTTPS on a public hostname.Eine Sache, die nicht offensichtlich ist, bis sie zuschlägt: n8n ist kein Bot. Ein Discord-Bot baut nur ausgehende Verbindungen auf und läuft deshalb überall. Der ganze Sinn von n8n sind Webhook-Nodes, und die brauchen eingehendes HTTPS auf einem öffentlichen Hostnamen.
Cheap VPS plans very often give you NAT IPv4 — a shared public address with a handful of forwarded ports — rather than an address of your own. If you get a forwarded port like 41022 instead of ports 80 and 443, a plain https://n8n.example.com will not work, because you do not own 443 on that address.Günstige VPS-Tarife geben Ihnen sehr oft NAT-IPv4 — eine geteilte öffentliche Adresse mit einer Handvoll weitergeleiteter Ports — statt einer eigenen Adresse. Bekommen Sie einen weitergeleiteten Port wie 41022 statt der Ports 80 und 443, funktioniert ein einfaches https://n8n.example.com nicht, weil Ihnen Port 443 auf dieser Adresse nicht gehört.
Three honest ways out:Drei ehrliche Auswege:
Worth reading first: NAT IPv4 vs a dedicated IP and NAT IPv4, ports and forwarding.Lesenswert vorab: NAT IPv4 vs. dedizierte IP und NAT IPv4, Ports und Weiterleitung.
Deploy an Ubuntu LTS image, then do the boring part properly before anything else touches the internet — create a non-root user, put your SSH key on it, disable password login, and let the firewall default to deny. Our own walkthroughs for that are connect to your VPS over SSH and secure your VPS.Setzen Sie ein Ubuntu-LTS-Image auf, und erledigen Sie dann den langweiligen Teil ordentlich, bevor irgendetwas sonst das Internet berührt — leg einen Non-Root-User an, hinterlegen Sie Ihren SSH-Key, deaktivieren Sie den Passwort-Login und lassen Sie die Firewall standardmäßig blockieren. Unsere eigenen Anleitungen dazu sind über SSH mit Ihrem VPS verbinden und Ihren VPS absichern.
Point an A record at the machine (n8n.example.com) and let DNS settle before you ask a certificate authority for anything.Richten Sie einen A-Record auf die Maschine (n8n.example.com) und lassen Sie DNS sich setzen, bevor Sie eine Zertifizierungsstelle um irgendetwas bitten.
Pin a version tag. latest will eventually pull a release with a breaking change on a night you were not planning to debug anything.Pinnen Sie einen Versions-Tag. latest zieht irgendwann ein Release mit einer Breaking Change, ausgerechnet in einer Nacht, in der Sie nichts debuggen wollten.
services:
n8n:
image: docker.n8n.io/n8nio/n8n:1.80.3 # pin it, don't use :latest
restart: unless-stopped
environment:
- N8N_HOST=n8n.example.com
- N8N_PORT=5678
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://n8n.example.com/
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
- GENERIC_TIMEZONE=Europe/Berlin
- TZ=Europe/Berlin
- N8N_RUNNERS_ENABLED=true
- EXECUTIONS_DATA_PRUNE=true
- EXECUTIONS_DATA_MAX_AGE=168
volumes:
- n8n_data:/home/node/.n8n
ports:
- "127.0.0.1:5678:5678"
volumes:
n8n_data:
Two details in there are deliberate. The port is bound to 127.0.0.1, so the only thing that can reach n8n is the reverse proxy on the same host — not the whole internet, and not a stray scanner that found port 5678. And N8N_RUNNERS_ENABLED=true switches on task runners, which recent versions expect; leave it off and you get a deprecation warning in the log on every boot.Zwei Details darin sind Absicht. Der Port ist an 127.0.0.1 gebunden, sodass nur der Reverse-Proxy auf demselben Host n8n erreichen kann — nicht das ganze Internet, und kein Scanner, der zufällig Port 5678 gefunden hat. Und N8N_RUNNERS_ENABLED=true schaltet Task-Runner ein, die neuere Versionen erwarten; lassen Sie es aus, bekommen Sie bei jedem Boot eine Deprecation-Warnung im Log.
Put the key in a .env file next to the compose file, not in the compose file itself:Legen Sie den Key in eine .env-Datei neben der Compose-Datei ab, nicht in der Compose-Datei selbst:
printf 'N8N_ENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" > .env
chmod 600 .env
Caddy is the shortest path, because it gets and renews the certificate without being asked:Caddy ist der kürzeste Weg, weil es das Zertifikat holt und erneuert, ohne dass man es bitten muss:
n8n.example.com {
reverse_proxy 127.0.0.1:5678
}
That is the entire config. nginx plus certbot works equally well and is worth it if you are already running nginx — you need proxy_pass, the usual Upgrade/Connection headers for the editor's websocket, and a client_max_body_size big enough for whatever files your workflows move.Das ist die gesamte Konfiguration. nginx plus certbot funktioniert genauso gut und lohnt sich, wenn Sie ohnehin schon nginx betreiben — Sie brauchen proxy_pass, die üblichen Upgrade/Connection-Header für das WebSocket des Editors und eine client_max_body_size, die groß genug für die Dateien ist, die Ihre Workflows bewegen.
1. The encryption key. n8n encrypts every saved credential with N8N_ENCRYPTION_KEY. If you never set one, it generates a key on first boot and writes it into .n8n/config inside the volume. Restore that volume onto a fresh host without that file and every credential you saved is unreadable — the workflows are all still there, quietly failing to authenticate. Set the key explicitly and store a copy somewhere that is not the same disk.1. Der Encryption Key. n8n verschlüsselt jede gespeicherte Credential mit N8N_ENCRYPTION_KEY. Setzen Sie nie einen, erzeugt es beim ersten Boot einen Key und schreibt ihn nach .n8n/config im Volume. Stellen Sie dieses Volume auf einem neuen Host wieder her, ohne diese Datei, ist jede gespeicherte Credential unlesbar — die Workflows sind alle noch da, scheitern aber still an der Authentifizierung. Setzen Sie den Key explizit und bewahren Sie eine Kopie an einem Ort auf, der nicht dieselbe Festplatte ist.
2. WEBHOOK_URL. If it does not exactly match the public HTTPS address, the Webhook node happily shows you a URL nobody outside can reach, and the third-party service posts into nothing. This is the single most common "n8n is broken" report, and it is always a one-line fix.2. WEBHOOK_URL. Stimmt sie nicht exakt mit der öffentlichen HTTPS-Adresse überein, zeigt Ihnen der Webhook-Node bereitwillig eine URL, die niemand von außen erreichen kann, und der Drittanbieter-Dienst postet ins Leere. Das ist die mit Abstand häufigste Meldung „n8n ist kaputt“, und es ist immer ein Ein-Zeilen-Fix.
3. The executions table. Every run is stored. Left alone, a chatty workflow will grow the database until the disk fills and the symptom is "n8n won't start". EXECUTIONS_DATA_PRUNE=true with EXECUTIONS_DATA_MAX_AGE (hours) and EXECUTIONS_DATA_PRUNE_MAX_COUNT fixes it before it happens. Do it on day one; it is free.3. Die Executions-Tabelle. Jeder Lauf wird gespeichert. Sich selbst überlassen, lässt ein geschwätziger Workflow die Datenbank wachsen, bis die Festplatte voll ist, und das Symptom ist „n8n startet nicht mehr“. EXECUTIONS_DATA_PRUNE=true mit EXECUTIONS_DATA_MAX_AGE (Stunden) und EXECUTIONS_DATA_PRUNE_MAX_COUNT behebt das, bevor es passiert. Machen Sie es am ersten Tag; es kostet nichts.
SQLite is one writer at a time. Once you have several workflows firing concurrently, or you want a database you can back up with a dump rather than a file copy, move to Postgres:SQLite erlaubt immer nur einen Schreiber gleichzeitig. Sobald mehrere Workflows gleichzeitig feuern, oder Sie eine Datenbank wollen, die Sie per Dump statt per Dateikopie sichern, wechseln Sie zu Postgres:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
Do it before you have data you care about. There is no supported in-place migration from the SQLite store to Postgres; the realistic path afterwards is exporting workflows and credentials and importing them into a fresh instance, and credentials only survive that if you carry the same encryption key. If you are running Postgres on the same box, run a database on your VPS covers the sizing and the backup habits.Machen Sie das, bevor Sie Daten haben, an denen Ihnen etwas liegt. Es gibt keine unterstützte In-Place-Migration vom SQLite-Store zu Postgres; der realistische Weg danach ist, Workflows und Credentials zu exportieren und in eine frische Instanz zu importieren, und Credentials überleben das nur, wenn Sie denselben Encryption Key mitnehmen. Läuft Postgres auf derselben Maschine, deckt eine Datenbank auf Ihrem VPS betreiben die Dimensionierung und die Backup-Gewohnheiten ab.
Two things need to survive the machine dying: the volume and the encryption key.Zwei Dinge müssen den Tod der Maschine überleben: das Volume und der Encryption Key.
docker run --rm \
-v n8n_data:/data:ro \
-v "$PWD":/backup \
alpine tar czf /backup/n8n-$(date +%F).tar.gz -C /data .
Copy that off the server. A backup that lives on the same disk as the thing it backs up is a file, not a backup — see back up your VPS for what we actually recommend, including what is and is not included by default.Kopieren Sie das vom Server herunter. Ein Backup, das auf derselben Festplatte liegt wie das, was es sichert, ist eine Datei, kein Backup — sehen Sie sich Backup Ihres VPS an für das, was wir tatsächlich empfehlen, einschließlich dessen, was standardmäßig enthalten ist und was nicht.
Updating is docker compose pull && docker compose up -d, but bump the pinned tag deliberately and read the release notes first. n8n moves quickly and node behaviour does change between minor versions.Updaten ist docker compose pull && docker compose up -d, aber ändern Sie den gepinnten Tag bewusst und lesen Sie vorher die Release Notes. n8n bewegt sich schnell, und das Verhalten von Nodes ändert sich durchaus zwischen Minor-Versionen.
n8n is fair-code, not open source in the OSI sense. It ships under the Sustainable Use License: self-hosting it for your own or your company's internal purposes is explicitly fine, which is what nearly everyone reading this is doing. What the licence restricts is offering n8n to third parties as a service. If your plan is to run instances for clients, read the licence terms properly first rather than assuming — it is a short document and it is worth the ten minutes.n8n ist Fair-Code, nicht Open Source im Sinne der OSI. Es erscheint unter der Sustainable Use License: Es für die eigenen oder die internen Zwecke Ihres Unternehmens selbst zu hosten, ist ausdrücklich erlaubt — das ist es, was fast jeder tut, der das hier liest. Was die Lizenz einschränkt, ist, n8n Dritten als Dienst anzubieten. Wollen Sie Instanzen für Kunden betreiben, lesen Sie die Lizenzbedingungen vorher gründlich, statt es anzunehmen — es ist ein kurzes Dokument, und die zehn Minuten lohnen sich.
Full disclosure: this is what we sell. A 1 GiB Starter is enough for a personal n8n; move up a tier when you add Postgres or run workflows that carry real payloads.Zur vollen Transparenz: Das ist, was wir verkaufen. Ein 1-GiB-Starter reicht für ein persönliches n8n; steigen Sie eine Stufe höher, sobald Sie Postgres hinzufügen oder Workflows mit echten Datenmengen laufen lassen.
Linux KVM VPS — EUR 4.99 to EUR 59.99 a month, on our own single-tenant bare metal in Dallas, TX and Charlotte, NC. US locations (Dallas, TX and Charlotte, NC) are available; VPS plans can be ordered. Full hardware virtualisation (KVM), your own kernel, full root. Six tiers, vps-starter to vps-ultra. Starter is 1 vCPU, 1 GiB RAM, 25 GB disk.Linux-KVM-VPS — 4,99 bis 59,99 EUR im Monat, auf unserer eigenen Single-Tenant-Bare-Metal-Hardware in Dallas, TX und Charlotte, NC. US-Standorte (Dallas, TX und Charlotte, NC) sind verfügbar; VPS-Tarife können bestellt werden. Vollständige Hardware-Virtualisierung (KVM), eigener Kernel, volles Root. Sechs Tarife, vps-starter bis vps-ultra. Starter hat 1 vCPU, 1 GiB RAM, 25 GB Speicher.
You order in the shop, pay by card (Stripe) or SEPA bank transfer, and your login details are e-mailed to you once the service is set up. Support is e-mail, run by one person, with no guaranteed response time. All prices are final totals under the German small-business rule (§19 UStG); no VAT is added or shown.Sie bestellen im Shop, zahlen per Karte (Stripe) oder SEPA-Überweisung, und Ihre Zugangsdaten werden Ihnen per E-Mail zugeschickt, sobald der Dienst eingerichtet ist. Support läuft per E-Mail, von einer einzelnen Person betrieben, ohne garantierte Reaktionszeit. Alle Preise sind Endpreise. Gemäß § 19 UStG wird keine Umsatzsteuer ausgewiesen.
Want it hosted in Germany instead of running a VPS yourself? Hosted n8n (one-click n8n) is on a waitlist right now. What you can order today is Managed Automation: your own isolated Activepieces instance (open-source workflow automation, a different tool from n8n), hosted in Germany (EU), set up automatically, from EUR 19 a month, cancel anytime.Lieber in Deutschland gehostet, statt selbst einen VPS zu betreiben? Gehostetes n8n (One-Click n8n) hat gerade eine Warteliste. Heute bestellbar ist Managed Automation: Ihre eigene isolierte Activepieces-Instanz (Open-Source-Workflow-Automatisierung, ein anderes Tool als n8n), gehostet in Deutschland (EU), automatisch eingerichtet, ab 19 EUR im Monat, monatlich kündbar.
Order VPS Starter (US: Dallas, TX / Charlotte, NC) → · Linux KVM VPS overviewVPS Starter bestellen (USA: Dallas, TX / Charlotte, NC) → · Übersicht Linux-KVM-VPS
Order Managed Automation Starter → · n8n waitlist · Linux KVM VPS overviewManaged Automation Starter bestellen → · n8n-Warteliste · Übersicht Linux-KVM-VPS
Moving off Zapier because of the GDPR? Read Zapier alternative under the GDPR: hosting your automations in Germany: where Zapier stores data, the EU options, and what you still have to do yourself.Weg von Zapier wegen der DSGVO? Lesen Sie Zapier-Alternative DSGVO: Automatisierung in Deutschland hosten: wo Zapier Daten speichert, welche EU-Optionen es gibt und was Sie trotzdem selbst tun müssen.
Looking for a Make alternative under the GDPR? Read Make alternative under the GDPR: hosting automations in the EU / Germany: what Make publishes about EU/US regions and its DPA, and rebuilding scenarios on Activepieces in Germany.Auf der Suche nach einer Make-Alternative unter der DSGVO? Lesen Sie Make-Alternative DSGVO: Automatisierung in der EU / Deutschland hosten: was Make zu EU-/US-Regionen und AVV veröffentlicht und wie der Szenario-Nachbau auf Activepieces in Deutschland klappt.
Written by the person who runs overnight.host: a small, honest hosting company on dedicated bare metal — Linux VPS, game servers, web hosting. Live status at up.overnight.host.Geschrieben von der Person, die overnight.host betreibt: ein kleines, ehrliches Hosting-Unternehmen auf dedizierter Bare-Metal-Hardware — Linux-VPS, Gameserver, Webhosting. Live-Status unter up.overnight.host.
Around 1 GiB for a personal instance that runs a handful of workflows. Push to 2 GiB or more once you have concurrent executions, a Postgres on the same machine, or workflows that pull large files into memory. It is payload size and concurrency that drive memory, not the number of workflows you have saved.Etwa 1 GiB für eine persönliche Instanz, die eine Handvoll Workflows ausführt. Gehen Sie auf 2 GiB oder mehr, sobald Sie gleichzeitige Ausführungen haben, ein Postgres auf derselben Maschine läuft oder Workflows große Dateien in den Speicher ziehen. Es sind Payload-Größe und Gleichzeitigkeit, die den Speicherbedarf treiben, nicht die Anzahl gespeicherter Workflows.
Yes, if your workflows only use schedule and polling triggers, because those make outbound connections. Webhook triggers need inbound HTTPS on a public hostname, so you need either a dedicated IPv4, or TLS terminated somewhere that already has one and forwarded to your machine.Ja, wenn Ihre Workflows nur Schedule- und Polling-Trigger verwenden, weil die ausgehende Verbindungen aufbauen. Webhook-Trigger brauchen eingehendes HTTPS auf einem öffentlichen Hostnamen, also brauchen Sie entweder eine dedizierte IPv4 oder TLS, das irgendwo terminiert wird, das schon eine hat, und dann zu Ihrer Maschine weitergeleitet wird.
SQLite is fine for a personal instance and is the default. Move to Postgres when you have concurrent executions or want dump-based backups. Switch early: there is no supported in-place conversion, so doing it later means exporting and re-importing.SQLite ist für eine persönliche Instanz in Ordnung und ist der Standard. Wechseln Sie zu Postgres, wenn Sie gleichzeitige Ausführungen haben oder dump-basierte Backups wollen. Wechseln Sie früh: Es gibt keine unterstützte In-Place-Umwandlung, später bedeutet es also Exportieren und erneutes Importieren.
Your workflows survive; your saved credentials do not. n8n cannot decrypt them and you re-enter every credential by hand. Back up the key separately from the data volume.Ihre Workflows überleben; Ihre gespeicherten Credentials nicht. n8n kann sie nicht entschlüsseln, und Sie tragen jede Credential von Hand neu ein. Sichern Sie den Key getrennt vom Daten-Volume.
The community edition is free to run under the Sustainable Use License, which covers internal use. Some features are reserved for the paid tiers, and offering n8n as a service to third parties is a separate licensing question.Die Community Edition dürfen Sie kostenlos unter der Sustainable Use License betreiben, die die interne Nutzung abdeckt. Manche Funktionen sind den bezahlten Tarifen vorbehalten, und n8n Dritten als Dienst anzubieten, ist eine eigene lizenzrechtliche Frage.
Prices are final totals; no VAT is shown (§19 UStG). Need something the shop does not list? Email us for a written offer.Alle Preise sind Endpreise ohne ausgewiesene USt. (§19 UStG). Sie brauchen etwas, das nicht im Shop steht? Schreiben Sie uns für ein schriftliches Angebot.
US locations available: Dallas, TX and Charlotte, NC for VPS and game servers. Order a VPS → · Order a game server → · Web hosting →
Also live from Germany (EU):US-Standorte verfügbar: Dallas, TX und Charlotte, NC für VPS und Gameserver. VPS bestellen → · Gameserver bestellen → · Webhosting →
Ebenfalls verfügbar aus Deutschland (EU):
One-click apps, each isolated with its own hostname: Uptime Kuma, Vaultwarden, Gitea, Nextcloud, Ghost, n8n (waitlist) · Managed automation · Managed setupOne-Click-Apps, jeweils isoliert mit eigenem Hostnamen: Uptime Kuma, Vaultwarden, Gitea, Nextcloud, Ghost, n8n (Warteliste) · Managed Automation · Managed Setup