dsh 區域網路存取與連接埠設定指南

預設連接埠 3080、--port 改埠、為什麼 0.0.0.0 被官方拒絕、防火牆放行,以及用 dsh-LAN 外掛把 Web UI 安全開放給同一網路上的手機和同事。

最近更新: 2026-10-03

dsh web 在自己的電腦上跑得好好的,然後同一個空間的人發現,瀏覽器輸入 http://<你的IP>:3080 打不開——這是 dsh 裝完之後的第一問。本頁把這件事一次講透:連接埠本身、打不開背後的綁定邊界,以及把區域網路存取正經打開的外掛路線。

先劃範圍:本頁只講同一個 Wi-Fi / 同一辦公網內的裝置互訪;存取者在外部網路(手機流量、別的網路)時路由不通,需要公網通道——那是遠端存取教學的領域: 手機遠端控制 dsh

重點速覽

  • ▸dsh web 預設位址 http://127.0.0.1:3080——連接埠 3080,只監聽本機回環,啟動時命令列會印出存取位址。
  • ▸改埠用 dsh web --port 8080;--port 是 web 應用的旗標,不是啟動器的。
  • ▸官方 CLI 有意拒絕 --host 0.0.0.0(直接報參數錯誤)。今天開區域網路要走 dsh-LAN 外掛或反向代理,而且只在可信網路裡開。
  • ▸同一 Wi-Fi:直接用區域網路 IP 存取;不在同一網路:需要通道——見遠端存取教學。

預設連接埠與本機檢查

「dsh 的連接埠是多少」這類問題,三步就能在現場查清楚,不用翻設定檔。

預設:127.0.0.1 上的 3080

dsh web 預設在 http://127.0.0.1:3080 啟動 Web UI 並自動開啟瀏覽器;加 --no-open 可以只起服務不彈瀏覽器。無論哪種方式,指令都會印出存取位址——啟動輸出就是連接埠問題的第一手答案。

$dsh web
$dsh web --no-open

確認行程實際監聽的連接埠

用過非預設旗標啟動、或者想拿實證?列出監聽中的連線:Windows 用 netstat,macOS / Linux 用 lsof。輸出裡的 PID 還能告訴你連接埠被哪個行程佔用——排「連接埠被佔用」時正是它。

$netstat -ano | findstr :3080
$lsof -i :3080

查本機的區域網路 IP

其他裝置要輸入的就是這個位址。Windows:ipconfig 看目前網卡的 IPv4 位址;macOS:ipconfig getifaddr en0;Linux:ip a。192.168.x.x、10.x.x.x 這類是區域網路位址;127.x.x.x 是回環位址,只有本機自己連得到。

$ipconfig
$ipconfig getifaddr en0
$ip a
dsh web 在本機 127.0.0.1:3080 跑起來後的 Web 介面首頁:側欄備好預設工作區與新會話,輸入框停在「探索未至之境」預覽版預留位置下方,這就是 dsh 預設連接埠 3080 在本機提供的頁面
確認 dsh 連接埠先看本機:這個介面開得起來,連接埠和行程就都活著。看原片 4:16

改連接埠(--port)

3080 被佔了,或者單純想換一個埠——一個旗標的事。

把 --port 傳給 web 應用

啟動器不認得的旗標會原樣交給啟動的 profile,所以 --port 能直達 web 應用:下面的簡寫和顯式 profile 兩種寫法都可以。注意邊界:--port 屬於 web 應用,啟動器自己的旗標要放在它前面。

$dsh web --port 8080
$dsh --profile web --port 8080

改了連接埠卻沒生效?

旗標之所以能覆蓋設定行,是因為設定行在執行時讀取旗標——但如果使用者補丁把整段 config 換成了字面量,這個執行時讀取就不存在了,旗標會被靜默忽略。遇到 --port 沒生效,先查自己的 cordis.patch.yml 裡有沒有把 webserver 設定寫死成字面量的補丁,改回去再重啟 dsh web。

系統管理員 PowerShell 用 dsh web --port 3081 --no-open 更換連接埠啟動 dsh,回顯 URL 隨之變成 http://127.0.0.1:3081/?token=…,下一行已經打出 dsh web --host 0.0.0.0 準備更改繫結
--port 指到哪個連接埠,啟動訊息就回顯哪個;這裡是 3081,預設仍是 3080。看原片 0:48

綁定邊界:為什麼區域網路裝置連不上

埠錯會報「連線被拒絕」;預設綁定則是更隱蔽的一種——頁面只存在於啟動 dsh 的那台機器上。這是官方刻意設計。

