メインコンテンツまでスキップ

サービスポートマップ

外部に開くのは一つだけです​

AI スタックでホストの 80 / 443 を占有するのは plantpulse-proxy(nginx) 一つだけです。 チャット画面も、管理コンソールも、各 API もすべてこのプロキシを経由して入ります。管理コンソールの HTTPS ポート(既定 5960)もこのプロキシが受けます — 下記を参照してください。

アプリコンテナは 80 を公開しません

AI Chat Web はコンテナ内でのみ(expose: 8080)開きます。外部へ出す口はプロキシ 一つだけです — 露出点を一カ所にまとめ、ファイアウォール・監査・TLS をそこで処理します。

ホスト名で振り分けます​

プロキシは Host ヘッダーを見てバックエンドを選びます。そのため DNS に以下の名前をプロキシ IP で 登録しておかないと、各サービスに到達できません。

バックエンドはコンテナ名そのままです — 以下の値が nginx の set $upstream に入る 文字列であり、コンテナ内で curl する際もこの名前を使います。

ホストバックエンド (コンテナ名:ポート)用途
その他すべて (既定)plantpulse-copilot-web:8080AI Chat Web — チャット画面
admin.*plantpulse-admin-web:8080管理コンソール
llm.*plantpulse-litellm:4000LLM ゲートウェイ (OpenAI 互換)
rag.*plantpulse-rag-api:7115RAG 検索 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 再リリース) → ログおよびモニタリング
LiteLLM 管理画面は /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 を実行しても見つかりません。

TLS をどこで終端するか確認してください

プロキシは 443 も待ち受けますが、前段に別のロードバランサ・リバースプロキシを置く構成ではそこで TLS が終端され、プロキシには平文で入ってきます。前段での終端を無視する設定にすると無限 リダイレクトが発生します。どの形態かを先に確認してください。

管理コンソールはポートでも開きます​

IP で接続する社内ユーザーはホスト名がないため、443 で管理コンソールを選択できません。そのため 2026.10 から管理コンソールにはポートで振り分ける入口が 2 つあります。

アドレス受け口キー (既定値)
http://<AI_SERVER_IP>:5959plantpulse-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 キーを修正して再起動します。
2026.09 以前の 9080 は廃止されました

旧版は管理コンソールを :9080 で公開していました。2026.10 で 5959(HTTP)・5960(HTTPS) に変わり、コンソール コンテナも非 root の nginx になったため内部ポートが 80 から 8080 に変わりました。ブックマークとファイアウォール規則も併せて 修正してください。

プロキシも非 root です — 外側のポートはそのまま、内側のポートだけ変わりました​

2026.10 の plantpulse-proxy は root ではなく uid 10001、gid 0 で動作し、コンテナ内部では 1024 未満のポートを開きません。ホスト(外側)から見えるポートは変わっていません。

ホスト(外側)プロキシ内側用途
808080HTTP (平文)
4439443HTTPS — チャット画面・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 / 443plantpulse-proxy唯一のユーザー接点
4000LiteLLMLLM ゲートウェイ直結 (llm.* からもアクセス可能)
7115RAG APIMCP クライアント(Claude Desktop など)直結用
8970時系列インサイト APIMCP クライアント直結用
5959管理コンソール (plantpulse-admin-web) — HTTP運用者用。admin.* からもアクセス可能
5960管理コンソール — HTTPS (plantpulse-proxy が受ける)運用者用。証明書は 443 と同じ
7474Neo4j Browserグラフ DB 管理 UI (plantpulse-neo4j — RAG ナレッジグラフ)
7687Neo4j Boltグラフ DB クエリプロトコル (同一インスタンス)
Neo4j は 2 つあります — デジタルスレッド側は公開されません

2026.10 からデジタルスレッド専用の Neo4j(plantpulse-digital-thread-neo4j)がもう一つ起動します。こちらはポートを 公開しません — plantpulse-digital-thread-api のみが compose ネットワーク内で接続します。上記の 7474・7687 は 従来からある plantpulse-neo4j(LightRAG のナレッジグラフ)です → デジタルスレッド

4000 には人がログインする管理画面があります

:4000/ui は LiteLLM の管理画面で、PI_LITELLM_UI_USERNAME・PI_LITELLM_UI_PASSWORD(既定 admin / admin123!)でログインします。LAN に開いているため、コミッショニング時にパスワードを変更してください → 初期パスワード変更

プロファイルを有効にすると起動するもの​

既定の起動には含まれず、該当する compose プロファイルで起動したときのみ立ち上がります。

ポートサービスプロファイル
5000ローカルイメージレジストリregistry
LOCAL_REGISTRY_UI_PORT(既定 5080)レジストリ管理 UIregistry
(公開しない — 内側 8000)録取 vLLM plantpulse-asrmedia
(ネットワークなし)録取オーディオライブラリ plantpulse-asr-audio — 一回限りmedia

registry は閉域網でイメージを内部から取得させる場合に使います → 閉域網インストール。 media は映像・音声の録取用です。プロファイル名を手で指定せず、ホスト env の PI_MEDIA_ENABLED=true の 1 行で有効化します — 運用スクリプトがその値を見てプロファイルを付与します → 映像・音声収集

Phoenix は起動しますがホストには公開しません

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・8004vLLM 生成・埋め込み・再ランキング
8005録取 vLLM(media プロファイルを有効にした場合のみ)
5001docling
8980時系列推論サーバー
9400DCGM Exporter
6333Qdrant
6006Phoenix
これらのポートには認証がありません

診断が終わったら、PP_DEBUG_PORTS なしで再起動して閉じてください。


内部専用 (公開しません)​

compose ネットワーク内でサービス名でのみ到達できます。ホストから nc -z で叩いても応答が ないのが正常です。

サービス内部アドレス (コンテナ名:ポート)役割
AI Chat Webplantpulse-copilot-web:8080チャット画面 (プロキシの既定バックエンド)
管理コンソールバックエンドplantpulse-admin-api認証の正本。plantpulse-admin-web の nginx が転送する
ドキュメントパース APIplantpulse-document-understanding-api:7120parser.* のバックエンド
ビジョン APIplantpulse-vision-api:7130vision.* のバックエンド
LightRAGplantpulse-lightrag:9621RAG エンジン。ドキュメント管理 WebUI(/webui)
Qdrantplantpulse-qdrant:6333ベクトル DB
Doclingplantpulse-docling-serve:5001ドキュメント変換
vLLM (生成)plantpulse-llm:8000ローカル LLM 推論
vLLM (埋め込み)plantpulse-emb:8000埋め込み
vLLM (リランク)plantpulse-rerank:8000リランキング
時系列推論plantpulse-timeseries-insight-server:8980インサイトモデルのサービング
録取 vLLMplantpulse-asr:8000音声 → テキスト。media プロファイル時のみ起動します
DCGM Exporterplantpulse-dcgm:9400GPU メトリクス
Phoenixplantpulse-phoenix:6006トレース UI・OTLP 収集 (既定で起動、公開なし)
デジタルスレッド APIplantpulse-digital-thread-api:7140コネクタ登録簿・工場グラフミラー・チャット用 thread_ ツール。管理コンソールと MCP ゲートウェイが呼び出す
デジタルスレッド Neo4jplantpulse-digital-thread-neo4j:7474工場グラフミラーの保存先。デジタルスレッド API のみ接続する
工学計算 APIplantpulse-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))
旧サービス 2 種はアーカイブされました

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)は、いかなる場合も外部に公開しないでください。