# dsh-reverse-proxy-xc [![npm version](https://img.shields.io/npm/v/dsh-reverse-proxy-xc.svg)](https://www.npmjs.com/package/dsh-reverse-proxy-xc) [![license](https://img.shields.io/npm/l/dsh-reverse-proxy-xc.svg)](https://github.com/xchannel1987/dsh-reverse-proxy-xc/blob/main/LICENSE) [![downloads](https://img.shields.io/npm/dm/dsh-reverse-proxy-xc.svg)](https://www.npmjs.com/package/dsh-reverse-proxy-xc) [![DSH](https://img.shields.io/badge/DeepSeek-Harness-blue)](https://github.com/deepseek-ai/DeepSeek-Harness) [中文](README.md) | [English](README_EN.md) **DSH 局域网反向代理插件** —— 让手机/平板等设备在局域网内无缝访问 DSH Web GUI,获得与本地完全一致的体验。 > **DSH 0.1.7 兼容(`>=0.1.7-rc.1`)**:0.1.7 起设置接口与客户端设置服务均有 breaking > 变更(`ctx.settings.register` 移除、`settingsScope` 更名 `configForms`),本版本已完整适配: > 设置入口位于「设置」页的「局域网反向代理」分区;保存后经控制路由 > `/api/dsh-reverse-proxy-xc/control` 立即热启停代理(含端口/认证变更)。 ## ✨ 核心特性 ### 🌐 完整功能访问 - **侧边栏可用**:工作区、会话列表正常显示 - **设置面板**:可访问所有设置项 - **凭据管理**:可管理 API 凭据 - **WebSocket 支持**:实时事件推送正常工作 ### 🔧 问题修复 本插件修复了通过反向代理访问时的关键问题: | 问题 | 原因 | 解决方案 | |------|------|----------| | 设置面板无法打开 | 前端判断非回环环境禁用 | 代理层注入 isLoopback=true | | randomUUID 报错 | HTTP 下 API 不可用 | 自动注入 polyfill | | WebSocket 断开 | 代理未正确转发 | 流式透传支持 | | 提示 authentication required | 移动端访问缺少启动 token 凭证 | 自动换取并注入合法 session cookie (bypassToken) | ### 🚀 技术实现 - **独立服务**:默认监听 `0.0.0.0:3090` - **请求转发**:转发到 DSH 主服务 `127.0.0.1:3080` - **Header 改写**:改写 Host/Origin 为回环地址 - **HTML 注入**:自动注入必要的 polyfill ### 🔒 安全设计 - **局域网限定**:仅在内网/VPN 环境使用 - **信任栅栏**:保留 DSH 原有安全机制 - **配置可控**:默认禁用,需手动开启 ## 📦 安装 ```bash # 使用 DSH CLI dsh plugin --profile web add dsh-reverse-proxy-xc # 或使用 npm npm install dsh-reverse-proxy-xc ``` 安装后重启 DSH。 ## ⚙️ 配置 1. 打开 DSH 设置 2. 找到「局域网反向代理」分区 3. 打开「启用代理」开关 4. 配置端口(默认 3090) ### 配置选项 | 选项 | 默认值 | 说明 | |------|--------|------| | enabled | false | 是否启用代理 | | port | 3090 | 监听端口 | | host | 0.0.0.0 | 监听地址 | | bypassToken | true | 免 Token 认证(反代流量自动注入本机凭据,手机访问免输启动 Token) | | authEnabled | false | 是否启用访问认证(Basic) | | authUser | admin | 认证用户名 | | authPass | 123456 | 认证密码 | ## 🎮 使用 1. 确保目标设备与主机在同一局域网或 VPN 2. 在目标设备浏览器访问: ``` http://<主机内网IP>:3090 ``` 例如:`http://10.100.50.125:3090` 3. 享受与本地 `http://127.0.0.1:3080` 完全一致的体验 ## 🔧 工作原理 ``` 手机浏览器 ↓ HTTP/WS 反向代理 (0.0.0.0:3090) ↓ 改写 Header DSH 主服务 (127.0.0.1:3080) ↓ 视为回环访问 完整功能解锁 ``` ## ⚠️ 安全注意 - **不要暴露到公网**:此插件设计用于可信内网环境 - **VPN 推荐**:跨网访问建议使用 VPN - **敏感操作**:涉及凭据和设置,请确保网络安全 ## 📄 许可证 [MIT](LICENSE) ## 🔗 链接 - [GitHub](https://github.com/xchannel1987/dsh-reverse-proxy-xc) - [npm](https://www.npmjs.com/package/dsh-reverse-proxy-xc) - [问题反馈](https://github.com/xchannel1987/dsh-reverse-proxy-xc/issues)