Удельта

Пошаговая инструкция · Самостоятельная установка

Как установить Activepieces на сервер для автоматизации команды

Пошаговая инструкция для самостоятельной установки. Установим Activepieces небольшими шагами: подготовим файлы, запустим сервисы, откроем защищённую панель и проверим одно письмо по расписанию. У каждого действия есть объяснение и признак, что можно двигаться дальше.

Установка автоматизации: модули формы, обработки и письма соединены с сервером и базой

Что подготовить до начала #

Мы установим бесплатную Community-редакцию Activepieces: она запускает сценарии вроде письма по расписанию. Веб-приложение показывает редактор, worker — отдельный исполнитель — выполняет действия. PostgreSQL хранит настройки, Redis передаёт задания исполнителю. Для первого знакомства достаточно одного сервера; резервирования при его поломке в этой схеме нет.

Подготовьте Ubuntu 26.04 LTS, Docker Engine, Compose v2, Nginx, git и openssl по общей инструкции подготовки сервера. Для первого сценария возьмите ориентировочно 4 vCPU и 8 ГБ памяти. Команды этой статьи выполняйте в SSH-терминале сервера от обычного пользователя с sudo; действия в браузере выполняйте на своём компьютере.

Создайте DNS-запись A для своего домена и IP сервера. Везде замените flows.example.com своим доменом, а 203.0.113.10 — внешним IP компьютера, с которого работаете. Подготовьте почтовый ящик и SMTP-реквизиты: адрес сервера, порт, логин, пароль и режим TLS. При ошибке остановитесь на текущем шаге и воспользуйтесь разделом диагностики в конце.

Настройка внешнего доступа использует обратный прокси Nginx и Certbot для Nginx. Приложение остаётся доступным на локальном порту; снаружи открыт его HTTPS-домен.

Шаг 1. Скачайте файлы Activepieces #

Сначала создадим каталог приложения и скачаем официальный релиз 0.92.0. Следующие команды выполняйте в этом каталоге; если закрыли SSH, вернитесь командой cd ~/apps/activepieces.

Скачать выбранный релиз
mkdir -p ~/apps
cd ~/apps
git clone --depth 1 --branch 0.92.0 https://github.com/activepieces/activepieces.git activepieces
cd activepieces

В каталоге появились docker-compose.yml, .env.example и tools/deploy.sh. Если git сообщает, что каталог уже существует, не удаляйте его: убедитесь, что это новая установка, а не рабочие данные.

Шаг 2. Создайте пароли и ключи #

Файл .env хранит настройки и секреты. Официальный скрипт заполнит случайные значения; запускайте его только один раз при новой установке. Потеря AP_ENCRYPTION_KEY мешает расшифровать сохранённые подключения даже при целой базе.

Создать защищённый файл настроек
umask 077
sh tools/deploy.sh
chmod 600 .env

Скрипт сообщает о создании .env. Не отправляйте файл в чат или Git. Повторный запуск скрипта заменит действующие ключи.

Шаг 3. Укажите адрес и режим приложения #

Откройте .env командой ниже. Существующие строки AP_FRONTEND_URL и AP_EXECUTION_MODE замените, остальные из второго блока добавьте, если их нет. Замените домен своим; не изменяйте уже созданные пароли. SANDBOX_CODE_ONLY включает изоляцию шага с кодом, но доступ к редактору всё равно давайте только доверенным сотрудникам.

Редактировать настройки
nano .env
Строки для .env
AP_FRONTEND_URL=https://flows.example.com
AP_EDITION=ce
AP_EXECUTION_MODE=SANDBOX_CODE_ONLY
AP_WORKER_CONCURRENCY=1
AP_QUEUE_UI_ENABLED=false
AP_FILE_STORAGE_LOCATION=DB

Сохраните в nano: Ctrl+O, Enter, затем Ctrl+X. В файле нет повторов этих параметров; домен ваш, AP_ENCRYPTION_KEY, AP_JWT_SECRET и AP_POSTGRES_PASSWORD заполнены.

Шаг 4. Оставьте одного исполнителя и закрытый порт #

