Процесс установки Sherpa Orchestrator#

Для новой установки с БД на отдельном сервере применяется инструкция по внешней PostgreSQL.

Распаковка клиентских файлов#

Для установки необходимо распаковать клиентские файлы Sherpa Orchestrator и подготовить скрипты к выполнению.

Распаковка архива с обновлением#

Архив распаковывается в каталог установки следующей командой.

# Найдите и распакуйте архив обновления (автоматически выбирается самая свежая версия)
tar -xvzf "$(ls docker_orchestrator_client_files_*.tgz | sort -V | tail -n 1)"
💡 Комментарии к распаковке архива

tar -xvzf "$(ls docker_orchestrator_client_files_*.tgz | sort -V | tail -n 1)" - распаковывает архив с обновлением

  • tar -xvzf - распаковывает архив с подробным выводом
  • ls docker_orchestrator_client_files_*.tgz - находит все файлы архивов обновлений
  • sort -V - сортирует версии естественно (1.0 < 1.1 < 1.10)
  • tail -n 1 - выбирает самый свежий файл

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

💡 Автоматическая установка После распаковки архива предусмотрен интерактивный скрипт вместо ручных шагов ниже:

sudo ./sh_scripts/install.sh

Скрипт проведет через все этапы установки: выбор БД, загрузку образов, настройку .env, генерацию SSL-сертификатов и запуск контейнеров.

Подготовка скриптов к выполнению#

Скриптам установки необходимо предоставить право исполнения.

# Перейдите в директорию sh_scripts
# Сделайте все скрипты исполняемыми
# Вернитесь в корневую директорию проекта
cd sh_scripts && chmod +x *.sh && cd ..
💡 Комментарии к подготовке скриптов

cd sh_scripts/ - переходит в директорию со скриптами установки

chmod +x *.sh - устанавливает права исполнения для всех shell-скриптов

  • chmod +x - добавляет право исполнения
  • *.sh - все файлы с расширением .sh

cd .. - возвращает в корневую директорию проекта

Загрузка Docker-образов#

Следующая команда загружает образы из скачанных архивов в локальное хранилище Docker.

# Запустите скрипт загрузки Docker-образов
sudo ./sh_scripts/load_all_docker_images.sh
💡 Комментарии к загрузке Docker-образов

sudo ./sh_scripts/load_all_docker_images.sh - запускает скрипт загрузки Docker-образов

Что делает скрипт:

  1. Загружает все Docker-образы из скачанных .tar.gz файлов
  2. Импортирует образы в локальное хранилище Docker
  3. Проверяет успешность загрузки всех образов оркестратора

Создание конфигурации системы#

Следующая команда подготавливает каталоги и файлы базовой конфигурации.

# Запустите скрипт создания настроек
sudo ./sh_scripts/create_config.sh
💡 Комментарии к созданию конфигурации

sudo ./sh_scripts/create_config.sh - запускает скрипт создания базовой конфигурации

Что делает скрипт:

  1. Создает необходимые директории для конфигурации
  2. Настраивает базовые параметры системы
  3. Подготавливает структуру для дальнейшей настройки

Копирование SSL-сертификатов#

Для обеспечения безопасного HTTPS-соединения необходимо скопировать SSL-сертификаты:

# Создайте директорию для сертификатов (если не существует)
mkdir -p ./nginx/config/certs/

# Переименуйте и скопируйте сертификат и ключ для вашего домена
# Замените пути на реальные пути к вашим сертификатам
cp /path/to/your/certificate.crt ./nginx/config/certs/orchestrator.crt
cp /path/to/your/private.key ./nginx/config/certs/orchestrator.key
💡 Комментарии к копированию SSL-сертификатов

mkdir -p ./nginx/config/certs/ - создает директорию для сертификатов

  • -p - создает родительские директории если они не существуют

cp /path/to/your/certificate.crt ./nginx/config/certs/orchestrator.crt - копирует и переименовывает сертификат cp /path/to/your/private.key ./nginx/config/certs/orchestrator.key - копирует и переименовывает приватный ключ

Требования к сертификатам:

  • Сертификат должен быть переименован в orchestrator.crt
  • Приватный ключ должен быть переименован в orchestrator.key
  • Имена файлов должны точно соответствовать указанным
  • Формат сертификата: .crt или .pem
  • Формат ключа: .key

Важно: Сертификатам необходимо предоставить следующие права доступа:

# Установите правильные права на сертификаты(могут понадобиться sudo права)
chmod 644 ./nginx/config/certs/orchestrator.crt
chmod 600 ./nginx/config/certs/orchestrator.key
chown 101:101 ./nginx/config/certs/orchestrator.key ./nginx/config/certs/orchestrator.crt

