liveqte/dsh-lan-proxy 预览 preview

liveqte/dsh-lan-proxy

DSH 插件:把 dsh 的回环 Web UI 通过 0.0.0.0 反代暴露到局域网,开关/状态/日志嵌入设置页。官方 bundle 插件,安装:dsh plugin --profile web add github:liveqte/dsh-lan-proxy#main

Project Overview项目介绍

dsh-lan-proxy is a DSH plugin that exposes the loopback-only Web UI to the LAN via a 0.0.0.0 reverse proxy. Capabilities: LAN binding, configurable listen/upstream ports, hot toggle, WebSocket bridging, Host rewriting, and a crypto.randomUUID polyfill, plus an in-page workspace directory picker. Use it when you need to reach dsh from phones or other LAN devices, or browse the host filesystem from a remote browser. Caveat: HTTP only, LAN-exposed; do not place on the public internet.

dsh-lan-proxy 是 DSH 插件,把仅监听回环的 Web UI 通过 0.0.0.0 反代暴露到局域网。能力:监听 LAN、可配端口与上游、热开关、WebSocket 桥接、Host 改写与 UUID polyfill,并把工作区目录选择改为内嵌网页浏览器。当需在手机或其他机器访问本地 dsh,或在远程机选取宿主工作区时使用。注意:仅支持 HTTP、暴露于局域网,勿用于公网。

Pre-install check安装前体检Compatibility · Security兼容性 · 安全性 2 warnings2 项注意
  • Only 2 stars - very few users, little community feedback星标只有 2,几乎没人在用,遇到问题缺少社区反馈
  • Desktop client: installation downloads an executable - verify the publisher and checksums桌面客户端:安装会下载可执行文件,请核对发布者与校验和
DSH walks through these 9 checksDSH 会逐条核对这 9 项

Compatibility兼容性

  • DSH, Node, OS and profile requirementsDSH 版本 / Node 版本 / 操作系统 / profile 是否满足要求
  • External dependencies and runtimes (Electron / Python / Docker, ...)外部依赖与运行时(Electron / Python / Docker 等)是否齐备
  • Conflicts with installed plugins: command names, skill / tool names, ports, duplicate MCP registration与已装插件是否冲突:命令名、skill / tool 重名、端口占用、重复 MCP 注册

Security安全性

  • Repo matches the facts registered here; archived or abandoned?仓库是否与页面登记一致,是否归档或长期停更
  • Safety of preinstall / install / postinstall and install.sh / setup.ps1preinstall / install / postinstall 与 install.sh、setup.ps1 是否安全
  • curl|bash, download-then-execute, obfuscation, unrelated domains → stop immediatelycurl|bash、下载即执行、混淆代码、无关域名 → 立刻停止
  • Typosquatting or unmaintained packages among the new dependencies新增依赖里有没有 typosquatting 或无人维护的包
  • Requested permissions vs. what the feature actually needs申请了哪些权限、是否超出功能所需(filesystem / network / shell / clipboard)
  • Any sudo / admin requirement, plus uninstall and rollback是否要求 sudo / 管理员权限,以及卸载与回滚方式

Anything uncertain must be marked unknown with a note on how to confirm it. This site's signal screen is a static snapshot, not a security audit.拿不准的必须标「未知」并说明要我怎么确认。本站的信号筛查是静态快照,不能替代安全审计。

Or use CLI install (for developers)或使用命令行安装(适合开发者)

CLI Install命令行安装

dsh plugin --profile web add "github:liveqte/dsh-lan-proxy#main"

把 liveqte/dsh-lan-proxy 加入你的 DSH 配置(web profile)即可启用。

READMEREADME

dsh-lan-proxy

把 dsh 只监听回环地址的 Web UI 通过 0.0.0.0 反代暴露到局域网; 开关、状态与启动日志直接嵌入 dsh 设置页,随 dsh 启停,无需单独进程。

界面预览

设置页「局域网反代」一级菜单面板(监听已开启时):

局域网反代设置面板

安装

dsh plugin --profile web add "github:liveqte/dsh-lan-proxy#main"

bundle 层栈在启动时组合,装完重启 dsh web 生效。验证:设置页导航「局域网反代」一级菜单出现,启动日志无 plugin tree failed to load。