Откройте docker-compose.yml. В app замените 8080:80 на 127.0.0.1:8080:80: интерфейс будет доступен локально, а снаружи — через Nginx. В worker замените replicas: 5 на replicas: 1 и добавьте под AP_CONTAINER_TYPE=WORKER строку - AP_FRONTEND_URL=http://app с тем же отступом. Worker будет связываться с приложением внутри Docker. В redis сразу под image добавьте command: [redis-server, --appendonly, 'yes', --appendfsync, everysec]: это сохраняет очередь на диск.

Изменить официальный Compose
nano docker-compose.yml

Сохраните Ctrl+O, Enter, Ctrl+X. Не меняйте имена сервисов и томов. Сохраняемый Redis уменьшает потерю очереди при сбое, но не заменяет резервную копию базы.

Шаг 5. Проверьте конфигурацию #

Docker Compose описывает несколько контейнеров одним файлом. Перед загрузкой образов проверим, что YAML и подстановка настроек не содержат ошибок.

Проверить Compose
docker compose config --quiet

При успехе команда ничего не печатает и возвращает приглашение терминала. Если указан номер строки или пустая переменная, исправьте именно её до продолжения.

Шаг 6. Скачайте образы #

Образ — готовый комплект приложения и его зависимостей. Команда загрузит выбранные версии Activepieces, PostgreSQL и Redis; это может занять несколько минут.

Загрузить образы
docker compose pull

Для сервисов нет ошибок скачивания. Если процесс закончился ошибкой сети, исправьте связь и повторите этот шаг.

Шаг 7. Запустите сервисы #

Запустим всё в фоне: контейнеры продолжат работать после закрытия SSH.

Запустить Activepieces
docker compose up -d

Команда сообщает о запуске app, worker, postgres и redis. Первый старт может занять время.

Шаг 8. Проверьте приложение на сервере #

Проверка локального адреса отделяет ошибки самого приложения от домена и HTTPS.

Проверить здоровье приложения
curl -f http://127.0.0.1:8080/api/v1/health

Запрос завершился без сообщения curl об ошибке. При отказе соединения подождите минуту и повторите; затем смотрите журналы, а не переходите к настройке домена.

Шаг 9. Сохраните сайт Nginx #

Установите Nginx и Certbot по подготовке Ubuntu, если ещё не установили. Откройте sudo nano /etc/nginx/sites-available/activepieces и вставьте файл ниже. Замените все домены своими. Замените 203.0.113.10 внешним IP своего рабочего компьютера: ограничение действует только на панель, а проверка сертификата остаётся доступной. Nginx передаёт приложению домен, адрес клиента и протокол; Upgrade и Connection сохраняют WebSocket. До получения сертификата условие $scheme блокирует обычные HTTP-запросы кодом 403, чтобы вход не происходил без шифрования.

Файл /etc/nginx/sites-available/activepieces
map $http_upgrade $activepieces_connection_upgrade {
    default upgrade;
    "" close;
}

server {
    listen 80;
    server_name flows.example.com;
    client_max_body_size 100m;
    location / {
        if ($scheme = http) { return 403; }
        allow 203.0.113.10;
        deny all;
        proxy_pass http://127.0.0.1:8080;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $activepieces_connection_upgrade;
        proxy_read_timeout 3600s;
        proxy_send_timeout 3600s;
        proxy_buffering off;
    }
}

Сохраните Ctrl+O, Enter, Ctrl+X. В файле пока нет путей к сертификатам: Nginx сможет проверить его до выпуска HTTPS.

Шаг 10. Подключите сайт и проверьте HTTP #

Ссылка подключает сохранённый сайт. nginx -t проверяет все настройки сервера; && разрешает перечитать их только при успешной проверке. curl проверяет ответ для вашего домена. При ошибке остановитесь, исправьте указанную строку и повторите проверку.

Подключите сайт и проверьте HTTP
sudo ln -sfn /etc/nginx/sites-available/activepieces /etc/nginx/sites-enabled/activepieces
sudo nginx -t && sudo systemctl reload nginx
curl -I http://flows.example.com/

Ожидается successful от nginx -t и HTTP 403 для обычного запроса: до HTTPS это намеренная блокировка. DNS должен указывать на сервер, TCP 80/443 — быть доступен у провайдера. Ничего не вводите в форму входа по HTTP.

Шаг 11. Получите сертификат и включите HTTPS #

