Обновление 1.26.6.1 → 1.26.6.2
Примечания к релизу: 1.26.6.2
Значимые изменения, которые следует учитывать системному администратору:
- Обновлены все образы Docker:
ai-server-api,ai-server-auth,ai-server-ft,ai-server-idp-cpu,ai-server-idp-gpu,ai-server-inference,ai-server-logs,ai-server-machineinfo,ai-server-nlp,ai-server-ollama,ai-server-rag-gpu,ai-server-ui,ai-server-vllm-gpu - Обновлены дистрибутивы
Agent-linux.zipиApi.MachineInfo-linux.zip - TLS-сертификаты больше не встроены в образ
ai-server-ui— теперь монтируются через volume вdocker-compose.yaml - Обновлены версии Python-зависимостей в сервисах DS (устранение CVE)
- Образ Ollama (
ai-server-ollama) теперь запускается от непривилегированного пользователя (UID 1001) - Обновлён образ RabbitMQ:
3.10.7-management→4.2.8-management-alpine(устранение уязвимостей, Alpine-база) - Обновлён образ PostgreSQL:
postgres:17.6→postgres:17.10-alpine(устранение уязвимостей, Alpine-база) - Обновлён образ Redis:
redis:latest→redis:7.4-alpine(устранение уязвимостей, Alpine-база)
Машина сервера
1. Извлеките TLS-сертификаты из текущего образа
Начиная с версии 1.26.6.2 сертификаты не включены в образ ai-server-ui. Перед обновлением необходимо сохранить сертификаты из работающего контейнера и подключить их через volume.
Создайте директорию для сертификатов:
sudo mkdir -p /app/Primo.AI/Api/volumes/nginx/sslИзвлеките сертификаты из работающего контейнера server_ui:
docker cp server_ui:/etc/nginx/cert1.crt /app/Primo.AI/Api/volumes/nginx/ssl/cert1.crt
docker cp server_ui:/etc/nginx/cert1.rsa /app/Primo.AI/Api/volumes/nginx/ssl/cert1.rsaУстановите права доступа:
sudo chmod 644 /app/Primo.AI/Api/volumes/nginx/ssl/cert1.crt
sudo chmod 600 /app/Primo.AI/Api/volumes/nginx/ssl/cert1.rsaЕсли контейнер server_ui уже остановлен или сертификаты недоступны, сгенерируйте новые по инструкции.
2. Обновите docker-compose.yaml
Откройте файл /app/Primo.AI/Api/docker-compose.yaml и внесите следующие изменения:
a) Обновите образ PostgreSQL:
postgres:
image: externals/postgres:17.10-alpineb) Обновите образ RabbitMQ:
rabbitMQ:
image: externals/rabbitmq:4.2.8-management-alpinec) Обновите образ Redis:
redis:
image: externals/redis:7.4-alpined) Добавьте в секцию nginx → volumes монтирование сертификатов:
nginx:
image: primo-rpa/ai-server-ui
...
volumes:
- ./volumes/nginx/nginx.conf:/etc/nginx/nginx.conf
- ./volumes/nginx/ssl/cert1.crt:/etc/nginx/cert1.crt:ro
- ./volumes/nginx/ssl/cert1.rsa:/etc/nginx/cert1.rsa:ro
- ./volumes/nginx/:/var/log/nginx3. Обновите образы Docker
Через архив:
sudo apt update && sudo apt install 7z
names="ai-server-api ai-server-auth ai-server-inference ai-server-logs ai-server-machineinfo ai-server-ui"
externals="postgres:17.10-alpine rabbitmq:4.2.8-management-alpine redis:7.4-alpine"
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
rm $name.tar.7z $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
rm $filename.tar.7z $filename.tar
doneЕсли есть доступ к nexus.primo-rpa.ru:8005:
names="ai-server-api ai-server-auth ai-server-inference ai-server-logs ai-server-machineinfo ai-server-ui"
externals="postgres:17.10-alpine rabbitmq:4.2.8-management-alpine redis:7.4-alpine"
for name in $names; do
docker pull nexus.primo-rpa.ru:8005/primo-rpa/$name
docker tag nexus.primo-rpa.ru:8005/primo-rpa/$name primo-rpa/$name
docker rmi nexus.primo-rpa.ru:8005/primo-rpa/$name
done
for external in $externals; do
docker pull nexus.primo-rpa.ru:8005/externals/$external
docker tag nexus.primo-rpa.ru:8005/externals/$external externals/$external
docker rmi nexus.primo-rpa.ru:8005/externals/$external
done4. Обновите 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"
sudo systemctl stop Primo.AI.Api.MachineInfo
sudo unzip -o Api.MachineInfo-linux.zip -x "appsettings*" -d /app/Primo.AI/Api.MachineInfo/
sudo chmod +x /app/Primo.AI/Api.MachineInfo/Primo.AI.Api.MachineInfo
sudo chown primo:primo-ai /app/Primo.AI/Api.MachineInfo/
sudo systemctl start Primo.AI.Api.MachineInfo5. Перезапустите компоненты:
docker compose -f /app/Primo.AI/Api/docker-compose.yaml down && \
docker compose -f /app/Primo.AI/Api/docker-compose.yaml up -dУбедитесь, что Центр управления доступен по HTTPS (порт 44392).
Целевые машины
1. Измените владельца директории с шаблонами моделей
Шаг обязателен, если на целевой машине используется Ollama. Образ ai-server-ollama теперь запускается от непривилегированного пользователя (UID 1001). Без смены владельца контейнер не сможет записывать данные в примонтированную директорию.
sudo chown -R 1001:1001 /app/Primo.AI/AgentData/ModelTemplates2. Обновите файлы агента
wget --content-disposition "https://disk.primo-rpa.ru/index.php/s/t9BHBjR6PP06Yax/download?path=%2FRelease%2FAI%20Server%2Fdistr&files=Agent-linux.zip&downloadStartSecret=uf3pctriscf"
sudo systemctl stop Primo.AI.Agent
sudo rm /app/Primo.AI/Agent/InMemoryProcessStore.json
sudo unzip -o Agent-linux.zip -x "appsettings*" -d /app/Primo.AI/Agent/
sudo chmod +x /app/Primo.AI/Agent/Primo.AI.Agent
sudo chown -R agent:primo-ai /app/Primo.AI/Agent/
sudo systemctl start Primo.AI.Agent3. Обновите образы DS
- Вариант загрузки 1: скачайте необходимые архивы из официальной поставки AI Server:
images=""
echo "GPU? y/n"
read GPU
if [ "$GPU" = "y" ] || [ "$GPU" = "Y" ]; then
echo "FT-сервер? y/n"
read ft_server
if [ "$ft_server" = "y" ] || [ "$ft_server" = "Y" ]; then
images+=" ai-server-ft"
fi
echo "NLP-сервер? y/n"
read nlp_server
if [ "$nlp_server" = "y" ] || [ "$nlp_server" = "Y" ]; then
images+=" ai-server-nlp"
fi
echo "Ollama? y/n"
read ollama
if [ "$ollama" = "y" ] || [ "$ollama" = "Y" ]; then
images+=" ai-server-ollama"
fi
echo "vLLM? y/n"
read vllm
if [ "$vllm" = "y" ] || [ "$vllm" = "Y" ]; then
images+=" ai-server-vllm-gpu"
fi
echo "IDP-сервер? y/n"
read idp_server
if [ "$idp_server" = "y" ] || [ "$idp_server" = "Y" ]; then
images+=" ai-server-idp-gpu"
fi
echo "RAG? y/n"
read rag
if [ "$rag" = "y" ] || [ "$rag" = "Y" ]; then
images+=" ai-server-rag-gpu"
fi
else
echo "NLP-сервер? y/n"
read nlp_server
if [ "$nlp_server" = "y" ] || [ "$nlp_server" = "Y" ]; then
images+=" ai-server-nlp"
fi
echo "Ollama? y/n"
read ollama
if [ "$ollama" = "y" ] || [ "$ollama" = "Y" ]; then
images+=" ai-server-ollama"
fi
echo "IDP-сервер? y/n"
read idp_server
if [ "$idp_server" = "y" ] || [ "$idp_server" = "Y" ]; then
images+=" ai-server-idp-cpu"
fi
fi
# Удаляем ведущий пробел
images=$(echo $images | sed 's/^ //')
names=$(echo $images | tr ' ' '\n')
echo "Загружаемые images: $images"
sudo apt update && sudo apt install -y 7z
for name in $names; do
echo "Загрузка $name..."
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
rm -f $name.tar.7z $name.tar
done
echo "Готово!"- Вариант загрузки 2: используя репозиторий Docker:
Работает при наличии подключения к
nexus.primo-rpa.ru:8005.
#!/bin/bash
images=""
echo "GPU? y/n"
read GPU
if [ "$GPU" = "y" ] || [ "$GPU" = "Y" ]; then
echo "FT-сервер? y/n"
read ft_server
if [ "$ft_server" = "y" ] || [ "$ft_server" = "Y" ]; then
images+=" ai-server-ft"
fi
echo "NLP-сервер? y/n"
read nlp_server
if [ "$nlp_server" = "y" ] || [ "$nlp_server" = "Y" ]; then
images+=" ai-server-nlp"
fi
echo "Ollama? y/n"
read ollama
if [ "$ollama" = "y" ] || [ "$ollama" = "Y" ]; then
images+=" ai-server-ollama"
fi
echo "vLLM? y/n"
read vllm
if [ "$vllm" = "y" ] || [ "$vllm" = "Y" ]; then
images+=" ai-server-vllm-gpu"
fi
echo "IDP-сервер? y/n"
read idp_server
if [ "$idp_server" = "y" ] || [ "$idp_server" = "Y" ]; then
images+=" ai-server-idp-gpu"
fi
echo "RAG? y/n"
read rag
if [ "$rag" = "y" ] || [ "$rag" = "Y" ]; then
images+=" ai-server-rag-gpu"
fi
else
echo "NLP-сервер? y/n"
read nlp_server
if [ "$nlp_server" = "y" ] || [ "$nlp_server" = "Y" ]; then
images+=" ai-server-nlp"
fi
echo "Ollama? y/n"
read ollama
if [ "$ollama" = "y" ] || [ "$ollama" = "Y" ]; then
images+=" ai-server-ollama"
fi
echo "IDP-сервер? y/n"
read idp_server
if [ "$idp_server" = "y" ] || [ "$idp_server" = "Y" ]; then
images+=" ai-server-idp-cpu"
fi
fi
# Удаляем ведущий пробел
images=$(echo $images | sed 's/^ //')
names=$(echo $images | tr ' ' '\n')
echo "Загружаемые images: $images"
for name in $names; do
docker pull nexus.primo-rpa.ru:8005/primo-rpa/$name
docker tag nexus.primo-rpa.ru:8005/primo-rpa/$name primo-rpa/$name
docker rmi nexus.primo-rpa.ru:8005/primo-rpa/$name
done
echo "Готово!"Что дальше
После завершения обновления выполните проверку работоспособности системы.