前言¶
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 令牌保护。 - 页面、
/apiRPC、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.webmanifest仅GET/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 社区目录中查找。