Skip to Content

Установка Центра управления AI Server

ℹ️

Обязательные пакеты: Docker с плагином compose (docker.io, docker-compose-v2), unzip, cpuid. Необязательные: 7zip и wget — для загрузки образов через архивы, ufw — если брандмауэр настраивается через него. Отсутствующие пакеты можно установить из репозитория ОС или из комплекта поставки — способы указаны в соответствующих разделах ниже.

Рекомендуемая разметка диска

Центр управления хранит данные в двух местах: в каталоге Docker и в папке установки /app. Выделите под них отдельные разделы при установке ОС — тогда переполнение одного раздела не остановит ОС и другие компоненты. Разделы удобно создавать в LVM: при нехватке места их можно расширить без переустановки.

Таблица: Разметка диска 1 ТБ.

Точка монтированияЧто хранитсяОбъём
/boot, /boot/efi, swapСистемные разделы — в объёме, который предлагает установщик ОС~10 ГБ
/ОС, пакеты, системные журналы, архивы образов при загрузке50 ГБ
/var/lib/dockerОбразы Docker — после обновления прежние версии остаются, пока их не удалить; данные RabbitMQ и Redis; журналы контейнеров; временные файлы и наборы данных для обучения и файнтюнинга, которые сервисы Api и Inference хранят внутри контейнеров200 ГБ
/appФайлы моделей (Api_Models), база данных PostgreSQL (pgsql-data) с запросами и загруженными изображениями, контекст NLP-запросов, пресеты, журналы сервисовОстаток

Установщик ОС показывает диск 1 ТБ как ~931 ГБ, поэтому на /app остаётся ~670 ГБ. Если ОС установлена на отдельный диск, диск данных 1 ТБ разделите на два раздела: 200 ГБ — /var/lib/docker, остаток (~730 ГБ) — /app.

При другом объёме диска сохраняйте соотношение: около 1/5 — /var/lib/docker, остальное за вычетом системных разделов — /app. Минимальный объём хранилища указан в системных требованиях.

Объём /app определяется в первую очередь моделями: полный набор больших языковых моделей из поставки занимает ~270 ГБ, каждая обученная модель добавляет 1–2 ГБ. Скачивайте только модели, которые будете использовать. База данных растёт на ~1 ГБ в сутки при обработке 1000 изображений.

ℹ️

Путь /var/lib/docker указан для Docker из пакета docker.io. Если docker info показывает в разделе Storage Driver значение driver-type: io.containerd.snapshotter.v1, образы хранятся в /var/lib/containerd — раздел под образы монтируйте туда.

1. Установка Docker

Настоящее краткое руководство основано на официальных инструкциях:

При наличии доступа доступа к необходимым ресурсам на машине, установите docker и компоненты (compose) с официального сайта согласно официально инструкции выше и переходите к п.2.

В отсутствие интернета установите Docker из комплекта поставки: пакеты docker.io и docker-compose-v2 согласно статье Установка пакета из комплекта поставки.

Запуск службы Docker

Пакет docker.io устанавливает службу Docker. Включите её автозапуск и запустите:

sudo systemctl enable --now docker

Создание группы docker

Проверьте наличие группы docker на сервере:

cat /etc/group | grep docker

Если группы нет, добавьте:

sudo groupadd docker

Раздача прав

Добавьте текущего пользователя в группу docker. Например, для пользователя ubuntu:

sudo usermod -aG docker ubuntu && \ newgrp docker
⚠️

Центр управления использует подсеть server_ai, которая создается автоматически при первом запуске финальной команды данной статьи.

2. Загрузка образов

Вариант загрузки образов 1 (через архивы)

Комплект поставки AI Server размещён в Nexus: https://nexus.primo-rpa.ru/repository/raw/, авторизация для скачивания не нужна. Пути в таблице указаны относительно этого адреса.

