dsh-tailscale-console:DSH Web 的 Tailscale 远程访问运营面板

前言

DSH 的 Web 界面如果通过 Tailscale 做远程访问,通常需要同时确认几件事:HTTPS 入口是否可用、本机代理是否会拦掉 *.ts.net100.64.0.0/10、中继服务器是否可用、DSH 是否信任远端访问地址。这些步骤分散在 Tailscale、系统代理、DSH profile 和 ACL 中,容易漏掉其中一项。

下面介绍 dsh-tailscale-console。它是 DSH 的一个插件,把这些常见检查和修复入口集中到一个面板里。

这是什么

dsh-tailscale-console 是 DeepSeek Harness(DSH)的 Tailscale 远程访问运营面板,由 evanfang0054 维护,许可证为 MIT。

它面向已经使用 DSH web profile 的场景,主要解决远程访问过程中的入口检查、macOS 代理绕过、中继服务器运维和 ACL 片段生成问题。

核心功能

下面列出已核实的卡片能力:

  1. 设备与在线提醒:按设备显示在线/离线状态;离线设备恢复在线时自动提醒。
  2. 健康检查:一键检查 HTTPS 入口、页面、/api session list、/sidebar/api、server direct path、proxy bypass。
  3. HTTPS 入口:查看 Tailscale Serve 状态和 URL,并提供开启/关闭开关,支持验证和重试。
  4. 代理绕过:检查 macOS 系统代理绕过列表中的 *.ts.net100.64.0.0/10,可一键重新应用;仅 macOS 可用。
  5. 中继服务器:查看中继服务器在 Tailnet 中的状态,启用 Peer Relay,并做 ping 验证。
  6. 访问:展示远程 HTTPS URL、本地 URL,以及完整的 dsh web 启动命令。
  7. ACL 片段:根据当前设备 IP 生成 tailscale.com/cap/relay grants JSON。

安装与启用

包名为 dsh-tailscale-console。已核实资料没有给出官方安装命令,为避免凭名称拼接,本文不给出具体安装命令。

启用前可以先确认运行前提:

  1. DSH 版本不低于 0.1.0-rc.6,因为需要 --trusted-hostwebRuntime service。
  2. profile 运行环境使用 Node 20.x 和 pnpm >= 9;已验证过的组合是 Node 20.19.2 和 pnpm 10.27.0。
  3. 修改 cordis.patch.yml、插件代码或 dsh-better-sidebar patch 后,需要重启 dsh web,这会中断当前运行的会话。
  4. 插件以当前 dsh 进程权限运行;安装前应检查源码与许可证。当前已核实许可证为 MIT。

典型用法

先确认 HTTPS 入口

Tailscale Serve 用于把本地服务暴露到 tailnet 内的 HTTPS 地址。先执行:

tailscale serve --bg 3080

再查看状态:

tailscale serve status

HTTPS 是必须的,因为浏览器只在 secure context 下暴露 crypto.randomUUID

启动 DSH Web

启动 dsh web 时,把本地 tailnet IP 和 <hostname>.<tailnet>.ts.net 都加入 trusted host:

dsh web --trusted-host <local-tailnet-ip>:3080 --trusted-host <hostname>.<tailnet>.ts.net

如果希望把 trustedHosts 固化到 profile,可以把对应 trustedHosts 追加到:

~/.dsh/profiles/web/cordis.patch.yml

说明:修改后需要重启 dsh web

macOS 代理绕过

如果本机使用会修改系统代理的代理工具,*.ts.net100.64.0.0/10 可能被代理拦掉。先查看当前绕过列表:

networksetup -getproxybypassdomains "Wi-Fi"

再写入包含 Tailscale 域段的绕过列表:

networksetup -setproxybypassdomains "Wi-Fi" "*.ts.net" "100.64.0.0/10" "*.local" "<local>" "localhost" "127.0.0.1" "192.168.0.0/16" "10.0.0.0/8" "172.16.0.0/12"

说明:-setproxybypassdomains 会替换该网络服务的整个绕过列表,所以先备份。该卡片只适用于 macOS;非 macOS 系统会隐藏该卡片。

配置中继 ACL

如果需要通过手机做中继,需要为设备到中继服务器之间的 relay 能力授权。可以在 Tailscale ACL 的 grants 中加入类似片段:

{
  "grants": [
    {
      "src": ["<device-A-ip>", "<device-B-ip>"],
      "dst": ["<server-tailnet-ip>"],
      "app": { "tailscale.com/cap/relay": [] }
    }
  ]
}

说明:src 是允许使用 relay 的设备,dst 是 relay server。缺少该授权时,手机中继会不可用。

中继端口与安全组

如果配置 Peer Relay,已核实资料要求云安全组允许入站 UDP 4000041641

适用场景与注意

  • 适合在 macOS 本机运行 DSH web,并通过 Tailscale 手机或远程设备访问的场景。
  • 适合需要维护 HTTPS 入口、代理绕过、relay server 和 ACL 的运维场景。
  • 面板中的代理绕过卡片只适用于 macOS;非 macOS 会隐藏该卡片。
  • dsh-better-sidebar 0.10.3 的 trustedHostsOf 存在问题;如果 profile 使用它,node_modules 中的 patch 会在 pnpm install 后丢失,需要重新应用。
  • 修改 cordis.patch.yml、插件代码或 dsh-better-sidebar patch 后,需要重启 dsh web,并会中断当前会话。
  • 插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。

结尾

dsh-tailscale-console 把 DSH 远程访问中容易分散的几个检查点集中到面板里:入口、代理、中继、访问命令和 ACL。DSH 的插件生态强调「一切皆插件」;社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。

目录页地址未在已核实资料中确认,本文不列出。GitHub 地址为:

https://github.com/evanfang0054/dsh-tailscale-console

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

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

小夜