前言¶
DeepSeek Harness(DSH)的 Web 界面默認適合本機使用。如果想在局域網內的另一臺電腦、手機上訪問,或者在配置路由器端口映射後從互聯網訪問,通常會遇到兩個問題:傳輸是否加密,以及訪問前是否有登錄保護。
dsh-gateway 是一個 DSH 插件,用來爲 DSH Web 界面加一層「HTTPS 加密 + 賬號登錄」的遠程訪問網關。它作爲 dsh 插件安裝,不需要額外部署獨立反代、證書服務或登錄服務。安裝後,DSH 設置頁會出現 Remote Gateway 卡片,可以啓用、重啓、修改監聽地址與端口,並管理登錄賬號。
這是什麼¶
倉庫路徑爲 clarknu/dsh-gateway,許可證爲 MIT。
它做的事情可以概括爲:
- 爲 DSH Web 界面提供自包含的 HTTPS + 登錄遠程訪問網關。
- 作爲 dsh 插件安裝,無需任何外部程序。
- 默認只在本機
127.0.0.1:3443監聽,並且沒有任何賬號。 - 配置監聽地址與賬號後,可讓局域網設備或配置端口映射後的互聯網設備訪問。
- 支持多站點白名單,一個網關可以同時服務多個域名或 IP。
核心能力¶
下面列出該插件已提供的主要能力。
-
HTTPS 加密傳輸
有域名時可以使用自己的證書;沒有域名、通過 IP 直連時會自動生成證書。 -
登錄保護
訪問前必須先登錄。賬號、密碼、會話有效期可配置,登錄失敗會自動限速。密碼不以明文存儲,推薦保存密碼哈希。 -
會話管理
登錄令牌在有效期內可用。需要讓所有已登錄設備退出時,可以在設置頁執行“退出所有登錄”,使所有會話失效。 -
多站點白名單
可以通過sites[].hosts指定實際使用的域名或 IP。網關只響應白名單內的域名或 IP。 -
遠程體驗與本地一致
即時消息等長連接功能可以正常工作。反向代理默認使用 loopback 僞裝模式,自動改寫Location頭,並支持 WebSocket 升級。 -
配置熱生效
修改配置後無需重啓即可生效。設置頁與settings.yaml的gateway:段可以互相配置,二者都經過校驗並持久化。 -
可選 Windows 托盤啓動器
tools/dsh-tray/附帶一個 Windows 托盤小工具,用於隱藏命令行窗口,並通過菜單管理 DSH 實例。
安裝與啓用¶
先確認當前 DSH 插件安裝方式可用。下面的命令用於安裝 dsh-gateway 插件。
dsh plugin --profile web add dsh-gateway
執行後,重啓 web 應用。重啓後,網關默認只在本機 127.0.0.1:3443 監聽,並且沒有任何賬號。這個默認狀態是 fail-closed:未配置賬號前,別人無法登錄。
如果只需要本機訪問,可以保持默認狀態;如果希望局域網或互聯網訪問,需要按下面的步驟配置監聽地址和賬號。
典型用法¶
下面以“局域網內另一臺機器訪問”爲例。
- 配置監聽地址和登錄賬號。
可以直接編輯$DSH_HOME/settings.yaml,也可以在 DSH 設置頁的 Remote Gateway 卡片中操作。
在 settings.yaml 中配置 gateway: 段:
gateway:
listenHost: '0.0.0.0'
users:
admin: 'scrypt$...'
上面的 admin 後面的值應該是密碼哈希,不能直接使用明文密碼。
- 生成密碼哈希。
使用倉庫中的腳本生成哈希值:
node scripts/hash-password.mjs '你的密碼'
生成後,把輸出值填入 users 對應賬號的值中。
- 在另一臺設備瀏覽器中訪問網關地址。
假設 DSH 所在機器的局域網 IP 是192.168.1.10,端口使用默認的3443,則訪問:
https://192.168.1.10:3443
首次訪問會提示自簽證書,信任後進入登錄頁面,然後輸入賬號密碼。
- 如果需要從互聯網訪問,配置路由器端口映射。
將外部端口轉發到本機的gateway.port,例如默認的3443。訪問時使用公網 IP 或已解析到本機的域名。使用域名時,應配置自己的證書。
配置要點¶
所有配置都可以寫在 $DSH_HOME/settings.yaml 的 gateway: 段中。下面的配置展示了主要字段:
gateway:
enabled: true
listenHost: '127.0.0.1'
port: 3443
upstream: ''
sessionDays: 30
loginFailLimit: 5
lockoutSeconds: 60
users:
admin: 'scrypt$...'
sites:
- hosts: ['你的域名', '你的IP']
cert: '證書路徑'
key: '密鑰路徑'
各字段含義如下:
enabled: 設爲false時完全停用網關。listenHost:127.0.0.1表示僅本機可達;0.0.0.0表示監聽所有網卡,允許局域網訪問。port: 對外端口,默認是3443。upstream: 留空表示自動跟隨 DSH web 服務端口。sessionDays: 會話有效期,單位是天,默認是 30 天。loginFailLimit: 每個 IP 連續登錄失敗次數上限。lockoutSeconds: 超過失敗次數上限後的鎖定秒數。users: 登錄賬號,值建議使用密碼哈希。sites: 站點白名單,只響應這裏列出的域名或 IP。sites[].hosts: 支持*.example.com這類通配寫法。cert/key: 證書與密鑰路徑,留空時自動生成證書。
注意:sites[].hosts 只應列出實際使用的域名或 IP。不要把不確定的地址加入白名單。
設置頁卡片¶
安裝後,DSH 設置頁會出現 Remote Gateway 卡片。可以在卡片中完成以下操作:
- 查看運行狀態,例如運行中、已停用、異常、重啓中。
- 啓用或停用網關。
- 一鍵重啓。
- 修改綁定 IP 與端口。
- 新增、修改、刪除登錄賬號。
- 執行“退出所有登錄”,讓所有已登錄設備立即退出。
- 查看最近日誌。
設置頁保存的密碼會自動哈希,不需要手動執行密碼哈希生成命令。證書、多站點、登錄限速等配置仍然在 settings.yaml 的 gateway: 段中維護。
安全基線¶
下面是使用前需要重點確認的幾項。
-
不要保留示例憑據
配置中不要保留admin / change-me這類示例憑據。只要該憑據仍生效,網關在非本機監聽地址下會拒絕啓動。 -
密碼不要明文存儲
手寫配置時使用密碼哈希:
node scripts/hash-password.mjs '你的密碼'
在設置頁保存密碼時,系統會自動哈希。
- 建議 DSH 本體只綁定本機迴環地址
這樣可以確保所有遠程訪問都經過 dsh-gateway 的登錄保護。可以在 web profile 的cordis.patch.yml中把 webserver 鎖定到127.0.0.1:
- id: webserver
config:
host: '127.0.0.1'
port: 3080
-
站點白名單隻列真實使用的域名或 IP
sites[].hosts是網關響應的域名/IP 白名單,範圍越小越好。 -
會話與改密碼的關係要分清
登錄令牌在到期前有效,默認有效期爲 30 天。修改密碼不會讓已經登錄的設備自動退出。若要讓所有客戶端重新登錄,需要執行“退出所有登錄”。若要撤銷單個用戶,刪除對應賬號即可。 -
互聯網訪問依賴路由器端口映射
路由器需要把外部端口轉發到本機的gateway.port。如果使用域名,域名需解析到本機,並配置證書。
反向代理行爲¶
網關默認以 loopback 僞裝模式轉發請求。上游服務看到的是 127.0.0.1:<upstreamPort> 的 Host/Origin,而不是客戶端的真實域名。
這樣帶來幾個實際效果:
- DSH 的 API 信任圍欄無需額外啓動參數即可放行,包括憑據、設置等特權 API。
- 不需要再給
dsh web傳--trusted-host。 - 上游返回的絕對
Location頭會被自動改寫回客戶端的公開地址,例如https://<clientHost>/...。 - WebSocket 升級走同一轉發邏輯,不需要額外配置。
sec-fetch-site: cross-site的跨站請求仍會被上游拒絕,CSRF 防護不受影響。
開發與運行要求¶
package.json 中聲明 Node 版本要求爲 >=22.0.0,許可證爲 MIT。
開發時可以在倉庫目錄中執行:
npm install
npm test
倉庫中的主要目錄如下:
lib/:核心邏輯,包括認證、代理、證書、HTTPS 服務器,與插件框架無關,可獨立測試。dsh/index.js:插件封裝,包括配置解析、生命週期、熱重載、安全守衛。client.js:設置頁卡片,運行在瀏覽器端。scripts/:配套腳本,例如hash-password.mjs用於生成密碼哈希。tools/dsh-tray/:可選 Windows 托盤啓動器。
適用場景與注意¶
dsh-gateway 適合以下場景:
- 想在局域網內的電腦、手機、平板上訪問 DSH Web 界面。
- 想通過路由器端口映射從互聯網訪問 DSH Web 界面。
- 希望遠程訪問同時具備 HTTPS、登錄保護、會話失效和多站點白名單。
- 不想再額外部署一套反代、證書管理和登錄系統。
使用前需要確認:
- 本機與訪問設備在同一網絡時,
listenHost需要設爲0.0.0.0,且端口未被防火牆攔截。 - 從互聯網訪問時,路由器必須完成端口映射。
- 使用域名時,域名需要解析到本機,並配置證書。
- 作爲 DSH 插件加載後,它會隨當前 dsh 進程運行;安裝前應檢查源碼、許可和配置項。
結尾¶
dsh-gateway 的價值在於把“遠程訪問 DSH Web 界面”這件事收進一個插件:安裝後提供 HTTPS、登錄保護、會話管理、多站點白名單和設置頁操作入口。默認只監聽本機且不配置賬號,屬於 fail-closed 的安全起點;配置完成後,局域網和互聯網訪問都可以走同一套登錄與證書策略。
相關鏈接:
- GitHub 倉庫:
https://github.com/clarknu/dsh-gateway - 插件線索地址(未在本次抓取資料中直接覈驗):
https://www.skillhub.cn/plugins/clarknu/dsh-gateway