# FrpDesk **Repository Path**: littleluoCode/frp_desk ## Basic Information - **Project Name**: FrpDesk - **Description**: FrpDesk:一个专注于Frp内网穿透技术的开源项目,提供简洁易用的管理界面,支持多用户和多环境配置,旨在简化内网服务的访问与管理。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-18 - **Last Updated**: 2026-04-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FrpDesk 一个现代化的 FRP(Fast Reverse Proxy)桌面管理工具,使用 Flutter 构建。 - 🚀 **跨平台桌面** — Windows / macOS / Linux - 🎯 **面向 frpc** — 可视化管理与日常运维 ## 功能特性 - 🎛️ **服务管理** — 启动、停止和监控 FRP 客户端(frpc),连接状态与运行时探测 - 🧩 **代理配置** — 可视化管理代理规则,支持 TOML 编辑与部分扩展能力(如 STCP 等) - ⚙️ **全局设置** — FrpDesk 安装目录、FRPC 目录、可执行文件与配置文件自动识别;自动启动 frpc;frpc 目录迁移向导 - 📋 **实时日志** — 查看 FRP 运行日志与诊断信息 - 🩺 **诊断面板** — 在设置「其他配置」查看 frpc 版本、配置风格(modern / legacy / mixed)、实际配置路径并一键刷新 - 🪟 **系统托盘** — 最小化到托盘、右键菜单、关窗策略(退出 / 最小化到托盘) - 🎨 **主题** — 浅色 / 深色主题切换与统一主题色体系 - 🔄 **关于与更新(Windows)** — 启动后或服务页芯片/关于页触发联网检查(优先 Gitee API,必要时 GitHub);**发现新版本后在界面确认**,再下载 Inno/ZIP 并完成静默安装或便携覆盖(可配置间隔与开关);亦可浏览器打开发行页 ## 功能更新与开发状态 > 图例:**✅** 已落地 **⬜** 待办 / 规划中(随版本更新本列表)。 - ✅ 🧭 **核心与界面** - ✅ 服务启停、运行状态与日志 - ✅ 代理列表与 TOML 编辑 - ✅ 浅色 / 深色主题 - ✅ 系统托盘、关窗策略与退出流程 - ✅ 🗂️ **设置与迁移** - ✅ 安装目录 / FRPC 路径与可执行文件、配置自动识别 - ✅ frpc 目录缺失时的迁移向导与「重置首次提示」 - ✅ 诊断页:frpc 版本、配置风格与路径可观测 - ✅ 📦 **打包与展示** - ✅ Windows 任务栏与 EXE 嵌入图标(`windows/runner/resources/app_icon.ico`) - ✅ 关于页版本号(`AppConstants`) - ✅ 🌐 **检查与更新(Windows)** - ✅ 启动后与手动检测共用同一管线:解析发行版 API(Gitee → GitHub);**有新版本先进 `updateAvailable`,用户确认后再下载安装** - ✅ 关于页「检测更新」/「立即更新」与服务页右上角 **版本芯片**(悬停提示、固定宽度) - ✅ 双通道常量(`releasePageUrlGitee` / `releasePageUrlGitHub`) - ⬜ 双源并行竞速(当前为顺序请求) - ⬜ SemVer 以外与 `+build` / 远端 tag 的精细对齐 - ⬜ 更新失败自动重试与退避(当前为间隔限制 + 关于页提示) - ⬜ 🖥️ **跨平台更新** - ⬜ macOS / Linux 静默或包管理式更新 - ⬜ 增量 / 差分更新 🔧 **维护提示**:发版前对齐 **`pubspec.yaml`**(`x.y.z+build`)、**`lib/core/constants/app_constants.dart`**(`appVersion` / `buildNumber`)与 **`installer/frpdesk.iss`**(`MyAppVersion`);发行附件文件名建议含 `FrpDesk`、`Setup`、`x64` 等便于自动选中安装包。 ## 自动更新(Windows 说明) 1. 📝 在 `lib/core/constants/app_constants.dart` 中配置 **`releasePageUrlGitee`** 与/或 **`releasePageUrlGitHub`**(仓库页或 `releases` 页均可,需能解析出 `owner/repo`)。 2. 📤 在 **Gitee / GitHub 发行版** 上传与 Inno 或与脚本一致的 **Windows `.exe` / `.zip`**;**tag / 发行版名称** 所代表的版本须**高于**当前 `AppConstants.appVersion` 才会提示更新。 3. ✅ **用户确认**:应用在界面进入「可更新」状态后,需在**关于页**或**服务页版本芯片**点击确认,才会开始下载并无缝安装(或便携 zip 流程);不会不经提示直接后台静默安装。 4. 🎚️ 可调参数:`enableSilentBackgroundUpdate`、`silentBackgroundUpdateDelaySeconds`、`silentUpdateMinIntervalHours`、`silentBackgroundUpdateInDebug`、`windowsSetupSilentArgs`(需与 `installer/frpdesk.iss` 一致)。 5. 🐛 调试模式下默认**不**跑后台自动检查,避免开发时频繁请求;需要调试时可打开 `silentBackgroundUpdateInDebug`。 ## 系统要求 - 💻 **平台**:Windows / macOS / Linux(静默自动更新仅 **Windows**) - 📌 **Flutter**:SDK >= 3.3.0 - 🔗 **FRP**:客户端 **frpc** 已安装或可被指向 ## 快速开始 ### 📥 安装依赖 ```bash flutter pub get ``` ### ▶️ 运行应用 ```bash flutter run -d windows # Windows flutter run -d macos # macOS flutter run -d linux # Linux ``` ### 🏗️ 构建发布版本 ```bash flutter build windows --release flutter build macos --release flutter build linux --release ``` 📌 Windows 安装包可使用仓库内 `installer/frpdesk.iss`(Inno Setup 6)在构建产物目录上打包。 ## 项目结构 ``` lib/ ├── app/ # 应用核心 │ ├── app_bootstrap.dart # 应用启动和重载 │ ├── app_shell.dart # 主界面框架、启动后静默更新调度 │ └── app_theme.dart # 主题配置 ├── core/ # 核心功能 │ ├── constants/ # 应用常量(版本、更新 URL、静默更新开关等) │ ├── models/ # 数据模型 │ ├── services/ # 业务服务(设置、FRP 运行时、静默更新等) │ ├── utils/ # 工具(安装路径、发行 URL 解析等) │ └── widgets/ # 通用组件 ├── features/ # 功能模块 │ ├── dashboard/ # 服务管理(含 Windows 版本/更新芯片) │ ├── proxies/ # 代理配置 │ ├── settings/ # 设置页面 │ ├── logs/ # 日志查看 │ └── about/ # 关于(检测更新、浏览器发行页) └── main.dart # 应用入口 ``` ## 技术栈 - 🎨 **Flutter** — 跨平台 UI - ♻️ **Riverpod** — 状态管理 - 🪟 **window_manager** — 桌面窗口 - 🧿 **tray_manager** — 系统托盘 - 💾 **shared_preferences** — 本地存储 - 📂 **file_picker** — 目录选择 - 🔗 **url_launcher** — 打开发行页 - 🌍 **http** — 发行版 API、安装包下载 - 🔢 **pub_semver** — 版本比较 ## 开发说明 ### 🧩 状态管理 项目使用 Riverpod,常见 Provider 包括: - `settingsProvider` — 应用设置 - `frpRuntimeProvider` — FRP 运行状态 - `selectedNavProvider` — 导航 - `appUpdateNotifierProvider` — 静默 / 手动更新流程状态 ### 🎨 主题定制 在 `lib/app/app_theme.dart` 与 `lib/core/theme/app_colors.dart` 中维护主题与色板。 ### ➕ 添加新功能 1. 在 `lib/features/` 下新增功能模块 2. 在 `app_shell.dart` 中注册导航项 3. 实现页面与必要 Provider ## 贡献 🙌 欢迎提交 Issue 和 Pull Request! ## 许可证 📄 本项目仅供学习和个人使用。 ## 相关链接 - 📘 [Flutter 官方文档](https://docs.flutter.dev/) - 🔌 [FRP 项目](https://github.com/fatedier/frp) - ♻️ [Riverpod 文档](https://riverpod.dev/)