КомпонентОбразАрхив в Nexus
Primo.AI.Apinexus.primo-rpa.ru:8000/primo-rpa/ai-server-api:1.26.10.01.26.10/ai-server/docker/images/ai-server-api.tar.7z
Primo.AI.Api.Inferencenexus.primo-rpa.ru:8000/primo-rpa/ai-server-inference:1.26.10.01.26.10/ai-server/docker/images/ai-server-inference.tar.7z
Primo.AI.Api.Logsnexus.primo-rpa.ru:8000/primo-rpa/ai-server-logs:1.26.10.01.26.10/ai-server/docker/images/ai-server-logs.tar.7z
Primo.AI.Api.Authnexus.primo-rpa.ru:8000/primo-rpa/ai-server-auth:1.26.10.01.26.10/ai-server/docker/images/ai-server-auth.tar.7z
UI / nginxnexus.primo-rpa.ru:8000/primo-rpa/ai-server-ui:1.26.10.01.26.10/ai-server/docker/images/ai-server-ui.tar.7z
Backend Конструктора агентских системnexus.primo-rpa.ru:8000/primo-rpa/ai-server-langflow-backend:1.26.10.01.26.10/ai-server/docker/images/ai-server-langflow-backend.tar.7z
UI / nginx Конструктора агентских системnexus.primo-rpa.ru:8000/primo-rpa/ai-server-langflow-frontend:1.26.10.01.26.10/ai-server/docker/images/ai-server-langflow-frontend.tar.7z
PostgreSQLnexus.primo-rpa.ru:8000/library/postgres:17.10-alpinedata/libraries/docker/images/postgres_17.10-alpine.tar.7z
RabbitMQnexus.primo-rpa.ru:8000/library/rabbitmq:4.2.8-management-alpinedata/libraries/docker/images/rabbitmq_4.2.8-management-alpine.tar.7z
Redisnexus.primo-rpa.ru:8000/library/redis:7.4-alpinedata/libraries/docker/images/redis_7.4-alpine.tar.7z

Для этого варианта нужны 7z (пакет 7zip) и wget. Если их нет, установите из репозитория ОС (sudo apt install -y 7zip wget) или, при желании, из комплекта поставки согласно статье Установка пакета из комплекта поставки. Вместо wget архивы можно скопировать на машину из комплекта поставки.

names="ai-server-api ai-server-auth ai-server-inference ai-server-logs ai-server-ui ai-server-langflow-backend ai-server-langflow-frontend" externals="library/redis:7.4-alpine library/rabbitmq:4.2.8-management-alpine library/postgres:17.10-alpine" for name in $names; do wget "https://nexus.primo-rpa.ru/repository/raw/1.26.10/ai-server/docker/images/$name.tar.7z" 7z x $name.tar.7z docker load -i $name.tar done for external in $externals; do filename=$(echo "${external##*/}" | sed 's/:/_/g') wget "https://nexus.primo-rpa.ru/repository/raw/data/libraries/docker/images/$filename.tar.7z" 7z x $filename.tar.7z docker load -i $filename.tar done

Вариант загрузки образов 2 (используя репозиторий Docker)

Работает при наличии подключения к nexus.primo-rpa.ru:8000.

names="ai-server-api ai-server-auth ai-server-inference ai-server-logs ai-server-ui ai-server-langflow-backend ai-server-langflow-frontend" externals="library/redis:7.4-alpine library/rabbitmq:4.2.8-management-alpine library/postgres:17.10-alpine" for name in $names; do docker pull nexus.primo-rpa.ru:8000/primo-rpa/$name:1.26.10.0 done for external in $externals; do docker pull nexus.primo-rpa.ru:8000/$external done

3. Размещение файлов

Для распаковки файлов поставки нужен пакет unzip. Если его нет, установите из репозитория ОС (sudo apt install -y unzip) или из комплекта поставки согласно статье Установка пакета из комплекта поставки.

Создаем папку /app/Primo.AI/Api и дочерние:

sudo mkdir -p /app/Primo.AI/Api/volumes/conf/Api/ \ /app/Primo.AI/Api/volumes/conf/Auth/ \ /app/Primo.AI/Api/volumes/conf/Logs/ \ /app/Primo.AI/Api/volumes/conf/MachineInfo/ \ /app/Primo.AI/Api/volumes/conf/Inference/ \ /app/Primo.AI/Api/volumes/nginx/ssl/ \ /app/Primo.AI/Api/volumes/Api_Models/ \ /app/Primo.AI/Api/volumes/Api_ContextFiles/ \ /app/Primo.AI/Api/volumes/Api_LangflowScriptPreset/ \ /app/Primo.AI/Api/volumes/langflow_data/ \ /app/Primo.AI/Api/volumes/lffe/

