dsh-loopback-bridge
开发工具 活跃维护

dsh-loopback-bridge

johnhom1024/dsh-loopback-bridge

支持用户通过局域网IP或公网域名打开目标Web服务界面时,解锁原本受限的配置项与账户凭据访问权限,无需额外配置即可正常使用相关功能

1
Stars 标星
0
Forks 分支
1
Watchers 关注
0
Open Issues
JavaScript
主要语言
MIT
开源协议
15 KB
仓库大小
15 天前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:johnhom1024/dsh-loopback-bridge
git clone https://github.com/johnhom1024/dsh-loopback-bridge.git
git clone git@github.com:johnhom1024/dsh-loopback-bridge.git
README.md main
# dsh-loopback-bridge 用局域网 IP 或公网域名打开 DSH,设置页也能改模型和 API Key 装完重启即可 · 不改官方源码 · 入口必须有鉴权 **[English](https://github.com/johnhom1024/dsh-loopback-bridge/blob/main/README.en.md)** · 中文

[!WARNING]
这个插件把「仅本机」的设置和凭据写入能力,开放给所有能打开这个 DSH 页面的人。家庭局域网自己看着办;挂公网就必须在前面加 authentik / oauth2-proxy 这类鉴权。接入前先备份,数据丢了概不负责。

这是什么

DSH 设置页只认地址栏是不是本机(127.0.0.1 / localhost)。用 192.168.x.x 或自己的域名打开时,页面会报 "settings are unavailable in this browser",模型 tab 改不了。

服务端从 0.1.2 起已经认 --trusted-host,RPC 本身能通。卡住的是浏览器里那一刀:设置页看见 hostname 不是回环,直接进只读,请求都不发。这个插件在页面加载时把连接标成本机,设置页就会正常工作。

✨ 特性

  • 远程能改设置 —— 局域网 IP、NAS 域名、公网域名打开,模型和凭据都能写
  • 不改官方包 —— DSH 随便升级;官方哪天认 trusted-host 了,卸掉就行
  • 装完即生效 —— dsh plugin add 之后重启 web,不用手改 nginx
  • 0.1.2 友好 —— 不要再把 Host 改写成 127.0.0.1,cookie 会对不上然后 401

🚀 快速开始

1. 确认服务端已经信任你的访问地址

dsh web 启动参数里要带上实际用来打开页面的 Host,例如:

dsh web --host 127.0.0.1 --port 3080 \
  --trusted-host 192.168.31.229 \
  --trusted-host dsh.example.com

2. 安装插件

dsh plugin --profile web add github:johnhom1024/dsh-loopback-bridge

本地开发:

dsh plugin --profile web add link:/path/to/dsh-loopback-bridge

3. 重启 dsh web

Docker 共享 netns 的栈不要只 restart 单个容器,整栈重建。装完刷新页面,远程打开设置 → 模型,应该能改了。

⚙️ 要求

说明
DSH 0.1.2-rc.1 验证。更早版本服务端还要改 Host,不推荐
--trusted-host 必须覆盖你实际访问用的 hostname / IP
反代 不要把特权 API 的 Host 改写成 127.0.0.1(0.1.2 的 cookie 绑 Host,改了会 401)
鉴权 LAN 信任模型可以裸奔;公网必须有反代鉴权

验证

打开远程地址的设置页,模型 tab 不再报 unavailable,能保存 API Key 就算成功。

命令行核对(可选) ```bash # 脚本可达 curl -s -o /dev/null -w "%{http_code} %{size_download}B\n" http:///loopback-bridge.js # HTML 首包已注入 curl -s http:/// | grep loopback-bridge # 设置 RPC(0.1.2 路径是斜杠;要带着你的会话 cookie) curl -s -o /dev/null -w "%{http_code}\n" -X POST \ -H "Content-Type: application/json" \ -d '{"type":"client-request","rpcId":"t","method":"settings/describe","payload":{"args":{}}}' \ http:///api/settings/describe ```

🔒 安全

插件只动客户端。谁能打开 DSH 页面,谁就能改设置、写 credentials.set。这在自家反代后面是正确语义,裸奔公网则不是。

上游如果改成由服务端下发 isLoopback,这个插件会一起失效,卸掉即可。

📄 License

MIT