dsh-mobile-gate:爲 DSH 增加局域網手機訪問網關

前言

對於需要從同一局域網手機訪問本機 DeepSeek Harness(DSH)Web UI 的場景,通常需要處理設備審批、令牌綁定、限流和移動端排版等問題。dsh-mobile-gate 提供一個獨立 Node 網關,反向代理 DSH Web UI,並在訪問鏈路中加入首次訪問審批、按設備令牌、每 IP 限流和移動端佈局注入。

這是什麼

dsh-mobile-gateBernardxu123 維護,許可證爲 MIT。它的定位是 DSH 的局域網手機網關:網關監聽 0.0.0.0,反向代理 DSH Web UI;首次訪問需要本機批准;批准後設備通過 Cookie 領取令牌;同時向代理返回的 HTML 注入移動端適配內容。

核心能力

下面介紹已覈實的幾項能力:

  • 代理 HTML 時注入 data-lan-device 標記、緊湊排版 CSS 和 crypto.randomUUID polyfill。
  • 首次訪問審批:手機第一次訪問顯示等待本機批准,需要在電腦上手動允許。
  • 批准後生成一次性令牌,一次批准只綁定一個瀏覽器,令牌無法被其他設備複用。
  • 每 IP 限流,默認每分鐘 120 次請求,超限返回 429。
  • 迴環地址與本機 LAN IP 直接放行。
  • 網關是獨立子進程,不修改 DSH 主服務配置,也不動信任柵欄。
  • 支持 dsh plugin addcordis.patch.yml 靜態掛載或動態插件方式安裝,移除即終止。

安裝與啓用

如果已經在本機取得插件目錄,可以在該目錄中執行安裝命令:

dsh plugin --profile web add ./dsh-mobile-gate

項目還支持 cordis.patch.yml 靜態掛載或動態插件方式安裝。無論使用哪種方式,移除插件後網關終止。

典型用法

啓用後,先在電腦瀏覽器打開管理頁:

http://127.0.0.1:3088/lan-gate/admin

然後讓手機連接同一 Wi-Fi,訪問管理頁中列出的地址,例如:

http://192.168.31.108:3088

手機首次訪問會顯示等待批准。回到電腦管理頁的「待批准設備」中,爲這臺設備選擇訪問方式:

  • 手機
  • 電腦
  • 自動

點允許後,在手機端刷新頁面,即可領取令牌並進入 DSH Web UI。

如果希望在本機直接查詢網關狀態,可以執行:

curl http://127.0.0.1:3088/lan-gate/status

批准示例如下,其中 kindphone

curl -X POST http://127.0.0.1:3088/lan-gate/action -H 'Content-Type: application/json' -d '{"action":"approve","ip":"192.168.31.125","kind":"phone"}'

配置與狀態

默認環境變量如下:

LAN_GATE_PORT=3088
LAN_GATE_HOST=0.0.0.0
LAN_GATE_TARGET_PORT=3080
LAN_GATE_RATE_LIMIT=120

LAN_GATE_PORT 表示網關監聽端口,LAN_GATE_HOST 表示監聽地址,LAN_GATE_TARGET_PORT 表示 DSH Web UI 目標端口,LAN_GATE_RATE_LIMIT 表示每 IP 每分鐘請求上限。

端口被佔用時,網關會自動遞增嘗試,最多增加 20 個端口。設備審批記錄持久化在:

~/.dsh/lan-gate-state.json

待批准列表是內存態,重啓後需要設備重新訪問觸發。

適用場景與注意

適合在可信局域網內把 DSH Web UI 接入手機,尤其希望保留本機審批、設備令牌和限流時。使用注意:

  • 網關沒有獨立認證層,僅限可信局域網使用。
  • DSH Web UI 走明文 HTTP,令牌經 Cookie 傳遞,請勿跨不可信網絡使用。
  • 建議定期在管理頁執行全部撤銷,並重新審批設備。
  • 插件以當前 dsh 進程權限運行。安裝前應檢查源碼,並確認 MIT 許可證符合你的使用要求。

項目地址

GitHub:

https://github.com/Bernardxu123/dsh-mobile-gate.git
羽毛球分组比赛记分
小程序二维码

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

小夜