コンテンツへスキップ
PentAGI
設定

セキュリティ

PentAGIインストールにおける認証情報、HTTPS、サインイン、およびネットワーク公開の設定。

デフォルト値の変更

新規インストールでは、ローカル管理者[email protected]がパスワードadminで作成され、初回サインイン時に変更する必要があります。パスワードを紛失した場合、アカウントが引き続き[email protected]アドレスを使用している限り、インストーラーのメンテナンスメニューからリセットできます。

初回起動前に、.env内のこれらの値を設定してください(インストーラーによりソルトとパスワードが自動生成されます)。PostgreSQLとNeo4jはデータボリュームの作成時にのみ認証情報を読み込むため、後から変更すると接続が切断されます。

変数用途
COOKIE_SIGNING_SALTセッションCookieとAPIトークンの署名に使用 — ランダムな値を設定してください
PENTAGI_POSTGRES_USER, PENTAGI_POSTGRES_PASSWORDPostgreSQLの資格情報
NEO4J_PASSWORDKnowledge graph用のNeo4jパスワード。NEO4J_USERはneo4jのままにしてください
PUBLIC_URLユーザーがアクセスするURL(例: https://pentagi.example.com)

稼働中のインストール環境では、まず PostgreSQL または Neo4j 内でデータベースのパスワードを変更し、その後 .env で変更してください。

HTTPS

PentAGIはポート8443で自己署名証明書を用いてHTTPSを提供します。独自の証明書を使用する場合は、SERVER_SSL_CRTとSERVER_SSL_KEYを設定し、docker-compose.ymlにファイルをマウントしてください。

ユーザーとサインイン

サインアップフォームはありません。管理者は、サインイン済みのブラウザセッションからUsers API(/api/v1/users/)を通じてローカルユーザーを管理します(APIトークンでは403エラーとなります)。ロールによって各ユーザーが参照・変更できる範囲を制限します。ローカルユーザーは、Settings → Account で自身のメールアドレスとパスワードを変更できます。

GitHubまたはGoogleサインインを設定すると、プロバイダーで検証されたメールアドレスが既存のアカウント(ローカルアカウントを含む)と一致するログインはそのアカウントとそのロールでサインインし、その他のログインはデフォルトのユーザーロールで新しいアカウントを取得します。すべてのインストールには管理者 [email protected] が初期状態で存在するため、サインインを有効にする前に Settings → Account でこのアドレスを自分が管理するものに変更し、ドメイン限定のGoogle Workspaceアプリなど、新規アカウントの作成が許容できる環境でのみ有効にしてください。

GitHubおよびGoogleサインインはOAuth経由で利用できます。コールバック${PUBLIC_URL}/api/v1/auth/login-callbackでアプリを登録し、その資格情報を追加してください。

PUBLIC_URL=https://pentagi.example.com
OAUTH_GITHUB_CLIENT_ID=your_github_client_id
OAUTH_GITHUB_CLIENT_SECRET=your_github_client_secret

ネットワークの露出

デフォルトでは、PentAGI の Web インターフェースは 127.0.0.1 でのみリッスンします。他のマシンからアクセスするには:

PENTAGI_LISTEN_IP=0.0.0.0
PENTAGI_LISTEN_PORT=8443
PUBLIC_URL=https://192.168.1.100:8443
CORS_ORIGINS=https://localhost:8443,https://192.168.1.100:8443

PUBLIC_URLとCORS_ORIGINSには実際のアドレスを使用し、0.0.0.0は絶対に使用しないでください。docker compose up -d --force-recreateでコンテナを再作成し、ファイアウォールでポート8443を開放してください。

リバースプロキシの背後で運用する場合は、TRUSTED_PROXIES にプロキシのアドレスまたは CIDR をカンマ区切りで設定してください。そうしないと、すべてのリクエストがプロキシから送信されているように見なされ、アドレスあたりのサインイン制限(5分間に30回の失敗した試行で、その後15分間のロックアウト)が全ユーザーで共有されてしまいます。

各flowのsandboxコンテナは、リバースシェルなどの帯域外コールバックのために2つのポートを公開します。これらはDOCKER_PORTS_BASEから始まる2000個のポート(デフォルト28000)から割り当てられ、agentがターゲットにコールバック先として指示するアドレスであるDOCKER_PUBLIC_IPにバインドされます。

デフォルトでは DOCKER_PUBLIC_IP は 0.0.0.0 です。ポートは Docker ホストのすべてのインターフェースでリッスンし、agent はパブリックアドレスを自身で解決します。ホストがそのアドレスを所有しており、ターゲットから到達可能な場合にのみ、特定のアドレスに設定してください。NAT の背後では、デフォルトのままにしてください。Docker が公開するポートはホスト上の ufw や firewalld のルールをバイパスするため、クラウドのセキュリティグループなどホストの前面にあるファイアウォールで範囲を制限するか、Docker の DOCKER-USER チェーンのルールで制限してください。

PROXY_URL は、バックエンドからモデルプロバイダー、埋め込みプロバイダー、検索 API、および更新チェックへの呼び出しをプロキシ経由でルーティングし、インストール環境を外部ネットワークから隔離するのに役立ちます。Ollama、vLLM、SearXNG などのセルフホスト型エンドポイントもこれを経由します。NO_PROXY の例外はないため、プロキシはそれらに到達できる必要があります。agent がコマンドを実行する flow の sandbox コンテナ、ブラウザツールのためにウェブページを開くスクレイパー、および Graphiti サービスはこれを使用しないため、ネットワークレベルでそれらの外向きトラフィックを制限してください。GitHub または Google でのサインイン、およびバンドルされたスタック外の Langfuse や OpenTelemetry エンドポイントへの呼び出しもこれを使用しません。また、Docker デーモンは独自のプロキシ設定を使用してイメージをプルします。

更新チェック

サーバーは起動後2分以内、その後3時間ごとに update.pentagi.com に新しいビルドが利用可能かどうかを問い合わせます。リクエストにはインストールID、設定されている場合はライセンスキー、バージョンとプラットフォーム、およびインストールの概要(設定された provider とサインインの種類、いくつかの機能スイッチ、ユーザー、flow、task、コンテナ、プロンプト、APIトークン、tool call の数、および provider 種類ごとのトークンとコストの合計)が含まれますが、名前、住所、プロンプトや flow の内容は含まれません。UPDATE_CHECK_INTERVAL=0 でこれを無効にします。インストーラーは起動するたび、および Apply Changes、Update、Start、Stop などの各アクションを実行するたびに、インストールされたイメージと各スタックの状態を送信し、PentAGI が実行中は同じ概要も送信します。UPDATE_CHECK_INTERVAL はこれに影響しません。

pentagiコンテナはDockerソケットを通じてコンテナを管理するため、root権限で実行されます。より強力な分離が必要な場合は、toolsを別のworker nodeで実行してください。

最終更新日