Skip to content

节点管理 ​

节点管理把控制面之外的服务实例登记在一处。单机版与分布式版的界面差异很大:单机版只有两个内置节点,只能新增手动反代地址;分布式版才有节点创建、配额、部署与远程升级。

一个后台管住所有节点

节点只需要知道注册中心地址,服务地址全自动发现。

  • 卡片按文件管理节点、播放代理节点、手动反代地址分组展示
  • 分布式版新增节点时按服务类型显示「部署配额 已用/上限」,配额用满则按钮禁用
  • 分布式版远程升级自带安全网:升级前备份旧版本、30 秒健康检查轮询、失败自动回滚
节点管理页面:页头统计与文件管理节点、播放代理节点、手动反代地址三组卡片,卡片上有状态徽章、地址端口、版本徽章与最近心跳

上图仍是旧版节点页截图,待重拍

这张截图拍的是旧版节点管理页(可新增三类记录的形态),不能代表单机版界面。 单机版页面只有两个内置节点 + 手动反代地址,没有「新增节点」按钮与服务类型选择框。

替换计划见 site/scripts/capture.mjs 的 nodes-standalone 目标:单机版与分布式版各出一张。 在重拍之前,单机版流程一律以本页文字说明为准。

两种模式的界面差异 ​

能力单机版(STANDALONE)分布式版(DISTRIBUTED)
文件管理节点固定内置 1 个(node-local-storage),显示健康、版本与运行状态,卡片标注「随系统部署」外部节点,可新增、可多实例
播放代理节点固定内置 1 个(node-local-play-agent),卡片标注「随系统部署」外部节点,可新增、可多实例
「新增节点」按钮与服务类型选择框不显示显示
节点令牌、安装命令不显示显示,凭据默认遮罩
卸载、独立升级、删除不显示显示
外部节点部署配额表单不显示显示「部署配额 已用/上限」
手动反代地址可以新增,编辑、启停、删除、令牌轮换、nginx/Caddy 片段全部保留同左
远程升级(一键 / 检测版本)不提供,随主版本升级提供
网络诊断提供提供

单机版的服务端限制不是靠隐藏按钮实现的

直接调用接口同样会被拒绝:

  • POST /api/config/nodes → 403 NODE_CREATION_DISABLED
  • 内置节点删除、卸载、独立升级或改关键元数据 → 403 SYSTEM_NODE_IMMUTABLE
  • 节点二进制分发与安装命令 → 403 BINARY_DISTRIBUTION_DISABLED

手动反代地址的 CRUD、启停与令牌轮换在两种模式下都保持可用。

能做什么 ​

  • 查看节点状态与心跳,做网络诊断(两种模式)。
  • 新增与管理手动反代地址,轮换入口令牌(两种模式)。
  • 单机版:查看两个内置节点的健康、版本与运行状态。
  • 分布式版:登记外部节点记录、生成一键安装命令、检查版本、远程升级与卸载,按授权配额限制节点数。

界面与操作 ​

卡片网格(1 / 2 / 3 列响应式)而非表格,按组展示;页头统计总计、在线、待注册。 卡片含节点名、serviceName、状态徽章、地址、端口、版本徽章与最近心跳;播放代理组带启用 / 停用开关。

三类节点记录 ​

类型服务名默认端口与协议说明
文件管理节点YiYi-control-storage18084 / http文件浏览、刮削与流代理
播放代理节点YiYi-play-agent19090 / http播放协议出口,当前实现 Emby
手动反代地址manual-play-agent-endpointhttps,端口可选分发给用户的反代入口,不参与部署与升级,只检测 /health

新增节点字段(仅分布式版) ​

服务类型、节点 ID(可留空自动生成,手填须以 node- 开头)、节点名称、对外 IP 或域名、协议、端口、监听端口、备注。播放代理节点的端口标为「对外端口(客户端连接)」;监听端口指进程实际绑定端口,留空默认 19090,同机多节点须不同,安装脚本注入 PLAY_AGENT_LISTEN。

手动反代地址改用:地址名称、反代 IP / 域名、反代端口(可选)、备注、启用开关;保存后组合 baseUrl 并检测 /health。