ВНИМАНИЕ: Получить сертификаты необходимо у администратора сети либо в вашем корпоративном центре сертификации. В случае отсутствия данных сертификатов применяются инструкции по получению сертификатов Let's Encrypt или других центров сертификации.

Настройка TLS для протокола LDAPS (опциональный пункт)#

Этот пункт требуется только при использовании LDAPS. Файл /opt/SherpaOrchestrator/backend/config/certs/ca-certificates.crt должен содержать стандартные доверенные сертификаты образа и сертификат центра сертификации LDAPS-сервера. Порядок создания общего файла описан в подразделе "Создание файла доверенных сертификатов" раздела "Настройка сертификатов для IMAP-сервера (опциональный пункт)" этой статьи. При совместном использовании IMAP и LDAPS в файл добавляются сертификаты обоих серверов.

Для подключения общего файла в сервисе orchestrator файла docker-compose.yml необходимо раскомментировать строку:

- ./backend/config/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt:ro

Настройка сертификатов для IMAP-сервера (опциональный пункт)#

Важно: Если использование Триггеров с запуском по электронной почте не планируется, данный пункт не требуется.

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

Если сертификат почтового сервера выдан корпоративным центром сертификации или является самоподписанным, необходимо добавить корневой сертификат в список доверенных сертификатов Оркестратора. Без этого Триггер не может проверить почту, а на экране "Аудит" появляется сообщение вида:

Schedule:Имя Триггера; Email:robot@company.ru; IMAP connection failed: Certificate failure for mail.company.ru: unable to get local issuer certificate

Важно: Сертификат проверяется, даже если в настройках Триггера не установлен чекбокс "Использовать SSL". Если почтовый сервер поддерживает STARTTLS, Оркестратор включает шифрование соединения автоматически.

Важно: Сертификаты, скопированные в каталог ./backend/config/certs/imap_certs, Оркестратор не использует. Необходимо выполнить действия, описанные ниже.

Все команды выполняются в каталоге /opt/SherpaOrchestrator.

Проверка сертификата почтового сервера#

Перед настройкой необходимо проверить сертификат почтового сервера по стандартному списку доверенных сертификатов образа. В командах необходимо заменить mail.company.ru на значение поля "Почтовый сервер" и указать порт из настроек Триггера. Для IMAP с установленным чекбоксом "Использовать SSL" обычно используется порт 993, для STARTTLS — порт 143:

# Выведите цепочку сертификатов почтового сервера
# Замените mail.company.ru на значение поля "Почтовый сервер" из настроек Триггера
docker run --rm --entrypoint openssl orchestrator s_client -connect mail.company.ru:993 -servername mail.company.ru -verify_hostname mail.company.ru -showcerts </dev/null

# Если в поле "Порт" указан порт 143, используйте команду
docker run --rm --entrypoint openssl orchestrator s_client -connect mail.company.ru:143 -servername mail.company.ru -verify_hostname mail.company.ru -starttls imap -showcerts </dev/null
💡 Комментарии к проверке сертификата

docker run --rm --entrypoint openssl orchestrator - запускает утилиту openssl из образа Оркестратора со стандартным списком доверенных сертификатов

s_client -connect mail.company.ru:993 - подключается к почтовому серверу и выводит его сертификаты. Используемые параметры:

  • -servername — передает имя почтового сервера при установлении TLS-соединения (SNI), но не проверяет совпадение имени с сертификатом
  • -verify_hostname — проверяет, что сертификат выдан для имени сервера из настроек Триггера
  • -starttls imap — включает шифрование соединения на порту 143
  • -showcerts — выводит всю цепочку сертификатов

Результат проверки указан в конце вывода, в строке Verify return code. Возможные значения:

  • 0 (ok) — стандартный список образа позволяет проверить сертификат, имя сервера совпадает с сертификатом. Если собственный файл доверенных сертификатов не подключен, добавление сертификата не требуется. Для работающего контейнера с подключенным файлом требуется также проверка из раздела "Проверка подключения"
  • 18, 19, 20 или 21 — необходим корневой сертификат центра сертификации. Его название указано в строке i: последнего сертификата в цепочке
  • 62 (hostname mismatch) — имя сервера не совпадает с сертификатом. Добавление корневого сертификата не устраняет эту ошибку

Подготовка сертификата#

Корневой сертификат центра сертификации, который выдал сертификат почтовому серверу, необходимо получить у администратора сети. Если почтовый сервер не передает промежуточные сертификаты, требуются также их копии. Если сертификат почтового сервера самоподписанный, используется сам этот сертификат.

