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 betreiben | Tarif |
|---|---|
| Ein paar persönliche Flows, ein Worker | Micro-IP – 2 vCPU, 2 GB, 25 GB ($10/Monat), plus Swap |
| Die Standardkonfiguration: fünf Worker, Team-Flows, Webhooks | Small-IP – 4 vCPU, 4 GB, 35 GB ($16/Monat) |
| Viele parallele Läufe, schwere Code-Schritte | Medium-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 indocker-compose.yml, danndocker 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
- VPS für n8n – das andere große selbst gehostete Automatisierungstool
- Mehrere Dienste auf einem VPS – Activepieces neben Ihrer App und einem Dashboard, eine IP
- VPS für Docker
- Swap auf einem VPS einrichten
- Eine ufw-Firewall konfigurieren
Kommentare
Noch keine Kommentare. Sei der Erste.