dsh-remote-access-proxy:用随机路径与网关 Cookie 远程打开 DSH Web GUI

前言

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):

  1. 侧栏 Plugins → Add plugin,填入仓库地址并启用插件:
   https://github.com/citydirector/dsh-remote-access-proxy
  1. 在插件列表打开 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 故障表里会提示检查这两处。

典型用法

  1. 在本机 DSH 上按上文安装并打开插件,复制配置页给出的入口地址,例如 http://192.168.1.20:13337/k3x9q2m7p1zt/。
  2. 在同一局域网(或已接入的 VPN / Tailscale / ZeroTier 等)的另一台设备浏览器中打开该完整 URL,可收藏或加到主屏幕。
  3. 若需限制来源,在配置页填写 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 用户。

羽毛球分组比赛记分
小程序二维码

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

小夜