dsh-login-gateway:为 DSH Web UI 增加登录门卫与反向代理

前言

在 DeepSeek Harness(DSH)的插件化使用方式中,有些场景需要从其他机器访问本机 dsh 的 Web UI。dsh 的 Web UI 默认只监听 127.0.0.1:3080,不直接对外提供入口。dsh-login-gatewayrunfali 维护,用于在外部增加一个登录入口;登录通过后,它再把请求反向代理到本机 dsh Web UI。

这是什么

dsh-login-gateway 是 DeepSeek Harness(dsh)登录门卫插件。它默认在 0.0.0.0:3081 提供登录入口;访问者通过用户名密码登录后,HTTP 与 WebSocket 请求会被全量反向代理到 127.0.0.1:3080 的 dsh Web UI。

已核实资料中,项目许可证为 MIT,package.json 声明版本为 0.2.0,要求 Node 22+ ESM,并声明零运行时依赖,仅使用 Node.js 内置模块。它不修改 dsh 安装目录的任何文件,也不改 dsh 自身配置逻辑;安装/卸载只影响 profile 目录,需要重启 dsh 生效。

核心功能

  • 外部入口:默认在 0.0.0.0:3081 提供登录入口。
  • 用户名密码登录:登录成功后种下 HttpOnly + SameSite=Strict 会话 Cookie。
  • 全量反向代理:登录通过后代理到 127.0.0.1:3080,支持 HTTP 与 WebSocket。
  • 请求头改写:反代时改写 HostOriginSec-Fetch-Site 为 loopback 形态,让 dsh 信任放行。
  • 一次性初始化:新装没有默认账号,通过 /setup 和一次性令牌创建管理员。
  • 限速与节流:登录和初始化按 IP 与用户名双维度限速,可锁定失败尝试;另有全局认证节流。
  • 会话控制:会话绑定 User-Agent;改密自动吊销其他会话。
  • 可选安全项:自签 TLS、secureCookie、审计日志、安全响应头和反代防请求走私处理。
  • 零侵入:不修改 dsh 安装目录文件,也不改 dsh 自身配置逻辑。

安装与启用

使用本地目录安装。将 /path/to/dsh-login-gateway 替换为实际插件目录:

dsh plugin --profile web add /path/to/dsh-login-gateway

安装后重启 dsh。

新装没有默认账号,需要先完成一次性初始化。可以读取令牌文件:

cat ~/.dsh-login-gateway/setup-token.txt

令牌文件权限为 0600

然后浏览器打开:

http://<主机>:3081/setup

输入令牌、管理员用户名、密码与确认密码。

初始化前访问 / 会 302 到 /setup;初始化完成后 /setup 返回 410,setup-token.txt 会被删除。

完成初始化后,登录入口为:

http://<主机>:3081/

输入用户名密码即可进入 dsh Web UI。

典型用法

登录成功后,会话 Cookie 会种下,后续访问会走反向代理。

登出可以使用页面悬浮栏退出;无界面时也可以调用:

curl -X POST http://<主机>:3081/logout

卸载插件:

dsh plugin --profile web remove dsh-login-gateway

重启 dsh 后,3081 停止服务。如需清理门卫的用户数据目录:

rm -rf ~/.dsh-login-gateway/

安全与注意

  • 公网或同一链路暴露存在明文 HTTP 风险,建议前置 TLS 终止或启用门卫自身 TLS,并配合 secureCookie
  • 直连场景建议保持 trustProxy: false,避免伪造 X-Forwarded-For 绕过限速。
  • 会话绑定 User-Agent 默认开启,浏览器升级更换 UA 后需要重新登录。
  • 个性化配置补丁会整段替换 config,覆盖时需写全所有配置项。
  • 用户数据文件默认位于 ~/.dsh-login-gateway/users.json,使用 scrypt 哈希。
  • 插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。

结尾

dsh-login-gateway 的价值在于:让 dsh Web UI 保留 loopback 监听,同时通过外部登录入口和反向代理获得受控访问。

项目仓库:

  • https://github.com/runfali/dsh-login-gateway
羽毛球分组比赛记分
小程序二维码

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

Xiaoye