サービスポートマップ
外部に開くのは一つだけです
AI スタックでホストの 80 / 443 を占有するのは plantpulse-proxy(nginx) 一つだけです。
チャット画面も、管理コンソールも、各 API もすべてこのプロキシを経由して入ります。管理コンソールの HTTPS
ポート(既定 5960)もこのプロキシが受けます — 下記を参照してください。
AI Chat Web はコンテナ内でのみ(expose: 8080)開きます。外部へ出す口はプロキシ
一つだけです — 露出点を一カ所にまとめ、ファイアウォール・監査・TLS をそこで処理します。
ホスト名で振り分けます
プロキシは Host ヘッダーを見てバックエンドを選びます。そのため DNS に以下の名前をプロキシ IP で
登録しておかないと、各サービスに到達できません。
バックエンドはコンテナ名そのままです — 以下の値が nginx の set $upstream に入る
文字列であり、コンテナ内で curl する際もこの名前を使います。
| ホスト | バックエンド (コンテナ名:ポート) | 用途 |
|---|---|---|
| その他すべて (既定) | plantpulse-copilot-web:8080 | AI Chat Web — チャット画面 |
admin.* | plantpulse-admin-web:8080 | 管理コンソール |
llm.* | plantpulse-litellm:4000 | LLM ゲートウェイ (OpenAI 互換) |
rag.* | plantpulse-rag-api:7115 | RAG 検索 API |
timeseries.* | plantpulse-timeseries-insight-api:8970 | 時系列インサイト API |
parser.* | plantpulse-document-understanding-api:7120 | ドキュメントパース API |
vision.* | plantpulse-vision-api:7130 | ビジョン API |
既定ホストのパス — ドメイン一つで運用する場合
サブドメインを追加しなくて済むよう、**既定ホスト(チャット画面側)**に以下のパスも併せて開いて あります。ドメイン一つと証明書一つでゲートウェイと MCP サーバーに到達できます。
| パス | バックエンド | 用途 |
|---|---|---|
/mcp/gateway/ | plantpulse-mcp-gateway-api:7160/mcp/ | MCP ゲートウェイ — 外部 MCP クライアントが接続するアドレス(ゲートウェイキー ppgw_…)。管理 REST /api/v1 は開きません |
/llm/ | plantpulse-litellm:4000/ | LLM ゲートウェイ (OpenAI 互換) — base_url = "https://<호스트>/llm/v1" |
/mcp/rag/ | plantpulse-rag-api:7115/mcp/ | RAG MCP サーバー |
/mcp/timeseries/ | plantpulse-timeseries-insight-api:8970/mcp/ | 時系列インサイト MCP サーバー |
/mcp/parser/ | plantpulse-document-understanding-api:7120/mcp/ | ドキュメントパース MCP サーバー |
/mcp/vision/ | plantpulse-vision-api:7130/mcp/ | ビジョン MCP サーバー |
- 末尾のスラッシュまで記述してください。スラッシュなしで来た場合は
308へリダイレクトします(本文は保持されます)。 - MCP の転送方式は Streamable HTTP のみです。
/sseはありません。 - 認証はプロキシではなくバックエンドが行います。 MCP 4 種は
X-API-Key: <PI_INBOUND_API_KEY>(または Bearer) なしでは401です。/llm/はゲートウェイのマスターキーまたは仮想キーを使います。 - 各バックエンドのメトリクス
/metricsは新しいポートではなく同じポートのパスであり、同様にインバウンドキーの背後にあります (2026.10 再リリース) → ログおよびモニタリング
/llm/ui では開けませんパスのプレフィックスを除去して転送するため、管理画面のアセットリンクが崩れます。管理画面は llm.* ホストか、
直接公開されている :4000/ui で開いてください。
これらのパスはインターネットに公開された名前から直接到達します。PI_INBOUND_API_KEY が空であれば起動前判定がスタックを止めますが、
CHANGE_ME_… というプレースホルダーはその検査を通過します。インストール直後に bin/doctor.sh でプレースホルダーが
残っていないか必ず確認してください。
copliot はリポジトリ名で、コンテナは copilot ですリポジトリは plantpulse-ai-copliot-web(タイプミスがそのまま定着しました)ですが、コンテナ名は
plantpulse-copilot-web です。リポジトリの綴りで docker logs を実行しても見つかりません。
プロキシは 443 も待ち受けますが、前段に別のロードバランサ・リバースプロキシを置く構成ではそこで
TLS が終端され、プロキシには平文で入ってきます。前段での終端を無視する設定にすると無限
リダイレクトが発生します。どの形態かを先に確認してください。
管理コンソールはポートでも開きます
IP で接続する社内ユーザーはホスト名がないため、443 で管理コンソールを選択できません。そのため 2026.10 から管理コンソールにはポートで振り分ける入口が 2 つあります。
| アドレス | 受け口 | キー (既定値) |
|---|---|---|
http://<AI_SERVER_IP>:5959 | plantpulse-admin-web:8080 直結 (平文) | PI_ADMIN_WEB_PORT (5959) |
https://<AI_SERVER_IP>:5960 | プロキシが TLS を終端し plantpulse-admin-web:8080 へ | PI_ADMIN_WEB_TLS_PORT (5960) |
- どちらも開きます。平文の入口を HTTPS へリダイレクトしません。
- HTTPS 証明書は 443 と同じ一式(プロキシの証明書)です。コンソールが個別に証明書を持つことはありません。
- ポートを変更するには、ホスト env(
/etc/kopens/plantpulse-ai.env)の上記 2 キーを修正して再起動します。
旧版は管理コンソールを :9080 で公開していました。2026.10 で 5959(HTTP)・5960(HTTPS) に変わり、コンソール
コンテナも非 root の nginx になったため内部ポートが 80 から 8080 に変わりました。ブックマークとファイアウォール規則も併せて
修正してください。
プロキシも非 root です — 外側のポートはそのまま、内側のポートだけ変わりました
2026.10 の plantpulse-proxy は root ではなく uid 10001、gid 0 で動作し、コンテナ内部では
1024 未満のポートを開きません。ホスト(外側)から見えるポートは変わっていません。
| ホスト(外側) | プロキシ内側 | 用途 |
|---|---|---|
| 80 | 8080 | HTTP (平文) |
| 443 | 9443 | HTTPS — チャット画面・admin.* などの名前ルーティング |
PI_ADMIN_WEB_TLS_PORT (5960) | 8443 | 管理コンソール HTTPS |
ファイアウォール・前段ロードバランサ・DNS は従来どおり 80・443・5960 を見れば構いません。内側のポートは compose とプロキシ イメージが同一リリースで一緒に変わるため、プロキシイメージだけ旧版に戻すと接続が拒否されます — ロールバックの際は スタック全体を同じ版に揃えてください。
証明書ボリューム(pp-proxy-certs)が root 時代に作成されたものであれば、鍵が root 専用のため非 root プロキシが読めません。
bin/up.sh・restart.sh・update.sh が起動前に所有権を一度合わせます →
サービス運用
LAN に直接開くポート
プロキシを経由せずホストにそのまま公開されるポートです。127.0.0.1 バインドではなく
すべてのインターフェースに開きます — 社内網の外から到達しないようファイアウォールで遮断してください。
| ポート | サービス | 開いている理由 |
|---|---|---|
| 80 / 443 | plantpulse-proxy | 唯一のユーザー接点 |
| 4000 | LiteLLM | LLM ゲートウェイ直結 (llm.* からもアクセス可能) |
| 7115 | RAG API | MCP クライアント(Claude Desktop など)直結用 |
| 8970 | 時系列インサイト API | MCP クライアント直結用 |
| 5959 | 管理コンソール (plantpulse-admin-web) — HTTP | 運用者用。admin.* からもアクセス可能 |
| 5960 | 管理コンソール — HTTPS (plantpulse-proxy が受ける) | 運用者用。証明書は 443 と同じ |
| 7474 | Neo4j Browser | グラフ DB 管理 UI (plantpulse-neo4j — RAG ナレッジグラフ) |
| 7687 | Neo4j Bolt | グラフ DB クエリプロトコル (同一インスタンス) |
2026.10 からデジタルスレッド専用の Neo4j(plantpulse-digital-thread-neo4j)がもう一つ起動します。こちらはポートを
公開しません — plantpulse-digital-thread-api のみが compose ネットワーク内で接続します。上記の 7474・7687 は
従来からある plantpulse-neo4j(LightRAG のナレッジグラフ)です →
デジタルスレッド
:4000/ui は LiteLLM の管理画面で、PI_LITELLM_UI_USERNAME・PI_LITELLM_UI_PASSWORD(既定
admin / admin123!)でログインします。LAN に開いているため、コミッショニング時にパスワードを変更してください →
初期パスワード変更
プロファイルを有効にすると起動するもの
既定の起動には含まれず、該当する compose プロファイルで起動したときのみ立ち上がります。
| ポート | サービス | プロファイル |
|---|---|---|
| 5000 | ローカルイメージレジストリ | registry |
LOCAL_REGISTRY_UI_PORT(既定 5080) | レジストリ管理 UI | registry |
| (公開しない — 内側 8000) | 録取 vLLM plantpulse-asr | media |
| (ネットワークなし) | 録取オーディオライブラリ plantpulse-asr-audio — 一回限り | media |
registry は閉域網でイメージを内部から取得させる場合に使います → 閉域網インストール。
media は映像・音声の録取用です。プロファイル名を手で指定せず、ホスト env の PI_MEDIA_ENABLED=true の 1 行で有効化します —
運用スクリプトがその値を見てプロファイルを付与します → 映像・音声収集
Arize Phoenix(トレース UI・OTLP 収集、6006)は既定で起動します — プロファイルを有効にする必要はありません。 ただし 2026.09 からホストポートを公開しません。 Phoenix には認証がなく、保持する内容が質問と 回答の本文(ツール引数の設備 id・タグを含む)であるためです。管理コンソールの状態検査はコンテナ内部 アドレスに向かうため影響ありません。診断に必要な場合は下記「診断用ポート」で一時的に開きます。
2026-07 の改編時に外れた Langflow(7860)・Jupyter(3500) は完全に削除されており、復活させることはできません。
診断用ポート — PP_DEBUG_PORTS=1
普段は閉じているポートを、診断時のみ従来どおり開きます(compose/docker-compose.debug.yml オーバーレイ)。
cd /opt/kopens/plantpulse-ai-docker
PP_DEBUG_PORTS=1 bin/compose-up.sh
| ポート | サービス |
|---|---|
| 9081 | 管理コンソールバックエンド(admin-api) |
| 8000・8003・8004 | vLLM 生成・埋め込み・再ランキング |
| 8005 | 録取 vLLM(media プロファイルを有効にした場合のみ) |
| 5001 | docling |
| 8980 | 時系列推論サーバー |
| 9400 | DCGM Exporter |
| 6333 | Qdrant |
| 6006 | Phoenix |
診断が終わったら、PP_DEBUG_PORTS なしで再起動して閉じてください。
内部専用 (公開しません)
compose ネットワーク内でサービス名でのみ到達できます。ホストから nc -z で叩いても応答が
ないのが正常です。
| サービス | 内部アドレス (コンテナ名:ポート) | 役割 |
|---|---|---|
| AI Chat Web | plantpulse-copilot-web:8080 | チャット画面 (プロキシの既定バックエンド) |
| 管理コンソールバックエンド | plantpulse-admin-api | 認証の正本。plantpulse-admin-web の nginx が転送する |
| ドキュメントパース API | plantpulse-document-understanding-api:7120 | parser.* のバックエンド |
| ビジョン API | plantpulse-vision-api:7130 | vision.* のバックエンド |
| LightRAG | plantpulse-lightrag:9621 | RAG エンジン。ドキュメント管理 WebUI(/webui) |
| Qdrant | plantpulse-qdrant:6333 | ベクトル DB |
| Docling | plantpulse-docling-serve:5001 | ドキュメント変換 |
| vLLM (生成) | plantpulse-llm:8000 | ローカル LLM 推論 |
| vLLM (埋め込み) | plantpulse-emb:8000 | 埋め込み |
| vLLM (リランク) | plantpulse-rerank:8000 | リランキング |
| 時系列推論 | plantpulse-timeseries-insight-server:8980 | インサイトモデルのサービング |
| 録取 vLLM | plantpulse-asr:8000 | 音声 → テキスト。media プロファイル時のみ起動します |
| DCGM Exporter | plantpulse-dcgm:9400 | GPU メトリクス |
| Phoenix | plantpulse-phoenix:6006 | トレース UI・OTLP 収集 (既定で起動、公開なし) |
| デジタルスレッド API | plantpulse-digital-thread-api:7140 | コネクタ登録簿・工場グラフミラー・チャット用 thread_ ツール。管理コンソールと MCP ゲートウェイが呼び出す |
| デジタルスレッド Neo4j | plantpulse-digital-thread-neo4j:7474 | 工場グラフミラーの保存先。デジタルスレッド API のみ接続する |
| 工学計算 API | plantpulse-engcalc-api:7150 | チャット用 eng_ ツール(MCP /mcp/)。MCP ゲートウェイのみ呼び出す |
| MCP ゲートウェイ | plantpulse-mcp-gateway-api:7160 | プラットフォーム・内蔵・外部 MCP サーバーをまとめたアドレス一つ(/mcp/)と管理 REST(/api/v1)。コパイロットと管理コンソールが呼び出す。保存先はプラットフォーム PG pi の gw スキーマ (2026.10 再リリース(2026-10-20)) |
plantpulse-mcp-server(50000)と plantpulse-ontology(8888)は独立したサービスとしては存在
しません。MCP・オントロジーツールはプラットフォームの server-web 統合 MCP(/api/v5/mcp、api_key 認証)が
提供します。
プラットフォームから借りて使うもの
PostgreSQL(5432)・Aster TSDB(9042)・Redis/Valkey(6379)・RustFS(9000/9001)は AI スタックが 起動しません。 PlantPulse プラットフォームのインストール分を共用します。これらのポートのファイアウォール・アカウントは プラットフォーム側のセキュリティ設定に従います。
ポート状態の確認
全体状態の確認
cd /opt/kopens/plantpulse-ai-docker/bin
./status.sh
health.sh は各サービスのヘルスエンドポイントまで叩いて確認します。コンテナが起動していることと
実際に応答することは別物なので、障害調査ではこちらを使ってください。
個別ポートの確認
# 특정 포트 리스닝 확인
nc -z 127.0.0.1 <port> && echo "OK" || echo "DOWN"
# 포트 사용 프로세스 확인
ss -tlnp | grep <port>
ファイアウォールで開くもの
| 対象 | 開くポート |
|---|---|
| 全ユーザー | 80 / 443 (プロキシ) |
| 運用者 (社内網) | 5959・5960 管理コンソール、7474 Neo4j Browser |
| MCP クライアント (社内網) | 7115 RAG、8970 TimeSeries |
インストーラ(install.sh)はファイアウォールを開いた後、これらのポートのうち本スタック外のプロセスがすでに占有しているものを警告として
出力します — そのままにすると最初の bin/up.sh がスタックを中途半端に起動したうえで «address already in use» で停止します。該当ポートを
解放するか、変更可能な 3 つのキー(PI_LITELLM_PORT・PI_ADMIN_WEB_PORT・PI_ADMIN_WEB_TLS_PORT)をホスト env で
変更してください。その他のポートは compose に固定されています。
これ以外のポートは社内網の中でも開く理由がありません。データベースポート(5432・9042・6333 6379・7687・9000)は、いかなる場合も外部に公開しないでください。