frp-desktop
May 30, 2026 · View on GitHub
跨平台的 frp 图形化客户端。把 frpc.toml 这种命令行工具变成图形化、有命名约束、能管多个 frps 服务端的桌面应用。
适用于 Windows / macOS / Linux。基于 Tauri 2 + Vue 3 + TypeScript。
为什么要做这个
直接用 frp 官方 CLI,常见问题:
- 多个 proxy 写在一个
frpc.toml里,启停粒度粗——要么全开要么全关 - 多 frps 服务端切换 麻烦,每次要改配置
- frps dashboard 在浏览器里看,每次输 URL 输密码
- Windows 下
frpc.exe直接弹一个黑色控制台窗口,关掉=中断
frp-desktop 解决:
- ✅ 单个 proxy 维度的启停,UI 操作即可
- ✅ 同一 frps 下的多个 proxy 共用一个 frpc 进程(不浪费),不同 frps 各自独立
- ✅ 多 frps 服务端配置,一处管理;每个服务端下直接列它的 proxy
- ✅ 应用内查看 frps dashboard(serverinfo + proxy 列表 + 流量统计)
- ✅ 系统托盘常驻、关窗口不退出、开机自启
- ✅ Windows 下 frpc 默认隐藏控制台窗口,可在设置里打开(调试用)
- ✅ 顺带提供本机端口查看器(进程 / PID / 协议 / 地址 / 端口 / 状态,可排序过滤)
截图
截图待补。可在 Releases 下载安装包后体验。
安装
直接下载
到 Releases 下载对应平台的安装包:
| 平台 | 文件 |
|---|---|
| Windows | .msi 或 .exe |
| macOS (Apple Silicon) | *_aarch64.dmg |
| macOS (Intel) | *_x64.dmg |
| Linux | .AppImage 或 .deb |
frpc 二进制(v0.69.0)已随包内置,无需另外下载。
首次打开的安全提示(重要)
本应用暂未购买代码签名证书,所以首次打开时系统会提示"未知发布者"。这不代表软件有问题,是所有未签名应用的通用提示,按下面操作放行即可:
Windows:双击安装包后若弹出蓝色窗口「Microsoft Defender SmartScreen 已阻止…」:
- 点窗口里的「更多信息」(More info)
- 出现「仍要运行」(Run anyway)按钮,点它即可正常安装
macOS:若提示"无法打开,因为无法验证开发者":
- 打开「系统设置 → 隐私与安全性」
- 拉到底部,找到被拦截的 frp_desktop,点「仍要打开」
- 或者在「访达」里右键应用图标 →「打开」→ 再点「打开」
Linux AppImage:下载后需要加可执行权限:chmod +x frp_desktop_*.AppImage
从源码构建
需要:Node.js 20+ / pnpm 9+ / Rust 1.78+。
git clone https://github.com/jamiu99/frp-desktop.git
cd frp-desktop
pnpm install
# 下载 frpc sidecar(首次构建必需,已锁定版本 0.69.0)
bash src-tauri/binaries/fetch.sh
# 开发模式
pnpm tauri dev
# 打包发布
pnpm tauri build
Linux 额外系统依赖
sudo apt install -y \
libwebkit2gtk-4.1-dev libsoup-3.0-dev libgtk-3-dev \
libayatana-appindicator3-dev librsvg2-dev libxdo-dev \
patchelf build-essential pkg-config
使用
- 添加 frps 服务端:填 host、port、token;可选填 dashboard URL + 用户名密码
- 创建项目:例如
nas、company-vpn、home-iot(小写字母/数字/连字符,2~32 字符) - 在项目下添加 Proxy:
- 选项目和服务端
- 填用途(如
ssh、webui),name 会自动拼成{项目}-{用途} - 必填描述(≥10 字)
- 配置类型 / 本地端口 / 远端端口 / 域名等
- 启动 Proxy:点「启动」,frpc 子进程运行,可点「日志」查看实时输出
- 查看 dashboard:在「frps 服务端」页点对应服务端的「查看 dashboard」
自动更新
应用内置自动更新(Tauri updater):
- 启动时静默检查 GitHub Releases,有新版弹窗提示
- 「设置 → 关于 / 更新」可手动检查
- 下载的安装包用 minisign 公钥验签后才安装,安全可靠
- 支持 Windows(.msi/.exe)、macOS(.app)、Linux(AppImage);
.deb/.rpm走系统包管理器,不走应用内更新
进程模型
- 每个 frps 服务端 = 一个 frpc 子进程
- 该服务端下所有启用的 proxy 共享这一个 frpc,多个
[[proxies]]段写到一个 toml 里 - 启停某个 proxy → 重写该 server 的 toml 并重启它的 frpc 进程;不会影响其他服务端
- frpc 进程崩溃或被关掉时,UI 自动检测并把状态切到「已崩溃 / 已停止」
架构
- 桌面外壳:Tauri 2(Rust)
- 前端:Vue 3 + TypeScript + Tailwind v3 + shadcn-vue 风格组件
- 本地存储:单 JSON 文件,路径
app_data_dir/store.json,原子写入 - frpc 集成:调用官方 frpc 二进制(sidecar 模式,随包分发,锁定 v0.69.0)。每个 frps 服务端一个 frpc 子进程,承载该 server 下所有启用 proxy
- frps 接入:调用 frps Admin HTTP API(
/api/serverinfo、/api/proxy/{type})
详细架构决策见 docs/STATUS.md。
数据存储位置
| 平台 | 路径 |
|---|---|
| Windows | %APPDATA%\com.github.jamiu99.frp-desktop\ |
| macOS | ~/Library/Application Support/com.github.jamiu99.frp-desktop/ |
| Linux | ~/.config/com.github.jamiu99.frp-desktop/ |
⚠️ 注意:当前版本 frps token 和 dashboard 密码以明文存在 store.json。文件权限依赖操作系统的用户目录隔离。如有更高安全要求,请勿在多用户环境下使用。
升级 frpc
FRP_VERSION=0.70.0 bash src-tauri/binaries/fetch.sh
会自动下载、sha256 校验、按 Tauri sidecar 命名约定放置全部 6 个 target triple 的二进制。
开发
# 启动 dev 环境(tmux 后台跑 tauri dev + vite,含 frpc sidecar)
./start.sh start
./start.sh logs # 实时日志
./start.sh stop
./start.sh restart
License
MIT © 2026 jamiu99
frp-desktop 内置的 frpc 二进制 © fatedier/frp,遵循 frp 项目自身的 Apache-2.0 License。