跳到主要内容

公网访问与安全

Mediora 适合在家庭或自己的局域网中使用。默认通过安装机器的内网地址访问,例如:

http://192.168.1.10:3000

日常使用建议​

  • 只把页面地址分享给信任的家人或设备。
  • 使用自己的邮箱注册,并设置不与其他网站重复的密码。
  • 不要把 115、OpenList、CD2、TMDB 或通知服务的密钥发到聊天记录和截图中。
  • 不要把 Mediora 的页面端口直接映射到公网。
  • 定期备份 data 目录。

需要在外网访问时​

请让熟悉网络设置的人为你准备自己的 HTTPS 访问地址,再从该地址打开 Mediora。不要直接把安装机器的 3000 端口或媒体代理端口暴露到互联网。

通过反向代理访问时的必要设置​

只在局域网直接打开 http://内网IP:3000 时,跳过这一节。

一旦在 Mediora 前面加了 Nginx、Caddy、Traefik 等反向代理(无论只在内网用还是对外提供 HTTPS),请同时核对下面三项。转发信息或长连接配置不正确,可能导致登录、接口限流或任务进度刷新异常。

1. 设置容器的 TRUSTED_PROXIES​

TRUSTED_PROXIES 填的是会直接连接 Mediora 的反向代理地址,不是访客地址,也不是访问白名单。Mediora 只有确认连接确实来自这里列出的地址时,才会采信代理转发过来的真实客户端 IP。

Compose 在原服务的 environment 中直接填写:

environment:
TRUSTED_PROXIES: '192.168.1.2,172.18.0.5'

上面地址仅为示例,替换为实际直接连接 Mediora 的代理地址。命令方式使用 -e TRUSTED_PROXIES=实际代理地址;绿联手动界面在“环境变量”添加同名项。只有代理确实从回环地址连接时,才使用 127.0.0.1,::1。

不要填 0.0.0.0/0、整个公网网段或访客地址。拿不到真实 IP 时,先从 Mediora 日志里核对连接来源,再按实际地址填写,不要盲目扩大信任范围。

“在同一台机器”不一定等于回环连接:Docker bridge 中,宿主机代理可能以网桥网关地址连接容器,另一个容器也有自己的地址。按 Mediora 实际看到的直连来源填写,不能直接照抄示例。

Compose 修改后执行 docker compose up -d mediora;命令方式按新参数重建;绿联手动容器通过编辑应用。三种方式的配置位置见安装指南。

2. 让代理传递原始协议和客户端地址​

代理必须把下面两个请求头转发给 Mediora,并保留原始 Host:

  • X-Forwarded-Proto:外部访问用的协议(https 或 http)。帮助 Mediora 判断浏览器原来使用的协议;缺失或填错可能导致生成错误的访问地址或登录异常。
  • X-Forwarded-For:转发客户端 IP,帮助应用判断请求来源。缺失或不正确可能影响登录、公开入口等场景的来源识别与限流判断,应连同 X-Real-IP、可信代理地址一起核对。

Nginx 示例:

proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;

Caddy 的 reverse_proxy 通常自动处理 X-Forwarded-For、X-Forwarded-Proto 和 WebSocket,仍需正确设置 Mediora 的可信代理地址。参见 Caddy 官方说明。

3. 允许 WebSocket 升级​

Mediora 页面用 WebSocket 实时刷新任务进度、同步状态和通知。代理必须放行连接升级,否则页面会一直显示旧状态,要手动刷新才更新。

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# 长连接不要被代理提前掐断
proxy_read_timeout 3600s;

文件上传与智能体连接​

本地存储和绿联NAS网络文件夹挂载的读写实例可上传文件。反向代理的请求体大小、上传超时和临时磁盘限制需要按实际文件规模配置;上传路径可以关闭请求缓冲,减少代理整份暂存请求。不要只看到浏览器发送到 100% 就判定正式文件已经发布。

智能体使用的 /api/v1/agent/mcp 需要保留 Authorization,关闭响应缓冲并允许持续连接,示例见智能体接入。网页登录成功不能证明 MCP 请求头也正确转发。

媒体代理端口要单独处理​

媒体代理是独立端口上的服务,不走页面这个反向代理。需要从外网播放时,请为它单独配置一条 HTTPS 入口,同样不要把端口直接暴露到公网。设置方法见媒体代理。

共用设备时​

用完后从右上角退出账户;在公共电脑上不要保存浏览器密码。若怀疑账户被他人使用,立即修改密码并重新登录。

修改密码、找回密码和改邮箱​

通过 Mediora 成功修改密码或完成找回后,本机旧页面会话、WebSocket 和 Agent 授权会失效,需要重新登录并重新授权智能体。

邮箱确认在账户服务的邮件页面完成,其他联网实例通过定期安全状态检查同步撤销,不保证所有设备同一瞬间退出。账户服务不可达时,已有授权也只在它原本允许的有效期内可用,到期进入受限状态;恢复联网后重新核对。不要依赖离线来保留已经撤销的权限。

发现异常时,除了更改密码,也应检查当前安装、Agent 授权和媒体服务器凭据,撤销不认识的授权。不要依赖断开网络来保持旧授权有效,也不要删除本地状态来绕过保护。

容易搞错的地方​

容易搞错实际情况
把 3000 端口直接映射到公网页面入口应经过反向代理并启用 HTTPS;直接暴露等于把管理后台挂在公网上。
认为页面反代配好就覆盖了所有服务媒体代理在独立端口,需要单独配一条 HTTPS 入口。
反代只转发 http:// 却用了 HTTPS 域名反代到 Mediora 是内网 HTTP、对外是 HTTPS,这是正常结构;要分别核对原始协议、Host、可信代理地址;实时刷新另需 WebSocket。
改密码后以为所有设备立刻退出本机立即失效,其他联网实例通过定期检查撤销,不保证同一瞬间全部退出。
断网以为能保住旧授权到期即进入受限状态,断网不会延长授权。
删除本地状态来“重置”权限这不会绕过保护,反而可能丢失排查线索。
公共电脑上勾选浏览器“记住密码”共用设备登录后要退出,且不要保存密码。

最佳实践​

以 NAS 上的页面端口 3000、媒体代理实例端口 8090 为例,可以使用两个不同的 HTTPS 域名。8090 仅为示例,按实际实例端口替换:

页面域名 → HTTPS 反向代理 → NAS内网地址:3000
播放域名 → HTTPS 反向代理 → NAS内网地址:8090(按需配置)

下面是放进已有、证书已配置正确的 HTTPS server 块中的页面转发片段,不是完整的 Nginx 配置文件。192.168.1.10:3000 换成反向代理实际能访问的 Mediora 地址:

location / {
proxy_pass http://192.168.1.10:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 3600s;
}

修改后先检查代理配置再应用,随后分别测试登录和实时状态;WebSocket 转发要求见 Nginx 官方说明。多层代理或 CDN 部署还需逐层核对来源,不能直接照抄单层示例的信任地址。

上线自查:

  1. 外网只能通过 443 访问,3000 和 8090 不在公网暴露列表里;
  2. 页面登录、任务运行、实时日志(WebSocket)都正常;
  3. 需要外网播放时,媒体代理的域名和健康检查单独验证;
  4. 账户密码与媒体服务器 API Key 都不复用同一份,怀疑泄露时逐个更换。