如果你之前用的是 FitNotes、Strong 或 Hevy,但哪天开始担心「我的训练数据被锁在某家公司的服务器里」「换个平台就要重新录入几年记录」——这篇值得花 8 分钟读完。GitHub上有一款开源自托管健身追踪工具 openGym,恰好把上面两个痛点都解决了。

一、项目概览
| 维度 | 详情 |
|---|---|
| 项目名 | DuarteSantos8/openGym |
| Star 数 | 4,401 ★(今日 +1,433) |
| Fork 数 | 667 |
| 主语言 | JavaScript |
| 协议 | MIT License |
| 定位 | 自托管健身与体重追踪器 |
| 核心功能 | 计划训练、记录训练(superSets、warm-ups、cardio)、肌肉训练/疲劳/退化可视化、从 FitNotes / Strong / Hevy 导入、Passkey 登录 |
二、核心功能拆解
2.1 训练计划与记录
- 计划训练:用户可自定义训练计划,支持 SUPER-SETS(超级组)、WARM-UPS(热身组)、CARDIO(有氧) 等高级组合。SUPER-SETS 指两个相反肌群动作连续做、无组间休息,节省时间;WARM-UPS 是正式组前的小重量热身,防止受伤。
- 记录训练:每次训练后可记录完成情况(重量 × 次数 × 组数),系统自动追踪每块肌肉群的训练状态。
- 肌肉状态可视化:系统用颜色标注每块肌肉的「训练中 / 疲劳 / 退化」状态,帮助你科学安排训练频率,避免同一部位连续高强度训练。
2.2 数据导入与迁移
- 支持从 FitNotes(Android 主流 App)、Strong(iOS / Android 双端热门)、Hevy(社交属性强)三大主流健身 App 导入历史数据。
- 导入后自动重建训练记录与进度图表,不用从头录入。
- 数据所有权:所有数据存储在自己的服务器上,无第三方依赖,导出无限制。
2.3 认证与会话管理
- Passkey 登录:基于 WebAuthn 标准,支持指纹、面容、硬件安全密钥(FIDO2 / YubiKey 等)。
- 无需 Email、用户名或密码,认证密钥直接存在用户设备上。
- 会话安全由服务端管理,登录态过期自动清除。
三、技术架构亮点
3.1 前后端分离 + 自托管
前端:JavaScript(纯前端 SPA,无框架强依赖)
后端:自托管 REST API
数据库:本地化(用户数据完全自主)
部署:Docker 一键部署 / 手动安装(Node.js + SQLite / PostgreSQL)
整套系统跑在自己控制的服务器上(家用 NAS、旧笔记本、VPS 都行),不需要订阅任何云服务。
3.2 健身数据模型设计
- Exercise(动作):名称、目标肌群、器械类型、所属训练大类
- WorkoutSession(训练课):日期、动作组合、重量 × 次数 × 组数
- MuscleGroup(肌群):上肢 / 下肢 / 核心,细分前束 / 中束 / 后束
- Progress(进度):重量变化、容量变化、疲劳度追踪
四个核心实体支撑起「动作 → 训练课 → 肌群 → 进度」的完整链路。
3.3 无外部依赖的多格式数据导入
解析 FitNotes XML、Strong CSV、Hevy JSON 三种格式,数据标准化后存入统一的内部数据结构。整个解析过程在本地完成,不需要调用任何第三方 API。
四、可借鉴之处
4.1 肌肉状态可视化设计
用红 / 黄 / 绿三色直观展示肌肉恢复状态。这种「状态颜色编码」思路可迁移到很多场景:
- 技能冷却状态展示(某技能是否「可用」「冷却中」「就绪」)
- 任务疲劳度追踪(连续多日高强度任务后的状态)
- 资源再生可视化(CD 计时类场景)
4.2 多数据源导入的格式兼容
主动兼容主流竞品数据格式,降低用户迁移成本。这种「导入即兼容」的做法可借鉴到:
- 支持从不同格式(Notion CSV、Jira JSON、飞书表格)导入任务数据
- 用户从 A 工具迁到 B 工具时无需从头开始
- 多格式解析 → 标准化存储的工程范式
4.3 Passkey 无密码认证
纯 WebAuthn 认证,不依赖 Email / 密码,私钥永远不出设备。比传统账号密码方案的安全性高一个量级(抗钓鱼、抗密码泄露、抗撞库)。任何需要用户登录的系统都可参考此模式做双因素增强或直接替换密码登录。
4.4 SUPER-SETS / WARM-UPS 等复合训练标记
把健身领域的专业概念(超级组、热身组)变成数据模型的一等公民字段。在任务编排系统中,可以借鉴为「前置任务组」「批处理任务集」「预热任务」等类似抽象。
五、适合谁用、什么时候用不上
5.1 适合你的场景
- 你已经用 FitNotes / Strong / Hevy 之一记录训练,但想拥有自己的数据副本
- 你不想被 App 内购、订阅、云存储空间限制卡住
- 你对隐私有要求,不想把体重、围度、训练记录上传到第三方服务器
- 你愿意花半小时部署一次(Docker / Node.js),换来长期数据自主权
5.2 什么时候用不上
- 你只需要简单记录几次训练、不在乎数据归谁——用手机自带健康 App 就够了
- 你看重社交属性(看朋友练了什么、点赞、打卡)——openGym 暂无内置社交功能
- 你完全不想自己部署服务器——可以等社区出公共 PaaS 镜像
- 你练的是体操 / 瑜伽 / 普拉提 等开放动作库较难标准化的项目——openGym 的动作库更适合力量训练
六、总结评价
| 维度 | 评分 | 说明 |
|---|---|---|
| 实用性 | ⭐⭐⭐⭐⭐ | 功能完整,覆盖健身训练全流程 |
| 技术亮点 | ⭐⭐⭐ | 前后端分离、自托管、多格式数据导入兼容 |
| 可移植性 | ⭐⭐⭐⭐ | 纯 JS + REST API,部署简单,文档清晰 |
| 数据价值 | ⭐⭐⭐⭐ | 追踪肌肉状态有助于科学训练,避免过度训练 |
| 开放性 | ⭐⭐⭐⭐⭐ | MIT + 自托管,数据完全归用户,可二次开发 |
一句话总结:openGym 是目前最完整的自托管健身追踪方案,Passkey 认证 + 多格式导入 + 肌肉状态可视化为三大核心亮点,技术选型轻量,适合个人或小团队私有部署。如果你正在考虑从 FitNotes / Strong / Hevy 迁出,它是一个值得认真评估的备选。