Каждое имя из команды должно указывать на этот сервер. Certbot проверит домены, сам добавит сертификат в сайт Nginx и включит перенаправление HTTP → HTTPS. Укажите свою почту при запросе и подтвердите условия Let’s Encrypt. Это отдельное действие после успешной проверки HTTP.

Получите сертификат и включите HTTPS
sudo /snap/bin/certbot --nginx -d flows.example.com --redirect

Certbot сообщил об успешной установке. Откройте HTTPS-адрес со своего компьютера: браузер не должен предупреждать о сертификате. Для закрытой панели используйте разрешённый IP. При ошибке исправьте DNS, в том числе AAAA, либо доступ к TCP 80; не повторяйте запросы выпуска подряд.

Шаг 12. Проверьте продление сертификата #

Certbot из snap создаёт службу автоматического продления. Dry-run выполняет пробное продление: настоящие сертификаты не заменяются. Затем проверьте, что таймер планирует следующий запуск. Сохраняйте доступ к TCP 80 для следующих проверок домена.

Проверьте продление сертификата
sudo /snap/bin/certbot renew --dry-run
systemctl list-timers --all 'snap.certbot.renew*'

Пробное продление успешно, у таймера есть следующий запуск. Если тест не прошёл, проверьте /var/log/letsencrypt/letsencrypt.log; сначала исправьте причину. После этого можно создавать учётную запись и приглашать пользователей.

Шаг 13. Создайте администратора #

В браузере зарегистрируйте первого пользователя своей личной почтой и отдельным длинным паролем. Первый пользователь управляет платформой. Доступ к редактору даёт возможность обращаться к внешним системам от имени подключений.

После входа доступен проект и создание сценариев. Не считайте платные SSO и расширенное управление ролями автоматически доступными в Community.

Шаг 14. Настройте системную почту #

В SSH снова откройте nano .env. Добавьте или заполните AP_SMTP_HOST, AP_SMTP_PORT, AP_SMTP_USERNAME, AP_SMTP_PASSWORD, AP_SMTP_SENDER_EMAIL и AP_SMTP_SENDER_NAME реквизитами своего почтового сервиса. Это письма самой платформы, например восстановление доступа; подключение почты внутри сценария создадим отдельно. Режим TLS сверяйте с настройками провайдера.

Второй блок — шаблон строк для .env. Замените smtp.example.com, your-login, your-smtp-password и sender@example.com настоящими реквизитами. Порт 587 — пример: используйте порт и режим TLS вашего провайдера. Не оставляйте значения примера.

Заполнить SMTP-реквизиты
nano .env
Шаблон SMTP-параметров для .env
AP_SMTP_HOST=smtp.example.com
AP_SMTP_PORT=587
AP_SMTP_USERNAME=your-login
AP_SMTP_PASSWORD=your-smtp-password
AP_SMTP_SENDER_EMAIL=sender@example.com
AP_SMTP_SENDER_NAME=Activepieces

Каждый параметр занимает отдельную строку. Сохраните Ctrl+O, Enter, Ctrl+X; пароль остаётся только в защищённом файле.

Шаг 15. Примените настройки почты #

Пересоздайте только приложение и исполнителя, чтобы они прочитали новое окружение. База и Redis продолжают работать.

Применить изменённый .env
docker compose up -d --force-recreate app worker

После возвращения панели проверьте письмо восстановления на свой адрес. Если оно не приходит, смотрите журнал app и SMTP-реквизиты.

Шаг 16. Создайте сценарий с расписанием #

В проекте создайте новый flow — сценарий автоматизации. Выберите Schedule как trigger, то есть событие запуска. Установите редкое расписание, например раз в день. Пока сценарий не опубликован, он нужен только для ручной проверки.

В редакторе есть один триггер с понятным расписанием. Убедитесь, что выбранный часовой пояс соответствует нужному времени.

Шаг 17. Добавьте отправку тестового письма #

После триггера добавьте SMTP → Send Email. Создайте connection — защищённое подключение с почтовыми реквизитами. Получателем укажите только собственную почту, темой — «Проверка Activepieces». Пароль вводите в подключение, а не в текст письма или обычную переменную.

В действии заполнены отправитель, ваш тестовый получатель, тема и текст. Рабочая аудитория в этот сценарий не добавлена.

