# アップグレード

> インストールを新しいリリースに更新し、2.1.0 から 2.2.0 へ移行する際の変更点について説明します。

アップデートにより、PentAGI のイメージが置き換えられ、リリースで変更された場合は compose ファイルも置き換えられます。`.env` とデータボリュームは維持され、PentAGI の起動時にデータベースのマイグレーションが実行されます。

## [開始前に](https://pentagi.com/ja/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/ja/docs/glossary/#flow) を完了させてください。実行中の [sandbox](https://pentagi.com/ja/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/ja/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. flow を実行する Docker ホスト上の sandbox イメージを更新します。これは `docker compose pull` では行われません。以降に作成される flow はこのイメージを使用します。

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

`latest` イメージタグは main ブランチを追従します。特定のリリースに留まる場合は、`.env` で `PENTAGI_IMAGE=vxcontrol/pentagi:<version>` を設定してください。

## [インストーラー](https://pentagi.com/ja/docs/deployment/upgrade/#installer)

1. [Quick start](https://pentagi.com/ja/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/ja/docs/deployment/upgrade/#from-210-to-220)

### [ファイル](https://pentagi.com/ja/docs/deployment/upgrade/#files)

* compose ファイルは、その隣にある `example.bedrock.provider.yml` をマウントします。インストーラーはこれを作成しますが、手動インストールの場合は自分で作成してください（空のファイルで十分です）：`touch example.bedrock.provider.yml`。
* Langfuse を実行している場合は `docker-compose-langfuse.yml` を置き換えてください。2.1.0 のファイルは `minio/minio` イメージを指定していますが、これは公開されていないため、`docker compose pull` は失敗します。`.env` で `MINIO_IMAGE=minio/minio:…` を設定している場合は、その行を削除してください。
* [knowledge graph](https://pentagi.com/ja/docs/glossary/#knowledge-graph) のために、リポジトリから `./neo4j` に `examples/neo4j` を配置してください（Graphiti はその APOC プラグインを必要とします）。モデルプリセットについては [Memory and knowledge](https://pentagi.com/ja/docs/concepts/memory/#knowledge-graph-optional) を参照してください。`GRAPHITI_MODEL_NAME` は読み込まれなくなりました。
* 初回起動時に 8 つのデータベースマイグレーションが実行されます。完了すると `docker compose logs pentagi` に "Database schema updated successfully" と表示されます。

### [サインインとアクセス](https://pentagi.com/ja/docs/deployment/upgrade/#sign-in-and-access)

* 全員が再度サインインする必要があります。2.1.0 のセッションは拒否されます。API トークンは引き続き機能し、スクリプトは `POST /api/v1/auth/logout` でログアウトします。
* API トークンは REST の `/users`、`/roles`、および `/tokens` ルートで 403 エラーになります。アカウント、ロール、トークンの管理は、サインイン済みのブラウザセッションから行ってください。
* Google および GitHub によるサインインでは、プロバイダーによって検証されたメールアドレスが、そのアドレスを持つ既存のアカウント（ローカルアカウントを含む）に、そのアカウントのロールでサインインします。2.1.0 はアカウントのメールアドレスを変更できないため、サインインが有効な場合は、`OAUTH_GOOGLE_CLIENT_ID` と `OAUTH_GITHUB_CLIENT_ID` を空にしてアップグレードし、**Settings → Account** で `admin@pentagi.com` を管理下のアドレスに変更してから、サインインを再度有効にしてください。インストーラーの **Reset Admin Password** は `admin@pentagi.com` によってのみ管理者を検索します。
* リバースプロキシの背後では、`TRUSTED_PROXIES` を設定してください。設定しないと、すべてのユーザーがプロキシのアドレスを共有することになり、サインイン失敗のバーストが発生すると全員が 15 分間ロックアウトされます。詳細は [Network exposure](https://pentagi.com/ja/docs/configuration/security/#network-exposure) を参照してください。

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

* `DOCKER_INSIDE=true`（2.1.0 の `.env` テンプレートおよびインストーラーのデフォルト）の場合、2.1.0 はホストの Docker ソケットをすべての sandbox にマウントしていました。2.2.0 では、[agent](https://pentagi.com/ja/docs/glossary/#agent) は `DOCKER_INSIDE_HOST` で設定された別のデーモンセットからのみ Docker にアクセスできます。これが設定されていない場合、agent は Docker にアクセスできず、ログには `sandbox DISABLED` と表示されます。`DOCKER_INSIDE_HOST` を使用している場合は、`DOCKER_SOCKET=` を空にしてください。そうしないと、テンプレートの `/var/run/docker.sock` が依然としてマウントされます。詳細は [Worker node](https://pentagi.com/ja/docs/deployment/worker-node/) を参照してください。
* 2.1.0 で開始された flow を完了させてください。これらの sandbox は、flow が完了するまで古いソケットマウントと機能を引き続き保持します。
* `TENANT_ID` を空のままにしてください。既存のインストールでは、これは PentAGI を新しい空のスキーマに向けます。

### [モデルとプロンプト](https://pentagi.com/ja/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 モデルでは、バジェットがあるとコールが失敗するため、これらの agent から削除してください。
* プロバイダー設定ファイルにおいて、`max_tokens`、`temperature`、`top_p`、または `n` を空白のままにした agent エントリは、何も送信しない代わりに、プロバイダータイプのデフォルト値を取得します。
* Bedrock を除くすべてのプロバイダーで、組み込みのデフォルトモデルが変更されました。**Settings → Providers** に保存されたプロバイダーはモデルを維持します。イメージにバンドルされた 5 つの設定ファイルでモデルが変更されました — `openrouter`、`deepinfra`、`ollama-cloud`、`moonshot`、および `deepseek`。`LLM_SERVER_CONFIG_PATH` または `OLLAMA_SERVER_CONFIG_PATH` が `/opt/pentagi/conf/` の下でこれらのいずれかを指している場合は、ホスト上に 2.1.0 のファイルを保持し、それをカスタムまたは Ollama 設定としてマウントしてください。
* OpenAI 以外のサーバーで `EMBEDDING_URL` を使用する場合は、`EMBEDDING_KEY` を設定してください。`OPEN_AI_KEY` はそこには送信されなくなりました。
* agent は 1 つの `web_search` [tool](https://pentagi.com/ja/docs/glossary/#tool) を介して検索を行います。`{{.GoogleToolName}}` および他のエンジンごとの変数を使用したカスタムプロンプトは、`{{.WebSearchToolName}}` を使用するまで警告とともにログに表示され、無視されます。カスタムの searcher および pentester プロンプトを新しいデフォルトに基づいて再ベースしてください。

### [その他の変更](https://pentagi.com/ja/docs/deployment/upgrade/#other-changes)

* 開始後2分以内、その後3時間ごとに、PentAGI はバージョンとインストールの概要を `update.pentagi.com` に報告します。[Update check](https://pentagi.com/ja/docs/configuration/security/#update-check) には送信内容が一覧表示され、`UPDATE_CHECK_INTERVAL=0` でこれをオフにできます。
* `PPROF_ADDR` が設定されていない限り、プロファイラーはポート 7777 でリッスンしません。
* 新しいオプション設定には、`LLM_FALLBACK_PROVIDER` を使用した [provider failover](https://pentagi.com/ja/docs/configuration/llm-providers/#failover)、[several instances](https://pentagi.com/ja/docs/deployment/production/#several-instances-tenant_id) 用の `DOCKER_PORTS_BASE`、`DOCKER_IMAGE_SELECTION_MODE`、`DOCKER_ALLOWED_IMAGES`、内部 [search engine](https://pentagi.com/ja/docs/glossary/#search-engine) `WEB_SEARCH_INTERNAL_ENABLED`、および Mistral、xAI、MiniMax、Firecrawl のキーが含まれます。

## [バックアップとロールバック](https://pentagi.com/ja/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` はそのまま維持してください。2.1.0 のファイルに含まれる MinIO イメージはもうプルできません。