dsh-web-remote-access:让 dsh Web UI 可远程访问并受令牌保护

前言

dsh --profile web 的回环访问适合本机使用。如果需要在局域网内打开 dsh Web UI,直接绑定所有网卡会让页面、/api RPC 和 WebSocket 下行暴露在 HTTP 服务上。

studyzy/dsh-web-remote-access 是用于 dsh web profile 的 bundle 插件,用于支持 --host 0.0.0.0 远程访问,并让远程访问始终经过 web token 门卫。它不改动 harness 源码,卸载插件可完全还原默认行为。

这是什么

该插件由 studyzy 维护,许可证为 MIT,需要 Node.js >= 18 和 dsh 环境。它作为 dsh web profile 插件安装,解决的问题是:让 dsh Web UI 可以远程访问,同时保留回环访问的免令牌体验。

核心功能

  • 支持 --host 0.0.0.0 远程访问,且始终有 web token 令牌保护。
  • 页面、/api RPC、WebSocket 下行经过 web token 门卫。
  • 首次打开 ?web_token= 后,服务器 302 跳转并下发 dsh_web_token 会话 Cookie。
  • 回环访问无需令牌。
  • 启动时打印带 ?web_token= 的 URL;绑定所有网卡时还打印 LAN 地址。
  • 令牌校验使用 sha256 + timingSafeEqual 常数时间比较。
  • /manifest.webmanifest 豁免令牌,PWA 安装检测不受影响。
  • 已认证 /api 请求以回环权威呈现,使 settings.*credentials.*agentPreset.*host.*llm.discoverModels 可远程访问。
  • 不改动 harness 源码,全部通过 bundle 插件实现。
  • 卸载插件可完全还原默认行为。

安装

在 dsh 环境中执行:

dsh plugin --profile web add git@github.com:studyzy/dsh-web-remote-access.git

安装后,下面介绍启动方式。

典型用法

固定令牌启动远程访问:

dsh --profile web --host 0.0.0.0 --web_token <token>

使用环境变量提供令牌:

DSH_WEB_TOKEN=<token> dsh --profile web --host 0.0.0.0

未指定令牌时启动远程访问:

dsh --profile web --host 0.0.0.0

回环访问:

dsh --profile web

--web_token 仅对 --host 0.0.0.0 绑定启用。缺省时回退到 $DSH_WEB_TOKEN,再回退到启动时随机生成的令牌。未显式指定远程令牌时,生成的随机令牌会打印在启动 URL 里。

首次访问带令牌的 URL:

http://<host>:<port>/?web_token=<token>

成功后会跳转到干净路径,并下发 dsh_web_token 会话 Cookie。

访问控制与限制

  • 无 TLS、无账号体系;这是纯 HTTP 上的共享密钥门卫。除可信网络外,请用真正的反向代理前置 dsh web 终结 TLS。
  • 令牌首次打开时出现在地址栏/历史记录里,重定向后会从地址栏清除。
  • /manifest.webmanifestGET/HEAD 不要求令牌,用于 PWA 安装检测。
  • 已知限制:DSH_WEB_URL 与 web-surface 模型提示仍是无令牌的回环 URL;本 bundle 不提供带令牌的模型侧 URL。
  • 插件以当前 dsh 进程权限运行。安装前应检查源码与许可证。

结尾

这个插件适合在可信网络内让 dsh Web UI 被远程浏览器访问,同时保持回环访问的简单性。

  • GitHub:https://github.com/studyzy/dsh-web-remote-access
  • 目录页:未在已核实资料中提供具体 URL;可按插件名 studyzy/dsh-web-remote-access 在 DSH 社区目录中查找。
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