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。配置好 frpServerAddr、frpServerPort、frpAuthToken、frpProxyType、frpRemotePort 後,公網入口通過 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
羽毛球分组比赛记分
小程序二维码

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

小夜