侧边栏壁纸
博主头像
羊刀仙的部落格 博主等级

很有力量。

  • 累计撰写 298 篇文章
  • 累计创建 60 个标签
  • 累计收到 14 条评论

目 录CONTENT

文章目录

NAS还能拿来健身?部署openGym,搭一套自己的私人力量训练App

羊刀仙
2026-08-12 / 0 评论 / 0 点赞 / 1 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
GW树洞

高速稳定 · 海外专线

  • 自用推荐
  • 90天使用时长
  • 70+ 节点分布
  • IEPL专线 油管4K无压力
  • 全平台客户端
  • 不限制在线设备
立即注册

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

截屏2026-08-12 10.30.40.png

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

ChatGPT Image 2026年8月12日 11_05_51 拷贝.jpg

关于openGym

完整项目名:DuarteSantos8/openGym

openGym 是一个开源、自托管的健身记录项目。它和普通运动打卡工具不太一样,更偏向真正去健身房或者长期做力量训练的人使用。可以提前创建每周训练计划,例如周一练胸、周三练背、周五练腿。真正开始训练以后,再按照当天的训练内容逐组记录重量、次数和完成情况。

官方目前提供了超过一千个动作的数据,并带有动作图片或者 GIF。除了普通力量训练,还支持超级组、计时动作、有氧、徒手训练、RPE/RIR、渐进负重等功能。训练一段时间以后,可以查看体重趋势、训练热力图、估算 1RM 和不同肌群的训练情况。

截屏2026-08-12 10.29.17 拷贝.png

但它目前并不能自动同步手环、手表或智能健身器械的数据,所以如果你想要的是一套「运动健康数据自动汇总平台」,它就不太合适了。

主要功能

  • 可以创建自己的训练动作和训练计划,根据星期安排固定 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创建新的应用程序。

截屏2026-08-11 17.13.53.png

注意一个正常现象opengym-media 第一次启动会下载大约 140MB 的动作图片和 GIF,完成后容器会自动退出,这是正常的。最终保持运行的主要是 opengym-apiopengym-web

使用一览

部署完毕后,浏览器输入反代好的域名,即可访问服务。初始页面如下。建议选择第一项,通过passkey(通行密钥)登录。

截屏2026-08-11 17.29.36 拷贝.png

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

截屏2026-08-12 10.01.34 拷贝.png

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

截屏2026-08-12 10.01.42 拷贝.png

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

截屏2026-08-12 10.02.16 拷贝.png

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

截屏2026-08-12 10.02.45 拷贝.jpg

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

opengym_上一批_横向原图拼接 拷贝.jpg

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

opengym_本批_横向原图拼接 拷贝.png

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

截屏2026-08-12 10.15.26 拷贝.png

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

a9d48d5db797611eaf41ebea75718158.png

1dd58e01cbe5c3436bd73d79d40c5d6b.png

最后

正在系统性健身训练的朋友,可以部署一个看看!

感谢观看,本文完~

0

评论区