# Обновление

> Обновление установки до нового релиза и изменения при переходе с версии 2.1.0 на 2.2.0.

Обновление заменяет образы PentAGI и, если релиз их изменил, файлы compose. Ваши `.env` и тома данных сохраняются, а миграции базы данных выполняются при запуске PentAGI.

## [Перед началом](https://pentagi.com/ru/docs/deployment/upgrade/#before-you-start)

* Прочитайте [примечания к выпуску](https://pentagi.com/changelog/) всех версий новее вашей; с 2.1.0 в них есть инструкции по обновлению.
* Создайте резервную копию базы данных. Ни установщик, ни PentAGI не делают этого, а откат миграций невозможен без потери данных. При использовании значений по умолчанию для `PENTAGI_POSTGRES_USER` и `PENTAGI_POSTGRES_DB`:

  ```bash
  docker exec pgvector pg_dump -U postgres -Fc pentagidb > pentagi-backup.dump
  ```

  Также сохраните копии `.env` и файлов compose: установщик заменяет файлы compose без создания резервной копии.
* Завершите [flow](https://pentagi.com/ru/docs/glossary/#flow), которые вам больше не нужны. Работающий [sandbox](https://pentagi.com/ru/docs/glossary/#sandbox) повторно используется в том виде, в котором он был создан, с настройками релиза, создавшего его.
* При переходе с версии 2.1.0 внесите изменения из раздела [С версии 2.1.0 до 2.2.0](#from-210-to-220) в `.env` и файлы рядом с ним перед запуском нового релиза. Если включён вход через Google или GitHub, сейчас очистите `OAUTH_GOOGLE_CLIENT_ID` и `OAUTH_GITHUB_CLIENT_ID`; в разделе объясняется, почему.

## [Docker Compose](https://pentagi.com/ru/docs/deployment/upgrade/#docker-compose)

1. Скачайте файлы compose нового релиза рядом с вашим `.env`: `docker-compose.yml` и файл каждого дополнительного стека, который вы запускаете. Контейнер PentAGI получает только те переменные, которые перечислены в его файле compose, поэтому новые настройки в `.env` не будут действовать при использовании старого файла.

   ```bash
   cd ~/pentagi
   curl -O https://raw.githubusercontent.com/vxcontrol/pentagi/main/docker-compose.yml
   # and the file of each optional stack you run, for example:
   curl -O https://raw.githubusercontent.com/vxcontrol/pentagi/main/docker-compose-langfuse.yml
   ```

2. Загрузите образы и перезапустите сервисы, используя те же файлы `-f`, с которыми вы запускаете стек. Без `pull` команда `up -d` сохраняет образы, уже находящиеся на хосте.

   ```bash
   docker compose pull && docker compose up -d
   ```

3. Обновите образ sandbox на Docker-хосте, который запускает flow, так как `docker compose pull` этого не делает. Flow, созданные впоследствии, будут использовать его.

   ```bash
   docker pull vxcontrol/kali-linux
   ```

Тег образа `latest` следует за основной веткой. Чтобы оставаться на одном релизе, установите `PENTAGI_IMAGE=vxcontrol/pentagi:<version>` в `.env`.

## [Установщик](https://pentagi.com/ru/docs/deployment/upgrade/#installer)

1. Скачайте установщик нового релиза из раздела [Быстрый старт](https://pentagi.com/ru/docs/getting-started/quickstart/) и запустите его с вашим `.env`. Установщик версии 2.1.0 не может обновить сам себя.
2. Чтобы заменить файлы compose, измените настройку так, чтобы в меню появился пункт **Apply Changes**, выберите его и ответьте `y`, когда установщик перечислит устаревшие файлы.
3. В меню обслуживания выполните **Update PentAGI** для загрузки новых образов и **Update Worker Image**, когда это будет предложено. Сам по себе **Update PentAGI** сохраняет старые файлы compose.

## [С версии 2.1.0 до 2.2.0](https://pentagi.com/ru/docs/deployment/upgrade/#from-210-to-220)

### [Файлы](https://pentagi.com/ru/docs/deployment/upgrade/#files)

* Файл compose монтирует `example.bedrock.provider.yml` рядом с собой. Установщик создаёт его; при ручной установке создайте его самостоятельно, пустого файла достаточно: `touch example.bedrock.provider.yml`.
* Замените `docker-compose-langfuse.yml`, если вы используете Langfuse: файл версии 2.1.0 указывает на образ `minio/minio`, который больше не публикуется, поэтому `docker compose pull` завершится ошибкой с ним. Если ваш `.env` устанавливает `MINIO_IMAGE=minio/minio:…`, удалите эту строку.
* Для [knowledge graph](https://pentagi.com/ru/docs/glossary/#knowledge-graph) поместите `examples/neo4j` из репозитория в `./neo4j` — Graphiti требуется его плагин APOC — и ознакомьтесь с разделом [Память и знания](https://pentagi.com/ru/docs/concepts/memory/#knowledge-graph-optional) для настроек моделей. `GRAPHITI_MODEL_NAME` больше не читается.
* При первом запуске выполняются восемь миграций базы данных. `docker compose logs pentagi` показывает «Database schema updated successfully», когда они завершены.

### [Вход и доступ](https://pentagi.com/ru/docs/deployment/upgrade/#sign-in-and-access)

* Всем пользователям необходимо войти снова: сеансы версии 2.1.0 отклоняются. API-токены продолжают работать, а скрипты выходят из системы с помощью `POST /api/v1/auth/logout`.
* API-токен получает ошибку 403 на REST-маршрутах `/users`, `/roles` и `/tokens`: управляйте учётными записями, ролями и токенами из сеанса браузера с выполненным входом.
* Вход через Google и GitHub теперь выполняет вход с проверенной провайдером электронной почтой в существующую учётную запись с этим адресом, включая локальные учётные записи, с ролью этой учётной записи. Версия 2.1.0 не может изменить электронную почту учётной записи, поэтому, если вход включён, выполните обновление с пустыми значениями `OAUTH_GOOGLE_CLIENT_ID` и `OAUTH_GITHUB_CLIENT_ID`, переместите `admin@pentagi.com` на адрес, который вы контролируете, в разделе **Settings → Account**, а затем снова включите вход. Функция **Reset Admin Password** установщика находит администратора только по `admin@pentagi.com`.
* За обратным прокси-сервером установите `TRUSTED_PROXIES`, иначе все пользователи будут использовать один и тот же адрес прокси-сервера, и одна серия неудачных попыток входа заблокирует всех на 15 минут — см. [Сетевой доступ](https://pentagi.com/ru/docs/configuration/security/#network-exposure).

### [Sandboxes](https://pentagi.com/ru/docs/deployment/upgrade/#sandboxes)

* При использовании `DOCKER_INSIDE=true` — шаблона `.env` версии 2.1.0 и значения по умолчанию установщика — версия 2.1.0 монтировала сокет Docker хоста в каждый sandbox. Версия 2.2.0 предоставляет агентам доступ к Docker только через отдельный демон, настроенный в `DOCKER_INSIDE_HOST`; без него доступа нет, а в журнале отображается `sandbox DISABLED`. При использовании `DOCKER_INSIDE_HOST` оставьте `DOCKER_SOCKET=` пустым, иначе шаблонный `/var/run/docker.sock` все ещё будет монтироваться. См. [Worker node](https://pentagi.com/ru/docs/deployment/worker-node/).
* Завершите flow, запущенные на версии 2.1.0: их sandboxes сохраняют старое монтирование сокета и возможности до завершения flow.
* Оставьте `TENANT_ID` пустым: на существующей установке это направляет PentAGI на новую, пустую схему.

### [Модели и промпты](https://pentagi.com/ru/docs/deployment/upgrade/#models-and-prompts)

* Пользовательскому провайдеру требуется `LLM_SERVER_KEY`: с пустым ключом он отключён, поэтому для сервера без аутентификации установите любое непустое значение.
* `LLM_SERVER_LEGACY_REASONING` удалён. Пользовательский провайдер отправляет `reasoning_effort` и преобразует бюджет `reasoning.max_tokens` в уровень усилий; на моделях Kimi K2, GLM до версии 5.2 и MiniMax M бюджет теперь вызывает сбой вызова, поэтому удалите его из этих агентов.
* В файлах конфигурации провайдера запись агента, оставляющая `max_tokens`, `temperature`, `top_p` или `n` пустыми, теперь получает значения по умолчанию для типа провайдера вместо отправки пустых значений.
* Встроенные модели по умолчанию изменились для каждого провайдера, кроме Bedrock; провайдеры, сохранённые в **Settings → Providers**, сохраняют свои модели. Пять конфигураций, поставляемых с образом, изменили модели — `openrouter`, `deepinfra`, `ollama-cloud`, `moonshot` и `deepseek`. Если `LLM_SERVER_CONFIG_PATH` или `OLLAMA_SERVER_CONFIG_PATH` указывает на одну из них в `/opt/pentagi/conf/`, сохраните файл версии 2.1.0 на хосте и смонтируйте его как пользовательскую конфигурацию или конфигурацию Ollama.
* При использовании `EMBEDDING_URL` на сервере, отличном от OpenAI, установите `EMBEDDING_KEY`: `OPEN_AI_KEY` туда больше не отправляется.
* Агенты выполняют поиск через один инструмент `web_search`. Пользовательские промпты с `{{.GoogleToolName}}` и другими переменными для каждого движка игнорируются с предупреждением в журнале, пока они не начнут использовать `{{.WebSearchToolName}}`; адаптируйте пользовательские промпты searcher и pentester под новые значения по умолчанию.

### [Другие изменения](https://pentagi.com/ru/docs/deployment/upgrade/#other-changes)

* В течение двух минут после запуска и затем каждые три часа PentAGI сообщает свою версию и краткую информацию об установке в `update.pentagi.com`; раздел [Проверка обновлений](https://pentagi.com/ru/docs/configuration/security/#update-check) перечисляет отправляемые данные, а `UPDATE_CHECK_INTERVAL=0` отключает эту функцию.
* Профилировщик больше не прослушивает порт 7777, если не установлен `PPROF_ADDR`.
* Новые необязательные настройки включают [резервирование провайдера](https://pentagi.com/ru/docs/configuration/llm-providers/#failover) с `LLM_FALLBACK_PROVIDER`, `DOCKER_PORTS_BASE` для [нескольких экземпляров](https://pentagi.com/ru/docs/deployment/production/#several-instances-tenant_id), `DOCKER_IMAGE_SELECTION_MODE` и `DOCKER_ALLOWED_IMAGES`, внутренний поисковый движок `WEB_SEARCH_INTERNAL_ENABLED`, а также ключи Mistral, xAI, MiniMax и Firecrawl.

## [Резервное копирование и откат](https://pentagi.com/ru/docs/deployment/upgrade/#back-up-and-roll-back)

PentAGI никогда не выполняет миграции в обратном направлении, а ручное выполнение удаляет данные, поэтому способ вернуться к версии 2.1.0 — это резервная копия. Остановите службы, использующие базу данных, пересоздайте её и восстановите дамп:

```bash
docker compose stop pentagi pgexporter
docker exec pgvector dropdb -U postgres pentagidb
docker exec pgvector createdb -U postgres pentagidb
docker exec -i pgvector pg_restore -U postgres -d pentagidb < pentagi-backup.dump
```

Затем верните сохранённые `.env` и файлы compose, установите `PENTAGI_IMAGE=vxcontrol/pentagi:2.1.0` и запустите стек. Сохраните новый `docker-compose-langfuse.yml`: образ MinIO из файла версии 2.1.0 больше нельзя загрузить.