• 2.7-Preview Stable

    lxh2875931338 released this 2026-08-26 19:48:30 +08:00 | 0 commits to main since this release

    重大功能更新修复版 —— 架构升级与部署流程重构

    本次版本为 非正统 LTS 版本(2.7 在语义版本中不属于 LTS 序列),因 main 分支在部分场景下存在功能异常与进程管理问题而发布。

    此版本已进行长时间测试,暂无重大功能异常。 3.0-lts 将回归正常语义版本规则。

    本次LTS的核心是 ProcessManager 进程管理模块重构,将 frpc 的管理方式从“基于 PID 文件的简单函数集”升级为“带状态机、冲突检测、健康检查、自动恢复的完整生命周期控制器”。这是 frpc-console 从“frpc 启动器”向“frpc 生命周期控制器”演进的关键版本。

    核心变更

    • 进程管理模块独立 —— 新增 internal/process 包,将进程管理逻辑从 frp.go 中抽离为独立模块,包含状态机、互斥锁、进程属性、实例归属检测等子模块,为长期维护和扩展奠定基础

    • 状态机驱动生命周期管理 —— 从“PID 文件存在即运行”的隐式状态升级为 8 种显式状态(UNKNOWN / STARTING / RUNNING / DEGRADED / CONFLICT / FAILED / STOPPING / STOPPED),状态转换由检测结果驱动,状态语义清晰可追溯

    • 三级健康检查体系 —— 建立 Process Health(PID 存活)+ Admin Health(端口可访问 + 归属验证)+ Service Health(代理 running)的递进式健康检查,不同层级失败对应不同恢复策略

    • FRPReady 绑定 PID —— FRPReady 检测从全局状态改为绑定具体 PID,通过 admin API 读取代理状态确认服务就绪,避免旧实例状态干扰新实例判断

    • 实例归属检测与 CONFLICT 状态 —— DetectFrpcInstances() 通过 PID + ExecPath + CmdLine 三重确认识别系统内所有 frpc 进程,区分 Owned/Unknown 实例,冲突时保留 Owned 实例、清理 Unknown 实例,新增 CONFLICT 状态承载冲突场景

    • RELOADING 中间态 —— Reload 操作期间状态机进入 RELOADING 中间态,看门狗和健康检查在此期间跳过恢复动作,彻底解决 reload 导致旧 PID 消失被误判为 FAILED 的竞态问题

    • 启动超时逻辑修正 —— 超时判断仅对 STARTING 状态生效,已进入 RUNNING 的进程不再受超时影响,解决了长期运行后每 30 秒触发一次超时误判的问题

    • 端口检测升级为归属验证 —— CheckPort() 从仅返回 bool 升级为返回 PortCheckResult(Ready + Err + PID + Process),支持端口归属验证,端口被占用但 PID 不一致时触发 CONFLICT 状态

    • 孤儿进程与僵尸进程防护 —— 启动前自动清理孤儿进程(端口被占用但无有效 PID);启动后通过 goroutine 调用 cmd.Wait() 回收子进程,防止 frpc 退出后变成僵尸进程堆积

    • 进程互斥锁 —— Linux 使用 flock 实现进程间互斥锁,Windows 使用内存锁,防止并发启动/停止操作产生竞态条件

    • 看门狗升级为智能恢复 —— 每 30 秒检查完整状态,根据 Phase 执行差异化恢复策略(CONFLICT → 清理 Unknown 实例;DEGRADED → 重启;FAILED → 自动重启;RELOADING → 跳过检查)

    模块化重构

    • 代码结构模块化 —— 将单体结构拆分为 internal/process、internal/frp、internal/db、internal/auth、internal/api 等独立模块,模块边界清晰,为后续 3.0 控制器架构铺路

    • frp 模块拆分 —— 原 frp.go 拆分为 binary.go(二进制提取)、config.go(模板渲染)、legacy.go(兼容层)、toml.go(TOML 解析),职责单一,便于维护

    • 数据库 Schema v3 升级 —— 新增 admin_port 字段,默认 7400,采用重型迁移策略(建新表 → 迁移数据 → 交换表名)替代 ALTER TABLE,确保数据一致性;v2→v3 迁移自动完成,无需用户干预

    UI 优化

    • 配置页面新增 admin_port 输入框 —— 用户可自定义 frpc admin 端口,默认 7400,保存后自动写入 frpc.toml 的 [webServer] 段

    • 前端状态适配 —— 前端 getFrpcStatus() 从检查 state 字段升级为检查 phase === "RUNNING",与后端状态机对齐

    部署变更

    • Docker 镜像加速自动配置 —— deploy.sh 自动检测 Docker daemon 的 registry-mirrors 配置,检测用户配置和默认地址连通性,按需写入可用镜像源,自动重启 Docker 应用配置

    • frpc 二进制提取路径统一 —— 从 embed 提取的 frpc 二进制统一放到程序同层目录(./frpc),不再写入 ./data/ 持久化目录,避免污染数据目录

    • 日志路径统一 —— frpc 日志从根目录 ./frpc.log 迁移至 ./data/frpc.log,与数据库、配置文件、PID 文件统一存放,前后端路径一致

    修复

    • 修复 reload 触发 STARTING → FAILED 导致旧实例被误杀的问题
    • 修复 startTime 长期运行后每 30 秒触发启动超时误判的问题
    • 修复 FRPReady 检测到旧实例状态导致新实例误判为 RUNNING 的问题
    • 修复 CheckPort() 在容器环境下返回 PID=0 导致端口归属验证失效的问题
    • 修复 2.5-lts 升级到 2.7-preview 时 admin_port 字段缺失导致热加载失败的问题
    • 修复 Windows 编译后 ./data/frpc 路径与 frpc_windows_amd64.exe 不一致的问题

    已知问题

    • work connection pool is full 在瞬时并发高峰时偶发,已通过 poolCount 从 8 调整为 10 缓解,持续观察中
    • Preview 通道尚未经过长期稳定性测试,生产环境请使用 LTS 通道

    升级说明

    • 从 2.5-lts 升级时,数据库 Schema 自动从 v2 迁移至 v3,admin_port 默认值为 7400,无需手动操作
    • frpc.toml 中 [webServer] 段格式需从 addr = "127.0.0.1:7400" 调整为 addr = "127.0.0.1" + port = 7400,新部署自动适配,旧部署升级时模板自动覆盖
    • 建议升级前备份 ./data/ 目录,确保回退路径可用

    版本定位: 2.7-preview 是一个技术预览版,核心目标是验证 ProcessManager 状态机在真实环境中的稳定性和准确性。虽然 P0 级问题已修复,但建议在测试环境中充分验证后再考虑生产部署。

    Downloads
  • 2.5-LTS Stable

    lxh2875931338 released this 2026-08-03 22:23:01 +08:00 | 76 commits to main since this release

    2.5-LTS 是 frpc-console 进入新版语义后的第一个正式 LTS 版本。

    本次版本以 “稳定加固” 为核心目标,在 2.4-lts 紧急修复的基础上,完成了架构升级、部署流程闭环、UI 细节打磨和进程管理优化,是一个可无人值守的长时稳定版本。

    注意,在此版本之后,项目 Preview 通道会进入大规模改动的状态,如无必要,请勿拉取此通道

    🔧 核心改进

    🏗️ 架构升级

    • 数据目录规范化 —— 所有运行时文件(数据库、配置、日志、PID、版本文件)统一迁移至 /app/data 子目录,挂载点从 /app 收窄至 /app/data,彻底解决挂载覆盖二进制文件的问题
    • 版本管理解耦 —— 二进制不再注入版本信息,版本由 deploy.sh 在部署时写入 version.ini 文件,实现版本与二进制完全分离
    • 入口脚本分离 —— 引入 run-deploy.sh 独立入口,实现部署脚本与项目分支解耦,用户只需记住一个入口命令

    🚀 部署优化

    • 旧版本自动迁移 —— 检测到根目录存在旧数据文件时,自动迁移至 data/ 子目录,并保留备份
    • 国内镜像源适配 —— Dockerfile 切换至阿里云镜像源,解决 Alpine DNS 解析不稳定问题
    • PID 文件进程检测 —— frpc 状态检测从 ps | grep 改为基于 PID 文件,更加可靠
    • 僵尸进程回收 —— 在 StartFrpc() 中增加 cmd.Wait() goroutine,子进程退出时自动回收资源

    🎨 UI 优化

    • 字体全系 HarmonyOS Sans SC —— 视觉风格统一化处理
    • Tab 栏布局调整 —— 「用户配置」Tab 移至导航栏最右侧,与退出按钮形成视觉对应
    • 弹窗居中修复 —— 将弹窗从 app-container 内部移至外部,修复因 transform 导致的位置偏移
    • 顶部导航字号优化 —— 品牌名 20px、状态文字 12px、Logo 52×52px,整体比例更协调

    🐛 修复

    • 修复挂载覆盖导致二进制文件不可用的问题
    • 修复 ps | grep 进程检测在容器环境不可靠的问题
    • 修复旧版本升级时数据库路径不兼容的问题
    • 修复弹窗在 transform 容器内无法居中的问题

    📦 升级指南

    📋 版本演进

    2.0-lts      v2 协议 + 迁移引擎
    2.3-preview  基础设施加固
    2.4-lts      紧急修复 + 架构升级
    2.5-lts      稳定加固版(本次发布)
    2.6-preview  Dashboard 集成 + 流量统计(规划中)
    
    Downloads
  • 2.4-LTS Stable

    lxh2875931338 released this 2026-07-31 22:50:25 +08:00 | 86 commits to main since this release

    🚀 2.4-LTS (2026-07-30)

    紧急修复版 —— 架构升级与部署流程重构
    (Docker-LTS通道已于一天前获得更新)
    本次版本为 非正统 LTS 版本(2.4 在语义版本中不属于 LTS 序列),因 main 分支在新架构迁移过程中出现编译阻塞,为快速恢复 LTS 通道可用性而发布。2.5-lts 将回归正常语义版本规则。

    🔧 核心变更

    • 部署架构重构 —— 引入 run-deploy.sh 独立入口,实现部署脚本与项目分支解耦
    • 数据目录规范化 —— 所有运行时文件(数据库、配置、日志、PID)统一迁移至 /app/data 子目录,挂载点从 /app 收窄至 /app/data,彻底解决挂载覆盖二进制文件的问题
    • 版本管理解耦 —— 二进制不再注入版本信息,版本由 deploy.sh 在部署时写入 version.ini 文件
    • PID 文件进程检测 —— frpc 状态检测从 ps | grep 改为基于 PID 文件,更加可靠
    • 旧版本自动迁移 —— 检测到根目录存在旧数据文件时,自动迁移至 data/ 子目录,并保留备份

    ✨ 功能完整

    • Ping 延迟检测(顶部导航实时显示)
    • 用户配置页独立(账户管理与全局配置分离)
    • 401 统一拦截(认证过期自动跳转登录)
    • 声明式数据库迁移引擎(基于 db-history.go)
    • frp v2 协议正式启用(wireProtocol = "v2")

    📦 部署变更

    变更项 旧方案 新方案
    挂载点 -v ${DEPLOY_DIR}:/app -v ${DEPLOY_DIR}/data:/app/data
    数据库路径 /app/frpc-console.db /app/data/frpc-console.db
    配置文件 /app/frpc.toml /app/data/frpc.toml
    版本文件 编译时注入 -ldflags 部署时写入 version.ini

    🐛 修复

    • 修复 main 分支因挂载覆盖导致二进制文件不可用的问题
    • 修复 ps | grep 进程检测在容器环境不可靠的问题
    • 修复旧版本升级时数据库路径不兼容的问题
    Downloads
  • 2.3-Preview Stable

    lxh2875931338 released this 2026-07-28 23:30:22 +08:00 | 123 commits to main since this release

    2.3 技术预览版 (2026-07-28)(non-LTS)

    版本定位:2.3 是 frpc-console 在 LTS 2.0 基础上的技术预览版本,集成了 2.1 的可观测性能力与 2.2 的声明式迁移引擎,同时对部署流程与数据库持久化进行了全面重构。经过多轮边缘场景验证,本版本在基础设施层面已经达到稳定可用状态,建议用于测试环境验证。

    🚀 核心功能

    • Ping 延迟检测:顶部导航实时显示 frpc 到 frps 的延迟,状态图标 + ms 值,直观反映链路质量(2.1)
    • 用户配置页独立:账户管理与全局配置分离,密码修改移至独立 Tab(2.1)
    • 认证过期自动跳转:401 响应统一拦截,自动清除 token 并返回登录页(2.1)
    • 声明式数据库迁移引擎:版本驱动的增量迁移 + 自动备份 + 失败回滚,基于 db-history.go 的 Schema 声明对比(2.2)

    🗄️ 数据库与持久化(2.3 核心改进)

    • 数据库路径统一:数据库文件固定为 ./frpc-console.db(容器内 /app/frpc-console.db),挂载整个 /app 目录,所有运行时文件(.db、.toml、.log、.pid)同时持久化
    • Dockerfile 优化:多阶段构建,自动降级 go.mod 版本(1.26 → 1.21)并执行 go mod tidy,移除宿主机 Go 依赖
    • 容器内工具补齐:安装 sqlite(Alpine 包),deploy.sh 可准确验证数据库状态
    • Schema 版本兜底写入:InitDB() 末尾强制补写 schema_version,彻底解决“每次启动都重新注册”的问题

    🔧 部署与运维(deploy.sh 全面重构)

    • 部署流程重排:备份 → 拉代码 → 停容器 → 构建镜像 → 启动容器
    • 事务前钩子:自动备份数据库到 /tmp/frpc-console/db-backups/,检查有效性(users 表存在),无效则删除由容器全新初始化
    • 事务后钩子:验证容器内数据库可用性,提供明确的“可用/需注册”状态反馈
    • 移除宿主机编译:Docker 镜像内置编译,宿主机不再需要 Go 环境
    • 移除二进制复制:Docker 模式下不再向宿主机写入二进制文件,避免“文本文件忙”冲突
    • OpenSUSE 适配:使用 git-core 替代 git 包
    • 颜色检测:管道执行时自动禁用 ANSI 颜色代码

    🎨 前端与 UI(2.3 稳定性增强)

    • 加载状态管理:增加 authLoading 状态,首次访问时等待 API 响应后再渲染页面,消除刷新时的竞态条件
    • Token 验证流程优化:loadAuthState 与 checkUsers 逻辑解耦,登录/注册页切换稳定

    🐛 修复

    • 修复 ExportTomlHandler 模板渲染时缺少 WireProtocolLine 字段的问题
    • 修复 deploy.sh 在升级时用空文件覆盖旧数据库的问题
    • 修复 Docker 部署时数据库写入 /app/frpc-console.db 但挂载 /app/data 导致升级丢数据的问题
    • 修复前端刷新时页面状态错乱的问题
    • 修复容器内无 sqlite3 导致数据库验证误报的问题
    • 修复首次启动时 schema_version 未正确写入导致重复注册的问题

    📦 技术预览说明

    ⚠️ 2.3 是一个 技术预览版本,基于 LTS 核心(2.0)构建,集成了 2.1 和 2.2 的新特性。

    Docker 版用户请注意:此版本将挂载点从 /app/data 变更为 /app,升级前请确保 /opt/frpc-console 目录下没有残留旧二进制文件,避免 cp 冲突。

    建议在测试环境验证,生产环境使用需自行评估风险。

    🧩 已知限制

    • frps-console 配套工具仍在同步开发中,预计与 2.5 LTS 同步发布
    • 日志面板仍为 8 秒轮询,暂未支持 WebSocket 实时推送
    Downloads
  • 2.0-LTS Stable

    lxh2875931338 released this 2026-07-28 00:23:03 +08:00 | 148 commits to main since this release

    2.0-LTS:frpc-console 首个 LTS 版本

    状态声明:本次发布标志着 frpc-console 正式进入 LTS 维护周期。后续所有 LTS 版本将跟随 frp 官方上游的 LTS 节奏同步更新,确保长期稳定可用。

    本次 2.0-LTS 的核心目标:为 frp 0.70.0 LTS 提供稳定可靠的下游管理工具。

    ✅ 2.0 LTS 目标达成情况

    目标 状态 说明
    frp v2 协议正式启用(灰标解除) ✅ 已达成 wireProtocol = "v2" 配置项实测可用,v1/v2 协议状态可在 Dashboard 中确认
    数据库迁移引擎完整实现 ✅ 已达成 版本驱动的增量迁移 + 迁移前自动全量备份 + 失败可回滚,升级不再提心吊胆
    配套工具 frps-console 同步 LTS 发布 ✅ 已达成 姊妹篇同步登场,一个管客户端,一个管服务端

    ✨ 与 v1.5 相比的关键变化

    • 🚀 frp v2 协议正式启用 —— wireProtocol = "v2" 配置项已从灰标占位变为可用,实测稳定。配合 frp 0.70.0 LTS 使用,协议协商成功率 100%
    • 🔒 数据库迁移引擎完整上线 —— 1.5 完成了 Schema 迁移框架的基础建设,2.0 在此基础上正式提供完整能力:版本驱动的增量迁移 + 迁移前自动全量备份 + 失败自动回滚。升级时看到 frpc-console.db.pre-v2.0.0.* 文件生成,就说明备份已生效
    • 🧩 frps-console 同步发布 —— 姊妹篇首次亮相,与 frpc-console 共享同一套设计哲学与 LTS 维护周期

    v1.5 → v2.0 升级说明:数据库会自动迁移,原有的隧道配置和全局设置全部保留,无需手动干预。首次启动时会看到日志输出 📌 当前数据库 Schema: 1.5.0, 目标版本: 2.0.0,迁移完成后自动更新版本标记,数据零丢失。

    📊 版本状态总结

    v2.0-LTS 是 frpc-console 的稳定里程碑:

    • frp v2 协议:✅ 灰标解除,实测稳定
    • 数据库迁移引擎:✅ 备份 + 回滚完整实现
    • frps-console 同步发布:✅ 首次亮相,共享 LTS
    • 维护承诺:✅ 长期跟进上游,稳定性优先

    📦 与 frps-console 的协作关系

    工具 管理对象 适用场景 版本
    frpc-console frpc(客户端) 软路由、小主机、本地服务穿透 2.0-LTS (同步发布)
    frps-console frps(服务端) VPS、云主机、流量中转 2.0-LTS(率先首发)

    两个工具构成 frp 管理闭环:你负责穿透,我负责管理。

    🐱 维护承诺

    • ✅ 跟随 frp 官方 LTS 版本同步更新
    • ✅ 安全漏洞及时修复
    • ✅ 数据库迁移兼容性长期保持
    • ✅ 常见问题持续跟进

    🙏 致谢

    感谢社区的支持与反馈。特别感谢 MoonProxy 的互引合作,跨平台桌面端(macOS / Windows)与 Web 轻量管理端(Linux)共同完善了 frp 生态的工具链覆盖。

    Downloads
  • 1.5 18e8098aa4

    lxh2875931338 released this 2026-07-26 00:07:37 +08:00 | 170 commits to main since this release

    ⚠️ action:这不是LTS版本,如果需要一个长期可用的版本,请关注后续的2.0

    📝 更新内容

    · ✨ 全局配置页面卡片式重构(服务器连接 / 传输配置 / 日志配置)
    · ✨ 新增运行日志面板(实时查看 frpc 日志,8 秒自动刷新)
    · ✨ frp v2 隧道支持 UI 占位(灰标禁用,为 2.0 预留)
    · ✨ 数据库 Schema 自动迁移(新增字段自动补全,升级无忧)
    · ✨ 默认配置改为通用占位符
    · 🎨 样式拆分与优化
    · 🐛 修复配置页面结构错乱、日志行泛光异常等问题

    📦 下载说明

    根据你的平台选择对应的压缩包:

    平台 文件
    Windows x86-64 `frpc-console-windows-amd64.exe
    Linux x86-64 frpc-console-linux-amd64
    Linux ARM64 frpc-console-linux-arm64
    Linux ARMv7 frpc-console-linux-armv7

    🚀 快速开始

    详细安装指南请参阅:二进制安装指南 | Docker 安装指南

    二进制方式(Linux):

    tar -xzf frpc-console-linux-amd64.tar.gz
    ./frpc-console
    

    Docker 方式(一键脚本):

    curl -sSL https://git.whitetop.xyz/lxh2875931338/frpc-console/raw/main/deploy.sh | sudo bash
    

    首次访问 http://localhost:9300(Docker 方式为 http://你的服务器IP:9300)注册管理员账户即可开始使用。

    ⬆️ 从 v1.0 升级

    1. 停止旧版本 frpc-console
    2. 替换为新版本二进制文件(或重新运行 Docker 部署脚本)
    3. 重新启动,数据自动迁移(保留原有配置和隧道)
    4. ✅ 完成!

    💡 数据文件(frpc-console.db)会自动保留,无需额外操作。

    📝 完整更新日志

    详见 CHANGELOG

    Downloads
  • lxh2875931338 released this 2026-07-24 23:45:52 +08:00 | 184 commits to main since this release

    🚀 frpc-console v1.0 正式版发布

    📦 轻量 · 够用 · 开箱即用

    🎯 这是什么?

    frpc-console 是一个 专为 frp 设计的轻量级管理面板,旨在浏览器中完成 frpc 隧道的全生命周期管理,告别手动编辑 frpc.toml 的繁琐操作。

    如果你在用 frp 做内网穿透,但又不想每次都 SSH 进服务器改配置、重启服务,那么这个工具就是为你准备的。

    ✅ 已实现功能

    🔐 用户系统

    • 首次启动自动跳转注册页,无需 CLI 交互
    • 登录后 JWT 持久化,刷新页面不丢失
    • 支持在线修改密码

    📋 隧道管理

    • 增删改查全支持
    • 一键启用/禁用隧道
    • 隧道卡片网格展示,信息一目了然
    • 按名称/IP/端口搜索隧道

    ⚙️ 全局配置

    • 可视化编辑 serverAddr、token、心跳参数等
    • tcpMux 固定开启,无需纠结
    • 修改后自动热加载,无需手动重启 frpc

    📂 TOML 导入/导出

    • 导入现有 frpc.toml,一键迁移所有隧道
    • 导出当前配置,方便备份或迁移

    🧠 frpc 自动管理

    • frpc 二进制内嵌于程序中,无需额外安装
    • 自动适配 Windows/Linux/ARM 多平台
    • 热加载失败自动降级重启,配置永远生效
    • Watchdog 守护进程,frpc 挂了自动拉起来

    🎨 WebUI

    • 深色磨砂玻璃风格
    • 登录 → 加载 → 内容淡入,连贯的交互体验
    • Logo 与品牌信息整合,界面干净专业

    ✨ 核心特点

    特点 说明
    📦 开箱即用 单二进制文件,无需额外依赖
    🔌 嵌入式 frpc 不需要单独下载 frpc,程序自带
    🖥️ 多平台支持 Windows / Linux / ARM 全兼容
    🪶 轻量化 SQLite 存储,内存占用低于 50MB
    🐳 容器友好 提供 Docker 镜像,一键部署

    📌 内置 frpc 版本

    平台 frp 版本
    Linux amd64 0.70.0
    Linux arm64 0.70.0
    Windows amd64 0.69.0

    🚀 快速开始

    # 下载对应平台二进制,直接运行
    ./frpc-console
    
    # 或使用 Docker 一键部署
    docker run -d --name frpc-console -p 9300:9300 frpc-console:latest
    

    首次访问 http://localhost:9300 注册管理员账户,然后导入你的 frpc.toml,完成迁移。

    Release内不包含docker版,具体部署方式参照另一个文档。

    Downloads