# 本番環境

> チーム向けにPentAGIを運用 — 堅牢化、分離、Podman、および複数インスタンス。

## [チェックリスト](https://pentagi.com/ja/docs/deployment/production/#checklist)

* 初回起動前に、`COOKIE_SIGNING_SALT` を含むすべての認証情報を設定してください — [セキュリティ](https://pentagi.com/ja/docs/configuration/security/)を参照してください。インストーラーはソルトとサービスパスワードを生成しますが、LangfuseおよびGrafanaの管理者パスワードは生成しません。Langfuseが最初に起動する前に、テンプレートで `LANGFUSE_INIT_USER_PASSWORD` と `password` を設定し、Grafanaの初回起動後にデフォルトの `admin` / `admin` を変更してください。稼働中のインストールでは、`.env` で変更する前に、データベース内でPostgreSQLとNeo4jのパスワードを変更してください。
* 正式な証明書と安定した `PUBLIC_URL` を提供してください。
* リバースプロキシの背後では、`TRUSTED_PROXIES` をプロキシのアドレスまたは CIDR に設定してください。そうしないと、すべてのユーザーがプロキシのアドレスを共有することになり、5 分以内に 30 回のサインイン失敗が発生すると、全員が 15 分間ロックアウトされます。
* [Tool](https://pentagi.com/ja/docs/glossary/#tool) の実行を専用の [worker node](https://pentagi.com/ja/docs/deployment/worker-node/) に移動してください。
* コストや障害を追跡できるよう、[可観測性](https://pentagi.com/ja/docs/configuration/observability/)を有効にしてください。
* [Knowledge graph](https://pentagi.com/ja/docs/glossary/#knowledge-graph) と Langfuse はプライベートネットワーク上に配置してください。

## [Podman](https://pentagi.com/ja/docs/deployment/production/#podman)

PentAGI は Docker だけでなく Podman でも動作します。Rootless モードでは、特権ポートをバインドできないため `scraper` サービスに追加の設定が必要です。リポジトリの README に Rootless および Rootful のセットアップ手順が記載されています。

## [複数インスタンス（`TENANT_ID`）](https://pentagi.com/ja/docs/deployment/production/#several-instances-tenant_id)

単一インストールの場合は `TENANT_ID` を空のままにしてください。既存のインスタンスでも空のままにしてください：後から設定すると、インスタンスはデフォルトの `admin@pentagi.com` アカウントで始まる新しい空のスキーマに移動され、その [flow](https://pentagi.com/ja/docs/glossary/#flow)、ユーザーおよび設定は表示されなくなります。複数の PentAGI インスタンスが 1 つの PostgreSQL サーバー、1 つの [worker node](https://pentagi.com/ja/docs/glossary/#worker-node)、1 つの Neo4j、または 1 つの Langfuse といった外部リソースを共有する場合に、追加するインスタンスで設定します：

| 領域              | `TENANT_ID=acme` の効果                                     |
| --------------- | -------------------------------------------------------- |
| PostgreSQL      | `public` ではなくスキーマ `acme` 内で動作します                         |
| ワーカーコンテナ        | 名前が `acme-pentagi-terminal-<flow>` になります                 |
| Knowledge graph | グループ ID が `acme-flow-<id>` になります                         |
| 認証              | Cookie とトークンのキーに [tenant](https://pentagi.com/ja/docs/glossary/#tenant) が含まれます |
| テレメトリ           | Langfuse と OpenTelemetry のデータに tenant のタグが付与されます         |

値は `^[a-z][a-z0-9_]{0,31}$` と一致する必要があります。ホストリソースはネームスペース化されません。同一サーバー上のインスタンスには、それぞれ独自の `DATA_DIR` と公開ポートが必要です。[sandbox](https://pentagi.com/ja/docs/glossary/#sandbox) が同じ Docker ホスト（同一サーバー上または共有 worker node 上）で実行されるインスタンスには、それぞれ独自の `DOCKER_PORTS_BASE` と、設定されている場合は独自の `DOCKER_WORK_DIR` が必要です。これらを設定しない場合、sandbox が同じポートを確保しようとし、flow の開始に失敗します。各 base はデフォルトで `28000` から始まる2000ポートの範囲を開始するため、例えば `28000` や `30000` を使用してください。