frp-desktop

May 30, 2026 · View on GitHub

release license: MIT

跨平台的 frp 图形化客户端。把 frpc.toml 这种命令行工具变成图形化、有命名约束、能管多个 frps 服务端的桌面应用。

适用于 Windows / macOS / Linux。基于 Tauri 2 + Vue 3 + TypeScript。

为什么要做这个

直接用 frp 官方 CLI,常见问题:

  1. 多个 proxy 写在一个 frpc.toml 里,启停粒度粗——要么全开要么全关
  2. 多 frps 服务端切换 麻烦,每次要改配置
  3. frps dashboard 在浏览器里看,每次输 URL 输密码
  4. 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 已阻止…」:

  1. 点窗口里的「更多信息」(More info)
  2. 出现「仍要运行」(Run anyway)按钮,点它即可正常安装

macOS:若提示"无法打开,因为无法验证开发者":

  1. 打开「系统设置 → 隐私与安全性」
  2. 拉到底部,找到被拦截的 frp_desktop,点「仍要打开
  3. 或者在「访达」里右键应用图标 →「打开」→ 再点「打开」

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

使用

  1. 添加 frps 服务端:填 host、port、token;可选填 dashboard URL + 用户名密码
  2. 创建项目:例如 nascompany-vpnhome-iot(小写字母/数字/连字符,2~32 字符)
  3. 在项目下添加 Proxy
    • 选项目和服务端
    • 填用途(如 sshwebui),name 会自动拼成 {项目}-{用途}
    • 必填描述(≥10 字)
    • 配置类型 / 本地端口 / 远端端口 / 域名等
  4. 启动 Proxy:点「启动」,frpc 子进程运行,可点「日志」查看实时输出
  5. 查看 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。