dsh-web-remote-access:讓 dsh Web UI 可遠程訪問並受令牌保護

前言

dsh --profile web 的迴環訪問適合本機使用。如果需要在局域網內打開 dsh Web UI,直接綁定所有網卡會讓頁面、/api RPC 和 WebSocket 下行暴露在 HTTP 服務上。

studyzy/dsh-web-remote-access 是用於 dsh web profile 的 bundle 插件,用於支持 --host 0.0.0.0 遠程訪問,並讓遠程訪問始終經過 web token 門衛。它不改動 harness 源碼,卸載插件可完全還原默認行爲。

這是什麼

該插件由 studyzy 維護,許可證爲 MIT,需要 Node.js >= 18 和 dsh 環境。它作爲 dsh web profile 插件安裝,解決的問題是:讓 dsh Web UI 可以遠程訪問,同時保留迴環訪問的免令牌體驗。

核心功能

  • 支持 --host 0.0.0.0 遠程訪問,且始終有 web token 令牌保護。
  • 頁面、/api RPC、WebSocket 下行經過 web token 門衛。
  • 首次打開 ?web_token= 後,服務器 302 跳轉並下發 dsh_web_token 會話 Cookie。
  • 迴環訪問無需令牌。
  • 啓動時打印帶 ?web_token= 的 URL;綁定所有網卡時還打印 LAN 地址。
  • 令牌校驗使用 sha256 + timingSafeEqual 常數時間比較。
  • /manifest.webmanifest 豁免令牌,PWA 安裝檢測不受影響。
  • 已認證 /api 請求以迴環權威呈現,使 settings.*、credentials.*、agentPreset.*、host.*、llm.discoverModels 可遠程訪問。
  • 不改動 harness 源碼,全部通過 bundle 插件實現。
  • 卸載插件可完全還原默認行爲。

安裝

在 dsh 環境中執行:

dsh plugin --profile web add git@github.com:studyzy/dsh-web-remote-access.git

安裝後,下面介紹啓動方式。

典型用法

固定令牌啓動遠程訪問:

dsh --profile web --host 0.0.0.0 --web_token <token>

使用環境變量提供令牌:

DSH_WEB_TOKEN=<token> dsh --profile web --host 0.0.0.0

未指定令牌時啓動遠程訪問:

dsh --profile web --host 0.0.0.0

迴環訪問:

dsh --profile web

--web_token 僅對 --host 0.0.0.0 綁定啓用。缺省時回退到 $DSH_WEB_TOKEN,再回退到啓動時隨機生成的令牌。未顯式指定遠程令牌時,生成的隨機令牌會打印在啓動 URL 裏。

首次訪問帶令牌的 URL:

http://<host>:<port>/?web_token=<token>

成功後會跳轉到乾淨路徑,並下發 dsh_web_token 會話 Cookie。

訪問控制與限制

  • 無 TLS、無賬號體系;這是純 HTTP 上的共享密鑰門衛。除可信網絡外,請用真正的反向代理前置 dsh web 終結 TLS。
  • 令牌首次打開時出現在地址欄/歷史記錄裏,重定向後會從地址欄清除。
  • /manifest.webmanifest 僅 GET/HEAD 不要求令牌,用於 PWA 安裝檢測。
  • 已知限制:DSH_WEB_URL 與 web-surface 模型提示仍是無令牌的迴環 URL;本 bundle 不提供帶令牌的模型側 URL。
  • 插件以當前 dsh 進程權限運行。安裝前應檢查源碼與許可證。

結尾

這個插件適合在可信網絡內讓 dsh Web UI 被遠程瀏覽器訪問,同時保持迴環訪問的簡單性。

  • GitHub:https://github.com/studyzy/dsh-web-remote-access
  • 目錄頁:未在已覈實資料中提供具體 URL;可按插件名 studyzy/dsh-web-remote-access 在 DSH 社區目錄中查找。
羽毛球分组比赛记分
小程序二维码

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

小夜