dsh-login-gateway:爲 DSH Web UI 增加登錄門衛與反向代理

前言

在 DeepSeek Harness(DSH)的插件化使用方式中,有些場景需要從其他機器訪問本機 dsh 的 Web UI。dsh 的 Web UI 默認只監聽 127.0.0.1:3080,不直接對外提供入口。dsh-login-gateway 由 runfali 維護,用於在外部增加一個登錄入口;登錄通過後,它再把請求反向代理到本機 dsh Web UI。

這是什麼

dsh-login-gateway 是 DeepSeek Harness(dsh)登錄門衛插件。它默認在 0.0.0.0:3081 提供登錄入口;訪問者通過用戶名密碼登錄後,HTTP 與 WebSocket 請求會被全量反向代理到 127.0.0.1:3080 的 dsh Web UI。

已覈實資料中,項目許可證爲 MIT,package.json 聲明版本爲 0.2.0,要求 Node 22+ ESM,並聲明零運行時依賴,僅使用 Node.js 內置模塊。它不修改 dsh 安裝目錄的任何文件,也不改 dsh 自身配置邏輯;安裝/卸載隻影響 profile 目錄,需要重啓 dsh 生效。

核心功能

  • 外部入口:默認在 0.0.0.0:3081 提供登錄入口。
  • 用戶名密碼登錄:登錄成功後種下 HttpOnly + SameSite=Strict 會話 Cookie。
  • 全量反向代理:登錄通過後代理到 127.0.0.1:3080,支持 HTTP 與 WebSocket。
  • 請求頭改寫:反代時改寫 Host、Origin、Sec-Fetch-Site 爲 loopback 形態,讓 dsh 信任放行。
  • 一次性初始化:新裝沒有默認賬號,通過 /setup 和一次性令牌創建管理員。
  • 限速與節流:登錄和初始化按 IP 與用戶名雙維度限速,可鎖定失敗嘗試;另有全局認證節流。
  • 會話控制:會話綁定 User-Agent;改密自動吊銷其他會話。
  • 可選安全項:自籤 TLS、secureCookie、審計日誌、安全響應頭和反代防請求走私處理。
  • 零侵入:不修改 dsh 安裝目錄文件,也不改 dsh 自身配置邏輯。

安裝與啓用

使用本地目錄安裝。將 /path/to/dsh-login-gateway 替換爲實際插件目錄:

dsh plugin --profile web add /path/to/dsh-login-gateway

安裝後重啓 dsh。

新裝沒有默認賬號,需要先完成一次性初始化。可以讀取令牌文件:

cat ~/.dsh-login-gateway/setup-token.txt

令牌文件權限爲 0600。

然後瀏覽器打開:

http://<主機>:3081/setup

輸入令牌、管理員用戶名、密碼與確認密碼。

初始化前訪問 / 會 302 到 /setup;初始化完成後 /setup 返回 410,setup-token.txt 會被刪除。

完成初始化後,登錄入口爲:

http://<主機>:3081/

輸入用戶名密碼即可進入 dsh Web UI。

典型用法

登錄成功後,會話 Cookie 會種下,後續訪問會走反向代理。

登出可以使用頁面懸浮欄退出;無界面時也可以調用:

curl -X POST http://<主機>:3081/logout

卸載插件:

dsh plugin --profile web remove dsh-login-gateway

重啓 dsh 後,3081 停止服務。如需清理門衛的用戶數據目錄:

rm -rf ~/.dsh-login-gateway/

安全與注意

  • 公網或同一鏈路暴露存在明文 HTTP 風險,建議前置 TLS 終止或啓用門衛自身 TLS,並配合 secureCookie。
  • 直連場景建議保持 trustProxy: false,避免僞造 X-Forwarded-For 繞過限速。
  • 會話綁定 User-Agent 默認開啓,瀏覽器升級更換 UA 後需要重新登錄。
  • 個性化配置補丁會整段替換 config,覆蓋時需寫全所有配置項。
  • 用戶數據文件默認位於 ~/.dsh-login-gateway/users.json,使用 scrypt 哈希。
  • 插件以當前 dsh 進程權限運行,安裝前應檢查源碼與許可證。

結尾

dsh-login-gateway 的價值在於:讓 dsh Web UI 保留 loopback 監聽,同時通過外部登錄入口和反向代理獲得受控訪問。

項目倉庫:

  • https://github.com/runfali/dsh-login-gateway
羽毛球分组比赛记分
小程序二维码

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

小夜