端口配置信息
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(代理透传,broker 端到端) | 推荐 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 broker 已从数据湖镜像中移除。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 agent — 仅允许管制节点 IP |
9500 / 9501 是 plantpulse-batch-web 的 Tomcat,9600 是 plantpulse-warehouse 的 Web 服务器 — 应用层。当批处理和仓库与数据湖在同一容器时的定义在数据湖一侧残留,但已清理。
两个应用都在各自的容器中运行,不在主机上打开端口,因此状态由 bin/status.sh 和 bin/logs.sh <컨테이너> 查看。如果旧监控配置中仍有这三个端口,请移除。
容器内部专用(主机不暴露)
以下端口仅在容器内通信。从主机用 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 是明文传输 — 登录密码和会话 Cookie 以明文流动。在不可信网络中使用 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, … |
相关文档
- 系统需求 — 硬件 / 操作系统 / 调优
- 一键安装(推荐) — 自动防火墙配置
- Docker 安装 — 容器构成和端口映射
- 模块索引 — 模块端口详情
- 管理员:端口和服务管理 — 运营检查流程