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

ポート構成情報

PlantPulse は Docker Compose スタック で動作し、コンテナごとに独自のポートを持ちます。シングルサーバ / クラスタの両方が同一のポート設計に従います。

「ファイアウォールが開いている」と「ホストに実際に開いている」は別です

ホストにバインドされるポートは compose/docker-compose.ymlports: が決めます。 install.sh が開くファイアウォールリストはそれより広いです。ファイアウォールに書かれているからといって、そのポートで応答が返ってくるわけではありません。

このページの最初の表が 実際にホストに開くポートの全部 です。その他のポートはコンテナ内部のみで通信します。

どのコンテナが何を開くか

コンテナホストに開くポート
plantpulse-proxy80 · 443 · 1883 · 1884 — ユーザと設備が接続する唯一の入口
plantpulse-plugin-opcua-server11004 · 11005
plantpulse-ha10210
plantpulse-datalakeインフラ系すべて(下表)
plantpulse-server-web · plantpulse-batch-web · plantpulse-warehouse · plantpulse-plugin-aasx-serverありません — プロキシの背後でのみ動作
plantpulse-certsありません(ワンショット)

ポートトポロジ

外部公開推奨(ユーザ / 外部システム)

ポートコンテナプロトコル用途推奨
80proxyHTTP運用コンソール / REST APIリバースプロキシ推奨
443proxyHTTPS運用コンソール / REST API (TLS)
7443datalakeHTTPS管理コンソール
4950datalakeHTTPSモニタ UI + /api/healthモニタリングシステム
1883proxyTCPMQTT 平文 — Edge デバイス / センサ収集プライベートネットワーク推奨
1884proxyTCP+TLSMQTT over TLS (プロキシはパススルー、ブローカーが終端)TLS 推奨
11004 / 11005opcua-serverOPC-UA外部設備が接続するエンドポイントTLS 推奨
10210haHTTPHA デーモン /api/health · /api/cluster — 2-クラスタ構成ではピアが接続しますピア IP のみ
9094datalakeTCP+TLSKafka 外部クライアントTLS 必須
5500 / 5501datalakeHTTP / HTTPS外部システムデータ照会API Key

運用推奨: 80/443 のみ外部に公開し、その他はプライベートネットワークに留める構成を推奨します。

ウェブコンソール リアルタイムプッシュに別途ポートは不要です

リアルタイムプッシュはプロキシ(443)を経由して送信されます。別個の WebSocket ポートをホストに開きません。

メッセージング

ポートコンテナプロトコル用途
1883 / 1884proxyTCP / TLSMQTT (HiveMQ). プロキシが公開 します
18883 / 18884datalakeTCP / TLS予約済み。現在このポートを開くリスナはありません
9092datalakeTCPKafka PLAINTEXT (プライベートネットワークのみ)
9093datalakeTCPKafka KRaft コントローラ
9094datalakeTCP+TLSKafka SASL_SSL
Kafka はプロキシを経由しません

Kafka クライアントはブートストラップ後、advertised.listeners が通知したアドレスに 再接続 します。前にプロキシを置くと、そのアドレスも一緒に書き換える必要があり、間違うとブートストラップだけ成功して後は静かに失敗します。そのため Kafka ポートはデータレイクが直接公開します。

STOMP(ActiveMQ)は廃止されました

ブラウザリアルタイムプッシュが SSE に変わったため、STOMP ブローカーはデータレイクイメージから除外されました。61000 / 61004 はもはやサービス提供されません。 古いファイアウォールルールに残っていれば、削除してください。

ストレージ(プライベートネットワークのみ)

ポートプロトコル用途
9042CQLCassandra
7000 / 7001TCPCassandra Gossip / SSL
5432TCPPostgreSQL
6379TCPValkey (Redis 互換)
6380TCP+TLSValkey TLS リスナ
9000HTTPMinIO API
9001HTTPMinIO コンソール

分析 / SQL(プライベートネットワークのみ)

ポートプロトコル用途
7077TCPSpark Master RPC
4440HTTPSpark Master UI — 8080 ではありません
8081HTTPSpark Worker UI
10000ThriftKyuubi SQL Gateway
10099HTTPKyuubi REST API
19001HTTPGravitino 統合カタログ
9083ThriftHive Metastore
3500 / 3600HTTPLab 分析環境
4000 / 4001HTTP / HTTPSSQL クエリサービス

処理 / 時系列(プライベートネットワークのみ)

ポートプロトコル用途
7400 / 7401HTTP / HTTPSCEP (Esper)
7800 / 7801HTTP / HTTPS時系列エンジン(TSE)
3000HTTPGrafana ダッシュボード
5500 / 5501HTTP / HTTPSデータゲートウェイ

ワークフロー(プライベートネットワークのみ)

ポートプロトコル用途
7233gRPCTemporal Frontend
8233HTTPTemporal Web UI
8380HTTPKestra (UI + API)
8381HTTPKestra 管理ポート

その他のデータレイクポート

ポート用途
7003診断コンソール(プライベートネットワークのみ)
60000 / 60001OPC Agent データ収集(プライベートネットワークのみ)
6199 / 6299 / 6399 / 6499 / 7099JMX エージェント — 管制ノード IP のみ を許可してください
9500 · 9501 · 9600 はもうホストに公開されません

9500 / 9501 は plantpulse-batch-web の Tomcat、9600 は plantpulse-warehouse のウェブサーバで アプリケーション層 です。バッチ・ウェアハウスがデータレイクと同じコンテナにあった時代の定義がデータレイク側に残っていましたが、整理されました。

両アプリケーションはそれぞれのコンテナで動作し、ホストポートは開きませんので、状態は bin/status.shbin/logs.sh <컨테이너> で確認します。古いモニタリング設定にこの 3 つのポートが残っていれば、削除してください。

コンテナ内部専用(ホスト非公開)

以下はコンテナ内部のみで通信するポートです。ホストから curl で問い合わせても応答がありません。

ポート対象代わりに確認する方法
8090 · 4800 / 4801AAS(BaSyx) V3 API · V2 Registry/AAS外部アクセスが必要な場合はリバースプロキシを別途検討
7199 · 7279Cassandra · HiveMQ JMXbin/shell.sh でデータレイクに入ってから確認
サーバ・バッチ・ウェアハウスのアプリポート各アプリケーションコンテナ内部bin/status.sh / bin/logs.sh <컨테이너>
4949 は平文です

コンソールとヘルス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 CIDR1883、5432、6379、7077、9042、9092、10000、10210、…

関連ドキュメント