dsh-reverse-proxy-gateway:把 DSH 本地 Web 服务安全反代到公网

前言

DSH(DeepSeek Harness)桌面版在本地起一个 Web 服务,端口往往是随机的回环地址。你想用手机或另一台电脑继续用同一台机器上的同一会话,常见做法是改 trustedHosts、拉长 cookie 有效期,或者自己写反向代理并手动跟端口——步骤多,也容易配错。

下面介绍社区插件 dsh-reverse-proxy-gateway(维护者 xiongking,分类 admin-security):在 DSH 进程内另起一个固定端口,做 Basic Auth、会话 cookie 注入和端口跟随,再交给 nginx、Caddy 或隧道指向本机即可。

这是什么

dsh-reverse-proxy-gateway 是一个 DSH 插件,把桌面版本地 Web 服务安全地反代到公网入口背后。装好后经你自己的域名访问,看到的是宿主上那一个实例,不是另起一个 DSH。

技术栈上为纯 ESM JavaScript,无构建步骤;运行时需要 Node.js ^22.19.0 || >=24.0.0,宿主 DSH 为 ^0.2.0-rc.1 || ^0.2.1-rc.1 || ^0.2.2-rc.1。运行时无额外 npm 依赖,配置走 schemastery schema,界面改动会写到 ~/.dsh/.dsh-reverse-proxy-gateway.json(权限 600)。

核心功能

资料中列出的能力如下,安装前可对照 GitHub 仓库核对:

  • 在 DSH 内监听固定端口(默认 0.0.0.0:3080),不改动宿主原本的随机回环端口。
  • 内置 Basic Auth 与固定 token 登录;通过后下发长期 cookie(默认 30 天)。
  • DSH 重启后随机端口变化时,插件自动跟随,无需手工同步。
  • 转发时重写 Host 并注入宿主会话 cookie,不需要改 trustedHosts 或拉长 cookieMaxAgeDays。
  • 支持 WebSocket upgrade 与流式响应。
  • 远程「创建工作区」可用浏览器内目录树(remotePicker)代替主机上的系统对话框。
  • 设置页「远程访问」、插件详情卡片、输入框下方地球图标,三处均可配置与开关。

安装与启用

桌面版(推荐):设置 → 插件 → 安装,填入下列 git 地址后重启 DSH。

git+https://github.com/xiongking/dsh-reverse-proxy-gateway.git

命令行(web 等非托管 profile):

dsh plugin --profile web add "git+https://github.com/xiongking/dsh-reverse-proxy-gateway.git"

desktop profile 由桌面应用独占,命令行无法管理,请用图形界面安装。安装后需重启 DSH。

启用网关前必须设置认证:密码至少 8 位,或与固定 accessToken 至少有一项;否则插件不会监听,避免无认证暴露。

典型用法

按 README 的快速开始,顺序大致如下。

1. 设置登录凭据

打开 设置 → 远程访问(或插件详情页卡片),填写用户名和密码并保存。

2. 确认监听地址

默认监听 0.0.0.0:3080。查本机内网 IP 示例:

ifconfig | grep "inet " | grep -v 127.0.0.1

3. 反向代理指向本机

在路由器、nginx、Caddy 或 Cloudflare Tunnel 等处,将上游指到 本机IP:3080(例如 192.168.1.10:3080)。必须保留原始 Host 头(不要改写成 127.0.0.1),否则插件地址校验会拒绝;TLS 建议在这一层终止。

4. 填写对外地址

在「对外地址」填入公网域名,例如 https://dsh.example.com,用于免密链接拼接与状态展示。

5. 登录使用

浏览器打开域名,输入用户名密码;登录后凭 cookie 保持会话。也可使用 publicUrl?token=accessToken 免密登录。

常用配置项(节选,完整表见仓库 README):

键 默认 说明
enabled true 总开关
listen / port 0.0.0.0 / 3080 监听地址与端口;改动需重启 DSH
publicUrl "" 对外地址
username / password dsh / "" Basic Auth
accessToken "" 固定 token
cookieDays 30 网关 cookie 有效期(天)
remotePicker true 远程用网页目录树选工作区

对话界面输入框下方最右侧有地球图标:绿色表示已开启且正在监听,灰色表示关闭,橙色表示已开启但未监听(端口占用或未设密码与 token)。点按可启停;switchMode 默认 local,仅本机打开 DSH 时显示,避免远程误触关闭网关。

适用场景与注意

适合需要在局域网或经隧道从外网访问同一 DSH 会话、又不想手调宿主端口与 cookie 策略的开发者。出站仅连回环,不构成开放代理;但 DSH 本身具备整机 shell 与全盘读写权限,网关失守等同于交出该机器。

安全须知(来自 README):

  • 不要把 0.0.0.0:3080 直接裸露在公网;至少由路由器或隧道终止 TLS,并尽量再加一层认证。
  • 固定 token 与密码同为长期凭据,泄露后应在界面立即更换。
  • 安装插件前请自行审查源码与 MIT 许可证;插件以当前 DSH 进程权限运行。

排错时可对照:外部 502 多为未监听或端口占用(日志可有 EADDRINUSE);403 多为反向代理改写了 Host;图标橙色多为未设密码与 token 或端口被占。

结尾

dsh-reverse-proxy-gateway 把监听、认证、会话注入和端口跟随收进一个插件,便于在自有域名后安全访问桌面 DSH。目录与说明见 SkillHub 插件页,源码与文档见 GitHub 仓库。

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

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

小夜