n8n-Alternativen für Self-Hosting im Vergleich
Activepieces, Windmill, Node-RED, Automatisch und Huginn im Vergleich zu n8n: Lizenz, RAM, Datenbank, AI-Schritte und ein Backup-Fehler, der Restores bricht.
Was Sie anstelle von n8n verwenden sollten
Die n8n-Alternativen für Self-Hosting auf einem VPS (virtual private server), die Ihre Zeit wert sind, heißen Activepieces, Windmill, Node-RED, Automatisch und Huginn. Activepieces ist der naheliegendste Ersatz für die typische Nutzung von n8n, und der Kern steht unter der MIT-Lizenz. Windmill eignet sich für ein Team, das lieber Python oder TypeScript schreibt, als Blöcke auf einer Oberfläche zu verschieben. Node-RED ist die schlanke Variante und benötigt überhaupt keine Datenbank.
Viele Leser sollten bei ihrer bisherigen Lösung bleiben. Die n8n-Lizenz erlaubt die interne geschäftliche Nutzung. Wenn Sie Flows für Ihr eigenes Unternehmen ausführen, ist die Lizenz daher kein Problem. Eine Migration ist ebenfalls nicht kostenlos. Keine der Lösungen in dieser Liste kann einen n8n-Export einlesen. Sie müssen daher jeden Flow manuell neu erstellen und jedes Zugangsdaten-Set erneut eingeben. Die Installation von n8n selbst ist eine separate Aufgabe, die unter n8n-Installation auf einem VPS mit Docker und HTTPS beschrieben wird. n8n im Vergleich zu Zapier und Make erläutert, wie diese gesamte Kategorie im Vergleich zu gehosteten Diensten abschneidet.
Warum nach selbst gehosteten n8n-Alternativen gesucht wird
Zwei Gründe treten immer wieder auf.
Der erste Grund ist die Lizenz. n8n wird unter der Sustainable Use License v1.0 veröffentlicht. Das Projekt bezeichnet sie als Fair-Code-Lizenz und nicht als Open-Source-Lizenz. Die Lizenz erlaubt, die Software „nur für eigene interne Geschäftszwecke oder für nichtkommerzielle beziehungsweise private Zwecke zu verwenden oder zu ändern“. Eine kommerzielle Bereitstellung der Software für andere Personen ist nicht erlaubt. Dateien und Verzeichnisse, deren Name .ee enthält, unterliegen einer separaten n8n Enterprise License. Wenn Sie Automatisierungen im Auftrag zahlender Kunden ausführen möchten, ist das eine klare Einschränkung. Für ein internes Betriebsteam ändert sich dadurch im täglichen Betrieb nichts.
Der zweite Grund ist der Speicherbedarf. n8n läuft als Node.js-Prozess. Die Workflow-Daten liegen während der Ausführung im Arbeitsspeicher. Die n8n-Dokumentation nennt mehrere Ursachen: die Menge der JSON-Daten, die Größe der Binärdaten, die Anzahl der Nodes in einem Workflow, den Code-Node, manuelle Ausführungen, bei denen die Daten für den Editor erneut kopiert werden, sowie weitere gleichzeitig ausgeführte Workflows. Die dokumentierte Lösung ist kein anderes Produkt. Verwenden Sie den Queue-Modus mit separaten Worker-Prozessen und Postgres anstelle der standardmäßigen SQLite-Datei unter ~/.n8n/database.sqlite. Große Jobs sollten außerdem in Batches verarbeitet werden. Ein Loop Over Items-Node, der einen Sub-Workflow speist, hält dadurch jeweils nur einen Teil der Daten im Arbeitsspeicher. Probieren Sie das aus, bevor Sie sechzig Flows an anderer Stelle neu erstellen.
Welche selbst gehosteten n8n-Alternativen werden noch gepflegt?
Lizenztexte sind leicht zu lesen, daher vergleichen alle Lizenzen. Der Zustand eines Projekts wird dagegen leicht übersehen. Dies sind die 6 Projekte in diesem Vergleich, jeweils mit der neuesten getaggten Release-Version vom 4. August 2026.
The data behind this chart
[
{
"tool": "n8n",
"licence": "Sustainable Use License",
"latest_release": "2.33.3",
"released": "2026-07-31",
"days_since_release": 4
},
{
"tool": "Activepieces",
"licence": "MIT core, commercial ee",
"latest_release": "0.86.3",
"released": "2026-07-17",
"days_since_release": 18
},
{
"tool": "Windmill",
"licence": "AGPLv3 source, CE image",
"latest_release": "v1.778.0",
"released": "2026-08-04",
"days_since_release": 0
},
{
"tool": "Node-RED",
"licence": "Apache 2.0",
"latest_release": "5.0.4",
"released": "2026-07-30",
"days_since_release": 5
},
{
"tool": "Automatisch",
"licence": "AGPL-3.0, commercial ee",
"latest_release": "v0.15.0",
"released": "2025-08-08",
"days_since_release": 361
},
{
"tool": "Huginn",
"licence": "MIT",
"latest_release": "v2022.08.18",
"released": "2022-08-18",
"days_since_release": 1447
}
]Zwei Zeilen ändern die engere Auswahl. Automatisch erhielt seine letzte getaggte Release-Version vor 361 Tagen, und im Standard-Branch gab es seit dem 15. Januar 2026 keinen Commit. Huginn erhielt vor 1447 Tagen eine getaggte Release-Version, sein Commit-Log ist in diesem Monat jedoch aktiv. Das ist das entgegengesetzte Muster: Der Code wird weiterentwickelt, aber es gibt keine Releases. Wenn Sie die Software ausführen, verwenden Sie daher ein nicht getaggtes Image.
Prüfen Sie dies selbst, bevor Sie einem Vergleich vertrauen, auch diesem. Öffnen Sie auf GitHub die Releases-Seite des Projekts und anschließend die Commit-Liste seines Standard-Branches. Ein Projekt mit einer aktuellen Release-Version und einem ruhigen Commit-Log läuft nur noch weiter. Ein Projekt mit aktuellen Commits und seit Jahren ohne Release verlangt von Ihnen, Code auszuführen, für den niemand eine Version veröffentlicht hat.
Activepieces: die naheliegendste Alternative und MIT im Kern
Activepieces ist die direkte Alternative. Es bietet einen visuellen Builder mit Triggern und Schritten, die dort als Pieces bezeichnet werden. Laut README gibt es mehr als 280 davon. Jedes Piece wird außerdem als MCP-Server (Model Context Protocol) bereitgestellt, sodass ein LLM-Client (Large Language Model) dieselben Konnektoren als Tools aufrufen kann. Der Kern steht unter der MIT-Lizenz. Die beiden Verzeichnisse packages/ee/ und packages/server/api/src/app/ee unterliegen einer kommerziellen Lizenz. Für die Nutzung ihres Inhalts auf einem eigenen Server ist eine kostenpflichtige Vereinbarung erforderlich.
Lesen Sie diese Abgrenzung vor der Migration, weil sie weiter reicht als bei den meisten MIT-Projekten. Auf der Activepieces-Preisseite wird die Community Edition als „open source, free forever, with no cap on runs, users, or flows“ beschrieben. Agents und Chat, Projects, der API-Zugriff sowie die gesamte Verwaltungsebene liegen außerhalb dieser Edition. Dazu gehören Single Sign-on, Benutzerrollen, Audit-Logs, Secret Manager, Branding und Git-Synchronisierung. Die Community Edition ist somit eine vollständige Automatisierungs-Engine mit unbegrenzten Flows und Benutzern. Sie ist jedoch keine Plattform, die Sie über eine API steuern können. Wenn Sie Flows programmgesteuert erzeugen wollten, benötigen Sie dafür eine Lizenz.
Die Laufzeitarchitektur besteht aus einem App-Container, einem oder mehreren Worker-Containern, Postgres und Redis. AP_DB_TYPE=POSTGRES und AP_REDIS_TYPE=STANDALONE sind die Standardeinstellungen. Es gibt einen Modus mit nur einem Container, einer eingebetteten Datenbank und einer prozessinternen Queue (AP_DB_TYPE=PGLITE mit AP_REDIS_TYPE=MEMORY). In der Dokumentation heißt es, dieser Modus „ist nur für die persönliche Nutzung oder zum Testen vorgesehen“. Nehmen Sie diese Einschränkung wörtlich. Diese Modi können nicht mehr als eine Instanz ausführen. Wenn ihre Kapazität nicht mehr ausreicht, ist eine Migration erforderlich und kein zusätzlicher Schalter.
Windmill: Code zuerst, aber schwerer als erwartet
Windmill führt Skripte in Python, TypeScript, Go, Bash und SQL aus und setzt sie anschließend zu Flows zusammen. Wenn Ihre Automatisierungen größtenteils aus Code mit etwas verbindender Logik bestehen, passt Windmill besser als eine Node-Oberfläche.
Die Lizenz erfordert Aufmerksamkeit. Der Quellcode steht unter AGPLv3, wenn er ohne das Enterprise-Feature-Flag kompiliert wird. Die unter ghcr.io/windmill-labs/windmill veröffentlichten Images sind die Community Edition. Sie enthalten Code, der nicht Open Source ist, und dürfen innerhalb der Quotas kostenlos verwendet werden. Auf der Preisseite von Windmill sind diese Quotas mit 50 Benutzern, 3 Workspaces und 10 GiB Workspace-Objektspeicher bei unbegrenzten Ausführungen angegeben. Für eine Person oder ein kleines Team liegt diese Grenze weit entfernt. Die praktische Frage ist daher nicht die Quota. Entscheidend ist, dass das ausgeführte Binary nicht der AGPL-Build ist.
Das Gewicht ist ein weiterer Faktor. Windmills eigenes docker-compose.yml liefert eine Postgres-16-Datenbank, einen Server, drei standardmäßige Worker mit jeweils einem 2048M-Speicherlimit, einen nativen Worker und einen Caddy-Proxy aus. Als dokumentierte Faustregel gilt: „1 Worker pro 1vCPU und 1-2 GB RAM“. Auf einem kleinen System können Sie die Anzahl der Replikate reduzieren. Sie sollten sich bewusst sein, dass Sie dies tun, weil die Worker Ihre Jobs tatsächlich ausführen.
Die KI-Funktionen von Windmill sind als Hilfe zur Build-Zeit dokumentiert: Codegenerierung, Flow-Erstellung, Chat und das Ausfüllen von Formularen. Zuerst müssen Sie in den Workspace-Einstellungen eine Modellanbieter-Ressource hinzufügen. Wenn Sie einen Agent-Schritt benötigen, der nach einem Zeitplan ausgeführt wird und Tools aufruft, ist der KI-Agent-Node von n8n weiterhin der direktere Weg. Einen KI-Agenten in n8n erstellen behandelt dieses Szenario.
Node-RED: die kleine Lösung ganz ohne Datenbank
Node-RED steht unter der Apache-2.0-Lizenz, der freizügigsten Lizenz in diesem Vergleich. Es besteht aus einem Node.js-Prozess mit einem /data-Volume. Kein Postgres. Kein Redis. Pinnen Sie es auf nodered/node-red:5.0.4, das dem aktuellen Release entspricht.
Node-RED entstand aus der Verdrahtung von IoT-Systemen (Internet of Things). Deshalb ist es eher ereignisorientiert als auf Konnektoren ausgerichtet. Nodes für Dienste von Drittanbietern stammen aus der Community-Bibliothek und unterscheiden sich in ihrer Qualität. Das ist der Kompromiss für den geringen Ressourcenbedarf. Einen nativen Schritt für AI-Agenten gibt es nicht. Für einen kleinen VPS, der Webhooks und Message-Queue-Verkehr verarbeitet, ist Node-RED hier die ressourcenschonendste funktionierende Lösung. Der Start dauert nur wenige Sekunden.
Huginn und Automatisch: zuerst das Commit-Log prüfen
Huginn steht unter der MIT-Lizenz, ist in Ruby on Rails geschrieben und benötigt MySQL oder PostgreSQL. Das System arbeitet mit Agents, die eine Quelle überwachen und Events auslösen. Dieses Modell unterscheidet sich von einer Flow-Oberfläche. Eine LLM-Integration gibt es nicht. Der Code erhält weiterhin Commits, aber das letzte getaggte Release stammt aus August 2022. Beim Betrieb verwenden Sie daher das ghcr.io/huginn/huginn-Image, das aus dem Standard-Branch erstellt wurde. Wählen Sie Huginn, wenn das Agent-Modell zu Ihrem Problem passt, nicht als allgemeinen Ersatz für n8n.
Automatisch steht mit Ausnahme seiner .ee-Dateien unter der AGPL-3.0-Lizenz. Es wirkt wie eine einfachere Variante von n8n: Postgres, Redis und ein kleines Verzeichnis von Anwendungen. Es ist das Tool, das Tutorials für eine einzelne Bereitstellung weiterhin häufig empfehlen. Die Release-Historie spricht dafür, abzuwarten. Ein Jahr ohne Release und ein halbes Jahr ohne Commit sind kein Grund zur Panik, wenn Sie Automatisch bereits betreiben. Sie sind jedoch ein Grund, keine neue Produktionsbereitstellung darauf aufzubauen.
Was ein Activepieces-Stack tatsächlich an RAM benötigt
Die im Leerlauf und unter Last gemessene Speichernutzung kann niemand für Sie pauschal angeben. Sie hängt von Ihren eigenen Flows und der darin verarbeiteten Datenmenge ab. Verfügbar ist jedoch die Budgetempfehlung des jeweiligen Anbieters. Activepieces dokumentiert die folgende Größenordnung. Der Satz daneben ist wichtiger als die Zahlen: „Ein Worker mit Concurrency 1 ist während der gesamten Laufzeit eines Flows belegt (bis zu 10 min). Dimensionieren Sie daher nach gleichzeitig laufenden Flows und nicht nach der Trigger-Rate.“
The data behind this chart
[
{
"label": "App container",
"vcpu": 1,
"ram_gb": 1
},
{
"label": "Worker (each)",
"vcpu": 0.5,
"ram_gb": 1
},
{
"label": "Postgres",
"vcpu": 2,
"ram_gb": 4
},
{
"label": "Redis",
"vcpu": 1,
"ram_gb": 1
}
]Ein Worker benötigt 0.5 vCPU und 1 GB RAM und führt immer genau einen Flow gleichzeitig aus. Für Postgres sind 4 GB RAM vorgesehen. Die Compose-Datei des Projekts startet standardmäßig fünf Worker-Replikate. Nach dieser Dimensionierung benötigt der Stack im Repository daher ungefähr 11 GB, bevor Ihre Flows nennenswerte Arbeit ausführen. Tutorials für einzelne Tools übernehmen diese Datei und bezeichnen die Bereitstellung als klein.
Auf einer VPS mit 4 GB RAM starten Sie zwei Worker, betreiben Postgres im selben Compose-Projekt und messen die tatsächliche Nutzung. docker stats --no-stream gibt für jeden Container eine Zeile mit dem tatsächlich residenten Speicher aus. Das ist aussagekräftiger als jede Angabe eines Anbieters oder Blogs. Wenn der Speicherverbrauch eines Containers unbeschränkt wächst, begrenzen Sie ihn. Speicherlimits in Docker Compose zeigt die entsprechende Syntax.
Eine Compose-Datei für Activepieces auf einem VPS
Fixieren Sie das Tag. latest bedeutet, dass das nächste docker compose pull das Datenbankschema ohne Vorwarnung ändern kann. Die Version 0.86.3 ist die Version, die das Projekt am 4 August 2026 in der eigenen Compose-Datei fixiert.
Erzeugen Sie zuerst die beiden Secrets mit den von der Dokumentation vorgegebenen Längen.
openssl rand -hex 16 # AP_ENCRYPTION_KEY, encrypts stored connections
openssl rand -hex 32 # AP_JWT_SECRET, signs session tokensLegen Sie .env neben der Compose-Datei an:
AP_ENGINE_EXECUTABLE_PATH=dist/packages/engine/main.js
AP_ENVIRONMENT=prod
AP_FRONTEND_URL=https://automation.example.com
AP_ENCRYPTION_KEY=REPLACE_WITH_HEX_16
AP_JWT_SECRET=REPLACE_WITH_HEX_32
AP_DB_TYPE=POSTGRES
AP_POSTGRES_DATABASE=activepieces
AP_POSTGRES_HOST=postgres
AP_POSTGRES_PORT=5432
AP_POSTGRES_USERNAME=postgres
AP_POSTGRES_PASSWORD=REPLACE_WITH_A_LONG_RANDOM_PASSWORD
AP_REDIS_TYPE=STANDALONE
AP_REDIS_HOST=redis
AP_REDIS_PORT=6379
AP_EXECUTION_MODE=UNSANDBOXED
AP_TELEMETRY_ENABLED=falseAP_FRONTEND_URL muss die öffentliche HTTPS-Adresse sein, weil Activepieces sonst beim Erstellen von Webhook-URLs versucht, Ihre öffentliche IP-Adresse zu verwenden. Jeder Webhook, den Sie an einen Drittanbieter übergeben, wird aus diesem Wert erstellt. Wenn er weiterhin auf localhost zeigt, erreicht die URL, die Sie in einen anderen Dienst einfügen, Ihren Server nicht.
services:
app:
image: ghcr.io/activepieces/activepieces:0.86.3
restart: unless-stopped
ports:
- '127.0.0.1:8080:80'
depends_on:
- postgres
- redis
env_file: .env
environment:
- AP_CONTAINER_TYPE=APP
volumes:
- ./cache:/usr/src/app/cache
worker:
image: ghcr.io/activepieces/activepieces:0.86.3
restart: unless-stopped
depends_on:
- app
env_file: .env
environment:
- AP_CONTAINER_TYPE=WORKER
deploy:
replicas: 2
volumes:
- ./cache:/usr/src/app/cache
postgres:
image: pgvector/pgvector:0.8.0-pg14
restart: unless-stopped
env_file: .env
environment:
- POSTGRES_DB=${AP_POSTGRES_DATABASE}
- POSTGRES_USER=${AP_POSTGRES_USERNAME}
- POSTGRES_PASSWORD=${AP_POSTGRES_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
redis:
image: redis:7.0.7
restart: unless-stopped
volumes:
- redis_data:/data
volumes:
postgres_data:
redis_data:Diese Datei entspricht der Compose-Datei des Projekts, enthält aber vier Änderungen: Die Anzahl der Worker sinkt von fünf auf zwei, der veröffentlichte Port wird statt an jedes Interface an 127.0.0.1 gebunden, die festen Containernamen entfallen, weil ein Service mit Replikaten diese nicht verwenden kann, und der explizite Netzwerkblock entfällt, weil Compose ohnehin ein Netzwerk erstellt.
docker compose up -d
docker compose psJeder Service sollte Up anzeigen, darunter zwei worker-Container. Ein Container, der in einer Neustartschleife läuft, gibt den Grund in docker compose logs worker aus. Lesen Sie diese Information, bevor Sie etwas ändern. Durch die Portbindung ist die Anwendung von außen nicht erreichbar, bis Sie einen Reverse Proxy mit TLS (Transport Layer Security) davorschalten. Das wird unter Traefik vor mehreren Compose-Anwendungen betreiben beschrieben. Setzen Sie .env auf den Modus 600 und nehmen Sie die Datei nicht in git auf, wie unter Secrets in Compose-Env-Dateien verwalten beschrieben.
Das Backup, das jeder Leitfaden auslässt
Alle diese Tools verschlüsseln gespeicherte Zugangsdaten. Ein Datenbank-Dump allein ist daher kein Backup. Sie benötigen den Dump und den Schlüssel, mit dem er entschlüsselt wird. Die Falle besteht darin, dass die meisten dieser Tools diesen Schlüssel automatisch und unauffällig erzeugen und an einem Ort speichern, den Sie nicht sichern.
n8n ist das deutlichste Beispiel. Wenn Sie N8N_ENCRYPTION_KEY nie festlegen, „erstellt n8n beim ersten Start automatisch einen zufälligen Verschlüsselungsschlüssel und speichert ihn im Ordner ~/.n8n“. Anschließend verwendet n8n diesen Schlüssel, um Zugangsdaten zu verschlüsseln, bevor sie in die Datenbank gelangen. Sie sichern Postgres, stellen den Dump in einem neuen Container mit einem neuen Volume wieder her, und die Workflows sind wieder vorhanden, während jede Zugangsdatenverschlüsselung aus unlesbarem Chiffretext besteht. Legen Sie die Variable ausdrücklich fest. Verwenden Sie denselben Wert auf jedem Worker, wenn Sie den Queue-Modus einsetzen.
Node-RED funktioniert nach demselben Prinzip. Die Zugangsdaten liegen in einer eigenen verschlüsselten Datei. Der Schlüssel ist credentialSecret in settings.js. Wenn Sie keinen Schlüssel festlegen, erzeugt die Laufzeitumgebung einen zufälligen Schlüssel und speichert ihn unter _credentialSecret in ihrem eigenen Einstellungsbereich innerhalb von /data. Die standardmäßige Einstellungsdatei nennt die Folge: „Sobald Sie diese Eigenschaft festlegen, dürfen Sie sie nicht mehr ändern. Andernfalls kann node-red Ihre vorhandenen Zugangsdaten nicht mehr entschlüsseln, und sie gehen verloren.“ Sichern Sie das gesamte /data-Volume, nicht nur die Flows-Datei.
Activepieces speichert AP_ENCRYPTION_KEY in Ihrem .env. Dort ist der Wert als „32-stelliger (16-Byte) hexadezimaler Schlüssel zur Verschlüsselung von Verbindungen“ dokumentiert. Huginn speichert APP_SECRET_TOKEN in seiner Umgebung. Automatisch verwendet drei solcher Werte: ENCRYPTION_KEY, WEBHOOK_SECRET_KEY und APP_SECRET_KEY. In jedem Fall liegt das Geheimnis in einer Umgebungsdatei. Daher gehört die Umgebungsdatei zum Backup.
Windmill ist die erwähnenswerte Ausnahme. Die Variablen und Geheimnisse werden mit einem symmetrischen, arbeitsbereichsspezifischen Schlüssel verschlüsselt. Windmill speichert diesen Schlüssel in der eigenen Datenbank. Ein einzelner Postgres-Dump enthält daher beide Bestandteile. Das vereinfacht Wiederherstellungen. Gleichzeitig bedeutet es, dass der Dump allein ausreicht, um jedes Geheimnis zu lesen. Schützen Sie die Datei daher so, als würde sie die Geheimnisse selbst enthalten.
Für den obigen Activepieces-Stack besteht das Backup aus zwei Dateien:
cd /srv/activepieces
docker compose exec -T postgres pg_dump -U postgres -Fc activepieces > "ap-$(date +%F).dump"
cp .env "ap-env-$(date +%F).bak"
chmod 600 ap-*.dump ap-env-*.bakPrüfen Sie anschließend, ob das Backup funktioniert. Ein nicht getestetes Backup ist nur eine Vermutung. Stellen Sie den Dump in einem temporären Compose-Projekt wieder her, das absichtlich ein anderes AP_ENCRYPTION_KEY verwendet. Führen Sie anschließend einen Flow aus, der eine gespeicherte Verbindung verwendet. Er schlägt fehl, weil der Chiffretext in der Datenbank mit dem anderen Schlüssel erzeugt wurde. Wiederholen Sie die Wiederherstellung mit dem echten Schlüssel aus .env. Dann läuft derselbe Flow. Diese beiden Durchläufe sind der einzige Nachweis, dass Ihr Backup tatsächlich ein Backup ist. Übertragen Sie beide Dateien regelmäßig vom Server auf ein anderes System, etwa mit restic-Backups von einem VPS, denn ein Backup auf derselben Festplatte geht zusammen mit der Festplatte verloren.
Wann Sie bei n8n bleiben sollten
Bleiben Sie bei n8n, wenn die Arbeit auf Ihr eigenes Unternehmen beschränkt ist. Genau das erlaubt die Sustainable Use License. Bleiben Sie auch, wenn Sie auf eine große Integrationsbreite angewiesen sind. n8n unterstützt nach eigenen Angaben mehr als 1500 Integrationen. Hinzu kommt der auf LangChain basierende AI Agent Node. Für sofort nutzbare Agent-Schritte bietet keine der anderen hier betrachteten Lösungen etwas Vergleichbares. n8n-Workflows mit Claude steuern zeigt, wie das in der Praxis aussieht.
Wechseln Sie zu Activepieces, wenn Sie für den Automatisierungskern eine freizügige Lizenz und einen Stack möchten, den Sie vollständig nachvollziehen können. Wechseln Sie zu Windmill, wenn Ihre Flows im Wesentlichen Code mit einer Benutzeroberfläche sind. Wechseln Sie zu Node-RED, wenn der Server klein ist und die Verarbeitung ereignisorientiert erfolgt. Wechseln Sie nicht, weil ein Benchmark n8n als schwergewichtig bezeichnet. Messen Sie zuerst Ihre eigene Instanz. Lesen Sie anschließend was sich 2026 für Self-Hosting lohnt, und treffen Sie dann eine Entscheidung. Eine zweite Migration verursacht genauso viel Aufwand wie die erste.
FAQ
Welche selbst gehostete n8n-Alternative kommt n8n am nächsten?
Activepieces. Das Konzept ist identisch: Ein visueller Builder startet bei einem Trigger einen Flow, und jeder Schritt ruft einen Dienst auf. Dafür steht ein umfangreicher Katalog von Konnektoren zur Verfügung. Der Kern ist unter der MIT-Lizenz veröffentlicht. Activepieces läuft unter Docker mit Postgres und Redis. Die Pieces können außerdem als MCP-Server für LLM-Clients dienen. Der wichtige Unterschied ist, dass API-Zugriff und Agent-Funktionen in den kommerziellen Enterprise-Verzeichnissen liegen. Eine Community-Edition-Instanz wird daher über die Weboberfläche bedient und nicht programmgesteuert.
Ist Activepieces wirklich Open Source?
Der Kern steht unter der MIT-Lizenz. Zwei Verzeichnisse, packages/ee/ und packages/server/api/src/app/ee, sind kommerziell lizenziert. Für die Nutzung dieser Funktionen auf Ihrem eigenen Server benötigen Sie eine kostenpflichtige Lizenz. Laut der Preisseite des Anbieters gehören Agents und Chat, Projects, API-Zugriff, Single Sign-On, Benutzerrollen, Audit-Logs, Secret-Manager, Branding und Git-Synchronisierung nicht zur Community Edition. Die Anzahl der Runs, Benutzer und Flows ist dagegen nicht begrenzt. Activepieces ist daher für das Erstellen und Ausführen von Automatisierungen tatsächlich Open Source. Für die Team- und Governance-Ebene gilt das jedoch nicht.
Wie viel RAM benötigt Activepieces auf einem VPS?
Activepieces dokumentiert 0.5 vCPU und 1 GB für jeden Worker, 1 vCPU und 1 GB für den App-Container, 4 GB für Postgres sowie 1 GB für Redis. Ein Worker verarbeitet jeweils einen Flow und bleibt für die gesamte Laufzeit dieses Flows belegt. Die Dimensionierung richtet sich daher nach der maximalen Anzahl gleichzeitig laufender Flows und nicht danach, wie häufig Trigger ausgelöst werden. Die Compose-Datei im Repository startet fünf Worker. Das entspricht ungefähr 11 GB gemäß der veröffentlichten Dimensionierung. Zwei Worker auf einem VPS mit 4 GB sind ein sinnvoller Ausgangspunkt. docker stats --no-stream zeigt Ihnen während des Betriebs die tatsächlichen Werte für Ihre Flows.
Was muss ich sichern, damit eine Wiederherstellung tatsächlich funktioniert?
Das Datenbank-Backup und den Verschlüsselungsschlüssel müssen Sie gemeinsam sichern. Bei Activepieces ist das ein pg_dump der activepieces-Datenbank sowie die .env-Datei mit AP_ENCRYPTION_KEY. Bei n8n benötigen Sie die Datenbank und N8N_ENCRYPTION_KEY. n8n erstellt diese Datei für Sie im Verzeichnis ~/.n8n, wenn Sie keinen eigenen Wert festgelegt haben. Bei Node-RED sichern Sie das gesamte /data-Volume. Die Datei mit den Zugangsdaten und der Schlüssel zu ihrer Entschlüsselung liegen beide dort. Windmill ist die Ausnahme: Der Workspace-Schlüssel liegt in der zugehörigen Postgres-Datenbank. Das Backup enthält daher alle erforderlichen Daten und muss genauso geschützt werden wie die Secrets selbst.
Kann ich meine n8n-Workflows in ein anderes Tool importieren?
Nein. Diese Projekte importieren und exportieren ihre eigenen Flow-Formate und nicht das Format von n8n. Bei einer Migration müssen Sie jeden Flow im neuen Builder neu erstellen und jede Zugangsdaten-Konfiguration anhand des ursprünglichen Dienstes erneut anlegen. Dieser Aufwand verursacht die eigentlichen Kosten eines Wechsels. Zählen Sie daher Ihre Flows, bevor Sie sich entscheiden. Zwölf Flows lassen sich an einem Nachmittag neu erstellen. Zweihundert Flows sind ein eigenes Projekt. In der Regel ist es günstiger, den Speicherverbrauch von n8n mit dem Queue-Modus und Postgres zu beheben, als alle Flows neu zu erstellen.