Gehoste automatiseringsdiensten rekenen per taak, en de meter loopt ook bij dingen die eigenlijk geen werk zijn. Een flow die elke vijf minuten een feed controleert, komt op 8.640 runs per maand voordat hij ook maar iets nuttigs heeft gedaan. Draai dezelfde flow op je eigen server en de rekening is de server.
Activepieces is een opensource-bouwer voor automatiseringen: triggers, stappen, vertakkingen, een paar honderd kant-en-klare integraties en codestappen voor als die niet volstaan. De community-editie valt onder de MIT-licentie en draait prima op één kleine server met Docker Compose.
Welk plan
We installeerden het op een testserver en maten. Het standaard compose-bestand start de app en vijf workers: samen met Postgres en Redis zo'n 2,6–3 GB RAM. Met één worker zakt het naar ongeveer 1,6 GB.
| Wat je draait | Plan |
|---|---|
| Een paar persoonlijke flows, één worker | Micro-IP: 2 vCPU, 2 GB, 25 GB ($10/mnd), plus swap |
| De standaardopzet: vijf workers, teamflows, webhooks | Small-IP: 4 vCPU, 4 GB, 35 GB ($16/mnd) |
| Veel runs tegelijk, zware codestappen | Medium-IP: 6 vCPU, 6 GB, 45 GB ($20/mnd) |
Neem een plan met een eigen IPv4. Webhooks zijn de belangrijkste reden om dit zelf te hosten, en de diensten die ze aanroepen moeten poort 80 en 443 bereiken; op NAT-plannen is van buitenaf alleen de SSH-poort bereikbaar. De locaties zijn Duitsland en Finland; de beschikbaarheid zie je bij het bestellen. Betalen met crypto kan, zonder KYC.
Installatie
Laat eerst een domein, bijvoorbeeld flows.example.com, naar de server wijzen. Dan, als root op Ubuntu 24.04 of 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 kopieert .env.example naar .env en vult willekeurige geheimen in. Pas vóór de eerste start twee regels in .env en één in het compose-bestand aan:
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
De eerste regel is degene die ertoe doet. AP_FRONTEND_URL is niet alleen voor links in de interface: de workers verbinden via dat adres met de app. Laat je het op http://localhost:8080 staan, dan zoekt elke workercontainer de app in zichzelf, vindt hem niet, en je flows worden nooit gepubliceerd. Precies dat overkwam ons: „Socket.IO connection error” in de workerlogs, een publicatie die bleef hangen en webhooks die 404 gaven. Met het echte domein werd dezelfde flow gepubliceerd en liep de webhook.
De sed op docker-compose.yml houdt poort 8080 op localhost. Door Docker gepubliceerde poorten gaan langs ufw heen; zonder deze regel zou de app naast je HTTPS open staan op een kale poort.
Ga op Micro-IP ook terug naar één worker:
sed -i 's/replicas: 5/replicas: 1/' docker-compose.yml
Nu HTTPS en de 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
Wacht een halve minuut, open https://flows.example.com en maak meteen je account aan. Wie zich als eerste aanmeldt, is eigenaar van het platform; daarna kan aanmelden alleen nog op uitnodiging.
Controleer of webhooks werken
Maak een flow met de trigger Webhook (Catch Webhook), voeg een willekeurige stap toe en publiceer hem. Het triggerpaneel toont de URL. Stuur er een testevent naartoe:
curl -X POST https://flows.example.com/api/v1/webhooks/YOUR_FLOW_ID \
-H 'content-type: application/json' \
-d '{"event":"payment.paid","amount":16}'
Je zou een 200 moeten krijgen, en de run verschijnt onder Runs als geslaagd. Krijg je in plaats daarvan 404, controleer dan opnieuw AP_FRONTEND_URL.
Voor daarna
- Updates. Het compose-bestand pint een exacte versie (
0.92.2op het moment van schrijven). Pas de tag indocker-compose.ymlaan en draai dandocker compose -p activepieces pull && docker compose -p activepieces up -d. Lees eerst even de release notes; automatiseringstools hernoemen graag dingen. - Back-ups. Flows, verbindingen en runhistorie staan in het Postgres-volume. Maak volgens een schema een dump en bewaar de kopie buiten de server: de verbindingen bevatten je API-tokens voor andere diensten.
- Codestappen draaien niet in een sandbox in deze opzet (
AP_EXECUTION_MODE=UNSANDBOXED). Het is jouw server en het zijn jouw flows, dus dat is acceptabel. Dat houdt op zodra je mensen die je niet vertrouwt flows laat bouwen.
Ken je n8n al, dan is het idee hetzelfde: zie VPS voor n8n. Kies de editor waarin je het makkelijkst denkt; beide draaien prima op dezelfde plannen.
Gerelateerd
- VPS voor n8n: de andere grote zelfgehoste automatiseringstool
- Meerdere diensten op één VPS: Activepieces naast je app en een dashboard, één IP
- VPS voor Docker
- Swap toevoegen op een VPS
- Een ufw-firewall configureren
Reacties
Nog geen reacties. Wees de eerste.