dsh-tailnet-admin: 让 DSH 设置页在非回环地址可用

DeepSeek Harness(DSH)默认将“本机”定义为桌面壳注入的 globalThis.__DSH_TRANSPORT__ 或回环地址(localhost)。当通过 Tailscale Tailnet 或反向代理域名访问 DSH 时,设置页会报 settings are unavailable in this browser,且浏览器会话认证(token)在重启后失效。dsh-tailnet-admin 插件将这两个问题拆解为独立开关,让设置页在非回环地址可用,并支持按需关闭浏览器会话校验,同时保留 Host/Origin 栅栏。

基本信息

  • 插件名:dsh-tailnet-admin
  • 维护者:he0119
  • 分类:联网工具
  • 许可证:MIT
  • 核心价值:把 Tailnet / 反向代理页面当作“本机”来用:启用 host 持久化设置,并按需关闭浏览器会话校验(Host/Origin 栅栏保持不动)。

核心功能

  1. 设置页可用性:允许 DSH 的设置页在非回环地址上可用,解决 settings are unavailable in this browser 的问题。
  2. 会话认证控制:提供开关关闭浏览器会话校验(disableBrowserAuth),解决重启后 token 失效的问题。
  3. 安全栅栏保留:保留 Host/Origin 栅栏,仅移除浏览器端的 token 校验。
  4. 本地开发支持:支持通过 link:/path/to/... 进行本地开发安装。

安装与配置

1. 安装插件

安装前请确保 Node.js 版本为 ^22.19.0 || >=24.0.0。

使用官方命令安装:

npx @deepseek-ai/dsh plugin --profile web add @he0119/dsh-tailnet-admin

本地开发时,先构建再通过链接安装:

pnpm run build
npx @deepseek-ai/dsh plugin --profile web add link:/path/to/dsh-tailnet-admin

2. 注册为 Bundle

dsh plugin add 仅执行 pnpm add,DSH 启动时只读取 dsh.profile.bundles。安装后需在 profile 的 package.json 中注册。

// ~/.dsh/profiles/web/package.json
{
  "dsh": {
    "profile": {
      "bundles": [
        "@he0119/dsh-tailnet-admin"
      ]
    }
  }
}

也可以在 DSH 界面操作:设置 → 插件,找到“已安装但未启用”的包,启用一次即可完成注册。

3. 配置开关

插件提供两个独立配置项:pageHosts 和 disableBrowserAuth。

方法一:通过配置页

  1. 打开 DSH 设置 → 插件。
  2. 找到 dsh-tailnet-admin 插件页面。
  3. pageHosts:按“本机”处理的页面主机,一行一条。
    • . 开头表示后缀匹配(如 .ts.net 匹配 a.ts.net)。
    • * 表示匹配所有。
    • 默认为空,需手动配置。
  4. disableBrowserAuth:关闭浏览器会话校验。默认关闭,打开前请阅读“安全边界”。
  5. 保存配置。

方法二:修改配置文件

直接编辑 ~/.dsh/profiles/web/cordis.patch.yml:

- id: tailnet-admin            # 插件固定约定的 id
  name: '@he0119/dsh-tailnet-admin'
  config:
    pageHosts:
      - .ts.net              # 或精确主机名,或 *
    disableBrowserAuth: true # 默认 false

注意:disableBrowserAuth 立即生效,pageHosts 需刷新页面生效。

安全边界

disableBrowserAuth 打开后无浏览器 token 认证,依赖 Host/Origin 栅栏。这意味着任何能打开此页面的人即可拥有机器控制权(读写文件、执行命令、动用 API key)。暴露面取决于 Tailscale ACL 或反向代理的访问控制。

建议组合:
* pageHosts 按需开启。
* disableBrowserAuth 仅在需要解决 token 频繁失效问题时开启。
* 开启后确认 Tailscale ACL 仅放行可信设备。

排障

现象 原因
设置页仍报 settings are unavailable in this browser pageHosts 未命中当前主机名(需带点后缀),或未刷新页面
请求直接 403 Host/Origin 栅栏未过:需在 dsh web 启动参数中添加 --trusted-host <authority>
仍然要 ?token= disableBrowserAuth 未打开
启动日志没有 [dsh-tailnet-admin] 包名未加到 dsh.profile.bundles,或包未安装
配置页显示“只写进这个浏览器” 当前页面未被当作“本机”,需先从回环地址打开或修改 cordis.patch.yml

总结

dsh-tailnet-admin 解决了 DSH 在 Tailnet 或反向代理环境下的设置页不可用及会话认证问题。通过拆分 pageHosts 和 disableBrowserAuth 两个开关,在保留安全栅栏的前提下,提供了灵活的配置能力。

  • GitHub: https://github.com/he0119/dsh-tailnet-admin
  • 目录: https://www.skillhub.cn/plugins/he0119/dsh-tailnet-admin
羽毛球分组比赛记分
小程序二维码

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

Xiaoye