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 可以只起服务不弹浏览器。无论哪种方式,命令都会打印访问地址——启动输出就是端口问题的第一手答案。
确认进程实际监听的端口
用过非默认旗标启动、或者想拿实证?列出监听中的套接字:Windows 用 netstat,macOS / Linux 用 lsof。输出里的 PID 还能告诉你端口被哪个进程占着——排「端口被占用」时正是它。
查本机的局域网 IP
其他设备要输入的就是这个地址。Windows:ipconfig 看当前网卡的 IPv4 地址;macOS:ipconfig getifaddr en0;Linux:ip a。192.168.x.x、10.x.x.x 这类是局域网地址;127.x.x.x 是回环地址,只有本机自己能访问。

改端口(--port)
3080 被占了,或者单纯想换一个端口——一个旗标的事。
把 --port 传给 web 应用
启动器不认识的旗标会原样交给启动的 profile,所以 --port 能直达 web 应用:下面的简写和显式 profile 两种写法都行。注意边界:--port 属于 web 应用,启动器自己的旗标要放在它前面。
改了端口却不生效?
旗标之所以能覆盖配置行,是因为配置行在运行时读取旗标——但如果用户补丁把整段 config 换成了字面量,这个运行时读取就不存在了,旗标会被静默忽略。遇到 --port 不生效,先查自己的 cordis.patch.yml 里有没有把 webserver 配置写死成字面量的补丁,改回去再重启 dsh web。

绑定边界:为什么局域网设备连不上
端口错会报「连接被拒绝」;默认绑定则是更隐蔽的一种——页面只存在于启动 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 墙记录得很细。
为什么不该硬绕
官方讨论区 #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 上说法不一致,请以你自己构建的实际启动输出为准;无论落在哪种行为,都请把回显里的令牌当作整个局域网的唯一门禁,并只在可信网络里这样做。


防火墙:放行入站 3080
绑定解决后,第二道门是操作系统防火墙——不放行入站 3080,手机那边看到的就是超时而不是页面。
Windows
Windows Defender 防火墙默认拦截专用/公用网络的主动入站连接。一条管理员命令放行 TCP 3080,也可以在「Windows 安全中心 > 防火墙和网络保护 > 高级设置」里手动建入站规则。
macOS
系统防火墙默认关闭;如果你开过,它是按应用拦的——在「系统设置 > 网络 > 防火墙」里放行 node(或你的 dsh 运行时),通常首次联网时系统弹窗就能顺手点允许。
Linux
看你在用哪套防火墙:ufw 一条命令放行;firewalld 加端口后要永久化并重载;iptables 手工加一条 TCP 3080 的 ACCEPT 规则。下面的 dsh-LAN 插件会自动维护这些规则(Windows、firewalld、ufw、iptables 都管)。
手机 / 平板访问
最典型的局域网场景:dsh 跑在台式机上,你手上是手机——同一个 Wi-Fi,手机端不装任何东西。
浏览器打开 http://<局域网IP>:3080
同一网络里的任意设备,在浏览器输入第 3 步查到的局域网 IP——带端口的完整地址。绑定和防火墙都通了以后,看到的就是和主机一样的 Web UI:只有一个服务进程,所有会话状态都在服务端,手机和桌面看到同一场对话、实时同步。
打不开时按顺序查
依次过一遍:绑定还在回环(说明插件/代理路径还没上——这个阶段防火墙还轮不到背锅)、主机防火墙、手机和主机是否真的同网段——不少路由器默认开 AP 隔离,同一个 Wi-Fi 下的设备互相也看不见。另外地址要带 http:// 和端口输全,手机浏览器很爱自作主张。
若实例以联网模式启动(启动行里出现 LAN: 字样),设备第一次打开地址时先遇到的不是工作台,而是 dsh 原生的令牌门禁页:

想把手机端体验再推进一步(第三方客户端、伴随应用),去远程与移动端集合逛逛: 远程与手机访问合集
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 生效。
怎么用
在本机打开「设置 > 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)。下面四张画面来自同一段局域网实录,展示装上插件后从登录到多人工作区的完整链路:




装插件的前提是会装插件——不熟悉 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 启动不被拦截。
SSH 本地转发:零插件、全程加密
在要访问的设备上把本地端口转发到主机的回环:在访问方设备执行下面的命令,然后在那台设备打开 http://localhost:3080。dsh 侧什么都不用改,流量全程加密——适合给一位可信同事的笔记本用。手机装 SSH 客户端也能做,但那就接近隧道玩法了:出了这个网络,请直接看远程访问教程。
一个 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
常见报错,逐个对号
这个主题真实出现的四种失败,以及每种背后的原因。
启动失败 / 端口被占用
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 这类公网隧道——那是远程访问教程的领域。
相关教程
访问三部曲的另外两环,以及本页依赖的入门页。
DSH Web UI 从启动到手机
dsh web 一条命令启动网页版,吃透 3080 工作台、斜杠技能与模型设置,再用 dsh-web 生态把手机接进来——9 步实测截图
阅读指南手机远程控制 dsh
ngrok 内网穿透把 Web UI 挂上公网,在外面用手机连回家里的 Agent,免装 App,实测截图逐步对照。
阅读指南远程与手机访问合集
dsh-web、dsh-pocket、Agents-Anywhere、dsh-mobile——精选远程客户端一次看全。
阅读指南安全地安装插件
dsh 里“安装插件”到底发生什么,附一套第三方代码审查清单。
阅读指南故障排查与报错百科
症状 → 原因 → 修复:安装失败、pnpm workspace allowlist 报错、cordis.patch.yml 冲突、bundle 格式错误与 Profile 不生效。
阅读指南画面来源与署名
本页全部截图取自 B 站 UP 主「是属鼠我」的 dsh 局域网访问实录,每张图都带时间戳深链回原片;画面右下角的 UP 摄像头气泡与烧录字幕带经裁修去除。其中局域网 URL 回显与令牌门禁页为 dsh 原生行为;多用户登录、项目工作区与威胁模型画面来自第三方插件 linyupark/dsh-multi-tenant(新仓,引用时请注意其成熟度);局域网插件路线另有 MrMu666/dsh-LAN。两个仓库均以其 GitHub README 为准,页面文字结论为本站原创。
