可能大家年龄都到了一定阶段,我明显感觉周围去健身房系统性健身训练的人越来越多。刚好最近又在 GitHub 上发现了一个挺有意思的开源项目——openGym,一套自建的力量训练记录工具,完成度挺高,支持中文且开源,就想分享下。(图片截取自项目)

笔者没有啥健身记录,也就偶尔整两下,所以提供不了项目内数据展示,还请见谅哈!

关于openGym
完整项目名:DuarteSantos8/openGym。
openGym 是一个开源、自托管的健身记录项目。它和普通运动打卡工具不太一样,更偏向真正去健身房或者长期做力量训练的人使用。可以提前创建每周训练计划,例如周一练胸、周三练背、周五练腿。真正开始训练以后,再按照当天的训练内容逐组记录重量、次数和完成情况。
官方目前提供了超过一千个动作的数据,并带有动作图片或者 GIF。除了普通力量训练,还支持超级组、计时动作、有氧、徒手训练、RPE/RIR、渐进负重等功能。训练一段时间以后,可以查看体重趋势、训练热力图、估算 1RM 和不同肌群的训练情况。

但它目前并不能自动同步手环、手表或智能健身器械的数据,所以如果你想要的是一套「运动健康数据自动汇总平台」,它就不太合适了。
主要功能
可以创建自己的训练动作和训练计划,根据星期安排固定 Routine。
训练的时候会自动读取上一次使用的重量,并提供休息计时、PR 判断以及渐进负重建议。
对于卧推、深蹲、硬拉这类动作,还可以根据训练记录估算 1RM,并查看变化趋势。
它同时支持体重记录,可以给自己设置目标体重,再通过曲线查看变化。
另外还有一个比较直观的 GitHub 风格训练热力图,一年里面哪些天训练过,基本一眼就能看出来。
如果已经在用其他健身工具,也支持从 Strong、Hevy、FitNotes 等应用导入部分历史数据。
手机端则可以作为 PWA 使用,添加到手机桌面以后,体验会更接近一个普通 App。
注意:openGym 的完整体验依赖 HTTPS。如果只是通过 NAS_IP:端口 访问,可以正常打开页面,但无法使用 Passkey 登录、通知等功能。因此,想长期使用,建议提前准备好域名和 HTTPS 反代。
部署流程
我们以威联通NAS为例,通过Docker Compose的方式进行部署。
部署代码如下,有些必须要修改的内容我都做了注释,请注意:
services:
media:
image: alpine/git
container_name: opengym-media
volumes:
- /share/Container/openGym/media/img:/out/img
- /share/Container/openGym/media/gif:/out/gif
entrypoint: ["/bin/sh", "-c"]
command:
- |
if [ -z "$$(ls -A /out/img 2>/dev/null)" ]; then
echo "Downloading exercise media..."
git clone --depth 1 https://github.com/hasaneyldrm/exercises-dataset /tmp/ds
cp /tmp/ds/images/*.jpg /out/img/
cp /tmp/ds/videos/*.gif /out/gif/
echo "Exercise media ready."
else
echo "Exercise media already present."
fi
restart: "no"
api:
image: ghcr.io/duartesantos8/opengym-api:1.2.5
container_name: opengym-api
restart: unless-stopped
environment:
PORT: "3000"
DATA_DIR: /data
# 改成你自己的域名,有端口也别漏了
RP_ID: 你的域名
ORIGIN: https://你的域名
RP_NAME: openGym
volumes:
- /share/Container/openGym/data:/data
web:
image: ghcr.io/duartesantos8/opengym-web:1.2.5
container_name: opengym-web
restart: unless-stopped
depends_on:
media:
condition: service_completed_successfully
api:
condition: service_started
ports:
- "9527:80" # 左侧端口建议修改
volumes:
- /share/Container/openGym/media/img:/usr/share/nginx/html/img:ro
- /share/Container/openGym/media/gif:/usr/share/nginx/html/gif:ro
打开威联通的Container Statin创建新的应用程序。

注意一个正常现象:opengym-media 第一次启动会下载大约 140MB 的动作图片和 GIF,完成后容器会自动退出,这是正常的。最终保持运行的主要是 opengym-api 和 opengym-web。
使用一览
部署完毕后,浏览器输入反代好的域名,即可访问服务。初始页面如下。建议选择第一项,通过passkey(通行密钥)登录。

指定一个文件名匹配passkey,并创建。

至于说存在哪里,就看大家的个人情况了。我是选择存放Google密码管理工具中,这样iOS、Android都能随便用。

进入首页后,可以发现整个UI都是以移动端为基准进行设计的。点击右上角的小齿轮图标进入设置。

如下图,语言更改为中文,无需确认即时生效。底部可看到,能直接添加到主屏幕,作为全屏应用。

切换至手机端,发送到桌面后,体验的确和App相差无几。我们可以使用入门计划,也可自己添加。

可以将各种训练动作加入计划中,每天执行。也可以自己创建。

同个账户内的进度,也都是自动同步。

最后我再借用他人的长期训练数据截图给大家看看吧!


最后
正在系统性健身训练的朋友,可以部署一个看看!
感谢观看,本文完~
评论区