Сертификат должен быть в текстовом формате PEM: файл начинается со строки -----BEGIN CERTIFICATE-----. Сертификат в двоичном формате DER, например файл .cer, выгруженный из Windows, необходимо преобразовать:

# Преобразуйте сертификат из формата DER в формат PEM
# Замените пути на реальные пути к сертификату
docker run --rm -i --entrypoint openssl orchestrator x509 -inform der < /path/to/root-ca.cer > /path/to/root-ca.crt

Важно: Сертификат Оркестратора orchestrator.crt и закрытые ключи для этого пункта не подходят.

Создание файла доверенных сертификатов#

Файл доверенных сертификатов должен содержать стандартный список сертификатов из образа Оркестратора и корневой сертификат центра сертификации:

Перед созданием файла требуется сохранить существующий ca-certificates.crt под свободным резервным именем. Новый файл должен содержать стандартные сертификаты образа и все собственные доверенные сертификаты, включая используемые для LDAPS. Приведенная команда перезаписывает файл, поэтому этот состав необходимо подготовить заранее.

# Выгрузите стандартный список доверенных сертификатов из образа Оркестратора
docker run --rm --entrypoint cat orchestrator /etc/ssl/certs/ca-certificates.crt > ./backend/config/certs/ca-certificates.crt

# Добавьте в конец файла корневой сертификат центра сертификации
# Замените путь на реальный путь к сертификату
echo >> ./backend/config/certs/ca-certificates.crt
cat /path/to/root-ca.crt >> ./backend/config/certs/ca-certificates.crt

# Установите права на чтение файла (могут понадобиться sudo права)
chmod 644 ./backend/config/certs/ca-certificates.crt
💡 Комментарии к созданию файла доверенных сертификатов

docker run --rm --entrypoint cat orchestrator /etc/ssl/certs/ca-certificates.crt - сохраняет стандартный список доверенных сертификатов из образа Оркестратора. Без него Оркестратор перестанет доверять публичным серверам

echo >> ./backend/config/certs/ca-certificates.crt - добавляет перевод строки, чтобы сертификаты в файле не склеились

cat /path/to/root-ca.crt >> ./backend/config/certs/ca-certificates.crt - добавляет сертификат в конец файла. Если сертификатов несколько, например корневой и промежуточный, команду необходимо повторить для каждого

Требования к файлу:

  • Имя файла должно быть ca-certificates.crt
  • Файл должен находиться в каталоге ./backend/config/certs/
  • Файл полностью заменяет список доверенных сертификатов в контейнере Оркестратора

Важно: Если выполнен пункт «Настройка TLS для протокола LDAPS», команда выгрузки перезапишет файл ca-certificates.crt. В этом случае в файл необходимо добавить также корневой сертификат LDAPS-сервера.

Подключение файла к Оркестратору#

В файле docker-compose.yml в сервисе orchestrator необходимо раскомментировать строку:

- ./backend/config/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt:ro

Если строка уже раскомментирована при настройке LDAPS, этот шаг не требуется. Строки с imap_certs изменять не нужно.

Если Оркестратор еще не запущен, необходимо перейти к следующему пункту установки. Если Оркестратор уже работает, необходимо пересоздать контейнер:

# Пересоздайте контейнер orchestrator, чтобы подключить файл доверенных сертификатов
docker compose up -d --no-deps --force-recreate orchestrator

Важно: Команда docker compose restart и перезагрузка сервера не применяют изменения файла docker-compose.yml.

Проверка подключения#

После запуска Sherpa Orchestrator проверяются сертификат и имя почтового сервера с учетом подключенного файла доверенных сертификатов. Для этого необходимо выбрать команду для режима подключения Триггера и заменить имя сервера и порт на значения из его настроек:

# IMAP с SSL, обычно порт 993
docker exec orchestrator openssl s_client -connect mail.company.ru:993 -servername mail.company.ru -verify_hostname mail.company.ru </dev/null

# IMAP с STARTTLS, обычно порт 143
docker exec orchestrator openssl s_client -connect mail.company.ru:143 -servername mail.company.ru -verify_hostname mail.company.ru -starttls imap </dev/null

В выводе ожидается строка Verify return code: 0 (ok). Она подтверждает проверку сертификата и имени сервера, но не проверку учетных данных почтового ящика. Если соединение не установлено, необходимо проверить сообщение об ошибке, адрес, порт и доступность сервера из контейнера. Утилита openssl s_client может завершиться с кодом 0 даже при ошибке сертификата, поэтому необходимо проверять именно строку Verify return code.

