dsh-remote-access:讓 dsh Web 界面監聽所有接口

前言

DeepSeek Harness (DSH) 的 Web 界面(通過 --profile web 啓動)默認綁定在本地迴環地址(通常是 127.0.0.1)。要在局域網內的另一臺設備上訪問該界面,需要修改服務器的監聽地址。dsh-remote-access 插件通過環境變量覆蓋配置,允許 Web 界面監聽所有網絡接口,同時複用 DSH 內置的瀏覽器認證機制,避免引入額外的認證插件。

插件定位

這是一個由 sysit 維護的出站(Out-of-tree)插件,屬於 DSH 的 web-profile bundle。它的核心定位是:
* 輕量級:僅包含一個配置行,不 fork 進程。
* 無侵入認證:不創建新的認證邏輯,完全依賴 DSH 內置的 ?token= BrowserAuth。
* 升級友好:配置爲聲明式層,重啓即生效,無需重新應用。

核心功能

  • 多網卡監聽:使 dsh --profile web GUI 能夠監聽在 0.0.0.0 上。
  • 遠程訪問:允許從局域網內的其他設備打開該 GUI。
  • 環境變量控制:通過 DSH_WEB_HOST 環境變量覆蓋默認的 webserver 配置項。
  • 自動打印 URL:當服務器綁定到 0.0.0.0 時,啓動日誌會自動打印包含 LAN 地址的 URL。
  • 內置認證:使用 DSH 內置的 ?token= 認證機制,不依賴插件自身實現認證。

安裝與啓用

安裝該插件需要使用 DSH 的插件管理命令。它會將 @sysit/dsh-remote-access 添加到當前 profile 的 dsh.profile.bundles 中。

dsh plugin --profile web install github:sysit/dsh-remote-access

安裝後,插件會向 dsh.profile.bundles 注入一個覆蓋 webserver host 的配置行。由於它是 profile 級別的補丁,每次 DSH 啓動時加載器都會重新讀取此配置,因此插件升級或 DSH 升級後無需重新應用。

典型用法

通過設置 DSH_WEB_HOST 環境變量來控制監聽地址。默認情況下,如果環境變量未設置,插件會將主機設置爲 0.0.0.0。

場景 命令
局域網訪問 (默認) export DSH_WEB_HOST=0.0.0.0 && dsh --profile web --no-open
僅本機訪問 unset DSH_WEB_HOST 或 DSH_WEB_HOST=127.0.0.1 dsh --profile web
保持默認 export DSH_WEB_HOST="${DSH_WEB_HOST:-0.0.0.0}"

啓動成功後,日誌中會同時顯示本地地址和 LAN 地址:

dsh web: http://127.0.0.1:3080/?token=eqeU… (LAN: http://192.168.1.5:3080/?token=eqeU…)

在另一臺設備上打開 LAN: 後面的 URL,即可直接訪問。

適用場景與注意事項

  • 網絡暴露:將 DSH_WEB_HOST 設置爲 0.0.0.0 會使 Harness 暴露在你的網絡中。請務必妥善保管打印出的 token,並在遠程訪問時使用 --no-open 參數以避免瀏覽器自動打開。
  • 安全機制:DSH 的跨站/DNS 綁定防禦(api-request-trust)保持開啓,trustedHosts 會自動識別局域網 IP。對於不可信的網絡,建議優先使用 SSH 端口轉發或 VPN。
  • API 暴露:/api RPC 接口的暴露程度取決於你如何配置 host,插件本身不涉及此配置。
  • 跨進程認證:token 是進程級的,每次重啓會變化;但瀏覽器 Cookie 的有效期默認爲 30 天,因此已打開的標籤頁在重啓後通常仍可使用。

結尾

dsh-remote-access 提供了一種簡單、標準化的方式來擴展 DSH Web 界面的訪問範圍,而不引入複雜的第三方認證邏輯。它通過環境變量控制監聽地址,利用 DSH 內置的安全機制,適合需要在局域網內共享 DSH Web UI 的開發場景。

羽毛球分组比赛记分
小程序二维码

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

小夜