Сгенерируйте TLS-сертификат для nginx по инструкции.

Для Конструктора агентских систем создаем файлы БД:

sudo touch /app/Primo.AI/Api/volumes/langflow_data/langflow.db \ /app/Primo.AI/Api/volumes/langflow_data/langflow.db-shm \ /app/Primo.AI/Api/volumes/langflow_data/langflow.db-wal

Размещаем окружение сервера в /app/Primo.AI/Api — docker-compose.yaml, переменные окружения, конфигурации сервисов и nginx.conf:

release="https://nexus.primo-rpa.ru/repository/raw/1.26.10/ai-server" sudo wget "$release/docker/docker-compose.yaml" -O /app/Primo.AI/Api/docker-compose.yaml sudo wget "$release/docker/.env" -O /app/Primo.AI/Api/.env for service in Api Auth Inference Logs; do sudo wget "$release/data/conf/$service/appsettings.ProdLinux.json" -O /app/Primo.AI/Api/volumes/conf/$service/appsettings.ProdLinux.json done sudo wget "$release/data/nginx/nginx.conf" -O /app/Primo.AI/Api/volumes/nginx/nginx.conf
⚠️

Файлы моделей, пресетов и контекста не имеют расширения, и AI Server ищет их по точному имени. Скачивайте их командами из статьи. Браузер добавляет к имени расширение по типу содержимого (например, .txt) — если файл скачан браузером, удалите это расширение.

Размещаем файлы моделей Умного OCR:

filenames="8502296a-9608-4672-bd7a-05acb32b50ef \ 9a529a4c-2807-41a9-bee9-72a511681000 \ 3901af0a-8c50-4b76-b96f-481cae5e4a35 \ 5ed5d6eb-d7c0-4d67-8433-0119d922f14c \ 707dd4a6-da8f-40f8-bfda-4854956b0d68 \ 16201dec-7f46-497c-8f4d-0b77016167fe \ f93a6a88-756c-4137-b130-64df763fc6b7" for filename in $filenames; do sudo wget "https://nexus.primo-rpa.ru/repository/raw/data/ai-server/models/$filename" -O /app/Primo.AI/Api/volumes/Api_Models/$filename done

Размещаем эмбеддинг-модель SDC-сервера qwen3vl-embed-2B — она нужна проектам Классификация (семантическая). Модель семантического классификатора уже входит в список моделей Умного OCR выше.

sudo wget "https://nexus.primo-rpa.ru/repository/raw/data/ai-server/models/2263ec5f-b843-422f-b9e0-78e98549e738" -O /app/Primo.AI/Api/volumes/Api_Models/2263ec5f-b843-422f-b9e0-78e98549e738

Размещаем файлы моделей AI Текст.

Файлы моделей объемные, поэтому можно выберите необходимые модели (см. таблицы) и уберите лишние имена файлов в bash-команде (ниже таблиц).

Большие языковые модели для компонента Задачи NLP:

Имя моделиИмя файлаИсполнение
base-llm-06-7b-gguf-q8f55425a0-87c8-4d9e-a4cd-abc56f96ab1eOllama
base-llm-06-7b-safetensors-fp1678e57e23-363c-4b1e-b4e2-36fb31da5b48vLLM
base-llm-07-8b-safetensors-fp16e161b94d-3272-4afa-9aad-d191b61c67d3vLLM
base-llm-06-7b-gguf-fp16c7a88b7f-bf7e-484b-bcc4-fea147315c83Ollama
base-llm-08-27b-gguf-q4_k_m1fc223ef-7a13-42db-8bcb-5fda5a39779eOllama
base-llm-09-30b-gguf-q4_k_m7be7740d-64bc-4d07-a3b2-5ba5e6815e17Ollama
base-llm-11-9b-safetensors-fp16610d3c1c-6674-460e-8652-fc9f597aa370vLLM
base-llm-11-9b-gguf-q4_k_m6383fa95-74fa-4a1f-8b05-3e57e0a37f21Ollama
base-llm-11-9b-safetensors-fp8ca4a4832-54e3-4601-bcf8-c5672ee6808avLLM
base-llm-11-30b-gguf-q4_k_me8dfc900-e183-4647-80b0-a97f242a7dbaOllama
base-llm-12-35b-gguf-q4_k_m3377b494-f686-4cef-9db1-4ffb3164cc9cOllama
base-llm-12-35b-safetensors-nfvp463e56e59-6c96-4fc7-9ecb-afab3d79bb21vLLM
base-llm-13-26b-gguf-q4_k_m1442b32b-aaee-4139-88c1-a7f313d11a09Ollama
base-llm-12-35b-safetensors-4bit471c79fa-17b3-46a6-a42f-b93eef012012vLLM
base-llm-14-27b-gguf-q4_k_m40d9afa6-de73-46e6-a85d-8816d54cafb7Ollama
base-llm-14-27b-safetensors-4bit312244b9-9d2e-4553-8bd1-b135e739af13vLLM
ft-base-0.6b-fp166dd7fb3c-d58e-427c-8845-39964df50bc5vLLM (для FT)
ft-base-2b-fp16ce8f072a-b6dc-4c9f-ae4e-abe826da3aa0vLLM (для FT)
filenames="f55425a0-87c8-4d9e-a4cd-abc56f96ab1e \ 78e57e23-363c-4b1e-b4e2-36fb31da5b48 \ e161b94d-3272-4afa-9aad-d191b61c67d3 \ c7a88b7f-bf7e-484b-bcc4-fea147315c83 \ 1fc223ef-7a13-42db-8bcb-5fda5a39779e \ 7be7740d-64bc-4d07-a3b2-5ba5e6815e17 \ 610d3c1c-6674-460e-8652-fc9f597aa370 \ 6383fa95-74fa-4a1f-8b05-3e57e0a37f21 \ ca4a4832-54e3-4601-bcf8-c5672ee6808a \ e8dfc900-e183-4647-80b0-a97f242a7dba \ 3377b494-f686-4cef-9db1-4ffb3164cc9c \ 63e56e59-6c96-4fc7-9ecb-afab3d79bb21 \ 1442b32b-aaee-4139-88c1-a7f313d11a09 \ 471c79fa-17b3-46a6-a42f-b93eef012012 \ 40d9afa6-de73-46e6-a85d-8816d54cafb7 \ 312244b9-9d2e-4553-8bd1-b135e739af13 \ 6dd7fb3c-d58e-427c-8845-39964df50bc5 \ ce8f072a-b6dc-4c9f-ae4e-abe826da3aa0" cd /app/Primo.AI/Api/volumes/Api_Models/ for filename in $filenames; do wget "https://nexus.primo-rpa.ru/repository/raw/data/ai-server/models/$filename" -O /app/Primo.AI/Api/volumes/Api_Models/$filename done

Модели для RAG-сервера:

Имя моделиИмя файла
embeddinggemma-300m9fbc250f-fb1d-43c0-9af5-957a7f8c5aa7
jina-rerank-v33cf2d1e8-e15b-4633-933f-556823ada8ce
qwen3-embed-0.6b18851aa6-af5f-4569-8084-f7db6b820e32
qwen3-embed-4b7316ea9c-eb37-40fd-ba09-551d5568c60e
qwen3-rerank-0.6b91b8ef72-f954-4409-8b7b-26c7a9bedefe
qwen3-rerank-4ba55e5fe7-6545-4777-9e75-7eae472c3ff0
filenames="9fbc250f-fb1d-43c0-9af5-957a7f8c5aa7 \ 3cf2d1e8-e15b-4633-933f-556823ada8ce \ 18851aa6-af5f-4569-8084-f7db6b820e32 \ 7316ea9c-eb37-40fd-ba09-551d5568c60e \ 91b8ef72-f954-4409-8b7b-26c7a9bedefe \ a55e5fe7-6545-4777-9e75-7eae472c3ff0" cd /app/Primo.AI/Api/volumes/Api_Models/ for filename in $filenames; do wget "https://nexus.primo-rpa.ru/repository/raw/data/ai-server/models/$filename" -O /app/Primo.AI/Api/volumes/Api_Models/$filename done

Размещаем стандартный контекст NLP-запросов:

filenames="13fb0ff5-3f31-44e1-9c99-e24276380a3f \ a9d109d6-0125-42f9-b44e-2052a0c4e164 \ d24b857c-6c21-4d5f-990f-52d6235c33dd \ e41cc59b-059f-4471-8d09-328aab8ed60f" for filename in $filenames; do sudo wget "https://nexus.primo-rpa.ru/repository/raw/1.26.10/ai-server/data/context/$filename" -O /app/Primo.AI/Api/volumes/Api_ContextFiles/$filename done

