前言¶
DSH(DeepSeek Harness)的 Web GUI 通常只在本机或局域网里用浏览器打开。若要在手机、平板或另一台电脑的浏览器里操作同一套界面,常见做法是记局域网地址,或自己搭反向代理。DSH 每次启动还会更换 launch token,远程书签很容易失效。
下面介绍的 dsh-remote-access-proxy 由社区维护者 citydirector 发布,分类为 admin-security。它在 DSH 进程内跑一个小型反向代理:对外提供带随机路径的入口,用 HttpOnly Cookie 做访问门控,并在代理侧完成与 DSH launch token 的桥接,远程端不必每次启动后重新抄 token。配置集中在插件自带的设置页卡片里。
这是什么¶
dsh-remote-access-proxy 是 DSH 的 Web 侧远程访问代理插件。入口形式为 <地址>:<端口>/<随机路径>/(默认监听 13337,绑定所有网卡);首次启动会生成并保存随机路径,一般无需额外配置即可使用。
插件要求 DSH 0.1.7-rc.1 或更高版本(README 写明在 0.2.0-rc.2、0.2.1-alpha.3 上做过测试)。当前 package 版本为 1.4.1,许可证 MIT。社区目录页:skillhub 插件条目;源码与说明:GitHub 仓库。
核心功能¶
反向代理与 launch token 桥接¶
代理把请求转发到本机 loopback 上的 DSH Web(Host 改写为 127.0.0.1:<port>,并去掉 Origin)。远程用户不直接接触每次启动变化的 launch token:由代理自行完成 token 交换并持有 dsh-auth-* Cookie;上游返回 401 时会丢弃该 Cookie 并重新交换。
访问门控¶
- 随机路径:入口路径由系统 CSPRNG 生成,应像密码一样保管;配置页可「重新生成路径」,保存后旧地址立即失效。
- 可选访问密码:开启后先出现登录页;登录成功的设备通过签名 Cookie
dsh_et_gate记住约 30 天(HttpOnly、SameSite=Strict;启用 TLS 时带 Secure)。改密码或改路径会使所有设备失效。连续五次错误会临时锁定该客户端地址;<入口>/__rap/logout可登出。 - 允许连接的客户端地址:可填 IP、CIDR 或范围;留空表示不限制(README 建议按需填写)。「仅 LAN 和 VPN」可一键填入常见私网段。名单外的连接在交换数据前即被丢弃;配置页会显示最近一次被拒绝的地址。本机回环始终允许。
配置页¶
在插件列表中打开 Remote Access Proxy,再进入其下的 Remote Access Proxy 组件。页面展示运行状态、失败原因(如端口占用、证书加载失败)、各网卡对应的入口地址(可复制),以及上述开关与字段。保存后代理原地重启,无需重启整个 DSH。
可选 TLS:需 .pfx 证书与口令;家庭 LAN / VPN 场景 README 说明 plain HTTP 即可,公网暴露时建议开 TLS 或前置 Caddy、nginx、Cloudflare Tunnel 等 HTTPS 反向代理。
安装与启用¶
图形界面(README Quick start):
- 侧栏 Plugins → Add plugin,填入仓库地址并启用插件:
https://github.com/citydirector/dsh-remote-access-proxy
- 在插件列表打开 Remote Access Proxy,进入对应组件,查看顶部状态与入口地址,点击 Copy。
命令行(web profile):
dsh plugin --profile web add github:citydirector/dsh-remote-access-proxy
README 还提到可用 tag 固定版本,例如 github:citydirector/dsh-remote-access-proxy#v1.4.0;DSH 运行中可在配置页或 Plugins 页更新,停止 DSH 后也可在 profile 目录用 pnpm add 换 tag。
启用插件后,记得同时打开插件总开关与组件开关;若状态读不到,README 故障表里会提示检查这两处。
典型用法¶
- 在本机 DSH 上按上文安装并打开插件,复制配置页给出的入口地址,例如
http://192.168.1.20:13337/k3x9q2m7p1zt/。 - 在同一局域网(或已接入的 VPN / Tailscale / ZeroTier 等)的另一台设备浏览器中打开该完整 URL,可收藏或加到主屏幕。
- 若需限制来源,在配置页填写 Allowed client addresses 或点 LAN and VPN only;需要时再设 Access password。
README 强调:部分 DSH 设置只能在宿主机本机页面修改(例如 API key),远程页可正常建会话、聊天、选工作区;在 0.2.0 上配置页仅宿主机可见,0.2.1 起远程也可打开配置页,但一键更新仍只在宿主机提供。
适用场景与注意¶
适合:已在 LAN、家庭 VPN、组网或自建反代后面使用 DSH,希望用固定「地址 + 秘密路径」从手机或其他电脑访问 Web GUI,而不想每次启动重新处理 launch token。
注意:
- 插件与 DSH 同属一个进程权限运行;安装前请自行审阅 源码与 MIT 许可证,勿将入口地址泄露到公网而不加 TLS 或访问控制。
- 两个 DSH 应用共用同一
$DSH_HOME时会争用同一监听端口,需关闭其一或改端口。 - 远程出现
forbidden多为路径不完整;连接被重置多为未加入允许列表;纯文本bad gateway多为代理连不上上游 DSH,README 建议upstreamHost/upstreamPort保持空 /0以跟随当前实例。
配置项写入当前 profile 的 cordis.patch.yml,字段说明见仓库内 config/cordis.patch.example.yml(如 enabled、listenPort 等)。
结尾¶
dsh-remote-access-proxy 把「随机路径 + 可选密码与 IP 白名单 + launch token 桥接」收进 DSH 插件,用一张配置页卡片给出可复制的入口地址,适合需要跨设备使用 Web GUI 的 DSH 用户。