返回 2026 年第 41 周 榜单

DuarteSantos8/openGym

openGym 是一款可自托管的健身与体重追踪应用,覆盖训练计划、引导式记录、进度分析和跨设备同步。它可通过 Docker 部署,也能作为独立手机应用使用,重点是让用户掌握自己的数据与运行环境。

+6614累计涨星
6 天上榜天数
1 天登顶天数

统计范围:2026-10-05 至 2026-10-11,实际采集 7 天。周期未结束时排名可能变化。

查看 GitHub 仓库

openGym 是一款可自托管的健身与体重追踪应用,覆盖训练计划、引导式记录、进度分析和跨设备同步。它可通过 Docker 部署,也能作为独立手机应用使用,重点是让用户掌握自己的数据与运行环境。

项目定位与要解决的问题

项目将自己定位为由用户掌控的训练记录工具:数据存放在自有服务器或手机上,不依赖他人托管账号,也不设订阅和广告。服务器版可通过浏览器在手机与电脑间使用;另有基于 Capacitor 的独立应用,数据留在设备上。README 所述“没有遥测”等属于项目方对产品的说明,并非独立验证结果。代码采用 AGPL v3,项目同时特别说明,随实例下载的动作图片与动画不包含在该许可证内。

核心能力

功能从训练安排延伸到复盘:用户可按星期制定日常计划,选择动作、器材与训练方式,再在引导式训练中记录组次、重量、次数、休息和体重。系统支持超级组、热身组、递减组、停顿休息、计时动作及有氧记录;进度侧提供估算 1RM、个人纪录、活动热力图,以及展示肌肉训练量、恢复状态和长期未训练部位的肌肉图。训练后还可修订历史记录,修正后的记录会重新参与统计。计划进阶规则包括线性、Greyskull LP、双重进阶和按时间进阶。

技术结构与实现思路

README 描述的服务端由 React 19、Vite 前端与 Node.js API 组成:前端构建为静态文件,由 nginx 提供,并将 /api 请求代理到使用 node:http 的 API;同源部署也符合项目的 passkey 使用方式。API 主要以 JSON 文件保存资料、训练状态及配置,数据目录映射到宿主机的 ./data。身份验证相关依赖包括 @simplewebauthn/server,推送通知使用 web-push。训练计算逻辑放在前端的纯函数模块中并配有测试,HTTP 接口以 OpenAPI 文件说明。动作媒体由单次服务在首次启动时下载。

实际工作流程

服务器版的基本流程是准备 Docker Compose、复制环境文件并启动容器,随后创建个人资料;首次启动还会下载约 140 MB 的动作媒体。要在手机上以 passkey 访问,部署者需要配置 HTTPS 域名及 RP_ID、ORIGIN 等参数。每个资料的数据以文档形式同步,客户端提交上次见到的服务器修订号;若版本已变化,服务器返回当前文档,客户端合并后重试。README 称断网或退出登录不会丢弃尚未到达服务器的内容,并会显示离线提示。用户也可从 FitNotes、Strong、Hevy 或 Apple Health 体重导出记录,并导出完整 JSON 备份。

与同类方案的取舍

项目的设计重点是把可自托管、训练流程和数据迁移放在同一产品中,而不是只提供一份动作日志:动作库可按肌肉和器材筛选,计划能转为实际训练,训练记录又用于进阶目标、个人纪录和恢复分析。部署上提供 Docker、PWA 与 Android APK 等路径,手机端可独立运行;账户版支持 passkey,并以修订号冲突检测和合并处理多设备编辑。AI 教练与只读 MCP 接口均为可选项;教练要求用户配置自己的服务提供方密钥,并由用户批准建议。上述能力与定位依据 README,未据此推断相对其他产品的性能或优越性。

值得关注的设计

openGym的核心不是单一训练记录表,而是把训练计划、现场执行、历史修订与训练状态分析放进同一条数据流程:按星期编排日常程式,训练时预填上次重量、计时休息并识别个人纪录,训练后又能修正旧记录,重新计算相关结果。它还把肌群训练量、恢复中肌群和长期未训练肌群分成不同视图,并提供多种渐进规则及目标解释。项目将这些逻辑实现为前端纯函数并配套测试;这体现的是可审查的实现方式,不能据此推断实际训练效果优于其他产品。

适用领域和具体场景

个人健身者可用它安排每周力量训练、记录组次和体重,并查看估算1RM、活动热图及肌群状态;器械配置可通过自有设备筛选,杠铃等项目还能按已有杠片计算配重。系统也覆盖超级组、热身组、递减组、定时动作和有氧记录。想迁移旧数据的人可导入FitNotes、Strong、Hevy或Apple Health体重导出;计划可分享为文件或打印为PDF。若只需本机使用,项目还提供不连接服务器的手机应用模式。

哪些人会受益

项目特别适合希望自行托管、控制训练数据存放位置,并愿意管理Docker与域名或HTTPS的个人用户;也适合从其他记录器迁移、需要离线使用或跨手机与电脑同步的人。初次部署需要Docker Compose,首次启动还会下载约140 MB训练媒体;要在手机上使用通行密钥,部署说明要求配置HTTPS域名,因此它并非完全免维护的云端服务。开发者可利用公开的OpenAPI说明、AGPL-3.0代码及贡献指南参与修改;训练者也可选择独立手机端而不搭建服务器。

上手、部署与集成

自托管路径以Docker Compose为中心,镜像提供amd64与arm64版本,也可本地构建;数据保存在主机挂载目录,备份该目录即可覆盖用户训练状态、账户相关文件和配置密钥。账户支持通行密钥,密码登录可按实例启用,管理员还可设置邀请制注册和活动日志。同步采用带服务器版本号的文档:版本过期时服务端拒绝写入并返回当前文档,由设备合并后重试;项目称离线期间未上传的数据不会因断网或退出登录而丢弃。可通过PWA、Android APK或自建Capacitor版本使用,iPhone则可添加PWA或自行用Xcode构建。

限制与风险

README列明用户状态以JSON文件存放,并将数据库存储列为未来版本的计划事项;因此现阶段的存储与迁移方式应按文件型实现理解,不能把路线图当作已交付能力。多设备编辑依赖客户端合并与重试,资料没有给出高并发冲突下的完整保证或规模测试。手机通行密钥需要HTTPS;iPhone无法像Android那样直接侧载,项目也明确未上架Play Store。ExerciseDB相关文字与自有代码的许可不同:训练媒体不受AGPL或MIT覆盖,权属存在争议,README要求复用者先向权利方确认。AI教练默认关闭且需要用户配置模型服务商密钥;MCP服务也是可选组件,并不包含在Docker构建中。

综合观察

openGym的项目定位清晰:用自托管、可导出数据和多端训练流程,服务不愿把训练档案交给第三方平台的用户。其具体价值在于从计划编排延伸到训练执行、历史纠错和肌群状态呈现,并兼顾数据导入、离线与独立手机端。README还披露了技术结构、同步机制、许可差异和AI开发方式,便于用户评估部署与治理边界。不过,材料没有提供独立性能评测、实际用户规模或与其他产品的可验证对比;“无订阅”“数据由自己掌控”等属于项目方对产品定位的描述,能否落实取决于用户的部署、备份和安全配置。

查看 GitHub 仓库

解读依据仓库 README 与简介,周期榜名次和数据按已采集的日期动态计算;项目文档和实际能力可能变化。

输入关键词开始搜索
账号 · 测试中

账号登录