网络架构

更新于 2026-09-29在 GitHub 上编辑

ElementsPanel 的网络结构很简单:一个面板、若干节点,两者的通信由面板发起。

端口

端口 进程 方向 说明

23333

Panel

入站

Web 界面与 HTTP API。浏览器、外部调用方访问这里。

24444

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 升级,或路径前缀配置不一致。