Затем в настройках Триггера на вкладке "Email" необходимо нажать на кнопку "Тест получения почты". При успешном подключении появится уведомление "Тест прошел успешно, получено N сообщений".

Важно: Значение поля "Почтовый сервер" должно соответствовать сертификату сервера, например mail.company.ru. Если сертификат выдан только для доменного имени, подключение по IP-адресу завершится ошибкой hostname mismatch.

Возможные ошибки#

Сообщения об ошибках подключения к почтовому серверу отображаются на экране "Аудит". Типовые ошибки сертификата:

  • unable to get local issuer certificate, unable to verify the first certificate, self-signed certificate — в файле ca-certificates.crt нет нужного сертификата, или файл не подключен к контейнеру Оркестратора
  • hostname mismatch — значение поля "Почтовый сервер" в настройках Триггера не совпадает с именем в сертификате

Выбор конфигурации базы данных#

Для встроенной БД необходимо выбрать MariaDB (DB_ENGINE=mysql, профиль mariadb) или PostgreSQL (DB_ENGINE=pgsql, профиль pg). Далее заполняются параметры только выбранной СУБД. Для внешней БД указывается адрес отдельного сервера, а локальные профили БД не включаются.

Настройка переменных окружения#

Необходимо заполнить адрес сервера, домен и параметры выбранной БД. Значения your_server_ip, your_domain_name и пароли ниже служат образцом: их требуется заменить данными установки. Настройки VNC нужны только при использовании соответствующего профиля.

# Откройте файл .env в текстовом редакторе
nano .env

Параметры сервера, выбранной БД и VNC:

# IP-адрес сервера (измените на ваш реальный IP-адрес или домен)
HOST_IP=your_server_ip

# Доменное имя, которое будет использовать NGINX
NGINX_DOMAIN_NAME=your_domain_name

# Настройки VNC
VNC_HOST=your_server_ip
VNC_PORT=5900
VNC_LOG_LEVEL=INFO
VNC_START_PORT=6080
VNC_MAX_PORTS=21
VNC_WEBSOCKIFY_WEB_ROOT=/opt/noVNC

# Тип базы данных: mysql или pgsql
DB_ENGINE=mysql

# Настройки MySQL (используется при DB_ENGINE=mysql)
MYSQL_HOST=orchestrator-db
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=mysql-password
MYSQL_DB=orchestrator

# Также задайте пароль для MariaDB-контейнера (должен совпадать с MYSQL_PASSWORD)
DB_PASSWORD=mysql-password

# Настройки PostgreSQL (используется при DB_ENGINE=pgsql)
POSTGRES_HOST=orchestrator-pg
POSTGRES_PORT=5432
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres-password
POSTGRES_DBNAME=postgres
POSTGRES_SCHEMA_NAME=orchestrator
💡 Комментарии к настройке переменных окружения

HOST_IP — IP-адрес или доменное имя сервера, по которому система доступна извне. Должен быть статическим IP или корректно настроенным доменом.

NGINX_DOMAIN_NAME — домен для веб-интерфейса (например, orchestrator.example.com). Обычно совпадает с доменом в SSL-сертификате.

DB_ENGINE — принимает значение mysql для MariaDB или pgsql для PostgreSQL. Это значение определяет, какой набор переменных подключения будет использован.

MYSQL_PASSWORD / DB_PASSWORD — пароль для MySQL/MariaDB. Оба значения должны совпадать: MYSQL_PASSWORD используется приложением, DB_PASSWORD — контейнером базы данных.

POSTGRES_PASSWORD — пароль для PostgreSQL. Используется и контейнером БД, и приложением.

Все параметры конфигурации (база данных, почта, LDAP, прокси и др.) читаются приложением напрямую из переменных окружения файла .env. Редактировать backend/config/config.ini или backend/config/phinx.php не требуется — они уже настроены для работы через .env.

Дополнительные параметры .env для SMTP, LDAP и хранения записей:

# Настройки почтового сервера (SMTP)
SMTP_SERVER=smtp.example.com
SMTP_PORT=25
SMTP_SECURE=tls
SMTP_LOGIN=
SMTP_PASSWORD=
SMTP_FROM=Orchestrator
SMTP_FROM_EMAIL=

# Настройки LDAP (опционально)
LDAP_SERVER=
LDAP_PORT=389
LDAP_ENCRYPTION=tls
LDAP_BASE_DN=dc=mydomain,dc=local
LDAP_GROUP=Group
LDAP_UID_KEY=uid
LDAP_USER=
LDAP_USERNAME=
LDAP_PASSWORD=
LDAP_FILTER=
LDAP_NETWORK_TIMEOUT=5
LDAP_OPERATION_TIMEOUT=10

