Skip to content

系统配置 ​

系统配置页把品牌白标、播放协议、MCP 与 Webhook 集成集中在一处,面向要把 YiYi Media 改成自己产品、或要和外系统打通的管理员。

系统配置

按分组维护品牌、播放协议和外部集成;各设置项独立保存并立即反馈结果。

  • 3 个分组、12 项设置
  • 分项保存,没有全局保存
  • 未保存的修改会被拦截提示
系统配置页:左侧是常用设置、播放协议、集成与高级三个分组导航,右侧是分组内的设置卡片,每张卡片自带保存按钮

三个分组,分项保存 ​

分组副标题包含
常用设置网页播放、品牌与日志网页播放开关、新用户默认流量额度、新用户默认节点授权、活动日志保留期、系统名称、全局 Logo
播放协议协议、缓存与 Emby 信息播放协议选择、响应缓存、Emby 协议配置
集成与高级MCP 与 WebhookMCP 服务、入站 Webhook、出站 Webhook

没有「全局保存」

本页采用分项保存:修改哪一组,就在该设置卡片内点它自己的保存按钮,不存在一次覆盖全部配置的入口。页头会显示「有未保存修改 / 所有修改已保存」;存在未保存修改时,关闭标签页(beforeunload)与站内跳转都会被弹窗拦截。

12 项配置一览 ​

#分组设置项生效范围
1常用设置网页播放全局开关立即,全站
2常用设置新用户默认流量额度只对之后新建的用户生效
3常用设置新用户默认节点授权只对之后新建的用户生效
4常用设置用户活动日志保留期下一次清理任务运行时按新阈值截断
5常用设置系统名称立即,品牌下发
6常用设置全局 Logo立即,含 favicon
7播放协议播放协议选择播放节点下次策略刷新(约 30 秒)后生效
8播放协议响应缓存开关播放节点下次策略刷新(约 30 秒)后生效
9播放协议Emby 协议配置立即
10集成与高级MCP 服务开关网关最多约 3 秒同步生效
11集成与高级入站 Webhook Token重新生成后旧 Token 立即失效
12集成与高级出站 Webhook 端点保存后由调度任务投递

常用设置 ​

1. 网页播放全局开关。 全局控制用户中心的网页媒体库播放入口。关闭后所有用户都无法访问;单个用户的网页播放权限配置会保留,重新开启后继续生效。默认开启。用户实际能否使用,取决于「系统开关 且 用户开关」。

2–4. 额度、授权与日志保留。

设置项说明
新用户默认流量额度总额度(开关 + 数值 + MB/GB + 每天/每周/每月);按线路额度可添加「播放线路(nodeId)」或「手动线路(endpointId)」,每条独立设启用、额度、单位与周期,可删除,未列出的线路不限制。保存后页面明示:仅在此后新建用户时写入,现有用户的额度不会变更
新用户默认节点授权三种模式:ALL 全部节点、ALLOW_LIST 指定名单、NONE 全部禁止。ALLOW_LIST 下勾选播放代理节点与手动反代地址(含已停用)。模式与名单一次性提交,避免中间态被同时进来的注册请求撞上。两条防误配黄色告警:名单里没勾任何播放代理节点,新用户将无法播放;选 NONE 则须逐个用户授权
用户活动日志保留期控制用户活动日志保留多久,每日清理任务按此阈值删除更早的事件。范围与默认值由后端返回(前端兜底 7–3650 天、默认 90),另有 30 / 90 / 180 / 365 / 730 天快捷值。这一项直接决定播放报表能回看多久

5. 系统名称。 最长 128 字符,默认 YiYi Media。用于登录页、侧边栏、注册页与注册验证邮件,并同步写入浏览器标签标题(document.title)。

