网络架构
ElementsPanel 的网络结构很简单:一个面板、若干节点,两者的通信由面板发起。
端口
| 端口 | 进程 | 方向 | 说明 |
|---|---|---|---|
|
Panel |
入站 |
Web 界面与 HTTP API。浏览器、外部调用方访问这里。 |
|
Daemon |
入站 |
节点协议。面板主动连接此端口(Socket.IO),被控机无需访问面板。 |
SystemConfig.dataPort 仍保留兼容默认值 23334,但当前代码没有启动第二个 HTTP 服务;上传、下载、API 和 WebSocket 都使用 23333。
示例:面板在 A 机、节点在 B 机时,只需在 B 的防火墙上允许 A 访问 24444。若 A 与 B 之间还有 NAT,请保证 A 能出站到 B。
面板与节点之间
-
传输:Socket.IO 长连接 + HTTP 请求,同一个端口。
-
鉴权:面板用 API Key 接入(见 连接其他机器)。
-
前缀:节点若配置了
prefix,Socket.IO 路径也会带上该前缀(<prefix>/socket.io),面板侧填地址时须一并写出。 -
断线重连:面板内置重连;节点重启后连接会自动恢复(可在插件开关变化时触发重连,使新注册的协议事件可达)。
浏览器与面板之间
-
前端静态资源由面板进程直接提供(发行包的
web/public/)。 -
前端通过
/api、/socket.io、/upload_files与面板通信;开发模式下由 Vite 代理到23333。 -
反向代理时记得放行 WebSocket 升级(
Upgrade/Connection头),否则终端与实时状态无法工作。
路径前缀
若面板需要与别的服务共用同一个端口,用 prefix 把它挂到子路径(如 /panel):面板会把所有路由与静态资源都挪到该前缀下,并自动重定向根路径。前缀要写成 /<name> 形式,前后端、节点地址、反代规则需保持一致。
TLS
两级 TLS 可选,见 启用 HTTPS:
-
面板自身启用 HTTPS(
ssl+ 证书路径); -
节点自身启用 HTTPS(
ssl+ 证书路径),或在可信内网中保持明文。
性能相关
-
uploadSpeedRate/downloadSpeedRate:节点侧上传下载限速。 -
outputBufferSize:终端输出缓冲,实例日志量大时可调大。 -
gzip/maxCompress/maxDownload:面板侧响应压缩与并发任务限制。
安全建议
-
不要把
23333直接暴露到公网而不启用 HTTPS。 -
24444尽量只对面板所在的内网/主机开放,并启用whiteListPanelIp、配置whiteListPanelIps。 -
面板与节点之间即使在内网也建议使用独立 API Key,不要复用。
常见问题
- 面板显示节点离线。
-
从面板所在机器
nc -vz <节点IP> 24444验证连通性;再看节点防火墙、API Key 与白名单。 - 终端连不上、状态不更新,但网页能打开。
-
通常是反向代理没有放行 WebSocket 升级,或路径前缀配置不一致。