ポート構成情報
PlantPulse は Docker Compose スタック で動作し、コンテナごとに独自のポートを持ちます。シングルサーバ / クラスタの両方が同一のポート設計に従います。
ホストにバインドされるポートは compose/docker-compose.yml の ports: が決めます。 install.sh が開くファイアウォールリストはそれより広いです。ファイアウォールに書かれているからといって、そのポートで応答が返ってくるわけではありません。
このページの最初の表が 実際にホストに開くポートの全部 です。その他のポートはコンテナ内部のみで通信します。
どのコンテナが何を開くか
| コンテナ | ホストに開くポート |
|---|---|
plantpulse-proxy | 80 · 443 · 1883 · 1884 — ユーザと設備が接続する唯一の入口 |
plantpulse-plugin-opcua-server | 11004 · 11005 |
plantpulse-ha | 10210 |
plantpulse-datalake | インフラ系すべて(下表) |
plantpulse-server-web · plantpulse-batch-web · plantpulse-warehouse · plantpulse-plugin-aasx-server | ありません — プロキシの背後でのみ動作 |
plantpulse-certs | ありません(ワンショット) |
ポートトポロジ
外部公開推奨(ユーザ / 外部システム)
| ポート | コンテナ | プロトコル | 用途 | 推奨 |
|---|---|---|---|---|
| 80 | proxy | HTTP | 運用コンソール / REST API | リバースプロキシ推奨 |
| 443 | proxy | HTTPS | 運用コンソール / REST API (TLS) | ✓ |
| 7443 | datalake | HTTPS | 管理コンソール | ✓ |
| 4950 | datalake | HTTPS | モニタ UI + /api/health | モニタリングシステム |
| 1883 | proxy | TCP | MQTT 平文 — Edge デバイス / センサ収集 | プライベートネットワーク推奨 |
| 1884 | proxy | TCP+TLS | MQTT over TLS (プロキシはパススルー、ブローカーが終端) | 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 のみ外部に公開し、その他はプライベートネットワークに留める構成を推奨します。
リアルタイムプッシュはプロキシ(443)を経由して送信されます。別個の WebSocket ポートをホストに開きません。
メッセージング
| ポート | コンテナ | プロトコル | 用途 |
|---|---|---|---|
| 1883 / 1884 | proxy | TCP / TLS | MQTT (HiveMQ). プロキシが公開 します |
| 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 ポートはデータレイクが直接公開します。
ブラウザリアルタイムプッシュが SSE に変わったため、STOMP ブローカーはデータレイクイメージから除外されました。61000 / 61004 はもはやサービス提供されません。 古いファイアウォールルールに残っていれば、削除してください。
ストレージ(プライベートネットワークのみ)
| ポート | プロトコル | 用途 |
|---|---|---|
| 9042 | CQL | Cassandra |
| 7000 / 7001 | TCP | Cassandra Gossip / SSL |
| 5432 | TCP | PostgreSQL |
| 6379 | TCP | Valkey (Redis 互換) |
| 6380 | TCP+TLS | Valkey TLS リスナ |
| 9000 | HTTP | MinIO API |
| 9001 | HTTP | MinIO コンソール |
分析 / 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 (Esper) |
| 7800 / 7801 | HTTP / HTTPS | 時系列エンジン(TSE) |
| 3000 | HTTP | Grafana ダッシュボード |
| 5500 / 5501 | HTTP / HTTPS | データゲートウェイ |
ワークフロー(プライベートネットワークのみ)
| ポート | プロトコル | 用途 |
|---|---|---|
| 7233 | gRPC | Temporal Frontend |
| 8233 | HTTP | Temporal Web UI |
| 8380 | HTTP | Kestra (UI + API) |
| 8381 | HTTP | Kestra 管理ポート |
その他のデータレイクポート
| ポート | 用途 |
|---|---|
| 7003 | 診断コンソール(プライベートネットワークのみ) |
| 60000 / 60001 | OPC Agent データ収集(プライベートネットワークのみ) |
| 6199 / 6299 / 6399 / 6499 / 7099 | JMX エージェント — 管制ノード IP のみ を許可してください |
9500 / 9501 は plantpulse-batch-web の Tomcat、9600 は plantpulse-warehouse のウェブサーバで アプリケーション層 です。バッチ・ウェアハウスがデータレイクと同じコンテナにあった時代の定義がデータレイク側に残っていましたが、整理されました。
両アプリケーションはそれぞれのコンテナで動作し、ホストポートは開きませんので、状態は bin/status.sh と bin/logs.sh <컨테이너> で確認します。古いモニタリング設定にこの 3 つのポートが残っていれば、削除してください。
コンテナ内部専用(ホスト非公開)
以下はコンテナ内部のみで通信するポートです。ホストから curl で問い合わせても応答がありません。
| ポート | 対象 | 代わりに確認する方法 |
|---|---|---|
| 8090 · 4800 / 4801 | AAS(BaSyx) V3 API · V2 Registry/AAS | 外部アクセスが必要な場合はリバースプロキシを別途検討 |
| 7199 · 7279 | Cassandra · HiveMQ JMX | bin/shell.sh でデータレイクに入ってから確認 |
| サーバ・バッチ・ウェアハウスのアプリポート | 各アプリケーションコンテナ内部 | 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|7443|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 · 7443 · 4949 · 4950)を非破壊で点検します。
ファイアウォール設定例
install.sh がホストファイアウォール(firewalld / ufw)を 自動設定 します。以下は上位ファイアウォール(企業ネットワーク、クラウドセキュリティグループ、ルータ)で直接許可する必要がある場合の例です。
firewalld (RHEL/Rocky/Oracle)
# 외부 노출 (모든 IP)
for port in 80 443 7443 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 7443 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、7443 |
| ヘルスチェック | モニタリングノード | 4950 |
| MQTT | デバイス | 1883、1884 |
| OPC-UA | 設備 | 11004、11005 |
| Kafka TLS | 外部クライアント | 9094 |
| プライベートネットワーク | VPC CIDR | 1883、5432、6379、7077、9042、9092、10000、10210、… |
関連ドキュメント
- システム要件 — ハードウェア / OS / チューニング
- ワンラインインストール(推奨) — 自動ファイアウォール設定
- Docker インストール — コンテナ構成とポートマッピング
- モジュールインデックス — モジュール別ポート詳細
- 管理者: ポートとサービス管理 — 運用点検手順