dsh-web-remote-frp:DSH 手机 / 外网远程访问插件(frp 内网穿透版)

前言

DSH 的 Web 界面通常运行在本机或内网环境里。当需要在手机上访问、从外网打开会话,或者希望保留一个可自控的公网入口时,单纯依赖本机端口会不方便。dsh-web-remote-frp 是 Casually 维护的 DSH 插件,面向“手机 / 外网远程访问”这一场景,把公网通道实现为 frp 内网穿透,同时保留局域网 HTTP / HTTPS 直连。

下面介绍该插件的定位、核心功能、安装方式和基本用法。

这是什么

dsh-web-remote-frp 是一个 DSH 远程访问插件,许可证为 MIT。它在 DSH 插件体系里增加远程访问入口,提供 frp 公网穿透、局域网直连、token 鉴权、gzip 压缩和机器人通道等能力。

它的目标是让 DSH Web 可以被局域网设备访问,也可以在部署了 frps 的公网服务器上形成可配置的远程访问入口。

核心功能

  • frp 公网穿透:frpc 缺失时自动从 GitHub Releases 下载最新版;支持 tcp / http / https 三种代理模式。
  • 局域网直连:支持 HTTP + HTTPS;HTTPS 自动生成自签名证书,零配置。
  • 独立开关:局域网与公网可单独开、关,互不影响。
  • 安全认证:每次启动生成随机令牌;使用 HttpOnly Cookie;局域网可免 token;公网访问始终需要 token。
  • 代理压缩:反向代理自动 gzip 压缩,提升大历史会话加载速度。
  • 侧边栏入口:手机快捷按钮常驻侧栏,刷新不消失。
  • 机器人通道:支持微信、QQ(NapCat)、Telegram、钉钉、飞书、企业微信。

安装与启用

先在 DSH profile 目录下执行安装命令:

pnpm add dsh-web-remote-frp

安装后,在 profile 的 package.json 中把插件加入 dsh.profile.bundles 数组:

{
  "dsh.profile.bundles": [
    "dsh-web-remote-frp"
  ]
}

然后启动 DSH Web:

dsh web

注意:bundle 方式安装或更新后,必须重启 DSH;bundle 变更不支持热加载。若使用 cordis.patch.yml 方式接入,会被 HMR 热加载。

如果 pnpm 11 对刚发布版本报新发布包年龄校验错误,可加参数重试:

pnpm add dsh-web-remote-frp --config.minimumReleaseAge=0

基础配置

插件可在 profile 的 cordis.patch.yml 中插入配置。需要关注的配置项包括:

  • frpServerAddr:frps 服务器地址;留空则仅局域网可用。
  • frpServerPort:frps 服务器端口。
  • frpAuthToken:frps 认证 token。
  • frpProxyType:代理模式;已核实支持 tcp / http / https 三种模式。
  • frpRemotePort:公网访问端口。

示例结构如下,值按你的 frps 环境填写:

- insert:
    - id: web-remote-frp
      config:
        frpServerAddr: "your-frps-host"
        frpServerPort: <frps-port>
        frpAuthToken: "<frps-auth-token>"
        frpProxyType: "tcp"
        frpRemotePort: <remote-port>

如果只是在本机或局域网使用,可以把 frpServerAddr 留空,插件则仅局域网可用。

典型用法

查看状态与 token

在本机运行:

curl http://127.0.0.1:3080/frpremote/info

通过返回信息查看状态并提取 token。公网访问始终需要 token;token 变更后,旧链接和旧 Cookie 会立即失效。

重新开启局域网

当没有 GUI、或局域网开关被关闭时,可在本机执行:

curl -s -X POST http://127.0.0.1:3080/frpremote/control \
  -H 'content-type: application/json' \
  -d '{"action":"lan:start"}'

执行后,再确认状态:

curl http://127.0.0.1:3080/frpremote/info

公网访问

公网隧道需要一台有公网 IP 的服务器运行 frps。配置好 frpServerAddrfrpServerPortfrpAuthTokenfrpProxyTypefrpRemotePort 后,公网入口通过 frp 隧道暴露。

公网访问始终需要 token。可从 /frpremote/info 查看状态并提取当前 token。

适用场景与注意

适合以下情况:

  • 希望从手机或外网访问 DSH Web 界面。
  • 希望公网入口由自己部署的 frps 服务器提供。
  • 希望局域网与公网分别开关,避免互相影响。
  • 需要微信、QQ、Telegram、钉钉、飞书、企业微信等机器人通道接入。

使用前注意:

  • 插件以当前 dsh 进程权限运行。安装前应检查源码、依赖和 MIT 许可证。
  • 公网访问始终需要 token。进程重启、renew 动作、保存配置重启都会重新生成 token;遇到旧链接失效,先确认 token 是否已变化。
  • frpServerAddr 留空时仅局域网可用;使用公网隧道需要 frps 服务器。
  • bundle 方式更新后必须重启 DSH;cordis.patch.yml 方式会被 HMR 热加载。
  • dsh-web-remote 的 DOM id、HTTP 路由、localStorage 键前缀不同,理论上可同时安装互不冲突。

资源

  • 社区目录:https://www.skillhub.cn/plugins/Casually/dsh-web-remote-frp
  • GitHub:https://github.com/Casually/dsh-web-remote-frp
羽毛球分组比赛记分
小程序二维码

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

Xiaoye