功能

能力 说明
局域网反代 将 dsh Web UI 同时监听 0.0.0.0:<port>,局域网内任何设备经 http://<局域网IP>:<port>/ 访问
网页端目录选择 禁用原生 OS 文件夹对话框,固定为网页内嵌「选择工作区目录」浏览(可在远程机器上选宿主目录)
免配置开关 设置页「局域网反代」tab 一键开关,即时热启停,无需重启 dsh
端口配置 tab 内直接修改监听端口与上游端口,保存即生效
协议适配 自动改写 Host/Origin 为回环、桥接 WebSocket(RFC6455 帧编解码)、注入 crypto.randomUUID polyfill(局域网 HTTP 非安全上下文缺失)
浏览器鉴权适配 自动完成 dsh web 的 token↔cookie 交换,局域网首次访问即无感(与本地 localhost 等价),无需手动打开带 token 的链接
状态与日志 2 秒轮询的运行状态、上游可达性探测、局域网地址列表与启动日志,内置「重启反代」按钮

使用

  • 开关:设置页 →「局域网反代」tab,切换「监听局域网访问」。 页面开关的即时状态写入运行时文件($DSH_HOME/profiles/web/lan-proxy.runtime.json, 优先级高于配置默认值),立即生效。
  • 局域网访问:http://<局域网IP>:<监听端口>/。
  • 端口:tab 内可直接修改监听端口(所有网卡)与上游端口 (127.0.0.1,0 表示自动取 dsh 实际监听端口)。
  • 开关与端口修改接口仅限本机回环地址调用;局域网访问只读状态与日志。
  • 选择工作区:装上本插件后,侧边栏 / 会话区的「添加工作区」改为网页内嵌目录浏览器 (宿主文件系统列举 + 新建文件夹),不再在 dsh 进程所在机器上弹出 OS 对话框。 这样局域网/远程浏览器也能选目录;本机 127.0.0.1 访问同样走内嵌对话框。 实现方式:bundle 层禁用 directory-picker(auto),并挂载官方 directory-picker-browse 双面(host 列举/创建 + client 对话框)。

配置项

键 默认值 说明
enabled false 监听局域网访问(配置默认值;页面开关优先级更高并持久化到运行时文件)
port 3080 反代监听端口(所有网卡)
upstreamPort 0 上游端口,0 = 自动取 dsh 实际监听端口
maxLogLines 500 页面日志缓冲行数
bypassRules 见下 前端 JS 改写规则表(屏蔽 dsh 对非回环来源的设置页封锁)

配置覆盖写在 profile 层的 cordis.patch.yml(id: lan-proxy 行的 config), 不需要修改仓库内文件。

设置页非回环封锁的绕过(bypass 规则)

dsh 0.1.x 的浏览器端只为回环地址加载设置面(connection.isLoopback),从局域网 访问「设置 → 模型」会得到:加载提供方目录失败: settings are unavailable in this browser。反代在转发 /plugins/<id>/client.js 字节流时,按规则表改写其 JS,把封锁判定固定为回环;服务端 /api 信任栅栏按 Host 头判定,反代已把 Host 改回 127.0.0.1,因此服务端天然放行。这是改动浏览器实际执行字节的补丁,与插件 加载顺序无关。

内置规则(dsh 0.1.x):

id 改写目标 动作
dsh-client-connection:isLoopback-mirror 把 dsh-client-connection client 里的 isLoopback: pageLocation… 改为 isLoopback: true 设置/模型/凭据面视为回环,正常读写

官方换一种封锁方式时,在配置里加一条 find/replace 规则即可(或覆盖 bypassRules 表),旧规则 find 不中会自动跳过并在日志面板提示。规则状态 (命中次数/最后错误)出现在「局域网反代」设置页的运行状态里。

插件管理

已装插件用 plugin-registry 的浏览器管理面板(轻量控制台)统一管理:查看、 安装、卸载插件,调整 bundle 层栈与 insert 行,启停插件,全程无需手改配置文件。 安装: dsh plugin --profile web add <plugin-registry>/packages/plugin/console

← 上一个 Prev dsh-ocr1-memory 下一个 Next dsh-theme-pack →