Размещаем пресеты конвейеров агентских систем:

filenames="3bc6dd44-226f-4a61-87e6-475e4c0e2dd0 \ b933462a-b85e-4267-b5df-45a78f9453a4 \ e18c953c-6cbf-4f43-9267-76796bea018c \ fd652603-1410-49cd-a3ab-6323256753fa" for filename in $filenames; do sudo wget "https://nexus.primo-rpa.ru/repository/raw/1.26.10/ai-server/data/agsys-presets/$filename" -O /app/Primo.AI/Api/volumes/Api_LangflowScriptPreset/$filename done

Должна получиться следующая иерархия папок для соответствия стандартному docker-compose.yaml:

/app/Primo.AI/Api/ ├── .env ├── docker-compose.yaml └── volumes | ├── conf │ └── Api │ └── appsettings.ProdLinux.json │ └── Logs │ └── appsettings.ProdLinux.json │ └── Inference │ └── appsettings.ProdLinux.json │ └── Auth │ └── appsettings.ProdLinux.json | ├── Api_Models │ ├─── cf7d9f7f-ab96-4c15-873e-82c6aad7f9a4 │ ├─── 3901af0a-8c50-4b76-b96f-481cae5e4a35 │ ├─── ... │ └─── e161b94d-3272-4afa-9aad-d191b61c67d3 | ├── Api_ContextFiles │ ├─── 13fb0ff5-3f31-44e1-9c99-e24276380a3f │ ├─── e41cc59b-059f-4471-8d09-328aab8ed60f │ ├─── a9d109d6-0125-42f9-b44e-2052a0c4e164 │ └─── d24b857c-6c21-4d5f-990f-52d6235c33dd | ├── Api_LangflowScriptPreset │ ├─── e18c953c-6cbf-4f43-9267-76796bea018c │ ├─── fd652603-1410-49cd-a3ab-6323256753fa │ ├─── b933462a-b85e-4267-b5df-45a78f9453a4 │ └─── 3bc6dd44-226f-4a61-87e6-475e4c0e2dd0 | ├── langflow_data │ ├─── langflow.db │ ├─── langflow.db-shm │ └─── langflow.db-wal | ├── lffe │ └─── logs | ├── nginx │ └─── nginx.conf | └── Logs

4. Редактируем конфигурационные файлы

Конфигурационные файл Api и его компонентов: Api.Inference, Api.Logs, Api.Auth:

Укажите адрес портала AI Server в Security > EnabledOrigins:

sudo sed -i 's|"https://192.168.0.2:44392"|"https://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:44392"|g' /app/Primo.AI/Api/volumes/conf/Api/appsettings.ProdLinux.json

Укажите адрес Конструктора агентских систем в Api > LangflowConstructor:

sudo sed -i 's|"ApiBaseUrl": "https://192.168.1.2:44392"|"ApiBaseUrl": "https://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:44392"|g' /app/Primo.AI/Api/volumes/conf/Api/appsettings.ProdLinux.json

Переменные окружения для docker-compose.yaml:

Укажите реальный внешний эндпоинт AI Server:

sudo sed -i 's|AI_SERVER_BASE_URL=https://primo-rpa-ai-server:44392/|AI_SERVER_BASE_URL=https://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:44392/|g' /app/Primo.AI/Api/.env

Укажите реальный внешний эндпоинт AI Server:

sudo sed -i 's|BACKEND_URL=https://primo-rpa-ai-server:44392/langflow/|BACKEND_URL=https://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:44392/langflow/|g' /app/Primo.AI/Api/.env

При необходимости замените часовой пояс:

sudo sed -i 's|TIMEZONE=Europe/Moscow|TIMEZONE=xxxxxxxxxxx|g' /app/Primo.AI/Api/.env

При необходимости скорректируйте учётные данные.

Подключение S3-совместимого хранилища (MinIO)

По умолчанию AI Server хранит загруженные файлы в файловой системе или базе данных. Если вы хотите использовать S3-совместимое хранилище (MinIO), внесите изменения в конфигурационные файлы Api и Api.Inference.

Добавьте секцию Minio в оба файла конфигурации:

sudo nano /app/Primo.AI/Api/volumes/conf/Api/appsettings.ProdLinux.json sudo nano /app/Primo.AI/Api/volumes/conf/Inference/appsettings.ProdLinux.json
"Minio": { "Endpoint": "192.168.1.2:9001", "AccessKey": "xxxxxxxxxxxxxxxxxxxx", "SecretKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "Ssl": false, "Bucket": "my-bucket" }
ПараметрОписание
EndpointАдрес и порт сервера MinIO
AccessKeyКлюч доступа
SecretKeyСекретный ключ
SslИспользовать ли SSL-соединение (true / false)
BucketИмя бакета (опционально, по умолчанию primo-ai)

Затем укажите тип хранилища "Minio" вместо "FileSystem" или "Db" в соответствующих секциях:

  • Api (appsettings.ProdLinux.json): во всех подсекциях FileUpload > * > StoreType
  • Api.Inference (appsettings.ProdLinux.json): в секции FileStore > StoreType
ℹ️

После изменения конфигурации перезапустите контейнеры: docker compose -f /app/Primo.AI/Api/docker-compose.yaml up -d

5. Настройка производительности

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

Таймауты запуска процессов

Конфигурационный файл Api (/app/Primo.AI/Api/volumes/conf/Api/appsettings.ProdLinux.json):

СекцияПараметрПо умолчаниюОписание
InferencesStartTimeoutSeconds240Таймаут ожидания запуска процесса инференса на целевой машине (сек)
InferencesStopTimeoutSeconds140Таймаут ожидания остановки процесса инференса (сек)
RagStartTimeoutSeconds180Таймаут ожидания запуска RAG-сервера (сек)
RagStopTimeoutSeconds10Таймаут остановки RAG-сервера (сек)
LangflowStartTimeoutSeconds180Таймаут ожидания запуска Конструктора агентских систем (сек)
LangflowStopTimeoutSeconds10Таймаут остановки Конструктора агентских систем (сек)
FinetuningStartTimeoutSeconds60Таймаут ожидания запуска процесса файнтюнинга (сек)
FinetuningStopTimeoutSeconds10Таймаут остановки процесса файнтюнинга (сек)
ℹ️

Если процесс не успевает запуститься в отведённое время, сервер считает его зависшим и прерывает. Увеличьте значение StartTimeoutSeconds при работе на медленном оборудовании.

Параллелизм обработки запросов

Конфигурационный файл Inference (/app/Primo.AI/Api/volumes/conf/Inference/appsettings.ProdLinux.json):

СекцияПараметрПо умолчаниюОписание
RabbitMQAgentSystemRequestEventPrefetchCount10Кол-во одновременных запросов агентских систем в обработке
RabbitMQSmartOcrRequestEventPrefetchCount10Кол-во одновременных запросов Умного OCR в обработке
RabbitMQNlpRequestEventPrefetchCount10Кол-во одновременных запросов NLP в обработке
RabbitMQPackageRequestEventPrefetchCount10Кол-во одновременных запросов пакетной обработки
RabbitMQPdfGeneratingEventPrefetchCount10Кол-во одновременных запросов генерации PDF

Уменьшите значения PrefetchCount при нехватке ресурсов на сервере. Это ограничит количество запросов, одновременно обрабатываемых сервисом Inference.

Очистка устаревших запросов

Конфигурационный файл Inference (/app/Primo.AI/Api/volumes/conf/Inference/appsettings.ProdLinux.json):

СекцияПараметрПо умолчаниюОписание
ClearRequestsServiceDefaultExpirationSeconds3600Время хранения обработанного запроса (сек). По умолчанию 1 час
ClearRequestsServiceUnprocessedExpirationSeconds86400Время хранения необработанного запроса (сек). По умолчанию 24 часа
ℹ️

После перенастройки перезапустите контейнеры: docker compose -f /app/Primo.AI/Api/docker-compose.yaml up -d

6. SSO

При необходимости можно подключить авторизацию через Keycloak.

7. Файерволл

Команды ниже — для брандмауэра ufw. Если используется другой брандмауэр, откройте те же порты его средствами. Пакет ufw можно установить из репозитория ОС (sudo apt install -y ufw) или, при желании, из комплекта поставки согласно статье Установка пакета из комплекта поставки.

Откройте порт 44392:

sudo ufw allow 44392/tcp

8. Настройка прав доступа к службам

sudo groupadd primo-ai

Создайте учетную запись primo:

sudo useradd -g primo-ai -m -s /bin/bash primo

Добавьте пользователя в группу docker:

sudo usermod -aG docker primo

Установите владельца папки с инсталляцией:

sudo chown -R primo:primo-ai /app/Primo.AI
sudo chmod -R 771 /app/Primo.AI

9. Запуск контейнеров основных компонентов Центра управления

docker compose -f /app/Primo.AI/Api/docker-compose.yaml up -d

10. Установка Api.MachineInfo

Размещаем файлы компонента

sudo mkdir -p /app/Primo.AI/Api.MachineInfo

Скачиваем дистрибутив:

wget "https://nexus.primo-rpa.ru/repository/raw/1.26.10/ai-server/linux/Api.MachineInfo-linux.zip"

Разархивируем Api.MachineInfo-linux.zip в /app/Primo.AI/Api.MachineInfo:

sudo unzip Api.MachineInfo-linux.zip -d /app/Primo.AI/Api.MachineInfo

Устанавливаем владельца папки с инсталляцией:

sudo chown -R primo:primo-ai /app/Primo.AI/Api.MachineInfo

Раздаем права на запуск:

sudo chmod +x /app/Primo.AI/Api.MachineInfo/Primo.AI.Api.MachineInfo

Создаем и настраиваем службу

Копируем файл службы из комплекта поставки в /etc/systemd/system:

sudo cp /app/Primo.AI/Api.MachineInfo/Primo.AI.Api.MachineInfo.service /etc/systemd/system/Primo.AI.Api.MachineInfo.service

Перезагружаем systemctl:

sudo systemctl daemon-reload

Помещаем службу в автозапуск:

sudo systemctl enable /etc/systemd/system/Primo.AI.Api.MachineInfo.service

Проверяем выполнение команды:

sudo lsblk --nodeps -no serial /dev/sda

Если команда выполнится с ошибкой, находим вместо /dev/sda другое блочное устройство (диск) и прописываем его (вместо xxxxxxxxxx) в конфигурационном файле:

sudo sed -i 's|"HDD": "/dev/sda"|"HDD": "xxxxxxxxxx"|g' /app/Primo.AI/Api.MachineInfo/appsettings.ProdLinux.json

Настройка правила брандмауэра ufw

Для разрешения доступа к API сервиса только со стороны Primo.AI.Api из подсети server_ai докера выполните команду:

sudo ufw allow from 172.18.0.0/24 to 172.18.0.1 port 5051 proto tcp

Вспомогательные компоненты

Проверьте наличие пакета cpuid:

apt policy cpuid

Если пакет не установлен, установите его из комплекта поставки согласно статье Установка пакета из комплекта поставки.

Настройка Primo RPA AI Server для работы с MachineInfo

Открываем в редакторе файл конфигурации Api:

sudo nano /app/Primo.AI/Api/volumes/conf/Api/appsettings.ProdLinux.json

Вариант 1. Если используется один сервер с MachineInfo, то прописываем ссылку на него:

"MachineInfo": { "Url": "https://172.18.0.1:5051", "Urls": null, "Timeout": 4 }

Параметр Timeout – время ответа, после которого сервис считается недоступным. По умолчанию равен 4 сек.

Вариант 2. Если используется кластер MachineInfo, или MachineInfo используется в геокластере, то прописываем ссылки на все узлы кластера:

"MachineInfo": { "Url": null, "Urls": [ "https://10.0.0.163:5051", "https://10.0.0.164:5051" ], "Timeout": 4 }

Порядок узлов имеет значение. В момент генерации запроса на лицензию должны быть доступны все узлы. Узлы нельзя скрывать за балансировщиком нагрузки (load balancer).

ℹ️

Указанные выше URL должны быть доступны изнутри контейнера server_api. Например, для bridge-сети (конфигурация сети задается в docker-compose-файле сервера) адрес хоста – 172.18.0.1.

После перенастройки Api, перезапустите контейнер server_api:

docker restart server_api

Запускаем службу

Запускаем службу:

sudo systemctl start Primo.AI.Api.MachineInfo

Проверяем состояние службы:

systemctl status Primo.AI.Api.MachineInfo
Last updated on