dsh web 只綁 127.0.0.1,且拒絕 0.0.0.0

只聽回環是出廠預設,官方 CLI 參考文件明確寫著:CLI 有意不支援 --host 0.0.0.0,會以參數錯誤結束。Web UI 控制的是一個能讀檔案、能執行指令的 Agent——把這樣一個控制面不加認證地綁到所有網卡上,正是這條限制要防住的事。

特權介面的 403 信任柵欄

就算連接埠透過代理變得可達,設定、憑證、Agent 預設集、模型探索這些特權介面對非回環來源一律回 403——這是一道防 DNS 劫持的柵欄,不是認證。主機名稱 / 反向代理部署可以用可重複的 --trusted-host <host> 旗標向柵欄登記存取名。社群部署實錄(官方討論 #849)把這堵 403 牆記錄得很細。

$dsh web --trusted-host <host>

為什麼不該硬繞

官方討論區 #130 的安全實測走通了完整鏈條:未認證的網路用戶端偽造 loopback 的 Host 標頭、通過特權 RPC 門禁、改寫 LLM endpoint——下一次模型呼叫就把你的 API Key 和對話內容一起送到攻擊者伺服器。在官方遠端認證模型落地之前,正經的區域網路開啟方式就是下面的外掛和代理兩條路,而且只在可信網路裡用。

上面的卡片是官方 CLI 參考的口徑;下面這組畫面來自 2026 年 9 月的一段區域網路實錄:在所錄建置上,dsh web --host 0.0.0.0 --port 3080 --no-open 直接啟動成功,並在同一行同時回顯本機與 LAN 兩條帶權杖 URL。兩個來源對 0.0.0.0 的描述並不一致,請以你自己建置的實際啟動輸出為準;無論落在哪種行為,都請把回顯裡的權杖當作整個區域網路的唯一關卡,並只在可信賴的網路裡這樣做。

在 dsh web 內嵌終端機裡執行 dsh web --host 0.0.0.0 --port 3080 --no-open,啟動訊息同時回顯本機位址 127.0.0.1:3080/?token=… 與區域網路位址 192.168.1.248:3080/?token=…,這是 dsh 原生的區域網路存取回顯
LAN: 位址由 dsh 自行印出,不必手工拼湊,存取權杖也跟在同一行上。看原片 1:36
在接入裝置上開啟開發者工具的應用程式面板:本機儲存與 Cookie 清單都出現了 http://192.168.1.24… 這個區域網路來源,左側 dsh 的「需要访问令牌」關卡頁仍開著
權杖由 dsh 啟動時印出,經權杖連結進入後,憑證就存進該區域網路來源的瀏覽器儲存空間。看原片 2:12

防火牆:放行入站 3080

綁定解決後,第二道門是作業系統防火牆——不放行入站 3080,手機那邊看到的就是逾時而不是頁面。

Windows

Windows Defender 防火牆預設封鎖私人/公用網路的主動入站連線。一條系統管理員指令放行 TCP 3080,也可以在「Windows 安全性 > 防火牆與網路保護 > 進階設定」裡手動建入站規則。

$netsh advfirewall firewall add rule name="dsh web 3080" dir=in action=allow protocol=TCP localport=3080

macOS

系統防火牆預設關閉;如果你開過,它是按應用程式攔的——在「系統設定 > 網路 > 防火牆」裡放行 node(或你的 dsh 執行環境),通常首次連網時系統彈窗就能順手點允許。

Linux

看你在用哪套防火牆:ufw 一條指令放行;firewalld 加埠後要永久化並重新載入;iptables 手工加一條 TCP 3080 的 ACCEPT 規則。下面的 dsh-LAN 外掛會自動維護這些規則(Windows、firewalld、ufw、iptables 都管)。

$sudo ufw allow 3080/tcp

手機 / 平板存取

最典型的區域網路場景:dsh 跑在桌上型電腦,你手上是手機——同一個 Wi-Fi,手機端不安裝任何東西。

瀏覽器開啟 http://<區域網路IP>:3080

同一網路裡的任意裝置,在瀏覽器輸入第 3 步查到的區域網路 IP——帶埠號的完整位址。綁定和防火牆都通了以後,看到的就是和主機一樣的 Web UI:只有一個伺服器行程,所有會話狀態都在伺服器端,手機和桌面看到同一場對話、即時同步。

打不開時按順序查

依次過一遍:綁定還在回環(表示外掛/代理路線還沒上——這個階段問題還輪不到防火牆)、主機防火牆、手機和主機是否真的同網段——不少路由器預設開 AP 隔離,同一個 Wi-Fi 下的裝置互相也看不見。另外位址要帶 http:// 和埠輸全,手機瀏覽器很愛自作主張。

若實例以連網模式啟動(啟動訊息裡出現 LAN: 字樣),裝置第一次開啟位址時先遇到的不是工作台,而是 dsh 原生的權杖關卡頁:

同一 Wi-Fi 裡的另一台裝置在瀏覽器開啟 http://192.168.1.248:3080,先看到 dsh 原生的「需要访问令牌」關卡頁:藍色權杖框給出帶權杖的完整區域網路位址,下方附反向代理需轉發真實 Host 標頭的提示
權杖在 dsh 啟動時印出,也可從伺服器終端機日誌複製;同網路裝置點開連結即可進入。看原片 2:24

想把手機端體驗再推進一步(第三方用戶端、伴隨應用程式),去遠端與行動裝置集合逛逛: 遠端與手機存取合集

dsh-LAN 外掛:一個開關的區域網路方案

MrMu666/dsh-LAN 是 dsh Web GUI 的專門區域網路存取外掛——MIT 授權,2026-10-02 查核時為 10 star。一次安裝同時解決綁定、防火牆和通關密語門。

它做什麼

裝好後 Web GUI 預設綁定 0.0.0.0(所有網卡),主機會自動放行防火牆連接埠(Windows 放行 Defender 的 Domain + Private 設定檔;Linux 按 firewalld → ufw → iptables 依序嘗試)。任何裝置開啟 http://<本機IP>:3080 都先看到全螢幕通關密語門;手機直向開啟時外掛在官方介面上注入觸控最佳化——大觸控目標、16px 輸入字號、安全區。注意:外掛 README 寫明支援 DSH 0.1.2-rc.1 及更新、已驗證至 0.1.5-rc.1,未涵蓋目前的 0.2.0-rc.2,安裝前先到儲存庫確認相容性。

怎麼裝

README 自己給的「最簡單安裝方式」:直接告訴 dsh「安裝 dsh-LAN 外掛」,由 Agent 完成安裝。腳本路線是複製儲存庫後每個平台跑一支腳本——屬於補丁路徑安裝:對執行中的 profile 熱載入,無需重啟立即生效。bundle 路徑則像一般外掛一樣從本機目錄加入,需要重啟 dsh web 生效。

$powershell -ExecutionPolicy Bypass -File install.ps1
$./install.sh
$dsh plugin --profile web add link:<repo-path>

怎麼用

在本機開啟「設定 > General > 區域網路存取」卡片:開開關、設通關密語(至少 4 位)、看防火牆狀態列。其他裝置在登入門輸入通關密語即可;勾「記住通關密語」後該裝置免輸。被官方鎖在本機的設定/憑證等特權方法,透過外掛的 /lanapi 通關密語代理通道重新可用。關掉開關綁定立刻回退 127.0.0.1——這是最根本的總開關。

認清它的安全邊界

README 說得很直白:登入門是介面層防護,特權操作在伺服器端強制驗證;但非特權 API(會話讀寫)在 API 層對區域網路仍然開放。家裡/辦公室可信內網這是合理取捨,公共網路就是壞主意——只在可信 Wi-Fi 開,離開就關。它無法取代真正的認證。

另一條外掛路線:多人共用一台 dsh

dsh-LAN 之外,社群裡還有面向「多人共用一台 dsh」的第三方外掛:linyupark/dsh-multi-tenant(查證時為新倉,Release 0.3.0)在單一 dsh 實例上實現「專案 + 使用者」多租戶——把真實工作區目錄繫結為專案,為每個使用者生成軟連結式獨立工作區,Web 介面用密碼登入把關。README 的威脅模型一節說得很直白:這是「防君子」的軟邊界,面向公網請在 dsh 前面加真正的邊界(反向代理驗證 / ngrok basic auth / VPN)。下面四張畫面來自同一段區域網路實錄,展示裝上外掛後從登入到多人工作區的完整鏈路:

linyupark/dsh-multi-tenant 的 README.zh-CN.md(Release 0.3.0):定位段寫明在單一 dsh 實例上實現「專案 + 使用者」多租戶、Web 介面用密碼登入把關,下方威脅模型警示框直言這是「防君子」的軟邊界,公網要在 dsh 前面加反向代理驗證、ngrok basic auth 或 VPN
作者自述的威脅模型:cwd 過濾是查詢投影而非關卡,公網部署請給 dsh 加上真正的邊界。看原片 4:24
裝上多租戶外掛後,區域網路裝置開啟 dsh 看到的不再是權杖頁,而是這張「登录 DSH」表單:项目工作区访问副標題下排列著使用者名稱、密碼輸入框與登入按鈕
同一台 dsh,關卡從一枚共享權杖換成每使用者一組帳號密碼。看原片 2:36
多租戶登入後的 dsh 區域網路工作階段全景:側欄工作區列出 rtk、kehang/qa、hello、pi-agent、qm 與未分组,左下角是 admin 帳號和退出登录按鈕,主區執行 KEHANG 專屬智能助手工作階段,權限為工作区内修改,模型 deepseek-ai/DeepSeek-V4.1-Flash
一台 dsh 服務多人:各帳號只進自己的工作區,彼此的工作階段與檔案互不可見。看原片 3:48
以 KEHANG 帳號登入後的專屬檢視:側欄「项目」下只掛著自己的 kehang 工作區與 hello 工作階段,主區仍是 KEHANG 專屬智能助手和 deepseek-ai/DeepSeek-V4.1-Flash
每個使用者眼裡只有自己的專案:這是外掛按帳號投影出的工作區邊界。看原片 2:48

裝外掛的前提是會裝外掛——不熟悉 dsh 外掛指令的話,先看外掛安裝指南: 安全地安裝外掛

另外兩條路:反向代理與 SSH 轉發

不想動 dsh 自身的綁定?這兩條路完全不碰 dsh 行程。

dsh-proxy:在 :3081 加一道 Basic Auth 前門

smanx/dsh-proxy(24 star)是 HTTP + WebSocket 反向代理外掛:裝進 web profile,隨 dsh web 啟停,把請求轉發到 127.0.0.1:3080,並在前面加瀏覽器 Basic Auth。安裝並重啟 dsh web 後,連 http://<區域網路IP>:3081 會跳出認證框;帳號和密碼同時設定才會啟用密碼登入。它的 Host 改寫與 Origin 對齊還能讓 WebSocket 不觸發上文那道 403 柵欄。同類的還有 GDWhisper/dsh-web-startup-auth(50 star),按作者在討論區 #3132 的說法,提供認證模組讓 0.0.0.0 啟動不被攔截。

$dsh plugin --profile web add github:smanx/dsh-proxy#master

SSH 本地轉發:零外掛、全程加密

在要存取的裝置上把本機連接埠轉發到主機的回環:在存取方裝置執行下面的指令,然後在那台裝置開啟 http://localhost:3080。dsh 側什麼都不用改,流量全程加密——適合給一位可信同事的筆電用。手機裝 SSH 用戶端也能做,但那就接近通道玩法了:出了這個網路,請直接看遠端存取教學。

$ssh -L 3080:127.0.0.1:3080 user@<host-ip>

一個 flag 管對外位址:--public-url

0.2.1-alpha.1 直接回答了反向代理的命名難題。CLI 參考原話:--public-url <url> 對外宣告一個 HTTP(S) 應用程式根位址——可帶轉發前綴——取代監聽器的回環 URL。

告訴 dsh 外面看到的位址

按發布說明,這個值同時是展示給使用者的 Web 位址、瀏覽器開啟的位址、提供給模型的位址——包括帶路徑前綴的反向代理 URL。實際形態:把 dsh 放到 nginx 或 Caddy 的子路徑後面,對外根位址只傳一次,印出的 URL、瀏覽器接手和模型拿到的連結就不再各說各話。版本誠實:flag 隨 0.2.1-alpha.1 發布——2026-10-03 當天 npm latest 還停在 0.2.0-rc.2,要用就得主動釘住 alpha 標籤。

$dsh web --public-url <url>

要的不是改名而是從外部網路回到控制台?遠端存取指南講穿透路線。 手機遠端控制 dsh

常見錯誤,逐一解讀

這個主題真實出現的四種失敗,以及每種背後的原因。

啟動失敗 / 連接埠被佔用

3080 被別的行程佔著。用第一節「確認監聽連接埠」的指令按 PID 找到佔用者——結束那個行程,或用 --port 換一個空閒埠啟動 dsh web。

區域網路裝置存取設定/預設集回 403

這是預期行為,不是設定錯了:/api 信任柵欄拒絕非回環來源呼叫特權方法(設定、憑證、Agent 預設集、模型探索)。dsh-LAN 外掛透過通關密語通道重新暴露這些方法;代理路線則讓未認證的區域網路裝置停留在一般頁面上。不要把原始碼裡的檢查刪掉繞過——原因見「綁定邊界」一節。

改了連接埠,舊埠還在回應

兩個常見原因:設定補丁把 webserver 設定寫成了字面量,--port 的執行時讀取失效(見「改連接埠」);或者瀏覽器分頁還是舊快取。改完設定重啟 dsh web,瀏覽器強制重新整理。

手機完全連不上

按「手機 / 平板存取」的清單從頭過:綁定是否還鎖回環(先上外掛/代理)、防火牆入站規則、手機與主機是否同網段(AP 隔離)、位址是否帶埠輸全。全部排查過仍不通,去疑難排解手冊繼續。

這些都沒對上你的症狀?去疑難排解手冊接著查: 疑難排解與錯誤百科

dsh 區域網路存取常見問題

連接埠與綁定的高頻問題,答案逐條對照官方文件與公開討論。

dsh 的預設連接埠是多少?

3080。dsh web 預設在 http://127.0.0.1:3080 提供 Web UI,啟動時會印出位址。該位址只綁回環:連接埠只在啟動 dsh 的那台機器上應答,區域網路連不到。改埠用 dsh web --port <埠>。

為什麼手機或其他電腦打不開 http://<我的IP>:3080?

因為 dsh web 預設只綁 127.0.0.1,且官方 CLI 有意拒絕 --host 0.0.0.0(參數錯誤結束)——Web UI 控制的是能讀寫檔案、執行指令的 Agent,預設就按規定不暴露到網路。今天要把區域網路打開,用 dsh-LAN 外掛或 dsh-proxy 這類反向代理,並且只在可信網路使用。

怎麼改 dsh web 的連接埠?

給 web 應用傳 --port:dsh web --port 8080,或 dsh --profile web --port 8080。如果旗標像沒生效一樣,檢查是否有使用者補丁把整段設定寫成了字面量——那會讓旗標的執行時讀取失效——然後重啟 dsh web。

區域網路存取安全嗎?API Key 會不會外洩?

要把 Web UI 當控制面看,不是普通網站。官方討論區有完整攻擊鏈實測:未認證的區域網路用戶端偽造 Host 標頭通過特權門禁後改寫 LLM endpoint,下一次模型呼叫就會把 API Key 和提示詞一起送出去。dsh-LAN 的通關密語門是介面層防護,其 README 自己註明非特權 API 對區域網路仍然開放。實用守則:只用可信的家庭/辦公 Wi-Fi、設好通關密語、離開就關、絕不把連接埠暴露到公網。

dsh-LAN 是什麼外掛?怎麼安裝?

專門的社群區域網路存取外掛(MrMu666/dsh-LAN,MIT 授權):把 Web GUI 綁到所有網卡、自動放行防火牆、加全螢幕通關密語門,並給官方介面注入手機觸控最佳化。按它 README 的說法最簡單的裝法是直接告訴 dsh「安裝 dsh-LAN 外掛」;腳本裝法是複製儲存庫後跑 install.ps1(Windows)或 ./install.sh(macOS/Linux),屬熱載入補丁安裝。README 驗證至 DSH 0.1.5-rc.1,裝前先確認與目前版本的相容性。

區域網路直連和內網穿透,我需要哪個?

同一個 Wi-Fi 或辦公網:直連——裝置能路由到主機的區域網路 IP,不需要通道,本頁各節就是完整設定。出了這個網路(手機流量、外地網路):路由不通,必須走 ngrok 這類公網通道——那是遠端存取教學的領域。

相關教學

存取三部曲的另外兩篇,以及本頁依賴的入門頁。

畫面來源與署名

本頁全部截圖取自 B 站 UP 主「是属鼠我」的 dsh 區域網路存取實錄,每張圖都帶時間戳深鏈回原片;畫面右下角的 UP 攝影機氣泡與燒錄字幕帶經裁修去除。其中區域網路 URL 回顯與權杖關卡頁為 dsh 原生行為;多使用者登入、專案工作區與威脅模型畫面來自第三方外掛 linyupark/dsh-multi-tenant(新倉,引用時請注意其成熟度);區域網路外掛路線另有 MrMu666/dsh-LAN。兩個倉庫均以其 GitHub README 為準,頁面文字結論為本站原創。

DSH Plugins 是獨立的 DeepSeek Harness 外掛市集,與 DeepSeek 官方無關,也不代表官方背書。第三方外掛未經安全稽核,安裝前請審查原始碼。

每週取得最新的 DeepSeek Harness 外掛,絕不濫發。