前言¶
DeepSeek Harness (DSH) 的 Web 界面(通过 --profile web 启动)默认绑定在本地回环地址(通常是 127.0.0.1)。要在局域网内的另一台设备上访问该界面,需要修改服务器的监听地址。dsh-remote-access 插件通过环境变量覆盖配置,允许 Web 界面监听所有网络接口,同时复用 DSH 内置的浏览器认证机制,避免引入额外的认证插件。
插件定位¶
这是一个由 sysit 维护的出站(Out-of-tree)插件,属于 DSH 的 web-profile bundle。它的核心定位是:
* 轻量级:仅包含一个配置行,不 fork 进程。
* 无侵入认证:不创建新的认证逻辑,完全依赖 DSH 内置的 ?token= BrowserAuth。
* 升级友好:配置为声明式层,重启即生效,无需重新应用。
核心功能¶
- 多网卡监听:使
dsh --profile webGUI 能够监听在0.0.0.0上。 - 远程访问:允许从局域网内的其他设备打开该 GUI。
- 环境变量控制:通过
DSH_WEB_HOST环境变量覆盖默认的webserver配置项。 - 自动打印 URL:当服务器绑定到
0.0.0.0时,启动日志会自动打印包含 LAN 地址的 URL。 - 内置认证:使用 DSH 内置的
?token=认证机制,不依赖插件自身实现认证。
安装与启用¶
安装该插件需要使用 DSH 的插件管理命令。它会将 @sysit/dsh-remote-access 添加到当前 profile 的 dsh.profile.bundles 中。
dsh plugin --profile web install github:sysit/dsh-remote-access
安装后,插件会向 dsh.profile.bundles 注入一个覆盖 webserver host 的配置行。由于它是 profile 级别的补丁,每次 DSH 启动时加载器都会重新读取此配置,因此插件升级或 DSH 升级后无需重新应用。
典型用法¶
通过设置 DSH_WEB_HOST 环境变量来控制监听地址。默认情况下,如果环境变量未设置,插件会将主机设置为 0.0.0.0。
| 场景 | 命令 |
|---|---|
| 局域网访问 (默认) | export DSH_WEB_HOST=0.0.0.0 && dsh --profile web --no-open |
| 仅本机访问 | unset DSH_WEB_HOST 或 DSH_WEB_HOST=127.0.0.1 dsh --profile web |
| 保持默认 | export DSH_WEB_HOST="${DSH_WEB_HOST:-0.0.0.0}" |
启动成功后,日志中会同时显示本地地址和 LAN 地址:
dsh web: http://127.0.0.1:3080/?token=eqeU… (LAN: http://192.168.1.5:3080/?token=eqeU…)
在另一台设备上打开 LAN: 后面的 URL,即可直接访问。
适用场景与注意事项¶
- 网络暴露:将
DSH_WEB_HOST设置为0.0.0.0会使 Harness 暴露在你的网络中。请务必妥善保管打印出的 token,并在远程访问时使用--no-open参数以避免浏览器自动打开。 - 安全机制:DSH 的跨站/DNS 绑定防御(
api-request-trust)保持开启,trustedHosts会自动识别局域网 IP。对于不可信的网络,建议优先使用 SSH 端口转发或 VPN。 - API 暴露:
/apiRPC 接口的暴露程度取决于你如何配置 host,插件本身不涉及此配置。 - 跨进程认证:token 是进程级的,每次重启会变化;但浏览器 Cookie 的有效期默认为 30 天,因此已打开的标签页在重启后通常仍可使用。
结尾¶
dsh-remote-access 提供了一种简单、标准化的方式来扩展 DSH Web 界面的访问范围,而不引入复杂的第三方认证逻辑。它通过环境变量控制监听地址,利用 DSH 内置的安全机制,适合需要在局域网内共享 DSH Web UI 的开发场景。