dsh-hub-plugin:在设置页把 DSH 安全发布到局域网与公网

前言

DeepSeek Harness(DSH)默认只监听本机 127.0.0.1,并用 Host 校验限制访问。想在手机、平板或另一台电脑的浏览器里继续用同一台机器上的 DSH 会话,常见做法是 SSH 端口转发、VPN,或单独起 dsh web 再想办法暴露端口——配置分散,移动端也不总是顺手。

下面介绍社区插件 dsh-hub-plugin(维护者 dbssAlan):在本机做反向代理与访问密码保护,可选 cloudflared 隧道出公网;访问密码、二维码、设备导航、隧道模式都在 DSH 设置页里完成,默认关闭,随 DSH 启停。

这是什么

dsh-hub-plugin 是发布在 npm 与 GitHub 上的 DSH 插件(当前 package 版本 0.6.2,MIT 许可,支持 Windows / macOS / Linux)。它在本机 :19388(可改)起 Hub 反代,把外部 HTTPS 或局域网请求改写到 127.0.0.1:<DSH 端口>,并在密码页之后签发 Hub 会话 Cookie,再与 DSH 宿主对接。

适合场景:同一 WiFi 内直连,或通过 cloudflared 的随机域名 / Cloudflare 命名隧道固定域名,从浏览器远程使用这一台电脑上的 DSH(桌面版或 dsh web)。社区目录页:https://www.skillhub.cn/plugins/dbssAlan/dsh-hub-plugin;源码与文档:https://github.com/dbssAlan/dsh-hub-plugin。

DSH 生态强调「一切皆插件」;SkillHub 等目录是社区站点,与 DeepSeek / 幻方无官方从属关系。

核心功能

访问与隧道

  • 访问密码:URL 不含密码,打开后必须输入;登录后 30 天 HttpOnly Cookie(SameSite=Lax)。登录失败限速 5 次 / 60 秒。
  • 局域网 + 公网:同一 WiFi 可直连 Hub 端口;公网通过 cloudflared(quick 免费随机域名,或 named 命名隧道固定域名)。cloudflared 可在首次建隧道时自动下载到 %DSH_HOME%/bin,也可自行安装。
  • 设备导航页:展示二维码、分享链接、访问密码,支持一键复制;设置页可「打开设备导航页」。

设置页与形态

  • 入口:Ctrl + , → 远程访问;启用、密码、隧道、保存并重启均在 UI 完成。
  • 插件形态:随 DSH 启停,无需单独开终端维护 Hub。
  • 桌面版直连:可直接发布 Electron 桌面版宿主,不必为远程再起一个独立宿主。
  • 多宿主冲突提示:检测到桌面版与 dsh web 同时运行会提醒,避免会话写租约互相锁。

设备会话、审计与多机

  • 设备会话:记录各登录设备,可逐个或全部撤销;撤销后该设备需重新输入密码。
  • 登录审计:最近 100 条写入 %DSH_HOME%/dsh-hub-plugin/audit.jsonl。
  • 远程设备(v0.6):两台机器都装插件时,可在 A 的设置里添加 B 的地址,侧边栏「远程设备」浮层内 iframe 操作 B 的 DSH(会话仍各自存储;要共享同一批工作区/会话,应只跑一个 DSH 宿主,另一台用浏览器打开其地址)。

安全默认

  • 默认 enabled: false;密码至少 8 位;写接口需 x-dsh-hub 请求头(防 CSRF)。配置经同源路由 /dsh-hub/* 管理。
  • 公网 TLS 由 cloudflared 终止,本机 Hub 不直接对公网裸暴露。DSH 能执行本机命令,密码泄露等同于机器控制权;密码明文存于 config.json(权限 0600),README 建议 16 位以上随机串,公网长期使用可叠加 Cloudflare Access。

工作原理(简述)

浏览器(含手机)→ cloudflared 或局域网 → 本机 Hub 反代(密码页、Host 改写、设备页)→ 127.0.0.1:<DSH 端口> → DSH 宿主。DSH 对 Host 的校验由 Hub 改写成 127.0.0.1:<port> 并配合本机会话 Cookie 完成对接。

安装与启用

从 npm 安装(推荐)

包名:

dsh-hub-plugin
  • 桌面版:设置 → 插件 → 添加插件,填写 dsh-hub-plugin。
  • 命令行(web profile):
dsh plugin --profile web add -w dsh-hub-plugin

从 GitHub 安装

https://github.com/dbssAlan/dsh-hub-plugin
  • 桌面版:设置 → 插件 → 添加插件,填上述仓库地址。
  • 命令行(web profile):
dsh plugin --profile web add -w https://github.com/dbssAlan/dsh-hub-plugin

安装后打开 Ctrl + , → 远程访问。桌面 profile 由 Electron 管理,不能用 dsh plugin --profile desktop 直接安装,需走桌面端插件页。

配置持久化

首次启动会在 %DSH_HOME%/dsh-hub-plugin/config.json 写入 Cordis 配置;之后以设置页或该 JSON 为准(JSON 覆盖 YAML)。主要字段:

字段 默认 说明
enabled false 启用远程访问
password "" 访问密码,至少 8 位
listenPort 19388 本机反代端口
tunnel quick off / quick / named
tunnelToken "" 命名隧道 Token
publicUrl "" 命名隧道对外地址
targetPort 0 目标 DSH 端口;0 为自动

典型用法

  1. 打开 设置 → 远程访问。
  2. 勾选「启用远程访问」。
  3. 填写访问密码(至少 8 位)。
  4. 选择隧道模式:off(仅局域网)、quick(免费随机域名)、named(固定域名)。
  5. 点击「保存并重启」。
  6. 点击「打开设备导航页」,手机扫码 → 输入密码 → 进入 DSH。

仅局域网时可设 tunnel 为 off,在同一 WiFi 用 http://<本机IP>:19388(或你在设置里改的 listenPort)访问。命名隧道需在 Cloudflare Zero Trust 创建隧道,Public Hostname 指向 http://127.0.0.1:19388,在设置页选 named 并填入 Token 与 publicUrl。

健康检查与排错可参考:http://127.0.0.1:<listenPort>/_health;日志 %DSH_HOME%/dsh-hub-plugin/hub.log,状态 status.json。快速隧道重启后域名会变,固定域名用命名隧道。

适用场景与注意

适合:希望零第三方账号、在设置页一体化管理远程入口;需要直接发布桌面版 DSH;用手机浏览器随手继续本机会话(可添加到主屏幕,PWA 样式已考虑移动端安全区)。

不适合作为首要目标:README 写明移动端 UI 不如专门适配的插件或原生 App 精致;跨机合并工作区 / 会话同步在路线图 v0.7,需 DSH 核心扩展。

安装前:插件以当前 DSH 进程权限运行,安装前应阅读源码与 MIT 许可证,并理解远程暴露的风险。不要编造未验证的部署案例;同类插件(如 dsh-pocket、dsh-remote、dsh-mobile)在形态、是否要云端账号、是否直连桌面版上各有取舍,可按 README 对比表选型。

结尾

dsh-hub-plugin 把「本机 DSH → 密码保护 → 局域网/公网浏览器访问」收进设置页:cloudflared、二维码、设备会话与多机浮层互控都在同一套配置里。需要细节、排错表与安全说明时,以仓库 README 与 SECURITY.md 为准。

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

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

Xiaoye