ポート構成情報
PlantPulse は Docker Compose スタックとして動作し、コンテナごとに固有のポートを持ちます。単一サーバーおよびクラスターの両方で同一のポート設計に従います。
ホストにバインドされるポートは compose/docker-compose.yml の ports: が決定します。 install.sh が開くファイアウォールリストはそれよりも広範です。ファイアウォールで許可されていても、そのポートで必ずしも応答が返ってくるわけではありません。
このページの最初の表が 実際にホストで開くすべてのポート です。それ以外のポートはコンテナ内部でのみ通信可能です。
コンテナ別オープンポート
| コンテナ | ホストで開くポート |
|---|---|
plantpulse-proxy | 80 · 443 · 1883 · 1884 — ユーザーおよび設備がアクセスする唯一の入口 |
plantpulse-plugin-opcua | 11004 · 11005 |
plantpulse-ha | 10210 |
plantpulse-datalake | インフラ系すべて (下表参照) |
plantpulse-batch-web | 9500 · 9501 (PP_BATCH_HTTP_PORT · PP_BATCH_TLS_PORT) |
plantpulse-warehouse-web | 9600 · 9601 (PP_WAREHOUSE_HTTP_PORT · PP_WAREHOUSE_TLS_PORT) |
plantpulse-server-web · plantpulse-plugin-aasx | なし — プロキシの背後でのみ動作します |
plantpulse-certs | なし (ポートを開きません) |
ポートトポロジー
外部公開推奨 (ユーザー / 外部システム)
| ポート | コンテナ | プロトコル | 用途 | 推奨 |
|---|---|---|---|---|
| 80 | proxy | HTTP | 運用コンソール / REST API | リバースプロキシ推奨 |
| 443 | proxy | HTTPS | 運用コンソール / REST API (TLS) | ✓ |
| 4950 | datalake | HTTPS | モニタ UI + /api/health | モニタリングシステム |
| 1883 | proxy | TCP | MQTT 平文 — Edgeデバイス / センサ収集 | 閉域網推奨 |
| 1884 | proxy | TCP+TLS | MQTT over TLS (プロキシはpassthrough、ブローカーが終端) | TLS推奨 |
| 11004 / 11005 | opcua-server | OPC-UA | 外部設備が接続するエンドポイント | TLS推奨 |
| 10210 | ha | HTTP | HAデーモン /api/health · /api/cluster — 2クラスタ構成でピアが接続 | ピアIPのみ |
| 9094 | datalake | TCP+TLS | Kafka 外部クライアント | TLS必須 |
| 5500 / 5501 | datalake | HTTP / HTTPS | 外部システムデータ照会 | API Key |
運用推奨: 80/443のみを外部に公開し、それ以外は閉域網のみに配置する構成を推奨します。
バッチおよびウェアハウスコンテナがこれら4つのポートをホストにバインドします(上記最初の表)。これは運用者がコンテナに直接問い合わせできるようにするためのものであり、外部に公開するためのものではありません。 上位ファイアウォールでは遮断し、確認はホスト内部で行ってください。
curl -fsS http://127.0.0.1:9500/api/health | jq # 배치
curl -fsS http://127.0.0.1:9600/api/health | jq # 웨어하우스
ポートを変更するには .env の PP_BATCH_HTTP_PORT · PP_BATCH_TLS_PORT ·
PP_WAREHOUSE_HTTP_PORT · PP_WAREHOUSE_TLS_PORT を変更します。
リアルタイムプッシュはプロキシ(443)経由で送信されます。別途WebSocketポートをホストに開くことはありません。
メッセージング
| ポート | コンテナ | プロトコル | 用途 |
|---|---|---|---|
| 1883 / 1884 | proxy | TCP / TLS | MQTT (HiveMQ). プロキシが publish します |
| 18883 / 18884 | datalake | TCP / TLS | 予約。現在このポートを開くリスナーはありません |
| 9092 | datalake | TCP | Kafka PLAINTEXT (閉域網のみ) |
| 9093 | datalake | TCP | Kafka KRaft コントローラ |
| 9094 | datalake | TCP+TLS | Kafka SASL_SSL |
Kafkaクライアントはブートストラップ後、advertised.listeners が通知したアドレスへ 再接続します。前段にプロキシを配置するとそのアドレスまで変更する必要があり、不一致がある場合ブートストラップのみ成功し、その後静かに失敗します。そのため、Kafkaポートはデータレイクが直接 publish します。
ブラウザのリアルタイムプッシュがSSEに変更されたため、STOMPブローカーがデータレイクイメージから除外されました。61000 / 61004 は提供されません。 古いファイアウォールルールに残っている場合は整理してください。
ストレージ (閉域網のみ)
| ポート | プロトコル | 用途 |
|---|---|---|
| 9042 | CQL | Aster TSDB |
| 7000 / 7001 | TCP | Aster TSDB Gossip / SSL |
| 5432 | TCP | PostgreSQL |
| 6379 | TCP | Valkey (Redis互換) |
| 6380 | TCP+TLS | Valkey TLSリスナー |
| 9000 | HTTP | RustFS API |
| 9001 | HTTP | RustFS Console |
分析 / SQL (閉域網のみ)
| ポート | プロトコル | 用途 |
|---|---|---|
| 7077 | TCP | Spark Master RPC |
| 4440 | HTTP | Spark Master UI — 8080ではありません |
| 8081 | HTTP | Spark Worker UI |
| 10000 | Thrift | Kyuubi SQL Gateway |
| 10099 | HTTP | Kyuubi REST API |
| 19001 | HTTP | Gravitino 統合カタログ |
| 9083 | Thrift | Hive Metastore |
| 3500 / 3600 | HTTP | Lab 分析環境 |
| 4000 / 4001 | HTTP / HTTPS | SQLクエリサービス |
処理 / 時系列 (閉域網のみ)
| ポート | プロトコル | 用途 |
|---|---|---|
| 7400 / 7401 | HTTP / HTTPS | CEP (Aster CEP) |
| 7800 / 7801 | HTTP / HTTPS | 時系列エンジン(TSE) |
| 3000 | HTTP | PlantPulse Dashboard |
| 5500 / 5501 | HTTP / HTTPS | データゲートウェイ |
ワークフロー (閉域網のみ)
| ポート | プロトコル | 用途 |
|---|---|---|
| 7233 | gRPC | Temporal Frontend |
| 8233 | HTTP | Temporal Web UI |
| 8380 | HTTP | Kestra (UI + API) |
| 8381 | HTTP | Kestra 管理(management)ポート |
その他のデータレイクポート
| ポート | 用途 |
|---|---|
| 7003 | 診断コンソール (閉域網のみ) |
| 60000 / 60001 | OPC Agent データ収集 (閉域網のみ) |
| 6199 / 6299 / 6399 / 6499 / 7099 | JMX agent — 管制ノードIPのみ許可してください |
これら4つのポートはアプリ層です。9500 · 9501 は plantpulse-batch-web のTomcatコネクタ2つ、9600 · 9601 は plantpulse-warehouse-web のものです。どちらも HTTP および HTTPS コネクタであり、9501 · 9601 はリダイレクト用ではなく、それぞれ SSLHostConfig を持つ独立したコネクタです。
バッチ・ウェアハウスがデータレイクと同コンテナにあった当時の定義が データレイク側 に残っており、当時はホストポートを占有したまま 背後に何もなく接続がリセット されていました (2026-09-02 発見)。その定義は整理されました。
そして 2026-09-07 にアプリコンテナが自ら開き始めました (ユーザー決定)。つまり、「アプリコンテナは何も publish しない」というのはもはや事実ではありません。データレイク側のリストからこれらのポートを除いておくことが そのためにより重要です — 両者が同じポートを確保しようとすると、後から起動するコンテナが「ポート名のみが記載された」エラーで起動に失敗します。
コンテナ内部専用 (ホスト非公開)
以下はコンテナ内部でのみ通信可能なポートです。ホストから curl で問い合わせても応答はありません。
| ポート | 対象 | 代わりの確認方法 |
|---|---|---|
| 8090 · 4800 / 4801 | AAS(BaSyx) V3 API · V2 Registry/AAS | 外部アクセスが必要な場合はリバースプロキシを別途検討 |
| 7199 · 7279 | Aster TSDB · HiveMQ JMX | bin/shell.sh でデータレイクに進入後に確認 |
plantpulse-server-web のアプリポート | 当該コンテナ内部 | bin/status.sh / bin/logs.sh <컨테이너> |
コンソールとヘルスAPIは 両方のポート でサービスされます — 4950(HTTPS)と 4949(平文 HTTP)。同一のコンソール・同一のAPIであり、スキームのみが異なります。4949 はもはや 4950 へリダイレクトしません。
4949 は平文です — ログインパスワードとセッションクッキーがそのまま流れます。信頼できないネットワークでは 4950 を使用してください。4949 は自己署名証明書の警告が実際に運用者の妨げとなる環境のための選択肢です。
# 호스트 / 외부에서
curl -kfsS https://<server-ip>:4950/api/health | jq
# 컨테이너 안에서 (어떤 구성에서도 동작합니다)
docker exec plantpulse-datalake curl -kfsS https://127.0.0.1:4950/api/health | jq
インストール前ポート競合確認
# 핵심 포트 점유 확인
ss -tlnp | grep -E ':(80|443|1883|1884|3000|4000|4950|5432|5500|6379|7077|7233|7400|7800|8233|8380|9000|9042|9092|10000|10210|11004|19001)\s'
出力がなければ競合なし。出力がある場合は:
# 점유 프로세스 확인
sudo lsof -i :<port>
sudo ss -tlnp | grep ":<port>"
頻出競合ポート: 80 (Apache/Nginx), 5432 (外部 PostgreSQL), 3000 (Grafana/Node.js), 9092 (外部 Kafka), 6379 (外部 Redis). 外部サービスを使用している場合は、そのサービスのポートを変更する方が簡単です。
bin/preflight.sh がインストール前に主要ポート(80 · 443 · 4949 · 4950)を非破壊的に点検します。
上記
ssの一行には 9500 · 9501 · 9600 · 9601 が含まれていません。 バッチ・ウェアハウスがこれらのポートを使用するため、これら4つの空き状況も確認したい場合は正規表現に追加してください。
ファイアウォール設定例
install.sh がホストファイアウォール(firewalld / ufw)を 自動的に設定 します。以下は上位ファイアウォール(社内ネットワーク、クラウドセキュリティグループ、ルーター)で直接許可する場合の例です。
firewalld (RHEL/Rocky/Oracle)
# 외부 노출 (모든 IP)
for port in 80 443 4950; do
firewall-cmd --permanent --add-port=${port}/tcp
done
# 외부 노출 (TLS 메시징 / 설비)
for port in 1884 9094 11004 11005; do
firewall-cmd --permanent --add-port=${port}/tcp
done
# 사설망 only (RFC 1918 + Tailscale CGN 허용)
for src in 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 100.64.0.0/10; do
for port in 1883 5432 6379 7077 7233 7800 8233 8380 9000 9001 9042 9092 10000 10210 19001; do
firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=${src} port port=${port} protocol=tcp accept"
done
done
firewall-cmd --reload
ufw (Ubuntu)
# 외부 노출
for port in 80 443 4950 1884 9094 11004 11005; do
ufw allow ${port}/tcp
done
# 사설망 only
for port in 1883 5432 6379 7077 7233 7800 8233 8380 9000 9042 9092 10000 10210 19001; do
for src in 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 100.64.0.0/10; do
ufw allow from $src to any port $port
done
done
ufw enable
自動設定確認
# RHEL/Rocky/Oracle
sudo firewall-cmd --list-ports
sudo firewall-cmd --list-rich-rules
# Ubuntu
sudo ufw status numbered
クラウドセキュリティグループ (例: AWS / GCP / Azure)
ホストファイアウォールに加え、クラウドセキュリティグループも同様に設定する必要があります。
| インバウンドルール | ソース | ポート |
|---|---|---|
| 運用コンソール | 0.0.0.0/0 (または社内IP) | 80, 443 |
| ヘルスチェック | モニタリングノード | 4950 |
| MQTT | デバイス | 1883, 1884 |
| OPC-UA | 設備 | 11004, 11005 |
| Kafka TLS | 外部クライアント | 9094 |
| 閉域網 | VPC CIDR | 1883, 5432, 6379, 7077, 9042, 9092, 10000, 10210, … |
関連ドキュメント
- システム要件 — ハードウェア / OS / チューニング
- ワンラインインストール (推奨) — 自動ファイアウォール設定
- Dockerインストール — コンテナ構成とポートマッピング
- モジュールインデックス — モジュール別ポート詳細
- 管理者: ポートおよびサービス管理 — 運用点検手順