6. 全局 Logo。 上传图片(只接受 image/*、不超过 2 MB)或直接填 URL,带预览与清除,保存后同步替换 favicon。上传成功后需再点「保存 Logo」才生效。

播放协议 ​

7. 播放协议选择。 见下节。

8. 响应缓存。 缓存播放节点的 Emby JSON 响应(Shows/Episodes、Shows/Seasons、Users/Items/Latest 等)以降低 media 服务负载。页面明确写出风险:这些接口包含用户级 UserData(如继续观看进度),启用后播放进度可能延迟最多 metadataCacheTtlSeconds(默认展示 300)秒才更新,多用户场景下还可能出现数据污染,建议默认关闭。

该开关目前不生效

界面上有这个开关与风险提示文案,但播放节点侧当前没有任何代码消费该配置项,打开也不会产生实际行为。JSON 层面的加速由 Redis 元数据缓存提供(见加载与播放速度),无需额外操作。

9. Emby 协议配置。 维护对外暴露给 Emby 客户端的系统信息字段。页面上只有两个输入控件:「服务名称」(serverName)与「产品名称」(productName),占位符都是 <系统名> Media。保存时接口还会带上其他协议字段,但页面上没有对应的输入控件,因此这里可配置的就是这两项。

集成与高级 ​

10. MCP 服务。 见下文专节。

11 / 12. 入站与出站 Webhook。 见下文专节。

品牌白标能做到哪一步 ​

能力支持说明
系统名称✅登录页、侧边栏、注册页、注册验证邮件、浏览器标签标题
全局 Logo✅上传或 URL,同步替换 favicon
网页播放开关✅全站级开关
主题色❌页面不提供主题色配置
登录页文案自定义❌页面不提供该项

品牌信息经公开接口 GET /api/auth/branding 下发,登录前即可取到,因此登录页能显示你自己的名称与 Logo。

播放协议:当前只有 Emby ​

协议界面描述状态
Emby兼容 Emby/Jellyfin 客户端(当前已实现)可选,当前启用项标「● 当前启用」
Jellyfin原生 Jellyfin 协议(开发中)禁用占位按钮,不可选
PlexPlex 媒体服务协议(开发中)禁用占位按钮,不可选

三个按钮同时只启用一个协议。Jellyfin 与 Plex 是标注「开发中」的禁用占位,当前不可用;play-agent 侧 supported_protocols 默认也只有 ["emby"],请求其他协议返回 503。已实现的 Emby 兼容面同时可被 Jellyfin 生态客户端使用。保存后播放节点在下次策略刷新(约 30 秒,对应调度任务 policy.refresh)后生效。

MCP 服务:给 AI 助手用的管理接口 ​

开关控制网关的 /mcp 端点:关闭后请求返回 404,重新打开无需重启服务,网关最多约 3 秒同步生效。MCP 工具的权限等于当前账号的菜单权限,不会越权。页面直接给出三步接入指引:

步骤内容
1. 获取访问令牌取当前账号的 accessToken
2. 配置 MCP 客户端传输方式 Streamable HTTP,地址 ${origin}/mcp,鉴权头 Authorization: Bearer <token>
3. 验证连接可复制的 curl initialize 示例,protocolVersion 为 2025-11-25

Webhook ​

入站:NAS 一有新文件就自动刮削 ​

用途是接收 NAS(如群晖)的文件变更通知,匹配媒体库后分发刮削任务。

项说明
地址http://<网关IP>:18080/api/webhook/{token},POST 与 GET 均支持
Token可生成 / 重新生成;重新生成需二次确认,旧 Token 立即失效。列表中掩码显示,明文只在生成后可见一次
datastring[],必填。文件或剧目录的路径列表,禁止直接传分类根目录
replace_path可选。用 * 通配单个路径段剥离挂载前缀,例如 /gd*/ 可匹配 /gd1/,从而把 /gd1/短剧/圣临 归一成 /短剧/圣临

同一路径匹配到多个媒体库来源时,所有来源都会收到刮削任务。

出站:把媒体事件推给任意外部系统 ​

端点可增删改,字段如下:

字段说明
名称端点标识,投递记录里显示它
请求方法默认 POST
URL 模板支持变量,例如 https://example.com/webhook/{{media.tmdbId}}
Content-Typeapplication/json / application/x-www-form-urlencoded / text/plain
启用端点开关
URL 含敏感信息勾选后 URL 在界面上脱敏显示
允许内网地址默认禁止;仅在明确需要向局域网服务推送时开启
Query 参数表键值对,每项可标「敏感」
Header 表键值对,每项可标「敏感」
请求体模板支持变量;默认模板标题为「新媒体入库」
按媒体库订阅只推送选中媒体库的事件

标为敏感的 Query / Header 保存后只显示脱敏值。每个端点可一键测试投递;删除端点时,尚未发送的投递记录会一并删除。

页面保留最近 50 条投递记录:

字段说明
端点名哪个端点投的
事件类型触发这次投递的事件
状态SUCCEEDED / DEAD / 其他
尝试次数已重试几次
最后 HTTP 状态对端返回的状态码
时间创建时间与投递时间
错误最后一次失败的原因

模板变量 ​

语法是 {{变量名}},在 URL 模板、Query、Header 与请求体模板里都能用。可用变量按前缀分组:

前缀变量
event.id、type、occurredAt
library.id、name
media.id、type、title、originalTitle、year、releaseDate、tmdbId、imdbId、posterPath、posterUrl、overview
episode.seasonNumber、episodeNumber、name
item.sourceItemId、name
summary.newTitles、newItems
整体payloadJson(完整事件 JSON)

共 24 个数据变量。任何变量都可加 urlencode. 前缀做 URL 转义,主要用于表单请求体,例如 title={{urlencode.media.title}};变量选择器额外列出 urlencode.media.title 与 urlencode.payloadJson 两个示例,合计 26 项。

通知渠道 ​

渠道用途在哪配
Email(SMTP)注册验证码、账号找回、绑定验证码、密码重置、到期提醒不在本页:SMTP 参数在注册设置页与部署 env
Telegram到期提醒、一次性登录码等不在本页:Bot Token / 用户名 / Mini App URL / Webhook Secret 由 env 注入 user 服务
Webhook入站(NAS 变更触发刮削)+ 出站(媒体事件推送)本页「集成与高级」

关于安全,这一页的真实情况 ​

本页没有这些安全配置项

系统配置页不提供密码策略、会话时长、登录失败锁定阈值、二次验证(2FA / TOTP)的任何配置入口。YiYi Media 当前也没有 TOTP / 2FA 实现。

登录失败锁定是代码硬编码的,不可配置:PasswordAttemptLimiter 对「同一 IP + 同一用户名」连续失败 5 次锁定 60 秒,失败计数 TTL 为 120 秒,计数优先放 Redis 以便多节点部署下保持一致。

YiYi Media 自身不提供 IP 黑白名单(访问管控只有 User-Agent 一个维度)。需要这类边界请在部署层实现:反向代理层限流与来源限制、管理端口只对内网开放、给不同运营人员分配独立账号。

相关接口 ​

GET   /api/auth/branding                            # 公开,品牌下发
GET   /api/auth/admin/branding
PUT   /api/auth/admin/branding                      # 系统名称
PUT   /api/auth/admin/branding/logo                 # 全局 Logo
PUT   /api/auth/admin/branding/web-player           # 网页播放全局开关
POST  /api/config/uploads/image                     # Logo 图片上传
GET   /api/auth/admin/traffic-quotas/default-policy
PUT   /api/auth/admin/traffic-quotas/default-policy
GET   /api/auth/admin/node-access-policy
PUT   /api/auth/admin/node-access-policy
GET   /api/auth/admin/activity-log/retention
PUT   /api/auth/admin/activity-log/retention
GET   /api/config/play-agent/policy                 # 协议选择与响应缓存
PUT   /api/config/play-agent/policy
GET   /api/media/protocol/emby/settings
PUT   /api/media/protocol/emby/settings
GET   /api/config/system-settings/mcp               # MCP 开关
PUT   /api/config/system-settings/mcp
GET   /api/media/webhook/token                      # 入站 Token(掩码)
POST  /api/media/webhook/token/regenerate           # 生成 / 重新生成
GET   /api/media/outbound-webhooks
POST  /api/media/outbound-webhooks
PUT   /api/media/outbound-webhooks/{id}
DELETE /api/media/outbound-webhooks/{id}
GET   /api/media/outbound-webhooks/libraries
GET   /api/media/outbound-webhooks/deliveries?limit=50
POST  /api/media/outbound-webhooks/{id}/test

相关文档 ​

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