🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

公网中继 lileikeji/dsh-public-relay

DeepSeek Harness
lileikeji77 天前有提交已提供中文文档扫描:含敏感能力

让 NAT 后的本地 Web UI 通过域名远程访问

24.7/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/13 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add lileikeji/dsh-public-relay
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · ui
装得上吗
本站尚未做安装检查
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 77 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件读取剪贴板或密钥环境变量
查看扫描证据(共 5 处,展示前 5 条)
  • 读取密钥环境变量
    relay-broker/dsh-relay-broker.mjs:36
    const joinToken = process.env.DSH_RELAY_JOIN_TOKEN ?? ''
  • 读取本地文件
    relay-broker/dsh-relay-broker.mjs:58
    const parsed = JSON.parse(await readFile(registryPath, 'utf8'))
  • 写入本地文件
    relay-broker/dsh-relay-broker.mjs:70
    await mkdir(dirname(registryPath), { recursive: true })
  • 写入本地文件
    relay-broker/dsh-relay-broker.mjs:72
    await writeFile(temp, `${JSON.stringify(registry, null, 2)}\n`, { mode: 0o600 })
  • 写入本地文件
    relay-broker/dsh-relay-broker.mjs:73
    await rename(temp, registryPath)
扫描于 2026/11/2(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 反向SSH隧道中继
  • 暴露本地WebUI到公网
  • 无需公网IP与端口转发

自托管中继,用反向 SSH 隧道把 NAT 后的 DeepSeek Harness(DSH)网页界面暴露到公网——不用公网 IP、不用端口转发、不靠第三方隧道。

README

由 DeepSeek 最新模型翻译生成
DSH 公共中继 让一个跑在 NAT 之后的 DeepSeek Harness (DSH) 本地 Web UI,能被任意地点的手机/远程浏览器通过一个公共域名访问——不需要公网 IP、不需要端口映射、不依赖第三方隧道服务(ngrok/cloudflared 等)。 一个极简的自托管中继:用一台公共 VPS 加一条反向 SSH 隧道,把 NAT 之后的 DSH web UI 暴露到公网——不需要公网 IP、不需要端口映射、不依赖第三方隧道。 手机(任意位置) │ https://relay.example.com/r/<hostId>/... ▼ [ 公共中继服务器 VPS ] │ nginx → broker(:39100) ┌── 这台就是你的桌面 ▼ │ dsh web (127.0.0.1:3081) ssh -R 反向隧道 127.0.0.1:<relayPort> ────────────► 127.0.0.1:<webport> 组件 | 目录 | 内容 | 跑在哪 | | relay-broker/ | dsh-relay-broker.mjs(Node HTTP broker)、systemd 单元、env 模板 | 公共 VPS |
展开完整文档(README 剩余 1 节)
DSH 公共中继

让一个跑在 NAT 之后的 DeepSeek Harness (DSH) 本地 Web UI,能被任意地点的手机/远程浏览器通过一个公共域名访问——不需要公网 IP、不需要端口映射、不依赖第三方隧道服务(ngrok/cloudflared 等)。

一个极简的自托管中继:用一台公共 VPS 加一条反向 SSH 隧道,把 NAT 之后的 DSH web UI 暴露到公网——不需要公网 IP、不需要端口映射、不依赖第三方隧道。

手机(任意位置)
│ https://relay.example.com/r/<hostId>/...
▼
[ 公共中继服务器 VPS ] │ nginx → broker(:39100) ┌── 这台就是你的桌面 ▼ │ dsh web (127.0.0.1:3081) ssh -R 反向隧道 127.0.0.1:<relayPort> ────────────► 127.0.0.1:<webport>

组件

| 目录 | 内容 | 跑在哪 |
| relay-broker/ | dsh-relay-broker.mjs(Node HTTP broker)、systemd 单元、env 模板 | 公共 VPS |
| nginx/ | 公网域名 vhost(server_name、/r/<hostId>/ 转发、/plugins/ 直连、占位页) | 公共 VPS |
| launcher/ | 桌面侧 PowerShell:launch-dsh.ps1 + dsh-common.ps1 + dsh-supervisor.ps1 + setup-dsh-public-relay.ps1 + diag-relay.ps1 | 桌面 (Windows) |

工作原理

1. 注册:桌面启动时带共享的 join token 调用 POST /_relay/register(附 hostId + deviceSecret)。broker 校验 token 后为其分配一个仅本机监听的中继端口 41000–41999,并持久化注册表。
2. 隧道:桌面用 ssh -R 127.0.0.1:<relayPort>:127.0.0.1:<webPort> root@<server> 建反向隧道,把服务器上的该端口反向映射回桌面的 dsh web。
3. 访问:用户打开 https://<domain>/r/<hostId>/...,nginx 转发给 broker;broker 根据 hostId 找到对应中继端口、剥掉 /r/<hostId>/ 前缀后转发;双端通过 dsh_relay_host cookie 把该浏览器的根相对资源(/plugins/、/api/、/m/、WebSocket)都钉在同一台桌面。

安全模型

- joinToken(≥32 字符,Bearer)门槛注册;hostId 为不透明 32 位十六进制;deviceSecret(48–128 hex)证明主机在重复注册时的所有权。
- broker 只连 127.0.0.1:<分配端口>,绝不连任意外部目标。
- 仓库内无任何真实密钥/IP/域名——全部来自环境变量(见下)。

部署

A. 公共 VPS(博主侧)

1. 放 broker 与 service:
mkdir -p /opt/dsh-relay-broker /var/lib/dsh-relay-broker
cp relay-broker/dsh-relay-broker.mjs /opt/dsh-relay-broker/
cp relay-broker/dsh-relay-broker.service /etc/systemd/system/
cp relay-broker/dsh-relay-broker.env.example /etc/dsh-relay-broker.env
编辑 /etc/dsh-relay-broker.env,填 DSH_RELAY_PUBLIC_HOST + DSH_RELAY_JOIN_TOKEN
systemctl daemon-reload && systemctl enable --now dsh-relay-broker

2. 配 nginx(参考 nginx/relay.example.com.conf,把 relay.example.com 换成你的域名,配好 TLS/ACME)。
3. ⚠️ 若域名挂了 CDN/WAF:在 CDN 控制台给 /plugins/(建议连 /api/、/m/)加「不缓存 / 放行」规则,否则边缘会拦掉 DSH 插件 bundle(详见 docs/TROUBLESHOOTING.md)。

B. 桌面(Windows)

1. 设环境变量(也可写进 dsh-common.ps1 顶部的默认值): $env:DSH_RELAY_PUBLIC_HOST = "relay.example.com" # 公网域名 $env:DSH_RELAY_HOST = "123.45.67.89" # VPS 的 SSH host $env:DSH_RELAY_USER = "root" $env:DSH_RELAY_KEY_PATH = "$env:USERPROFILE\.ssh\id_rsa" # 能免密 SSH 的私钥 $env:DSH_WEB_PORT = "3081"

2. 一次性注册(把 <你的joinToken> 换成 VPS 上 DSH_RELAY_JOIN_TOKEN 的值): .\launcher\setup-dsh-public-relay.ps1 -JoinToken <你的joinToken>

3. 启动(会注册→起 web→建隧道→拉起 supervisor): .\launcher\launch-dsh.ps1

4. 手机/远程浏览器打开启动日志里打印的公网地址即可;桌面 DSH 的「手机远程」(remote-web-ui)面板也会自动同步 publicBaseUrl。

环境变量一览(桌面侧,dsh-common.ps1)

| 变量 | 默认 | 说明 |
| DSH_RELAY_PUBLIC_HOST | relay.example.com | 公网域名(nginx server_name)|
| DSH_RELAY_HOST | relay.example.com | VPS SSH 目标 |
| DSH_RELAY_USER | root | VPS SSH 用户 |
| DSH_RELAY_KEY_PATH | ~/.ssh/id_rsa | 免密 SSH 私钥 |
| DSH_RELAY_API | https://<PUBLIC_HOST>/_relay/register | 注册端点(一般不用改)|
| DSH_RELAY_JOIN_TOKEN | — | 首启动注册 token |
| DSH_WEB_PORT | 3081 | 本地 dsh web 端口 |

许可证

MIT。
预览分享卡片长什么样 ↓lileikeji/dsh-public-relay
分享 · DeepSeek Harness Hub
lileikeji/dsh-public-relay

让 NAT 后的本地 Web UI 通过域名远程访问

这是你的仓库?认领条目

回到顶部