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 栅栏保持不动)。
核心功能¶
- 设置页可用性:允许 DSH 的设置页在非回环地址上可用,解决
settings are unavailable in this browser的问题。 - 会话认证控制:提供开关关闭浏览器会话校验(
disableBrowserAuth),解决重启后 token 失效的问题。 - 安全栅栏保留:保留 Host/Origin 栅栏,仅移除浏览器端的 token 校验。
- 本地开发支持:支持通过
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。
方法一:通过配置页¶
- 打开 DSH 设置 → 插件。
- 找到
dsh-tailnet-admin插件页面。 pageHosts:按“本机”处理的页面主机,一行一条。.开头表示后缀匹配(如.ts.net匹配a.ts.net)。*表示匹配所有。- 默认为空,需手动配置。
disableBrowserAuth:关闭浏览器会话校验。默认关闭,打开前请阅读“安全边界”。- 保存配置。
方法二:修改配置文件¶
直接编辑 ~/.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