Установка Центра управления AI Server
1. Установка Docker
Настоящее краткое руководство основано на официальных инструкций:
При наличии доступа доступа к необходимым ресурсам на машине, установите docker и компоненты (compose) с официального сайта согласно официально инструкции выше и переходите к п.2.
В отсутствие интернета воспользуйтесь предоставленной версией согласно ОС (см. таблицу ниже).
| Файл | Описание |
|---|---|
distr/externals/{distribution}/docker.zip | Дистрибутив Docker с плагинами (compose, buildx) |
docker/docker.service | Файл службы для автоматического запуска Docker при старте системы |
Скопируйте на машину с Центром управления AI Server файлы, приведенные в таблице — они находятся в комплекте поставки Primo RPA AI Server.
Определение {distribution}
| ОС | {distribution} |
|---|---|
| Astra Linux Special Edition 1.7 | astra1.7 |
| Ubuntu 22.04 | ubuntu22.04 |
| Ubuntu 24.04 | ubuntu24.04 |
Распаковка архива
Распакуйте архив во временную папку:
mkdir -p distr/externals/{distribution}/dockerunzip distr/externals/{distribution}/docker.zip -d distr/externals/{distribution}/dockersudo dpkg -i distr/externals/{distribution}/docker/*.debУстановка системных служб
sudo cp docker/docker.service /etc/systemd/system/sudo systemctl enable docker.servicesudo systemctl daemon-reloadsudo systemctl restart dockerСоздание группы docker
Проверьте наличие группы docker на сервере:
cat /etc/group | grep dockerЕсли группы нет, добавьте:
sudo groupadd dockerРаздача прав
Добавьте текущего пользователя в группу docker. Например, для пользователя ubuntu:
sudo usermod -aG docker ubuntu && \
newgrp dockerЦентр управления использует подсеть server_ai, которая создается автоматически при первом запуске финальной команды данной статьи.
2. Загрузка образов
Вариант загрузки образов 1 (через архивы)
| Компонент | Образ | Имя архива |
|---|---|---|
Primo.AI.Api | primo-rpa/ai-server-api:latest | distr/ai-server-api.tar.7z |
Primo.AI.Api.Inference | primo-rpa/ai-server-inference:latest | distr/ai-server-inference.tar.7z |
Primo.AI.Api.Logs | primo-rpa/ai-server-logs:latest | distr/ai-server-logs.tar.7z |
Primo.AI.Api.Auth | primo-rpa/ai-server-auth:latest | distr/ai-server-auth.tar.7z |
UI / nginx | primo-rpa/ai-server-ui:latest | distr/ai-server-ui.tar.7z |
Backend Конструктора агентских систем | primo-rpa/ai-server-langflow-backend:latest | distr/ai-server-langflow-backend.tar.7z |
UI / nginx Конструктора агентских систем | primo-rpa/ai-server-langflow-frontend:latest | distr/ai-server-langflow-frontend.tar.7z |
PostgreSQL | externals/postgres:17.6 | distr/externals/postgres_17.6.tar.7z |
RabbitMQ | externals/rabbitmq:3.10.7-management | distr/externals/rabbitmq_3.10.7-management.tar.7z |
Redis | externals/redis:latest | distr/externals/redis_latest.tar.7z |
sudo apt update && sudo apt install 7z
names="ai-server-api ai-server-auth ai-server-inference ai-server-logs ai-server-ui"
externals="redis:latest rabbitmq:3.10.7-management postgres:17.6"
for name in $names; do
wget --content-disposition "https://disk.primo-rpa.ru/index.php/s/t9BHBjR6PP06Yax/download?path=%2FRelease%2FAI%20Server%2Fdistr&files=$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 --content-disposition "https://disk.primo-rpa.ru/index.php/s/t9BHBjR6PP06Yax/download?path=%2FRelease%2FAI%20Server%2Fdistr%2Fexternals&files=$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="redis:latest rabbitmq:3.10.7-management postgres:17.6"
for name in $names; do
images+=" primo-rpa/$name"
done
for external in $externals; do
images+=" externals/$external"
done
for image in $images; do
docker pull nexus.primo-rpa.ru:8000/$image
docker tag nexus.primo-rpa.ru:8000/$image $image
docker rmi nexus.primo-rpa.ru:8000/$image
done3. Размещение файлов
Создаем папку /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/ \
/app/Primo.AI/Api/volumes/Api_Models/ \
/app/Primo.AI/Api/volumes/Api_ContextFiles/ \
/app/Primo.AI/Api/volumes/langflow_data/ \
/app/Primo.AI/Api/volumes/lffe/Для Конструктора агентских систем создаем файлы БД:
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:
sudo cp docker/server/docker-compose.yaml /app/Primo.AI/Api/sudo cp -r docker/server/volumes/* /app/Primo.AI/Api/volumes/sudo unzip docker/server/env.zip -d /app/Primo.AI/Api/Размещаем файлы моделей Умного OCR:
sudo cp -r data/models/SmartOCR/* /app/Primo.AI/Api/volumes/Api_Models/Размещаем файлы моделей AI Текст.
Файлы моделей объемные, поэтому можно выберите необходимые модели (см. таблицы) и уберите лишние имена файлов в bash-команде (ниже таблиц).
Большие языковые модели для компонента Задачи NLP:
| Имя модели | Имя файла | Исполнение |
|---|---|---|
| base-llm-01-7b-safetensors-fp16 | e255188e-d9f6-41d3-b170-0c25bc0bd02f | vLLM |
| base-llm-01-7b-gguf-q8 | ddc02d8d-0117-4c67-acb3-2dd0549d2985 | Ollama |
| base-llm-06-7b-gguf-q8 | f55425a0-87c8-4d9e-a4cd-abc56f96ab1e | Ollama |
| base-llm-06-7b-safetensors-fp16 | 78e57e23-363c-4b1e-b4e2-36fb31da5b48 | vLLM |
| base-llm-07-8b-safetensors-fp16 | e161b94d-3272-4afa-9aad-d191b61c67d3 | vLLM |
| base-llm-06-7b-gguf-fp16 | c7a88b7f-bf7e-484b-bcc4-fea147315c83 | Ollama |
| base-llm-06-32b-gguf-q4_k_m | 68c2d421-1877-4693-b53f-2e1ca1079db8 | Ollama |
| base-llm-08-27b-gguf-q4_k_m | 1fc223ef-7a13-42db-8bcb-5fda5a39779e | Ollama |
| base-llm-09-30b-gguf-q4_k_m | 7be7740d-64bc-4d07-a3b2-5ba5e6815e17 | Ollama |
| base-llm-10-4b-safetensors-base | 98291769-7a84-468f-af2a-5ea4bb02f72a | Для файнтюнинга |
| base-llm-11-9b-safetensors-fp16 | 610d3c1c-6674-460e-8652-fc9f597aa370 | vLLM |
| base-llm-11-9b-gguf-q4_k_m | 6383fa95-74fa-4a1f-8b05-3e57e0a37f21 | Ollama |
| base-llm-11-9b-safetensors-fp8 | ca4a4832-54e3-4601-bcf8-c5672ee6808a | vLLM |
filenames="e255188e-d9f6-41d3-b170-0c25bc0bd02f \
ddc02d8d-0117-4c67-acb3-2dd0549d2985 \
f55425a0-87c8-4d9e-a4cd-abc56f96ab1e \
78e57e23-363c-4b1e-b4e2-36fb31da5b48 \
e161b94d-3272-4afa-9aad-d191b61c67d3 \
c7a88b7f-bf7e-484b-bcc4-fea147315c83 \
68c2d421-1877-4693-b53f-2e1ca1079db8 \
1fc223ef-7a13-42db-8bcb-5fda5a39779e \
7be7740d-64bc-4d07-a3b2-5ba5e6815e17 \
98291769-7a84-468f-af2a-5ea4bb02f72a \
610d3c1c-6674-460e-8652-fc9f597aa370 \
6383fa95-74fa-4a1f-8b05-3e57e0a37f21 \
ca4a4832-54e3-4601-bcf8-c5672ee6808a"
cd /app/Primo.AI/Api/volumes/Api_Models/
for filename in filenames; do
wget --content-disposition "https://disk.primo-rpa.ru/index.php/s/t9BHBjR6PP06Yax/download?path=%2FRelease%2FAI%20Server%2Fdata%2Fmodels%2FNLP&files=$filename"
doneМодели для RAG-сервера:
| Имя модели | Имя файла |
|---|---|
| embeddinggemma-300m | 9fbc250f-fb1d-43c0-9af5-957a7f8c5aa7 |
| jina-rerank-v3 | 3cf2d1e8-e15b-4633-933f-556823ada8ce |
| qwen3-embed-0.6b | 18851aa6-af5f-4569-8084-f7db6b820e32 |
| qwen3-embed-4b | 7316ea9c-eb37-40fd-ba09-551d5568c60e |
| qwen3-rerank-0.6b | 91b8ef72-f954-4409-8b7b-26c7a9bedefe |
| qwen3-rerank-4b | a55e5fe7-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 --content-disposition "https://disk.primo-rpa.ru/index.php/s/t9BHBjR6PP06Yax/download?path=%2FRelease%2FAI%20Server%2Fdata%2Fmodels%2FRAG&files=$filename"
doneРазмещаем стандартный контекст NLP-запросов:
sudo cp -r data/context/* /app/Primo.AI/Api/volumes/Api_ContextFiles/Должна получиться следующая иерархия папок для соответствия стандартному 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
|
├── langflow_data
│ ├─── langflow.db
│ ├─── langflow.db-shm
│ └─── langflow.db-wal
|
├── lffe
│ └─── logs
|
├── nginx
│ └─── nginx.conf
|
└── Logs4. Редактируем конфигурационные файлы
Конфигурационные файл Api и его компонентов: Api.Inference, Api.Logs, Api.Auth:
Откройте в редакторе конфигурационный файл (замените xxx на Api, Api.Inference, Api.Logs, Api.Auth):
sudo nano /app/Primo.AI/xxx/volumes/conf/Api/appsettings.ProdLinux.jsonУкажите адрес портала AI Server в Security > EnabledOrigins:
"Security": {
...
"EnabledOrigins": [
"https://192.168.0.4:44392",
"https://ai-server-portal:44392"
],
...
}Переменные окружения для docker-compose.yaml:
Укажите реальный внешний эндпоинт AI Server:
sudo sed -i 's|https://primo-rpa-ai-server:44392|https://XXXXXXXXXXXXXXXXX:44392|g' /app/Primo.AI/Api/.envПри необходимости замените временную зону:
sudo sed -i 's|TIMEZONE=Europe/Moscow|TIMEZONE=xxxxxxxxxxx|g' /app/Primo.AI/Api/.envПри необходимости скорректируйте учётные данные.
5. SSO
При необходимости можно подключить авторизацию через Keycloak.
6. Файерволл
Откройте порт 44392:
sudo ufw allow 44392/tcp7. Настройка прав доступа к службам
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/Apisudo chmod -R 771 /app/Primo.AI/Api8. Запуск контейнеров основных компонентов Центра управления
docker compose -f /app/Primo.AI/Api/docker-compose.yaml up -d9. Установка Api.MachineInfo
Размещаем файлы компонента
sudo mkdir -p /app/Primo.AI/Api.MachineInfoСкачиваем дистрибутив:
wget --content-disposition "https://disk.primo-rpa.ru/index.php/s/t9BHBjR6PP06Yax/download?path=%2FRelease%2FAI%20Server%2Fdistr&files=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Установите пакет, если он не установлен:
sudo unzip distr/{distribution}/cpuid.zip -d distr/{distribution}/cpuidsudo dpkg -i distr/{distribution}/cpuid/*.debНастройка 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