−25%

на годовую оплату Windows, до 31.10. К тарифам

EQVPS
Начать

VPS для Activepieces: своя автоматизация

Открытый конструктор автоматизаций Activepieces на своём сервере: без оплаты за каждую задачу, вебхуки на вашем домене. Проверенная установка и ловушка с URL.

Облачные сервисы автоматизаций берут деньги за каждую задачу, и счётчик крутится даже на том, что работой назвать трудно. Поток, который раз в пять минут проверяет ленту, — это 8 640 запусков в месяц ещё до того, как он сделал что-то полезное. Запустите тот же поток на своём сервере — и платить вы будете только за сервер.

Activepieces — открытый конструктор автоматизаций: триггеры, шаги, ветвления, несколько сотен готовых интеграций и шаги с кодом, когда готовых не хватает. Community-версия под лицензией MIT, и на одном небольшом сервере с Docker Compose она живёт спокойно.

Какой тариф

Мы поставили его на тестовый сервер и замерили. Стандартный compose-файл запускает приложение и пять воркеров: вместе с Postgres и Redis выходит около 2,6–3 ГБ RAM. С одним воркером — примерно 1,6 ГБ.

Что запускаетеТариф
Несколько личных потоков, один воркерMicro-IP — 2 vCPU, 2 ГБ, 25 ГБ ($10/мес), плюс swap
Стандартная схема: пять воркеров, потоки команды, вебхукиSmall-IP — 4 vCPU, 4 ГБ, 35 ГБ ($16/мес)
Много запусков одновременно, тяжёлые шаги с кодомMedium-IP — 6 vCPU, 6 ГБ, 45 ГБ ($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 нужен не только для ссылок в интерфейсе — через него к приложению подключаются воркеры. Оставите http://localhost:8080 — и каждый контейнер воркера будет искать приложение внутри себя, не найдёт, а потоки так и не опубликуются. Мы ровно на это и наткнулись: «Socket.IO connection error» в логах воркеров, зависший запрос на публикацию и 404 на вебхуках. С настоящим доменом тот же поток опубликовался, вебхук отработал.

sed по docker-compose.yml оставляет порт 8080 только на localhost. Опубликованные Docker порты проходят мимо ufw, и без этой правки приложение торчало бы на голом порту рядом с вашим HTTPS.

На Micro-IP заодно оставьте один воркер:

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), добавьте любой шаг и опубликуйте. Адрес покажет панель триггера. Отправьте на него тестовое событие:

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. Сначала пробегитесь по заметкам к релизу: инструменты автоматизации любят что-нибудь переименовывать.
  • Бэкапы. Потоки, подключения и история запусков лежат в томе Postgres. Делайте дамп по расписанию и храните копию не на этом сервере — в подключениях лежат ваши токены от других сервисов.
  • Шаги с кодом не изолированы в этой схеме (AP_EXECUTION_MODE=UNSANDBOXED). Сервер ваш и потоки ваши — терпимо. Перестаёт быть терпимым в тот момент, когда собирать потоки вы пускаете людей, которым не доверяете.

Если вы уже знаете n8n, идея та же — загляните в VPS для n8n. Выбирайте редактор, в котором вам проще думать; на одних и тех же тарифах оба чувствуют себя нормально.

По теме

Готовы развернуть? Оплата криптой, без KYC — сервер за минуту.

Развернуть →

Частые вопросы

Сколько памяти нужно Activepieces?

Стандартный docker-compose.yml запускает приложение и пять воркеров; на нашем тестовом сервере вместе с Postgres и Redis это заняло примерно 2,6–3 ГБ. С одним воркером — около 1,6 ГБ. Small-IP (4 ГБ) тянет стандартную схему с запасом; на Micro-IP (2 ГБ) — только с одним воркером и swap-файлом.

Поток не публикуется, а вебхук отвечает 404. Что не так?

Проверьте AP_FRONTEND_URL. Воркеры подключаются к приложению по этому адресу, и если там осталось http://localhost:8080, то «localhost» внутри контейнера воркера — это сам воркер. Подключиться не получается, публикация висит, вебхуки отвечают 404. Пропишите свой настоящий домен с https:// до первого запуска.

Нужен ли выделенный IP?

Да, если вы пользуетесь вебхуками — а пользуются почти все. Сервисы, которые вызывают ваши потоки, должны достучаться до портов 80 и 443 на вашем домене, а NAT-тариф снаружи принимает только ваш SSH-порт.

Может ли кто угодно зарегистрироваться на моём сервере?

Только самый первый. В нашем тесте первая регистрация прошла, а вторая получила «User is not invited to the platform»: после первого аккаунта вход только по приглашениям. Поэтому создайте свой аккаунт сразу, как поднимется сайт, — пока страницу не нашёл кто-то другой.

Шаги с кодом изолированы?

По умолчанию нет: в этой схеме они выполняются с AP_EXECUTION_MODE=UNSANDBOXED, прямо внутри воркера. Это нормально, пока потоки собираете вы и люди, которым вы доверяете. Давать доступ к редактору посторонним на такой установке не стоит.

Комментарии

Пока нет комментариев. Будьте первым.

Оставить комментарий

Комментарии проходят модерацию перед публикацией.