−25%

na Windows przy płatności rocznej, do 31.10. Do planów

EQVPS
Zacznij

VPS dla Activepieces: własna automatyzacja

Activepieces, otwarty kreator automatyzacji, na własnym serwerze: bez opłat za każde zadanie, webhooki na Twojej domenie. Sprawdzona instalacja i pułapka z URL.

Chmurowe usługi automatyzacji liczą za każde zadanie, a licznik kręci się nawet przy czymś, co trudno nazwać pracą. Przepływ, który co pięć minut sprawdza kanał, to 8640 uruchomień miesięcznie, zanim zrobi cokolwiek pożytecznego. Uruchom ten sam przepływ na własnym serwerze, a rachunkiem będzie sam serwer.

Activepieces to otwarty kreator automatyzacji: wyzwalacze, kroki, rozgałęzienia, kilkaset gotowych integracji i kroki z kodem, gdy gotowe nie wystarczają. Edycja community ma licencję MIT i spokojnie działa na jednym małym serwerze z Docker Compose.

Jaki plan

Zainstalowaliśmy go na serwerze testowym i zmierzyliśmy. Standardowy plik compose uruchamia aplikację i pięć workerów: razem z Postgres i Redis około 2,6–3 GB RAM. Z jednym workerem spada to do około 1,6 GB.

Co uruchamiaszPlan
Kilka osobistych przepływów, jeden workerMicro-IP: 2 vCPU, 2 GB, 25 GB ($10/mies.), plus swap
Standardowa konfiguracja: pięć workerów, przepływy zespołu, webhookiSmall-IP: 4 vCPU, 4 GB, 35 GB ($16/mies.)
Wiele uruchomień naraz, ciężkie kroki z kodemMedium-IP: 6 vCPU, 6 GB, 45 GB ($20/mies.)

Weź plan z własnym IPv4. Webhooki to główny powód, by trzymać to u siebie, a usługi, które je wywołują, muszą dosięgnąć portów 80 i 443; na planach NAT z zewnątrz dostępny jest tylko port SSH. Lokalizacje to Niemcy i Finlandia; dostępność widać przy zamówieniu. Możesz zapłacić kryptowalutą, bez KYC.

Instalacja

Najpierw skieruj domenę — powiedzmy flows.example.com — na serwer. Potem jako root na Ubuntu 24.04 lub Debianie 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 kopiuje .env.example do .env i wpisuje losowe sekrety. Przed pierwszym uruchomieniem zmień dwie linie w .env i jedną w pliku compose:

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

Liczy się pierwsza linia. AP_FRONTEND_URL służy nie tylko do linków w interfejsie: przez ten adres workery łączą się z aplikacją. Zostaw http://localhost:8080, a każdy kontener workera będzie szukał aplikacji w sobie, nie znajdzie jej i Twoje przepływy nigdy się nie opublikują. Dokładnie na to trafiliśmy: „Socket.IO connection error” w logach workera, zawieszona publikacja i webhooki odpowiadające 404. Z prawdziwą domeną ten sam przepływ się opublikował, a webhook zadziałał.

sed na docker-compose.yml zostawia port 8080 na localhost. Porty publikowane przez Dockera omijają ufw, więc bez tego aplikacja byłaby otwarta na gołym porcie obok Twojego HTTPS.

Na Micro-IP zejdź też do jednego workera:

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

Teraz HTTPS i 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

Odczekaj pół minuty, otwórz https://flows.example.com i od razu załóż konto. Kto zarejestruje się pierwszy, ten jest właścicielem platformy; potem rejestracja jest wyłącznie na zaproszenie.

Sprawdź, czy webhooki działają

Utwórz przepływ z wyzwalaczem Webhook (Catch Webhook), dodaj dowolny krok i opublikuj go. W panelu wyzwalacza będzie URL. Wyślij na niego testowe zdarzenie:

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

Powinno przyjść 200, a uruchomienie pojawi się w Runs jako udane. Jeśli zamiast tego dostaniesz 404, wróć i sprawdź AP_FRONTEND_URL.

Na co dzień

  • Aktualizacje. Plik compose przypina dokładną wersję (w chwili pisania 0.92.2). Zmień tag w docker-compose.yml, potem docker compose -p activepieces pull && docker compose -p activepieces up -d. Najpierw przejrzyj release notes; narzędzia do automatyzacji uwielbiają zmieniać nazwy.
  • Kopie zapasowe. Przepływy, połączenia i historia uruchomień leżą w wolumenie Postgres. Rób zrzut według harmonogramu i trzymaj kopię poza serwerem — w połączeniach są Twoje tokeny API do innych usług.
  • Kroki z kodem nie działają w sandboksie w tej konfiguracji (AP_EXECUTION_MODE=UNSANDBOXED). To Twój serwer i Twoje przepływy, więc jest to do przyjęcia. Przestaje być w chwili, gdy pozwalasz budować przepływy osobom, którym nie ufasz.

Jeśli znasz już n8n, idea jest ta sama — zobacz VPS dla n8n. Wybierz edytor, w którym łatwiej Ci myśleć; oba dobrze czują się na tych samych planach.

Powiązane

Gotowy na wdrożenie? Płać kryptowalutą, bez KYC — online w około minutę.

Wdróż teraz →

FAQ

Ile RAM potrzebuje Activepieces?

Standardowy docker-compose.yml uruchamia aplikację i pięć workerów; na naszym serwerze testowym razem z Postgres i Redis dało to około 2,6–3 GB. Z jednym workerem — około 1,6 GB. Small-IP (4 GB) uciągnie standardową konfigurację z zapasem; Micro-IP (2 GB) działa tylko z jednym workerem i plikiem swap.

Przepływ się nie publikuje, a webhook odpowiada 404. Co jest nie tak?

Sprawdź AP_FRONTEND_URL. Workery łączą się z aplikacją przez ten adres, a jeśli został tam http://localhost:8080, to „localhost” w kontenerze workera oznacza samego workera. Nie mogą się połączyć, publikacja wisi, webhooki zwracają 404. Wpisz swoją prawdziwą domenę z https:// przed pierwszym uruchomieniem.

Czy potrzebuję własnego adresu IP?

Tak, jeśli korzystasz z webhooków — a korzysta prawie każdy. Usługi wywołujące Twoje przepływy muszą dosięgnąć portów 80 i 443 na Twojej domenie, a plan NAT przyjmuje z zewnątrz tylko Twój port SSH.

Czy każdy może się zarejestrować na mojej instancji?

Tylko pierwsza osoba. W naszym teście pierwsza rejestracja przeszła, a druga dostała „User is not invited to the platform”: po pierwszym koncie rejestracja jest wyłącznie na zaproszenie. Załóż więc konto od razu, gdy strona wstanie, zanim ktoś inny na nią trafi.

Czy kroki z kodem są izolowane?

Domyślnie nie: konfiguracja compose uruchamia je z AP_EXECUTION_MODE=UNSANDBOXED, bezpośrednio w workerze. To w porządku, dopóki przepływy budujesz Ty i osoby, którym ufasz. Nie dawaj obcym dostępu do edytora na takiej instalacji.

Komentarze

Brak komentarzy. Bądź pierwszy.

Zostaw komentarz

Komentarze są moderowane przed pojawieniem się.