Шаг 18. Выполните пробный запуск #

Проверьте триггер и действие средствами тестирования редактора, затем запустите весь сценарий. Это проверяет связь приложения, worker и SMTP, а не только открытие панели.

В истории появился успешный запуск, а в вашем ящике — одно письмо. При ожидании без результата проверьте worker; при ошибке SMTP исправьте подключение перед повтором.

Шаг 19. Включите расписание #

Опубликуйте flow кнопкой Publish. Черновик не начинает работать по расписанию сам. Дождитесь очередного времени запуска; для одноразовой проверки после него выключите сценарий.

История содержит отдельный автоматический запуск, и письмо пришло без ручного нажатия теста. Установка теперь выполняет полный рабочий путь.

Шаг 20. Подготовьте место для копии #

Перед копированием выключите тестовый сценарий в браузере. В SSH создайте новый каталог: переменная backup_dir запоминает его путь для следующих шагов. Выполните их в той же SSH-сессии.

Создать каталог резервной копии
umask 077
backup_dir="$HOME/backups/activepieces/$(date -u +%Y%m%dT%H%M%SZ)"
mkdir -p "$backup_dir"

Каталог создан без ошибки. Копия на этом же сервере — промежуточный результат; после проверки перенесите её в отдельное защищённое хранилище.

Шаг 21. Скопируйте базу без новых заданий #

Остановите приложение и worker, затем выгрузите PostgreSQL в SQL-файл. На время этой короткой остановки панель недоступна.

Остановить запись и выгрузить базу
docker compose stop app worker
docker compose exec -T postgres pg_dump -U postgres activepieces > "$backup_dir/database.sql"

pg_dump завершился без ошибки; database.sql не пуст. Если выгрузка не удалась, не считайте её копией и не запускайте обновление.

Шаг 22. Сохраните секреты и верните сервисы #

Сохраните .env, Compose и cache: без исходного ключа шифрования подключения могут не восстановиться. Затем запустите приложение и worker. Это один комплект резервной копии с выгруженной базой.

Скопировать настройки и возобновить работу
cp .env docker-compose.yml "$backup_dir/"
if [ -d cache ]; then tar -czf "$backup_dir/cache.tar.gz" cache; fi
docker compose start app worker

Панель снова открывается. Перенесите комплект копии за пределы сервера. На отдельной тестовой установке того же релиза проверяйте восстановление с выключенными рабочими триггерами; старый снимок очереди Redis не подменяйте поверх новой очереди.

Если шаг не работает и как обновлять #

В каталоге ~/apps/activepieces выполните docker compose ps: сервисы не должны постоянно перезапускаться. Журналы доступны командой docker compose logs --tail=80 app worker. Если HTTPS даёт 502, повторите локальную проверку из шага 8. Если сценарий завис, проверьте worker и его AP_FRONTEND_URL=http://app; если подключение не расшифровывается — восстановите исходный AP_ENCRYPTION_KEY.

Перед обновлением изучите изменения релиза и сделайте проверенную копию. Меняйте image у app и worker на один новый тег, проверяйте Compose, скачивайте образы и пересоздавайте сервисы. После обновления повторите ручной и автоматический запуск. Не запускайте tools/deploy.sh на рабочем экземпляре: он заменит .env. После миграции базы откат может требовать старой базы и старого образа вместе.

Настройки внешнего доступа храните вместе с копией приложения: /etc/nginx/sites-available/activepieces и /etc/letsencrypt содержат сайт и сертификаты с закрытыми ключами. Архивируйте их с sudo в закрытое хранилище. После восстановления подключите сайт через sites-enabled, выполните sudo nginx -t, затем перечитайте Nginx. Для ошибки 502 сначала проверьте локальное приложение и /var/log/nginx/error.log; для сертификата — /var/log/letsencrypt/letsencrypt.log и таймер продления.

Обсудить установку и настройку

Материал был полезен?

Сообщить об ошибке или задать вопрос редакции

Сообщение увидит редакция. Не указывайте пароли и личные данные. Текст удаляется через 180 дней.

О материале

ИнфраструктураРуководствоЗадача: установитьУровень: практикаActivepieces

Последнее обновление:

Обсуждение

Комментарии проходят подтверждение адреса и проверку редакцией.