n8n-Kosten: Cloud vs. Self-Hosted und drei stille Fallen
Description and use
The article compares cloud versus self‑hosted n8n costs, factoring in operational expenses, and identifies three common silent failures: missing If‑Node combinator, incorrect environment variable access, and absent executionOrder. It recommends testing, error handling, and budget limits for LLM nodes.
Problem
Wer n8n einführt, vergleicht meist zwei Zahlen: die Monatsgebühr der Cloud und die Rechnung eines VPS. Beides greift zu kurz. Die tatsächlichen Kosten entstehen im Betrieb, und die teuersten Fehler zeigen sich nicht als Fehlermeldung, sondern als Workflow, der "grün" bleibt und trotzdem das Falsche tut.
Outcome
Der Beitrag zeigt, dass bei kleinen Volumen die Cloud günstiger ist, während Self‑Hosting bei hohem Volumen, Admin‑Wissen oder Datenschutzvorgaben sinnvoll ist. Die wichtigsten Fehlerquellen sind fehlende If‑Node‑Combinator, falscher Zugriff auf Umgebungsvariablen und fehlende executionOrder. Durch gezieltes Error‑Handling, Validierung und Budgetgrenzen lassen sich teure stille Fehler vermeiden.
Workflow
- 1. Vergleiche die monatlichen Kosten für Cloud Starter, Cloud Pro und Self‑Hosted VPS, inklusive zusätzlicher Wartungskosten.
- 2. Berechne die Gesamtkosten für verschiedene Execution‑Volumina (500, 15 000, 50 000+).
- 3. Prüfe bei Self‑Hosting die Server‑Kapazität und bei Cloud die Execution‑Kontingente.
- 4. Identifiziere typische Fehlerquellen: If‑Node ohne "combinator", process.env statt $env, fehlende executionOrder.
- 5. Führe Testläufe mit Beispiel‑Items durch, prüfe Execution‑Historie und setze einen Error‑Workflow ein.
- 6. Für LLM‑Nodes setze Limits beim Anbieter, prüfe Triggerintervalle, führe Tests mit kleinen Datenmengen durch und validiere Eingaben vor dem LLM‑Node.
- 7. Implementiere Error‑Handling und Budgetgrenzen von Anfang an.
Evidence
Die tatsächlichen Kosten entstehen im Betrieb, und die teuersten Fehler zeigen sich nicht als Fehlermeldung, sondern als Workflow, der "grün" bleibt und trotzdem das Falsche tut.
Bei einer If‑Node, deren Bedingungs‑JSON ohne "combinator" importiert oder per API angelegt wurde, haben wir beobachtet, dass immer der "true"‑Zweig genommen wird.
In Code‑Nodes ist process.env.NAME in der Sandbox (Task‑Runner) nicht verfügbar. Der Zugriff auf Umgebungsvariablen läuft über $env.
In den Workflow‑Einstellungen steuert executionOrder die Reihenfolge, in der Verzweigungen abgearbeitet werden.
- Record date: 2026-10-01T14:41:14.750Z