openGym:跑在自己服务器上的健身追踪器
openGym 是自托管健身追踪器:1,324 个动画动作、进阶规则与肌肉地图,数据存自己服务器的 JSON 文件,Docker 一条命令起。
项目资料
GitHub Ecosystem- 许可证
- AGPL-3.0
- 主语言
- JavaScript
- 星标
- 4,203
- 核查时间
- 2026-10-06
以上快照资料以核查当日为准,可能随版本或运营策略变化。
在健身房里打开 Hevy 或 Strong,练到第三年,弹出来的先是订阅页,三年的训练记录躺在别人的服务器上。openGym 是一个自托管的健身与体重追踪器:计划、每一组的重量和体重曲线都存你自己服务器的一个文件夹里,AGPL-3.0 开源,截至 2026-10-06 仓库有 4,203 颗星,最新版 v1.3.9 发布于 2026-09-28。它最有意思的地方不是记,是看——除了训练量,肌肉地图还能告诉你哪些肌群正在恢复、哪些已经太久没练。

核心功能
- 训练引导:当天的课自己开——重量按上次预填、组间休息自动计时、破 PR 当场提示。超级组、热身组、降机组、rest-pause、计时动作(平板支撑、悬挂)和按时间与速度记的有氧都在同一条记录流里。
- 1,324 个动作:每个动作带动画演示,在身体地图上按肌群浏览,按你手头有的器械过滤;库里没有的动作可以自己建,配自己的照片、GIF 或短视频,上传前会在设备端抹掉位置信息。
- 进阶规则写得明明白白:线性、Greyskull LP、双进程(visible rep range)三种规则,每个目标旁边都写着为什么是这个数;没练完的组不加重量,卡住自动排 deload。另有估算 1RM 曲线和 Poliquin、Thibaudeau、ATG 三套结构性平衡比值。
- 肌肉三态地图:训练量去了哪、哪些肌群还在恢复、哪些已经脱训,三种模式切换;一年活动热力图和对着目标线的体重曲线同屏。上图的引导屏里,「Bar 20 kg · 28.8 kg per side」的配重计算和「Every rep last time — 2.5 kg more」的线性进阶提示就是这条逻辑在跑。
- 数据自有:每个 profile 一个 JSON 文件放在
./data,备份这个文件夹等于备份一切;两台设备同时写按版本号合并而不是互相覆盖,断网照常记、联网补传。passkey 私钥不出设备,服务器上只有公钥。 - 搬家不丢数据:从 FitNotes、Strong、Hevy(CSV 或 API key)和 Apple Health 体重导出一键导入,随时全量导出成一个 JSON;17 种语言含从右到左的阿拉伯语。Android 直接装 APK(刻意不上架 Play Store),iPhone 用 Safari 把 PWA 加到主屏。想让 AI 读训练史,可选的只读 MCP server 和接手环数据的 whoop-mcp-server 是同一个思路,也可以开自备 key 的 AI 教练——改动都要你批准。

典型使用场景
- 在意数据归属的训练者:训练史、体重曲线、PR 全在自家磁盘上,不订阅、不看广告、没有遥测。
- 信号差的健身房或居家地下室:PWA 离线可用,练完联网自动同步,两部手机同时记也不冲突。
- 从订阅制 app 搬家的人:Hevy、Strong 的历史记录直接导进来,不用从头攒数据。
快速上手
先不装也可以试:官方 demo 就是完整应用加示例数据,浏览器打开 opengym.duarte-santos.ch/demo 就能点。自托管需要 Docker:
git clone https://github.com/DuarteSantos8/openGym
cd openGym
cp .env.example .env
docker compose pull # 预构建镜像,amd64 + arm64
docker compose up -d
打开 localhost:8080 建档案,首次启动会下载约 140 MB 的动作媒体。手机上用 passkey 需要 HTTPS——官方自托管指南给了 Cloudflare Tunnel、Caddy、Traefik 和 nginx 四种走法。架构就三层:nginx 托管静态前端并代理 /api,Node API 存 JSON 文件,下图里的 AI 教练和 MCP server 是可选项。

小结
适合把训练数据当自己的数据、愿意跑一个 Docker 容器的人;不想碰服务器的 iPhone 用户会别扭——苹果不允许侧载,原生 app 排在 2027 年 3 月之后的路线图里,现在只能 PWA。三个提醒:动作图片和动画的版权有争议(数据集标注来自 Gym visual,ExerciseDB/AscendAPI 也主张权利),不在 AGPL 授权范围内,你的实例是首次启动时下载的,商用部署前要自行确权;路线图显示 2027 年 1 月的 v1.4.0 会把 JSON 存储换成数据库,官方标注为唯一一次破坏性变更;AGPL-3.0 意味着改完拿去当网络服务运营,得开放同版本源码。技术栈值得一看:前端 React 19 加 Vite,后端是纯 node:http、只有 @simplewebauthn/server 和 web-push 两个依赖,HTTP API 有 OpenAPI 规范。维护者公开说明大部分代码用 Claude Code 起草,靠单元测试、staging 实例和真机验证把关,默认安装不调用任何 AI 服务——两周一个版本,v1.3.9 一次收了 39 个社区 PR。把个人数据搬回自己服务器的做法,之前介绍过的自托管知识库 Xnote 是同一个方向。