ankhishtar2-lang/dsh-sakurafrp0

dsh-sakurafrp

手机 ↔ 电脑互通(SakuraFrp 隧道 + dsh-mobile 移动网关)的图形化管理插件

包名
dsh-sakurafrp
版本
1.0.0
许可证
MIT
最近更新
2026年9月11日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:ankhishtar2-lang/dsh-sakurafrp

3.3 前置:配置 dsh-mobile 的移动网关

$DSH_HOME/profiles/web/cordis.patch.yml 里加一段(值都要换成你自己的):

- id: mobile-access
  config:
    initiallyEnabled: true
    maxDevices: 1                     # 只信任一台设备就写 1
    pairingTtlMs: 300000              # 配对窗口 5 分钟
    listenHost: 127.0.0.1
    listenPort: 33782                 # 必须等于 SakuraFrp 隧道的远程端口
    publicAuthorities:
      - node.example.com:33782        # 手机访问时用的 Host,必须与隧道入口一致
      - yd.node.example.com:33782     # SakuraFrp 运营商前缀节点(可选)
    allowedCidrs: ['127.0.0.0/8', '::1/128']   # 隧道过来的源地址恒为回环
    upstreamOrigin: http://127.0.0.1:3080
    tls:
      mode: provided
      certFile: !!js dshHomePath('mobile-access/tls/server.crt')
      keyFile: !!js dshHomePath('mobile-access/tls/server.key')
    pairingCaFile: !!js dshHomePath('mobile-access/tls/ca.crt')
    instanceId: ''   # 必须与 CA 指纹完全一致

⚠️ 两个会让你起不来 dsh 的坑(作者踩过)

  1. pairingCaFile 配了却漏了 instanceId:插件会拿 sha256(stateFile 路径) 当 instanceId, 永远对不上 CA 指纹 → start() 抛错 → loader fail-fast → 整个 dsh web 起不来
  2. maxDevices 在「配对准入」时只数活跃设备,但在启动加载时数全部记录(含已撤销)。 撤销过设备后忘记清理、又把 maxDevices 改小,重启即崩。本仓库的 scripts/dsh-mobile-security-audit.sh 会自动清理已撤销记录。

4. 配置(环境变量)

不想改 profile 的话,全部行为都可以用环境变量覆盖(在 systemd unit 或启动脚本里设):

变量默认值说明
DSH_SAKURA_ORIGINhttps://node.example.com:33782(占位符)必填:你自己的公网入口。占位符不改的话探测与配对都会失败
DSH_SAKURA_AUTHORITIES额外探测的公网权威(逗号分隔),主入口自动取自 origin;SakuraFrp 的 yd./dx./lt. 前缀节点写在这里
DSH_SAKURA_SELFHEAL_MS15000网关自愈轮询间隔
DSH_SAKURA_PROBE_MS60000公网节点探测间隔
DSH_SAKURA_LOG$HOME/dsh/memory/dsh-sakurafrp.log事件日志(自动以 0600 创建)
DSH_SAKURA_WATCHDOG_UNITdsh-mobile-lan-watchdog.service外部守护服务单元名
DSH_SAKURA_ALLOW_REMOTE_ADMIN未设设为 1取消「仅电脑端」闸门(见第 6 节,不建议)

📌 与本机实际运行版本的差异:作者本机那份把 DSH_SAKURA_ORIGIN 默认值写成了自己的隧道入口 (省去配置环境变量)。为了不公开个人隧道地址,本仓库把默认值改成了占位符 https://node.example.com:33782,并且默认不再探测 yd./dx./lt. 前缀节点。 因此从本仓库安装后,必须显式设置 DSH_SAKURA_ORIGIN(必要时再设 DSH_SAKURA_AUTHORITIES)。