Облачните услуги за автоматизация таксуват всяка задача, а броячът се върти дори за неща, които трудно бихте нарекли работа. Поток, който на всеки пет минути проверява емисия, прави 8640 изпълнения на месец, преди да е свършил нещо полезно. Пуснете същия поток на свой сървър — и ще плащате само за сървъра.
Activepieces е отворен конструктор на автоматизации: тригери, стъпки, разклонения, няколкостотин готови интеграции и стъпки с код, когато готовите не стигат. Community версията е под лиценз MIT и си живее спокойно на един малък сървър с Docker Compose.
Кой план
Сложихме го на тестов сървър и измерихме. Стандартният compose файл пуска приложението и пет worker-а: заедно с Postgres и Redis излизат около 2,6–3 GB RAM. С един worker — около 1,6 GB.
| Какво пускате | План |
|---|---|
| Няколко лични потока, един worker | Micro-IP: 2 vCPU, 2 GB, 25 GB ($10/месец), плюс swap |
| Стандартната схема: пет worker-а, потоци на екипа, уебхукове | Small-IP: 4 vCPU, 4 GB, 35 GB ($16/месец) |
| Много изпълнения едновременно, тежки стъпки с код | Medium-IP: 6 vCPU, 6 GB, 45 GB ($20/месец) |
Вземете план със собствен IPv4. Уебхуковете са главната причина да държите това при себе си, а услугите, които ги викат, трябва да стигат до портове 80 и 443; на плановете с NAT отвън е достъпен само SSH портът. Локациите са Германия и Финландия, наличността се вижда при поръчка. Може да платите с крипто, KYC няма.
Инсталация
Първо насочете домейн към сървъра — да кажем flows.example.com. После като root на Ubuntu 24.04 или 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 копира .env.example в .env и попълва случайни тайни. Преди първото пускане сменете два реда в .env и един в 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
Важен е първият ред. AP_FRONTEND_URL не е само за връзките в интерфейса: през него worker-ите се свързват с приложението. Оставите ли http://localhost:8080, всеки контейнер на worker търси приложението в себе си, не го намира и потоците ви така и не се публикуват. Точно на това попаднахме: „Socket.IO connection error“ в логовете на worker-а, увиснала заявка за публикуване и уебхукове, които отговаряха 404. С истинския домейн същият поток се публикува и уебхукът сработи.
sed върху docker-compose.yml оставя порт 8080 на localhost. Портовете, публикувани от Docker, минават покрай ufw, така че без това приложението щеше да е отворено на гол порт до вашия HTTPS.
На Micro-IP оставете и само един worker:
sed -i 's/replicas: 5/replicas: 1/' docker-compose.yml
Сега HTTPS и пускане:
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
Изчакайте половин минута, отворете https://flows.example.com и веднага създайте акаунта си. Който се регистрира пръв, той е собственик на платформата; после регистрацията е само с покана.
Проверете, че уебхуковете работят
Създайте поток с тригер Webhook (Catch Webhook), добавете каквато и да е стъпка и го публикувайте. В панела на тригера ще има URL. Изпратете към него тестово събитие:
curl -X POST https://flows.example.com/api/v1/webhooks/YOUR_FLOW_ID \
-H 'content-type: application/json' \
-d '{"event":"payment.paid","amount":16}'
Трябва да дойде 200, а изпълнението ще се появи в Runs като успешно. Ако вместо това дойде 404 — върнете се и проверете AP_FRONTEND_URL.
Какво следва
- Обновления. Compose файлът фиксира точна версия (към момента на писане —
0.92.2). Сменете тага вdocker-compose.yml, послеdocker compose -p activepieces pull && docker compose -p activepieces up -d. Първо прегледайте release notes: инструментите за автоматизация обичат да преименуват неща. - Резервни копия. Потоците, връзките и историята на изпълненията са в тома на Postgres. Правете дъмп по график и пазете копието извън сървъра — във връзките са API токените ви за други услуги.
- Стъпките с код не са изолирани в тази схема (
AP_EXECUTION_MODE=UNSANDBOXED). Сървърът е ваш и потоците са ваши, така че това е приемливо. Престава да бъде в мига, в който пуснете да сглобяват потоци хора, на които нямате доверие.
Ако вече познавате n8n, идеята е същата — вижте VPS за n8n. Изберете редактора, в който ви е по-лесно да мислите; и двата се чувстват добре на същите планове.
Свързано
- VPS за n8n — другият голям инструмент за автоматизация на собствен сървър
- Няколко услуги на един VPS — Activepieces до вашето приложение и табло, един IP
- VPS за Docker
- Как да добавите swap на VPS
- Как да настроите защитна стена ufw
Коментари
Още няма коментари. Бъди първият.