Пошаговая инструкция · Самостоятельная установка
Как установить 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.envAP_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]: это сохраняет очередь на диск.
nano docker-compose.ymlСохраните Ctrl+O, Enter, Ctrl+X. Не меняйте имена сервисов и томов. Сохраняемый Redis уменьшает потерю очереди при сбое, но не заменяет резервную копию базы.
Шаг 5. Проверьте конфигурацию #
Docker Compose описывает несколько контейнеров одним файлом. Перед загрузкой образов проверим, что YAML и подстановка настроек не содержат ошибок.
docker compose config --quietПри успехе команда ничего не печатает и возвращает приглашение терминала. Если указан номер строки или пустая переменная, исправьте именно её до продолжения.
Шаг 6. Скачайте образы #
Образ — готовый комплект приложения и его зависимостей. Команда загрузит выбранные версии Activepieces, PostgreSQL и Redis; это может занять несколько минут.
docker compose pullДля сервисов нет ошибок скачивания. Если процесс закончился ошибкой сети, исправьте связь и повторите этот шаг.
Шаг 7. Запустите сервисы #
Запустим всё в фоне: контейнеры продолжат работать после закрытия SSH.
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/activepiecesmap $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 проверяет ответ для вашего домена. При ошибке остановитесь, исправьте указанную строку и повторите проверку.
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.
sudo /snap/bin/certbot --nginx -d flows.example.com --redirectCertbot сообщил об успешной установке. Откройте 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 вашего провайдера. Не оставляйте значения примера.
nano .env.envAP_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 продолжают работать.
.envdocker 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 и таймер продления.