DeepSeek Harness (DSH) 的设计理念是将特权浏览器能力保留在本地(loopback)。普通的反向代理虽然可以远程渲染页面,但在处理设置、插件包、WebSocket 或原生目录选择时通常会失败。jiachi5533/dsh-remote-gateway 插件提供了一个兼容性网关,它仅修补必要的连接模块,将流量代理至内部 DSH 服务,而不直接暴露 DSH 的 Web 服务器。
插件定位¶
- 名称:
jiachi5533/dsh-remote-gateway - 简介:受源过滤的远程网关,用于通过经过身份验证的反向代理访问 DeepSeek Harness。
- 维护者:Jiachi5533
- 许可证:MIT
核心功能¶
该插件主要解决远程访问时的兼容性问题,并保证安全性:
- 协议支持:代理 HTTP、SSE 和 WebSocket 流量。
- 源地址过滤:仅接受来自明确列出的源 IP 地址的请求。
- 网络隔离:内部 DSH Web 服务器始终绑定在
127.0.0.1,不对外监听。 - 请求重写:将上游请求的
Host和Origin重写为内部 loopback 权限。 - 头信息剥离:在请求进入 DSH 之前,移除边缘认证和客户端身份转发头(如
Authorization,Proxy-Authorization,Forwarded,X-Forwarded-*,X-Real-IP)。 - 精准修补:仅修补特定的
dsh-client-connection能力探测模块,其他插件包内容保持字节对字节转发。 - 目录选择:替换主机的原生目录对话框,使用 DSH 内置的文件系统浏览器。
- 生命周期:随 DSH 插件生命周期启动和停止,由 DSH 的 supervisor(如 systemd)统一管理。
安装与配置¶
前置要求:
* DSH Web 配置文件
* Node.js 22.19 或更新版本
* 支持WebSocket转发和认证的反向代理
- 安装插件:
使用官方 CLI 命令从 GitHub 安装:
dsh plugin --profile web add github:Jiachi5533/dsh-remote-gateway
- 编辑配置文件:
安装后,编辑生成的remote-gateway配置条目,路径为~/.dsh/profiles/web/cordis.patch.yml:
- id: remote-gateway
name: '@jiachi/dsh-remote-gateway'
config:
host: 0.0.0.0
port: 3080
allowedSources:
- 192.0.2.10 # exact LAN address of the reverse proxy
- 127.0.0.1 # optional local health checks
- 重启服务:
首次安装后需重启 DSH Web 进程。
典型用法¶
-
配置反向代理:
将反向代理的 HTTP 和 WebSocket 流量转发到 DSH 主机的 LAN 地址和端口 3080:
http://DSH_HOST_LAN_IP:3080 -
启用安全层:
在反向代理处启用 HTTPS 和用户认证。TLS 和用户认证在此终止。 -
健康检查:
允许列出的监控系统可以访问GET /_dsh-remote-gateway/health端点。该端点返回200 ok,不向上游 DSH 发起请求,用于验证网关进程和源地址策略。
安全模型与注意事项¶
该插件的安全模型由多层防御构成:
- 反向代理为边界:TLS 和用户认证在反向代理处终止。
- 源地址白名单:网关只接受反向代理的 LAN 地址。注意,当前实现仅支持精确的 IPv4 或 IPv6 地址,不支持 CIDR 范围。
- Loopback 隔离:内部 DSH Web 服务器始终只监听本地回环地址。
- 头信息清理:所有转发头被移除,防止信息泄露或权限提升。
重要警告:
* 永远不要直接将端口 3080 暴露到互联网。
* 不要在 allowedSources 中添加广泛的网络范围(如 0.0.0.0/0),这无法保护内部服务。
* 插件以 DSH 进程的权限运行。在安装任何第三方插件之前,务必审查其源码和许可证。
插件仅修补特定的连接兼容性模块,其余插件包内容保持不变,因此大多数标准插件在远程环境下可以正常工作。