−25%

auf Windows bei Jahreszahlung, bis 31.10. Zu den Tarifen

EQVPS
Loslegen

VPS für Activepieces: Automatisierung selbst hosten

Activepieces, der Open-Source-Baukasten für Automatisierungen, auf dem eigenen Server: keine Abrechnung pro Task, Webhooks auf Ihrer Domain. Getestetes Setup.

Gehostete Automatisierungsdienste rechnen pro Task ab, und der Zähler läuft auch bei Dingen, die gar keine Arbeit sind. Ein Flow, der alle fünf Minuten einen Feed prüft, sind 8.640 Ausführungen im Monat, bevor er überhaupt etwas Nützliches getan hat. Lassen Sie denselben Flow auf dem eigenen Server laufen, und die Rechnung ist der Server.

Activepieces ist ein Open-Source-Baukasten für Automatisierungen: Trigger, Schritte, Verzweigungen, einige Hundert fertige Integrationen und Code-Schritte, wenn die fertigen nicht reichen. Die Community Edition steht unter MIT-Lizenz und läuft problemlos auf einem kleinen Server mit Docker Compose.

Welcher Tarif

Wir haben es auf einem Testserver installiert und gemessen. Die mitgelieferte Compose-Datei startet die App und fünf Worker: zusammen mit Postgres und Redis etwa 2,6–3 GB RAM. Mit nur einem Worker sind es rund 1,6 GB.

Was Sie betreibenTarif
Ein paar persönliche Flows, ein WorkerMicro-IP – 2 vCPU, 2 GB, 25 GB ($10/Monat), plus Swap
Die Standardkonfiguration: fünf Worker, Team-Flows, WebhooksSmall-IP – 4 vCPU, 4 GB, 35 GB ($16/Monat)
Viele parallele Läufe, schwere Code-SchritteMedium-IP – 6 vCPU, 6 GB, 45 GB ($20/Monat)

Nehmen Sie einen Tarif mit eigener IPv4. Webhooks sind der Hauptgrund, das selbst zu hosten, und die aufrufenden Dienste müssen die Ports 80 und 443 erreichen; bei NAT-Tarifen ist von außen nur der SSH-Port erreichbar. Standorte sind Deutschland und Finnland – die Verfügbarkeit sehen Sie bei der Bestellung. Bezahlen können Sie mit Krypto, ohne KYC.

Installation

Richten Sie zuerst eine Domain – etwa flows.example.com – auf den Server. Dann als root auf Ubuntu 24.04 oder Debian 12:

curl -fsSL https://get.docker.com | sh
git clone --depth 1 https://github.com/activepieces/activepieces.git
cd activepieces
sh tools/deploy.sh

deploy.sh kopiert .env.example nach .env und trägt zufällige Secrets ein. Ändern Sie vor dem ersten Start zwei Zeilen in .env und eine in der Compose-Datei:

sed -i 's|^AP_FRONTEND_URL=.*|AP_FRONTEND_URL=https://flows.example.com|; s|^AP_TELEMETRY_ENABLED=.*|AP_TELEMETRY_ENABLED=false|' .env
sed -i "s|- '8080:80'|- '127.0.0.1:8080:80'|" docker-compose.yml

Entscheidend ist die erste Zeile. AP_FRONTEND_URL dient nicht nur für Links in der Oberfläche: Die Worker verbinden sich darüber mit der App. Bleibt dort http://localhost:8080 stehen, sucht jeder Worker-Container die App in sich selbst, findet sie nicht, und Ihre Flows werden nie veröffentlicht. Genau das ist uns passiert: „Socket.IO connection error“ in den Worker-Logs, eine hängende Veröffentlichung und Webhooks mit 404. Mit der echten Domain wurde derselbe Flow veröffentlicht, und der Webhook lief.

Das sed auf docker-compose.yml hält Port 8080 auf localhost. Von Docker veröffentlichte Ports umgehen ufw; ohne diese Zeile wäre die App neben Ihrem HTTPS auf einem rohen Port offen.

Auf Micro-IP reduzieren Sie außerdem auf einen Worker:

sed -i 's/replicas: 5/replicas: 1/' docker-compose.yml

Jetzt HTTPS und der Start:

apt install -y caddy
cat > /etc/caddy/Caddyfile <<'EOF'
flows.example.com {
    reverse_proxy 127.0.0.1:8080
}
EOF
systemctl reload caddy
ufw allow 22/tcp && ufw allow 80/tcp && ufw allow 443/tcp && ufw enable
docker compose -p activepieces up -d

