连接其他机器

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

一个面板可以同时管理多台机器:每台被控机器上运行一个节点(Daemon),面板集中编排它们。

架构

        ┌────────────┐   WebSocket / HTTP :24444   ┌────────────┐
浏览器 ─►│   Panel    │ ──────────────────────────► │  Daemon A  │  本机
        │  :23333    │ ──────────────────────────► │  Daemon B  │  远程机
        └────────────┘                             └────────────┘

连接由面板主动发起:面板作为 Socket.IO 客户端连接到节点的 24444。节点不需要反向访问面板,因此通常只需保证“面板 → 节点:24444”这一条路径可达。

1. 在被控机上安装节点

用发行包的 daemon-only 变体(elementspanel_linux_daemon_only_release.tar.gz),或直接运行守护进程 Docker 镜像:

# 发行包
tar -xzf elementspanel_linux_daemon_only_release.tar.gz
cd elementspanel/daemon/
npm install --production --no-fund --no-audit
cd ..
./start-daemon.sh

仅组件发行包不包含另一端目录,因此不要运行要求 web/ 与 daemon/ 同时存在的顶层 install.sh。节点需要 Node.js 20.x;Docker 方式无需在宿主机安装 Node。

2. 取得 API Key

在节点上打开 daemon/data/Config/global.json,key 字段就是该节点的 API Key:

{
  "ip": "0.0.0.0",
  "port": 24444,
  "key": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

首次启动会自动生成。若为空,可在面板的插件设置里为节点重新生成,或编辑该文件后重启节点。

SECURITY: API Key 等同于该节点的控制权,请勿泄露。它只允许字母与数字。

3. 在面板中添加节点

在面板节点页面点击新建,填写节点的 IP、端口(24444)与上一步的 API Key。保存后面板立即尝试连接,状态会显示在线/离线。

一个节点对应面板 web/data/RemoteServiceConfig/<uuid>.json(源码仓库为 panel/data/…​)中的一个文件;删除节点只影响面板侧的记录,不会删除被控机上的实例数据。

4. 放行端口与白名单

  • 防火墙:被控机需允许面板所在机器访问 24444。

  • 节点白名单:把 whiteListPanelIp 设为 true 后,只有 whiteListPanelIps 中的地址可以接入;关闭该开关时列表不参与鉴权。

  • 节点路径前缀:若节点配置了 prefix,在面板添加节点时也要填写相同前缀(见 网络架构)。

5. 多节点下的插件安装

安装含 Daemon 端的市场插件时,界面会要求选择目标节点。生产节点把插件写入自身的 daemon/plugins/;源码开发节点写入 daemon/data/plugins/。节点侧安装彼此独立:

  • 个别节点安装或激活失败,会单独报告,不会回滚面板侧已成功的安装;

  • 节点可能需要重启进程才能加载新的后端代码;

  • 面板插件与各节点插件分别管理开关;节点开关通过插件管理页向指定节点下发,切换后面板会重连该节点,使新协议处理器可达。

常见问题

连不上节点。

依次检查:节点是否在运行、24444 是否放行、面板填写的地址/端口是否正确、API Key 是否与 daemon/data/Config/global.json 完全一致、是否被 whiteListPanelIps 拦截。

节点在线但实例无法启动。

节点进程正常不代表实例环境就绪;检查工作目录权限、Java 是否安装、Docker 是否可访问。

多节点版本不一致。

面板安装成功不等于所有节点都装上了同一版本。以各节点实际报告的版本为准,必要时重启或重新下发。