DSH Remote Gateway:通过反向代理安全访问 DeepSeek Harness

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转发和认证的反向代理

  1. 安装插件:
    使用官方 CLI 命令从 GitHub 安装:
    dsh plugin --profile web add github:Jiachi5533/dsh-remote-gateway
  1. 编辑配置文件:
    安装后,编辑生成的 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
  1. 重启服务:
    首次安装后需重启 DSH Web 进程。

典型用法

  1. 配置反向代理:
    将反向代理的 HTTP 和 WebSocket 流量转发到 DSH 主机的 LAN 地址和端口 3080:
    http://DSH_HOST_LAN_IP:3080

  2. 启用安全层:
    在反向代理处启用 HTTPS 和用户认证。TLS 和用户认证在此终止。

  3. 健康检查:
    允许列出的监控系统可以访问 GET /_dsh-remote-gateway/health 端点。该端点返回 200 ok,不向上游 DSH 发起请求,用于验证网关进程和源地址策略。

安全模型与注意事项

该插件的安全模型由多层防御构成:

  • 反向代理为边界:TLS 和用户认证在反向代理处终止。
  • 源地址白名单:网关只接受反向代理的 LAN 地址。注意,当前实现仅支持精确的 IPv4 或 IPv6 地址,不支持 CIDR 范围。
  • Loopback 隔离:内部 DSH Web 服务器始终只监听本地回环地址。
  • 头信息清理:所有转发头被移除,防止信息泄露或权限提升。

重要警告:
* 永远不要直接将端口 3080 暴露到互联网。
* 不要在 allowedSources 中添加广泛的网络范围(如 0.0.0.0/0),这无法保护内部服务。
* 插件以 DSH 进程的权限运行。在安装任何第三方插件之前,务必审查其源码和许可证。

插件仅修补特定的连接兼容性模块,其余插件包内容保持不变,因此大多数标准插件在远程环境下可以正常工作。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