内容提要
作者开发了开源项目 dshoo,可通过一个网站远程管理多台设备上的 DeepSeek Harness。服务端为 Go+SQLite 单二进制,负责登录、实例列表和请求转发;各设备安装插件后主动建立 WebSocket 隧道,无需公网 IP 或开放入站端口,即可完整访问本机 dsh。用户登录后点击卡片切换设备,支持手机、平板等浏览器使用。作者强调服务端账号等同最高权限,须使用 HTTPS 和强密码。
延伸解读
反向隧道如何绕开公网IP限制
dshoo 的核心是设备主动向服务器建立 WebSocket 隧道,而非服务器主动连接设备。这意味着 NAS、软路由、公司电脑等没有公网 IP、也不方便做端口映射的设备,只要能够出网就能接入。所有 HTTP、SSE、WebSocket 请求都复用同一条隧道,因此浏览器访问到的是完整的 dsh 界面,而不是被裁剪的功能。设备侧的 dsh 仍然只监听回环地址,插件在本机发起的请求与本地浏览器走同一套鉴权,外部访问不会直接暴露 dsh 端口。
部署门槛与常驻设备的选择
服务端是 Go + SQLite 的单二进制,用 Docker 部署只需映射端口并设置公网地址,再套一层 Caddy 或 Nginx 提供 HTTPS。首次访问时由第一个用户创建账号密码,没有默认凭据。设备侧安装插件后填写服务器地址和账号即可连接,dsh 运行期间断线会自动重连。文章建议将 dsh 以无头模式常驻在 NAS、软路由或树莓派上,配合 systemd 或 Docker 的重启策略,机器重启后实例列表短暂显示离线便会恢复。
账号即最高权限的安全边界
作者明确提醒,dshoo 的服务端账号等同于所有设备的最高权限,因为 dsh 能在本机执行命令、读写文件。因此服务端必须放在 HTTPS 之后,使用强密码,避免裸奔在公网。设备侧不开放入站端口,隧道由设备主动连出,可减少被扫描的风险。实例之间按账号隔离,浏览器与实例的 cookie 分开,插件自行保管本机 dsh 的凭据。如果只是个人使用,服务器可以只监听内网,通过 Tailscale 等组网访问,连公网都不必暴露。
Q&A
dshoo 是什么?它主要解决什么问题?
dshoo 是一个开源项目,用于通过一个网站远程管理多台设备上的 DeepSeek Harness(dsh)。它解决了每台设备上的 dsh 相互孤立、需要分别远程桌面或 SSH 端口转发才能访问的问题,让用户在一个网页登录后即可看到所有设备并点击切换。
dshoo 是如何在不开放公网 IP 和入站端口的情况下访问设备的?
每台设备安装 dsh 插件后,插件会主动向 dshoo 服务器建立一条 WebSocket 隧道并保持连接。浏览器访问服务器时,服务器将请求拆帧通过隧道送到设备,插件在本机还原为普通 HTTP/WebSocket 请求交给 127.0.0.1 上的 dsh,再把响应原路返回。因此设备无需公网 IP,也不开放任何入站端口。
如何部署 dshoo 服务端?
最省事的方式是用 Docker 运行官方镜像 ghcr.io/imaegoo/dshoo:latest,映射端口并挂载数据卷,设置 DSHOO_PUBLIC_URL 环境变量,然后用 Caddy 或 Nginx 套一层 HTTPS。首次访问时会引导创建账号和密码,没有默认密码。
在设备上如何安装和配置 dshoo 插件?
在 dsh 中安装插件:桌面版通过「插件 → 添加插件」输入 dshoo 并启用;命令行使用 dsh plugin --profile web add dshoo(桌面版将 web 换成 desktop)。安装后打开「设置 → 远程访问」,填写服务器地址、用户名和密码,点击「连接」即可。只要 dsh 运行,断线后插件会自动重连。
dshoo 支持哪些设备和使用场景?
dshoo 支持 Windows、macOS、Linux、iPad、Android 手机等任何有浏览器的设备,无需安装 App。典型场景包括:在公司浏览器访问家里台式机继续昨晚的会话;用手机 5G 访问 NAS 整理照片;临时执行只在那台机器上能跑的命令。也适合将 dsh 挂到 NAS、软路由、树莓派等常年开机的设备上。
使用 dshoo 有哪些安全注意事项?
dshoo 的服务端账号等同于所有设备的最高权限,因为 dsh 能在本机执行命令和读写文件。因此必须:将服务端放在 HTTPS 后面,不要裸奔公网;使用强密码;设备侧不开放端口;实例间按账号隔离;如果仅自己使用,可只监听内网并通过 Tailscale 等组网访问,不暴露公网。