前言¶
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 仓库。