DeepSeek Harness (DSH) 的設計理念是將特權瀏覽器能力保留在本地(loopback)。普通的反向代理雖然可以遠程渲染頁面,但在處理設置、插件包、WebSocket 或原生目錄選擇時通常會失敗。jiachi5533/dsh-remote-gateway 插件提供了一個兼容性網關,它僅修補必要的連接模塊,將流量代理至內部 DSH 服務,而不直接暴露 DSH 的 Web 服務器。
插件定位¶
- 名稱:
jiachi5533/dsh-remote-gateway - 簡介:受源過濾的遠程網關,用於通過經過身份驗證的反向代理訪問 DeepSeek Harness。
- 維護者:Jiachi5533
- 許可證:MIT
核心功能¶
該插件主要解決遠程訪問時的兼容性問題,並保證安全性:
- 協議支持:代理 HTTP、SSE 和 WebSocket 流量。
- 源地址過濾:僅接受來自明確列出的源 IP 地址的請求。
- 網絡隔離:內部 DSH Web 服務器始終綁定在
127.0.0.1,不對外監聽。 - 請求重寫:將上游請求的
Host和Origin重寫爲內部 loopback 權限。 - 頭信息剝離:在請求進入 DSH 之前,移除邊緣認證和客戶端身份轉發頭(如
Authorization,Proxy-Authorization,Forwarded,X-Forwarded-*,X-Real-IP)。 - 精準修補:僅修補特定的
dsh-client-connection能力探測模塊,其他插件包內容保持字節對字節轉發。 - 目錄選擇:替換主機的原生目錄對話框,使用 DSH 內置的文件系統瀏覽器。
- 生命週期:隨 DSH 插件生命週期啓動和停止,由 DSH 的 supervisor(如 systemd)統一管理。
安裝與配置¶
前置要求:
* DSH Web 配置文件
* Node.js 22.19 或更新版本
* 支持WebSocket轉發和認證的反向代理
- 安裝插件:
使用官方 CLI 命令從 GitHub 安裝:
dsh plugin --profile web add github:Jiachi5533/dsh-remote-gateway
- 編輯配置文件:
安裝後,編輯生成的remote-gateway配置條目,路徑爲~/.dsh/profiles/web/cordis.patch.yml:
- id: remote-gateway
name: '@jiachi/dsh-remote-gateway'
config:
host: 0.0.0.0
port: 3080
allowedSources:
- 192.0.2.10 # exact LAN address of the reverse proxy
- 127.0.0.1 # optional local health checks
- 重啓服務:
首次安裝後需重啓 DSH Web 進程。
典型用法¶
-
配置反向代理:
將反向代理的 HTTP 和 WebSocket 流量轉發到 DSH 主機的 LAN 地址和端口 3080:
http://DSH_HOST_LAN_IP:3080 -
啓用安全層:
在反向代理處啓用 HTTPS 和用戶認證。TLS 和用戶認證在此終止。 -
健康檢查:
允許列出的監控系統可以訪問GET /_dsh-remote-gateway/health端點。該端點返回200 ok,不向上游 DSH 發起請求,用於驗證網關進程和源地址策略。
安全模型與注意事項¶
該插件的安全模型由多層防禦構成:
- 反向代理爲邊界:TLS 和用戶認證在反向代理處終止。
- 源地址白名單:網關只接受反向代理的 LAN 地址。注意,當前實現僅支持精確的 IPv4 或 IPv6 地址,不支持 CIDR 範圍。
- Loopback 隔離:內部 DSH Web 服務器始終只監聽本地迴環地址。
- 頭信息清理:所有轉發頭被移除,防止信息泄露或權限提升。
重要警告:
* 永遠不要直接將端口 3080 暴露到互聯網。
* 不要在 allowedSources 中添加廣泛的網絡範圍(如 0.0.0.0/0),這無法保護內部服務。
* 插件以 DSH 進程的權限運行。在安裝任何第三方插件之前,務必審查其源碼和許可證。
插件僅修補特定的連接兼容性模塊,其餘插件包內容保持不變,因此大多數標準插件在遠程環境下可以正常工作。