前言¶
DSH 的 Web 界面通常运行在本机或内网环境里。当需要在手机上访问、从外网打开会话,或者希望保留一个可自控的公网入口时,单纯依赖本机端口会不方便。dsh-web-remote-frp 是 Casually 维护的 DSH 插件,面向“手机 / 外网远程访问”这一场景,把公网通道实现为 frp 内网穿透,同时保留局域网 HTTP / HTTPS 直连。
下面介绍该插件的定位、核心功能、安装方式和基本用法。
这是什么¶
dsh-web-remote-frp 是一个 DSH 远程访问插件,许可证为 MIT。它在 DSH 插件体系里增加远程访问入口,提供 frp 公网穿透、局域网直连、token 鉴权、gzip 压缩和机器人通道等能力。
它的目标是让 DSH Web 可以被局域网设备访问,也可以在部署了 frps 的公网服务器上形成可配置的远程访问入口。
核心功能¶
- frp 公网穿透:frpc 缺失时自动从 GitHub Releases 下载最新版;支持 tcp / http / https 三种代理模式。
- 局域网直连:支持 HTTP + HTTPS;HTTPS 自动生成自签名证书,零配置。
- 独立开关:局域网与公网可单独开、关,互不影响。
- 安全认证:每次启动生成随机令牌;使用 HttpOnly Cookie;局域网可免 token;公网访问始终需要 token。
- 代理压缩:反向代理自动 gzip 压缩,提升大历史会话加载速度。
- 侧边栏入口:手机快捷按钮常驻侧栏,刷新不消失。
- 机器人通道:支持微信、QQ(NapCat)、Telegram、钉钉、飞书、企业微信。
安装与启用¶
先在 DSH profile 目录下执行安装命令:
pnpm add dsh-web-remote-frp
安装后,在 profile 的 package.json 中把插件加入 dsh.profile.bundles 数组:
{
"dsh.profile.bundles": [
"dsh-web-remote-frp"
]
}
然后启动 DSH Web:
dsh web
注意:bundle 方式安装或更新后,必须重启 DSH;bundle 变更不支持热加载。若使用 cordis.patch.yml 方式接入,会被 HMR 热加载。
如果 pnpm 11 对刚发布版本报新发布包年龄校验错误,可加参数重试:
pnpm add dsh-web-remote-frp --config.minimumReleaseAge=0
基础配置¶
插件可在 profile 的 cordis.patch.yml 中插入配置。需要关注的配置项包括:
frpServerAddr:frps 服务器地址;留空则仅局域网可用。frpServerPort:frps 服务器端口。frpAuthToken:frps 认证 token。frpProxyType:代理模式;已核实支持 tcp / http / https 三种模式。frpRemotePort:公网访问端口。
示例结构如下,值按你的 frps 环境填写:
- insert:
- id: web-remote-frp
config:
frpServerAddr: "your-frps-host"
frpServerPort: <frps-port>
frpAuthToken: "<frps-auth-token>"
frpProxyType: "tcp"
frpRemotePort: <remote-port>
如果只是在本机或局域网使用,可以把 frpServerAddr 留空,插件则仅局域网可用。
典型用法¶
查看状态与 token¶
在本机运行:
curl http://127.0.0.1:3080/frpremote/info
通过返回信息查看状态并提取 token。公网访问始终需要 token;token 变更后,旧链接和旧 Cookie 会立即失效。
重新开启局域网¶
当没有 GUI、或局域网开关被关闭时,可在本机执行:
curl -s -X POST http://127.0.0.1:3080/frpremote/control \
-H 'content-type: application/json' \
-d '{"action":"lan:start"}'
执行后,再确认状态:
curl http://127.0.0.1:3080/frpremote/info
公网访问¶
公网隧道需要一台有公网 IP 的服务器运行 frps。配置好 frpServerAddr、frpServerPort、frpAuthToken、frpProxyType、frpRemotePort 后,公网入口通过 frp 隧道暴露。
公网访问始终需要 token。可从 /frpremote/info 查看状态并提取当前 token。
适用场景与注意¶
适合以下情况:
- 希望从手机或外网访问 DSH Web 界面。
- 希望公网入口由自己部署的 frps 服务器提供。
- 希望局域网与公网分别开关,避免互相影响。
- 需要微信、QQ、Telegram、钉钉、飞书、企业微信等机器人通道接入。
使用前注意:
- 插件以当前 dsh 进程权限运行。安装前应检查源码、依赖和 MIT 许可证。
- 公网访问始终需要 token。进程重启、
renew动作、保存配置重启都会重新生成 token;遇到旧链接失效,先确认 token 是否已变化。 frpServerAddr留空时仅局域网可用;使用公网隧道需要 frps 服务器。- bundle 方式更新后必须重启 DSH;
cordis.patch.yml方式会被 HMR 热加载。 - 与
dsh-web-remote的 DOM id、HTTP 路由、localStorage 键前缀不同,理论上可同时安装互不冲突。
资源¶
- 社区目录:https://www.skillhub.cn/plugins/Casually/dsh-web-remote-frp
- GitHub:https://github.com/Casually/dsh-web-remote-frp