DeepSeek Harness 远程设置兼容与访问网关插件

前言

DeepSeek Harness(DSH)采用插件化架构,在远程部署或代理访问时,开发者通常需要分别处理远程设置的安全来源(Origin)和独立的密码访问网关。如果不加以区分,容易导致权限校验混乱或安全边界不清。

lemoncat7/dsh-remote-settings-compat 插件旨在将这两项能力收敛到一个安装包中。它通过统一的配置入口,提供可信浏览器 Origin 管理、独立密码网关以及 Knowledge 匿名分享功能,同时保持与 DSH 主程序解耦。

插件定位

这是一个 DeepSeek Harness 的统一远程访问兼容插件,由开发者 lemoncat7 维护。它不修改 DSH 主程序,也不接管 Knowledge 或 SSH 业务路由,而是通过官方 Bundle 接口提供扩展能力。

核心功能

该插件主要包含以下能力:

  • 可信浏览器 Origin 管理:允许显式指定的浏览器 Origin 使用 DSH 官方模型、凭证和插件设置。这是 Origin 权威来源,同时用于远程设置和密码门禁校验。
  • 独立密码网关:提供从端口 3081 到 3080 的透明代理。密码使用 scrypt 不可逆存储,浏览器使用 HttpOnly、SameSite 会话 Cookie。
  • 安全策略:包含登录限速、会话过期、可选 IP 绑定与一键撤销全部会话。
  • 机器 API 兼容:配置的机器 API(如 /knowledge-api/v1)可继续使用 Bearer Token,Token 由目标插件验证。
  • Knowledge 匿名分享:可显式开启 Knowledge 匿名读取,仅放行形如 /knowledge-api/v1/shared/share_... 的合法分享页、清单和内容 GET 请求,不开放搜索、回写或管理接口。

安装

使用 Node.js 环境安装:

npm install

环境要求:Node.js 版本需为 ^22.19.0 或 >=24.0.0。

典型用法

Docker 部署配置

在 docker-compose.yml 中配置端口映射。端口 3081 作为密码网关入口,3080 为 DSH 原生服务。

services:
  dsh:
    ports:
      # 仅允许回环访问,或根据网络环境调整
      - "127.0.0.1:3080:3080"
      # 密码网关,同机 Nginx 时可绑定 127.0.0.1
      - "127.0.0.1:3081:3081"

插件内部配置示例:

dsh-access-gate:
  enabled: true
  listenHost: 0.0.0.0
  listenPort: 3081
  secureCookies: true

remote-settings-compat:
  trustedOrigins:
    - https://dsh.example.com:2439

Nginx 反向代理配置

Nginx 需将流量整体代理到 3081,并严格保留 Host 头。

location / {
    proxy_pass http://127.0.0.1:3081;

    # 必须保留非默认端口;不能用 $host
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Port $server_port;

    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $http_connection;
    proxy_http_version 1.1;
}

首次启用流程

启用流程分为七个阶段,避免因配置不当导致访问中断:

1、在「设置 → 插件 → 远程访问」填写完整的 trustedOrigins。

2、启用网关,保存监听地址、端口和 Cookie 策略(如 secureCookies: true)。

3、使用 DSH 启动日志中的一次性初始化令牌设置密码。

4、发布 3081 端口,重启 DSH,并先确认 3081 能打开登录页。

5、把反向代理从 3080 整体切到 3081。

6、打开「部署自检」,确认 Host、Origin、当前入口和 Credentials 全部正常。

7、最后删除 3080 的对外发布,或将它收紧到宿主机回环地址。

升级与兼容

从独立的 dsh-access-gate 升级时,插件会继续读取旧的设置命名空间和凭证记录,无需重设密码或公开 Origin。但新包生效后,必须从 profile 中移除旧的 dsh-access-gate Bundle,避免两个网关同时监听同一端口。

注意事项

  • 配置分离:配置 trustedOrigins 不会自动启用 3081 或密码功能,需分别设置。
  • Nginx 规则:严禁使用 $host 变量,必须使用 $http_host 以保留非默认端口。
  • Credentials 权限:使用官方本地 Provider 时,密码文件建议权限为 600,避免被其他进程读取。
  • 业务路由:插件不接管 Knowledge 或 SSH 业务路由,这些功能仍由 DSH 原生插件处理。

结语

该插件通过统一入口管理远程访问的安全策略,为开发者提供了从 Origin 校验到密码网关的一体化解决方案。使用前请确认 Node.js 版本,并仔细检查 Nginx 配置以避免 Host 头丢失导致的安全问题。

项目地址:https://github.com/lemoncat7/dsh-remote-settings-compat

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

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

小夜