# frpc-desktop **Repository Path**: dev-linhu/frpc-desktop ## Basic Information - **Project Name**: frpc-desktop - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-08 - **Last Updated**: 2026-07-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FRPC Desktop [English](README_EN.md) | 中文 一款基于 [Tauri 2](https://tauri.app/) 构建的现代化 FRP 客户端桌面应用,提供可视化的代理管理、实时状态监控、日志中心等功能,支持 macOS / Windows / Linux。 ![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg) ![Platform](https://img.shields.io/badge/platform-macOS%20%7C%20Windows%20%7C%20Linux-lightgrey.svg) ## 功能特性 - **Dashboard 仪表盘** — 实时展示 FRPC 连接状态、CPU/内存占用、在线时长、今日流量等运行指标 - **服务管理** — 卡片化展示代理服务,支持 TCP / UDP / HTTP / HTTPS / STCP / XTCP / SUDP / TCPMUX 协议,提供新增、编辑、删除、启用/停用等操作 - **服务端状态同步** — 定时轮询 FRP 服务端 API,获取每个代理的在线状态、实时流量、连接数等信息 - **FRPC Dashboard 内嵌** — 应用内直接嵌入 FRPC 原生 Web Dashboard,无需切换浏览器 - **日志中心** — 实时查看 FRPC 运行日志,支持等级过滤(INFO / WARN / ERROR)、搜索、下载和清空 - **操作日志** — 记录所有服务变更和 FRPC 操作行为,支持审计追溯 - **请求日志** — 记录前端与 Tauri 后端的全部 invoke 调用,包括命令名、参数、响应结果和耗时 - **配置管理** — 支持配置的导入、导出和恢复默认,自动生成 `frpc.toml` 配置文件 - **FRPC 进程管理** — 一键启动/停止/重载,支持预编译和源码编译两种启动方式 - **跨平台支持** — 基于 Tauri 2,使用系统原生 WebView,安装包体积小、资源占用低 ## 技术栈 | 层级 | 技术 | |------|------| | 桌面框架 | Tauri 2 | | 前端框架 | React 19 + TypeScript 5.8 | | 构建工具 | Vite 7 | | UI 组件库 | Ant Design 6 | | 状态管理 | Zustand 5 | | 路由 | React Router 7 | | 后端语言 | Rust | | HTTP 客户端 | reqwest | | 异步运行时 | tokio | ## 项目结构 ``` frpc-desktop/ ├── src/ # 前端源码 │ ├── components/ # 可复用组件 │ │ ├── CreateServiceModal.tsx # 创建服务弹窗 │ │ ├── GlobalLoading.tsx # 全局 Loading 遮罩 │ │ ├── ServiceCard.tsx # 服务卡片 │ │ ├── ServiceDrawer.tsx # 服务详情抽屉 │ │ ├── StatCard.tsx # 统计卡片 │ │ └── StatusBar.tsx # 顶部状态栏 │ ├── layouts/ │ │ └── MainLayout.tsx # 主布局(侧边栏 + 顶栏 + 内容区) │ ├── pages/ │ │ ├── Dashboard.tsx # 首页仪表盘 │ │ ├── DashboardWeb.tsx # FRPC Dashboard 内嵌页 │ │ ├── Services.tsx # 服务管理页 │ │ ├── Logs.tsx # 日志中心 │ │ ├── Settings.tsx # 设置页 │ │ └── About.tsx # 关于页 │ ├── store/ │ │ └── appStore.ts # Zustand 全局状态 │ ├── types/ │ │ └── index.ts # TypeScript 类型定义 │ ├── utils/ │ │ └── request.ts # Tauri invoke 封装 │ ├── styles/ │ │ └── global.css # 全局样式 │ ├── App.tsx # 应用入口 │ └── main.tsx # 渲染入口 ├── src-tauri/ # Tauri 后端(Rust) │ ├── src/ │ │ ├── controller/ │ │ │ ├── frpc.rs # FRPC 进程管理 & 日志 │ │ │ ├── proxy.rs # 代理 CRUD & 服务端状态 │ │ │ ├── setting.rs # 配置读写 & 操作日志 │ │ │ ├── response.rs # 统一响应结构 │ │ │ └── mod.rs │ │ ├── utils/ │ │ │ ├── sys.rs # 系统工具(端口检测等) │ │ │ ├── time.rs # 时间工具 │ │ │ └── mod.rs │ │ ├── lib.rs # Tauri 入口 │ │ └── main.rs │ ├── Cargo.toml │ └── tauri.conf.json ├── docs/ # 文档 ├── public/ # 静态资源 ├── package.json ├── vite.config.ts └── tsconfig.json ``` ## 快速开始 ### 环境要求 - [Node.js](https://nodejs.org/) >= 18 - [Rust](https://www.rust-lang.org/tools/install) >= 1.70 - [Tauri 2 系统依赖](https://v2.tauri.app/start/prerequisites/) ### 安装依赖 ```bash # 安装前端依赖 npm install ``` ### 开发模式 ```bash # 启动 Tauri 开发服务器(前端热更新 + Rust 后端) npm run tauri dev ``` ### 构建发布 ```bash # 构建生产版本(安装包位于 src-tauri/target/release/bundle/) npm run tauri build ``` 构建产物: - **macOS**: `.dmg` / `.app` - **Windows**: `.msi` / `.exe` - **Linux**: `.deb` / `.AppImage` ## 使用说明 ### 首次配置 1. 启动应用后,进入 **设置 → 服务端** 页面 2. 填写 FRP 服务端地址和端口: - **Server 地址**:FRP 服务端 IP - **Server 端口**:FRP 服务端通信端口(默认 `7000`) - **服务端 Web 端口**:FRP 服务端 Web API 端口(默认 `7500`),用于查询代理状态和流量 - **Token**:服务端认证令牌(如有) 3. 进入 **设置 → Dashboard** 页面,配置本地 Dashboard 地址和端口(默认 `127.0.0.1:7500`) 4. 进入 **设置 → 客户端** 页面,配置 FRPC 可执行文件路径(可通过「选择」按钮指定,或前往 GitHub 下载) ### 切换内网环境 当你处于 **内网(局域网)** 环境,需要连接内网的 FRP 服务端时: 1. 打开 **设置 → 服务端** 2. 将 **Server 地址** 修改为内网 IP 或 `127.0.0.1`(如 FRP 服务端在本机) - 示例:`192.168.1.100` 或 `10.0.0.5` 3. 确认 **Server 端口**(默认 `7000`)和 **服务端 Web 端口**(默认 `7500`)与内网服务端一致 4. 点击 **保存配置** 5. 回到首页,点击 **启动** 按钮即可连接内网 FRP 服务端 > **提示**:如果 FRPC Dashboard 也需要在内网访问,请同步修改 **设置 → Dashboard** 中的 WEB 地址。 ### 切换外网环境 当你需要连接 **外网(公网)** 的 FRP 服务端时: 1. 打开 **设置 → 服务端** 2. 将 **Server 地址** 修改为公网 IP 或域名 - 示例:`frp.example.com` 或 `203.0.113.50` 3. 确认端口配置与外网服务端一致(注意防火墙/安全组是否放行对应端口) 4. 如果服务端启用了 TLS,请打开 **TLS 加密** 开关 5. 填写 **Token**(如果服务端要求认证) 6. 点击 **保存配置** 7. 回到首页,点击 **启动** 按钮即可连接外网 FRP 服务端 > **提示**:切换网络环境后,建议点击首页的 **重载** 按钮或先 **停止** 再 **启动**,确保 FRPC 使用最新配置重新连接。 ### 创建代理服务 1. 进入 **服务管理** 页面,点击 **新建服务** 2. 选择协议类型(TCP / UDP / HTTP / HTTPS 等) 3. 填写对应的配置字段(名称、本地 IP、本地端口、远程端口/域名等) 4. 可选:展开 **高级配置** 设置 Proxy Protocol、Health Check、Bandwidth Limit、TLS 等 5. 点击 **确定** 创建,服务将自动启用 ## 配置存储 应用配置存储在用户目录下: ``` ~/.frpc-desktop/ ├── config.json # 应用主配置(服务端、客户端、代理列表等) ├── frpc.toml # 自动生成的 FRPC 配置文件 ├── frpc.log # FRPC 运行日志 └── operation_logs.json # 操作日志 ``` ## 开发指南 ### 仅构建前端 ```bash npm run build ``` ### 代码检查 ```bash npx tsc --noEmit ``` ## 相关链接 - [FRP 项目](https://github.com/fatedier/frp) — FRP 内网穿透工具 - [Tauri 2 文档](https://v2.tauri.app/) — Tauri 桌面应用框架 - [Gitee 仓库](https://gitee.com/dev-linhu/frpc-desktop) — 本项目 Gitee 镜像 ## License Apache-2.0