一键安装命令(仅分布式版) ​

命令由 Config 服务按节点下发,前端不含模板文本,形态统一是一行:

bash
curl -fsSL http://<config-host>:18085/api/config/nodes/install/<token>/<kind> | bash

<kind> 取 6 种:binary、binary-jdk、docker、uninstall、upgrade-binary、upgrade-docker;安装类可追加 ?ffmpeg=true。

界面命令项kind限制说明
binaryDeployCommandbinary—以二进制 / Jar 运行
binaryDeployCommandWithJdkbinary-jdk仅文件管理节点附带装 JDK 21
binaryDeployCommandWithFfmpegbinary + ?ffmpeg=true仅播放代理节点宿主机装 ffmpeg / ffprobe
dockerDeployCommanddocker—以 Docker 运行,二进制仍从配置中心拉取
dockerDeployCommandWithFfmpegdocker + ?ffmpeg=true—ffmpeg / ffprobe 内置进镜像
uninstallCommanduninstall—停进程并删工作目录(含日志缓存)
upgradeBinaryCommandupgrade-binary—升级二进制部署
upgradeDockerCommandupgrade-docker—升级 Docker 部署

凭据默认遮罩为 [凭据已隐藏],点「显示完整命令」才可见;复制在非 https 环境回退 execCommand。

单机版下这些字段为空或不返回,不泄露无效安装入口。

状态与心跳 ​

后端只有 ONLINE / PENDING,界面按序判定:未启用 → 已停用;ONLINE → 在线;有 lastSeenAt → 离线;其余 → 待注册;手动反代地址有 lastError → 异常,另显示 healthUrl、最近检测与最近成功时间。

「网络检测」返回注册状态、目标 host:port、TCP 可达性、HTTP 状态码与响应体。

版本检查与远程升级(仅分布式版) ​

version-check 六态:LATEST 已最新、UPDATE_AVAILABLE 有新版本、UNSUPPORTED 无法识别部署方式(可手动选)、UNREACHABLE 不可达、UNKNOWN 未知、BINARY_UNAVAILABLE 无可用二进制。

显示「控制面最新」与「节点当前」的 SHA256 与体积,页头横幅提示「N 个节点有新版本可用」。一键升级自动识别 Docker 或二进制部署,三项安全机制:升级前备份旧版本、30 秒健康检查轮询、失败自动回滚。

单机版的内置节点随主应用整镜像升级,不提供这些入口。

节点配额 ​

分布式版:/api/license/status 返回 maxStorageNodes 与 maxPlayAgentNodes;表单显示「部署配额 已用/上限」,用满时禁用按钮并提示「授权配额已满」,错误码 LICENSE_NODE_QUOTA_EXCEEDED。

单机版:这两个值固定为 1,只代表两个内置节点本身,不代表允许新增节点;管理台不提供配额覆盖表单。

手动反代地址在两种模式下都不占配额。

手动反代地址与入口令牌 ​

入口令牌 accessToken 须由反代注入 X-YiYi-Endpoint-Token,否则请求按直连处理,该地址的用户级授权不生效。「反代配置」抽屉给出 nginx 与 Caddy 片段,另支持令牌轮换、启用 / 停用、编辑与删除。

单机版里这是节点管理页唯一可以新增的项目。上游地址填 127.0.0.1:19090(内置 Play Agent 由容器发布在宿主机上),见反向代理与域名。

关键规则 ​

  • 批量能力只有「检查全部更新」与「刷新列表」,没有批量启停或批量删除。
  • 删除文件管理节点前先查媒体库来源引用数并提示;删除后同步数据保留旧节点 ID,同一 ID 重新部署可继续。(分布式版)
  • 删除在线节点可勾选「同时发送卸载命令」并二次警示本机数据不可恢复;离线节点只删控制面记录。卸载与删除都在危险操作区。(分布式版)
  • 单机版的内置节点不可删除、不可卸载、不可独立升级、不可改服务类型。

相关文档 ​

自托管媒体管理系统(单机版 / 分布式版) · 想先体验或有问题,加 Telegram 群:t.me/yiyi_media_group