# Прочие настройки
SESSION_LAST_ACTIVITY_TIMEOUT=30
STORE_LOGS_DAYS=180
STORE_AUDIT_DAYS=180

Параметры LDAP, режимы StartTLS и LDAPS, а также обязательный HTTPS callback OpenID описаны в инструкции по авторизации пользователей. Для OpenID применяется адрес /api/v1/system/oauth_hook; старый путь /api/gui/system/oAuthHook не подходит.

Запуск системы#

Необходимо выполнить одну команду для выбранной БД и нужных дополнительных сервисов. Для внешней БД используется docker compose up -d без профилей mariadb и pg.

# Запустите систему с нужным профилем БД
# Вариант 1: MariaDB
docker compose --profile mariadb up -d

# Вариант 2: PostgreSQL
docker compose --profile pg up -d

# Если нужен VNC (опционально), добавьте профиль vnc:
# Вариант 1: MariaDB + VNC
docker compose --profile mariadb --profile vnc up -d

# Вариант 2: PostgreSQL + VNC
docker compose --profile pg --profile vnc up -d

# Если нужен Vault (опционально), добавьте профиль vault:
# Вариант 1: MariaDB + Vault
docker compose --profile mariadb --profile vault up -d

# Вариант 2: PostgreSQL + Vault
docker compose --profile pg --profile vault up -d

# Комбинация профилей: MariaDB + VNC + Vault
docker compose --profile mariadb --profile vnc --profile vault up -d
💡 Комментарии к запуску системы

docker compose --profile <mariadb|pg> up -d - запускает систему с выбранной БД

--profile vnc - профиль VNC опционален, запускает сервис orchestrator-vnc-proxy

  • Необходим только если роботы используют VNC для управления рабочим столом
  • Подключается при использовании VNC

docker compose --profile <mariadb|pg> --profile vault up -d - запускает систему с Vault

Что делает скрипт:

  1. Запускает сервисы оркестратора через Docker Compose
  2. Активирует только контейнер выбранной базы данных по профилю (mariadb или pg)
  3. Настраивает сеть и volumes
  4. Выполняет миграции базы данных при необходимости
  5. Запускает сервисы в фоновом режиме

Проверка статуса запуска#

Состояние сервисов и сообщения запуска проверяются следующими командами.

# Проверьте статус всех запущенных контейнеров
docker compose ps

# Посмотрите логи системы
docker compose logs orchestrator

# Мониторинг логов в реальном времени
docker compose logs -f orchestrator
💡 Комментарии к проверке статуса

docker compose ps - показывает статус всех контейнеров

docker compose logs orchestrator - показывает логи основного сервиса

docker compose logs -f orchestrator - следит за логами в реальном времени

  • -f - follow (следить за новыми сообщениями)

При успешном запуске сервисы orchestrator, orchestrator-nginx и orchestrator-websocket находятся в состоянии Up. Для встроенной БД также запускается orchestrator-db или orchestrator-pg, для внешней — локальный контейнер БД не требуется. Дополнительные сервисы зависят от выбранных профилей. HTTPS-порт публикует orchestrator-nginx, а не backend-контейнер orchestrator.

Проверка доступности системы#

Проверка веб-интерфейса:

# Проверьте HTTPS доступность (замените на ваш домен/IP)
curl -I https://your-domain-or-ip

# Ожидаемый ответ: HTTP/2 200 или перенаправление

Управление системой#

Остановка системы:

# Остановите все сервисы
docker compose down

Команда docker compose down сохраняет именованные тома с данными. Параметр -v удаляет эти тома и их содержимое, поэтому для обычной остановки он не применяется.

Перезапуск сервисов:

# Перезапустите конкретный сервис
docker compose restart orchestrator

# Перезапустите все сервисы
docker compose restart

Просмотр ресурсов:

# Проверьте использование ресурсов контейнерами
docker stats

Возможные проблемы при запуске:#

Для поиска причины ошибки проверяются:

  • Контейнеры не запускаются — сообщения команды docker compose logs.
  • Проблемы с сетью — доступность портов 80 и 443, а при использовании VNC — 5000 и 6080–6100.
  • Ошибки подключения к БД — параметры подключения в .env и доступность БД.
  • Проблемы с доменом — значение HOST_IP и настройки DNS.

После успешного запуска и тестирования системы установка Sherpa Orchestrator завершена. Система будет доступна по HTTPS на настроенном домене или IP-адресе.