Warten Sie eine halbe Minute, öffnen Sie https://flows.example.com und legen Sie sofort Ihr Konto an. Wer sich zuerst registriert, besitzt die Plattform; danach geht es nur noch per Einladung.

Prüfen, ob Webhooks funktionieren

Legen Sie einen Flow mit dem Trigger Webhook (Catch Webhook) an, fügen Sie einen beliebigen Schritt hinzu und veröffentlichen Sie ihn. Im Trigger-Panel steht die URL. Schicken Sie ein Testereignis hin:

curl -X POST https://flows.example.com/api/v1/webhooks/YOUR_FLOW_ID \
  -H 'content-type: application/json' \
  -d '{"event":"payment.paid","amount":16}'

Sie sollten eine 200 bekommen, und der Lauf erscheint unter Runs als erfolgreich. Kommt stattdessen 404, prüfen Sie noch einmal AP_FRONTEND_URL.

Für den laufenden Betrieb

  • Updates. Die Compose-Datei pinnt eine exakte Version (beim Schreiben 0.92.2). Ändern Sie den Tag in docker-compose.yml, dann docker compose -p activepieces pull && docker compose -p activepieces up -d. Überfliegen Sie vorher die Release Notes; Automatisierungstools benennen gern Dinge um.
  • Backups. Flows, Verbindungen und Ausführungsverlauf liegen im Postgres-Volume. Erstellen Sie regelmäßig einen Dump und lagern Sie die Kopie außerhalb des Servers – die Verbindungen enthalten Ihre API-Tokens für andere Dienste.
  • Code-Schritte laufen nicht in einer Sandbox in diesem Setup (AP_EXECUTION_MODE=UNSANDBOXED). Es ist Ihr Server und es sind Ihre Flows, also ist das vertretbar. Das endet in dem Moment, in dem Leute Flows bauen, denen Sie nicht vertrauen.

Wenn Sie n8n schon kennen: Die Idee ist dieselbe – siehe VPS für n8n. Nehmen Sie den Editor, in dem Sie leichter denken; beide laufen gut auf denselben Tarifen.

Verwandte Themen

Bereit zum Bereitstellen? Zahle in Krypto, ohne KYC — online in etwa einer Minute.

Bereitstellen →

FAQ

Wie viel RAM braucht Activepieces?

Die mitgelieferte docker-compose.yml startet die App und fünf Worker; auf unserem Testserver kamen mit Postgres und Redis rund 2,6–3 GB zusammen. Mit einem Worker waren es etwa 1,6 GB. Small-IP (4 GB) fährt die Standardkonfiguration mit Reserve; Micro-IP (2 GB) klappt nur mit einem Worker und einer Swap-Datei.

Mein Flow lässt sich nicht veröffentlichen, der Webhook antwortet mit 404. Was ist los?

Prüfen Sie AP_FRONTEND_URL. Die Worker erreichen die App über diese Adresse, und steht dort noch http://localhost:8080, ist „localhost“ im Worker-Container der Worker selbst. Die Worker kommen nicht durch, das Veröffentlichen hängt, Webhooks liefern 404. Tragen Sie vor dem ersten Start Ihre echte https://-Domain ein.

Brauche ich eine eigene IP-Adresse?

Ja, wenn Sie Webhooks nutzen — und das tun die meisten. Dienste, die Ihre Flows aufrufen, müssen die Ports 80 und 443 Ihrer Domain erreichen, und ein NAT-Tarif nimmt von außen nur Ihren SSH-Port an.

Kann sich jeder auf meiner Instanz registrieren?

Nur die allererste Person. In unserem Test ging die erste Registrierung durch, die zweite bekam „User is not invited to the platform“: Nach dem ersten Konto geht es nur noch per Einladung. Legen Sie Ihr Konto also an, sobald die Seite läuft, bevor jemand anderes sie findet.

Laufen Code-Schritte isoliert?

Standardmäßig nicht: Das Compose-Setup führt Code-Schritte mit AP_EXECUTION_MODE=UNSANDBOXED direkt im Worker aus. Das ist in Ordnung, solange nur Sie und Leute, denen Sie vertrauen, Flows bauen. Fremden sollten Sie auf diesem Setup keinen Editor-Zugang geben.

Kommentare

Noch keine Kommentare. Sei der Erste.

Kommentar hinterlassen

Kommentare werden vor der Anzeige moderiert.