dsh-tailscale-remote:在 tailnet 上暴露 DSH Web GUI,退出时撤路由

前言

DeepSeek Harness(DSH)的 Web 界面默认要登录令牌才能用;Desktop 走 IPC,往往不会在控制台打印那条带令牌的链接,而令牌又是进程级、重启即换。若你只想在出差或通勤时用手机连上自己电脑上的 DSH,常见做法是 SSH 隧道、内网穿透或自建反向代理——多一层运维,也可能经过第三方中转。

dsh-tailscale-remote 是社区维护的 DSH 插件:在 DSH 运行期间用本机已登录的 Tailscale,通过 Tailscale Serve 把 Web GUI 挂到 tailnet 的 HTTPS 地址上;DSH 正常退出时撤掉本次建立的路由与信任项。不引入插件作者以外的中转服务,前提是你本机 Tailscale 已就绪。

这是什么

  • 名称:dsh-tailscale-remote(npm / 插件包名一致)
  • 维护者:Ckarefulon
  • 分类:联网工具(社区目录 SkillHub 插件页)
  • 定位:给 DeepSeek Harness 用;只做「随时随地用手机连上本机 DSH」一件事。

源码与说明见 GitHub:Ckarefulon/dsh-tailscale-remote。当前资料中的包版本为 0.6.4,许可证 MIT。插件在 DSH 进程内加载,权限与当前 dsh 一致;安装前请自行查看源码与许可证。

核心功能

启动时

  1. 用 tailscale status --json 检查 BackendState,确认 Tailscale 后端真的在跑(不只看 tailscale up 的退出码)。
  2. 将 https://<你的机器>.<tailnet>.ts.net:7259(默认端口,可配置)代理到 DSH webServer 实际监听的端口。
  3. 把 <你的机器>.<tailnet>.ts.net:7259 加入 DSH /api 的 Host 信任列表(tailscale serve 会保留客户端 Host 头,否则手机能开页、发消息会 403)。
  4. 生成手机可用链接,写入状态文件并打日志。
  5. 默认开启精简模式:仅影响经 HTTP 渲染的手机页首屏插件体积(资料称约 5.3 MB gzip 降至约 1.1–1.3 MB),桌面 Electron 不受影响。

退出时

回滚本次运行做过的改动:撤掉 7259 路由、移除对应信任项。仅当 Tailscale 本是由 DSH 拉起时才会 tailscale down。若 7259 上已有指向上次崩溃残留的本实例路由,插件会认领并在退出时一并撤掉。

稳定登录入口

DSH Web 无令牌时只显示 dsh web authentication required; ...。插件提供跨重启不变的入口:

https://<你的机器>.<tailnet>.ts.net:7259/remote/<持久密钥>

访问后 302 到带令牌的地址并种下 cookie;之后可直接打开 https://<机器>.<tailnet>.ts.net:7259/。默认 cookie 有效期约 10 年(cookieMaxAgeDays 默认 3650),相对 DSH 默认 30 天更适合「手机随时连」。

设置页与状态文件

在 DSH 设置 → 通用 → 手机连接 可复制链接;支持「更换密钥」(默认同时吊销旧会话)。未就绪时会提示原因(例如 Tailscale 未运行)。

状态文件默认路径:

cat ~/.dsh/tailscale-remote.json

字段含 loginUrl(稳定入口)、url、plainUrl。Windows PowerShell:

Get-Content "$env:USERPROFILE\.dsh\tailscale-remote.json"

其它已文档化的优化

  • 精简模式(lite,默认 true):改渲染后的 index.html,白名单闭包减 preload;侧边栏底部可切换精简/完整(刷新后生效)。白名单失配时发完整页并记日志。
  • WebSocket 压缩(websocketCompression,默认 true):对 /api/remote.mux 惰性开启 permessage-deflate,减轻手机拉历史与会话的流量。

前置条件

  1. 本机已安装并登录 Tailscale。
  2. 该 tailnet 在 Tailscale 管理台已启用 HTTPS Certificates(DNS → HTTPS Certificates)。未启用时 tailscale serve 会失败,日志会有提示。

安装与启用

dsh plugin --profile <你的 profile> add dsh-tailscale-remote

从本地目录开发安装:

dsh plugin --profile <profile> add -w /path/to/dsh-tailscale-remote

装完后重启 DSH(新插件需重启才加载)。之后每次启动 DSH,插件会按配置自动执行。

常用配置项(完整表见 README):

字段 默认 说明
enabled true 关闭则插件不动作
httpsPort 7259 tailnet HTTPS 端口
loginRoute true 是否注册 /remote/<密钥>
revokeSessionsOnRotate true 换密钥时是否吊销所有已登录会话
teardownOnExit true 退出时是否回滚路由与信任项
lite true 手机页精简插件集

典型用法

最省事的两步:

  1. 在电脑上打开 DSH → 设置 → 通用 → 手机连接,点「复制」。
  2. 在手机浏览器打开该链接一次,存书签或添加到主屏幕;以后可直接用 loginUrl 或干净地址。

若链接泄露:更换密钥(默认会踢掉所有设备,操作端会自动补发 cookie)。若只想换链接、不踢设备,可设 revokeSessionsOnRotate: false(已泄露且对方已登录时旧 cookie 仍可能有效,需自行权衡)。

不需要稳定登录路由时可设 loginRoute: false。

适用场景与注意

适合:已在用 Tailscale、希望手机在任意网络下访问本机 DSH,且希望 DSH 关掉时 tailnet 上的 Serve 路由一起撤掉。

注意:

  • 登录链接中的持久密钥与 DSH 令牌同级,应视为秘密;依赖 tailnet 与 HTTPS 证书,不替代 DSH 自身的认证模型。
  • README 说明 DSH 0.2.0-rc.2 的 Web 前端无专门移动端外壳,但弹性布局下日常查看会话、发消息可用;若要抽屉侧栏等需另写客户端插件。
  • 社区插件目录与 DeepSeek / 幻方无官方从属关系;DSH 生态是「一切皆插件」,本包为第三方贡献。

结尾

dsh-tailscale-remote 把「Tailscale Serve + Host 信任 + 持久 /remote 登录 + 可选手机精简页」收进一个 DSH 插件,解决 Desktop 不打印 Web 登录链接、令牌随重启失效的痛点。安装命令以 README 为准,详情与 issue 见仓库。

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

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

小夜