前言¶
对于需要从同一局域网手机访问本机 DeepSeek Harness(DSH)Web UI 的场景,通常需要处理设备审批、令牌绑定、限流和移动端排版等问题。dsh-mobile-gate 提供一个独立 Node 网关,反向代理 DSH Web UI,并在访问链路中加入首次访问审批、按设备令牌、每 IP 限流和移动端布局注入。
这是什么¶
dsh-mobile-gate 由 Bernardxu123 维护,许可证为 MIT。它的定位是 DSH 的局域网手机网关:网关监听 0.0.0.0,反向代理 DSH Web UI;首次访问需要本机批准;批准后设备通过 Cookie 领取令牌;同时向代理返回的 HTML 注入移动端适配内容。
核心能力¶
下面介绍已核实的几项能力:
- 代理 HTML 时注入
data-lan-device标记、紧凑排版 CSS 和crypto.randomUUIDpolyfill。 - 首次访问审批:手机第一次访问显示等待本机批准,需要在电脑上手动允许。
- 批准后生成一次性令牌,一次批准只绑定一个浏览器,令牌无法被其他设备复用。
- 每 IP 限流,默认每分钟 120 次请求,超限返回 429。
- 回环地址与本机 LAN IP 直接放行。
- 网关是独立子进程,不修改 DSH 主服务配置,也不动信任栅栏。
- 支持
dsh plugin add、cordis.patch.yml静态挂载或动态插件方式安装,移除即终止。
安装与启用¶
如果已经在本机取得插件目录,可以在该目录中执行安装命令:
dsh plugin --profile web add ./dsh-mobile-gate
项目还支持 cordis.patch.yml 静态挂载或动态插件方式安装。无论使用哪种方式,移除插件后网关终止。
典型用法¶
启用后,先在电脑浏览器打开管理页:
http://127.0.0.1:3088/lan-gate/admin
然后让手机连接同一 Wi-Fi,访问管理页中列出的地址,例如:
http://192.168.31.108:3088
手机首次访问会显示等待批准。回到电脑管理页的「待批准设备」中,为这台设备选择访问方式:
- 手机
- 电脑
- 自动
点允许后,在手机端刷新页面,即可领取令牌并进入 DSH Web UI。
如果希望在本机直接查询网关状态,可以执行:
curl http://127.0.0.1:3088/lan-gate/status
批准示例如下,其中 kind 为 phone:
curl -X POST http://127.0.0.1:3088/lan-gate/action -H 'Content-Type: application/json' -d '{"action":"approve","ip":"192.168.31.125","kind":"phone"}'
配置与状态¶
默认环境变量如下:
LAN_GATE_PORT=3088
LAN_GATE_HOST=0.0.0.0
LAN_GATE_TARGET_PORT=3080
LAN_GATE_RATE_LIMIT=120
LAN_GATE_PORT 表示网关监听端口,LAN_GATE_HOST 表示监听地址,LAN_GATE_TARGET_PORT 表示 DSH Web UI 目标端口,LAN_GATE_RATE_LIMIT 表示每 IP 每分钟请求上限。
端口被占用时,网关会自动递增尝试,最多增加 20 个端口。设备审批记录持久化在:
~/.dsh/lan-gate-state.json
待批准列表是内存态,重启后需要设备重新访问触发。
适用场景与注意¶
适合在可信局域网内把 DSH Web UI 接入手机,尤其希望保留本机审批、设备令牌和限流时。使用注意:
- 网关没有独立认证层,仅限可信局域网使用。
- DSH Web UI 走明文 HTTP,令牌经 Cookie 传递,请勿跨不可信网络使用。
- 建议定期在管理页执行全部撤销,并重新审批设备。
- 插件以当前
dsh进程权限运行。安装前应检查源码,并确认 MIT 许可证符合你的使用要求。
项目地址¶
GitHub:
https://github.com/Bernardxu123/dsh-mobile-gate.git