为什么openGym是健身数据隐私人士的终极选择:免费开源、零订阅、零遥测
【免费下载链接】openGymSelf-hosted gym & body-weight tracker — plan routines, log workouts (supersets, warm-ups, cardio), see which muscles are trained, fatigued or detrained, import from FitNotes/Strong/Hevy, passkey login. Your data, your server.项目地址: https://gitcode.com/GitHub_Trending/op/openGym
如果你和我一样,对健身数据隐私越来越敏感——怕订阅费、怕广告、怕数据被悄悄上传到别人的服务器——那么 openGym 值得认真看一眼。它是一款免费开源(AGPL)、可自托管的健身与体重追踪器:制定每周训练计划、记录每一次训练(超级组、热身组、有氧),查看哪些肌肉在训练、在疲劳、在退训,还能从 FitNotes / Strong / Hevy 一键导入历史数据,用 passkey(面容 ID / 指纹)登录。一句话:Your data, your server —— 你的数据,你的服务器。💪
三个扎心问题:你的训练数据现在被谁看着?
用大多数商业健身 App 时,你可能没想过这三件事:
- 🔒数据在别人的服务器上:你的训练历史、体重曲线、甚至照片,存在厂商的云里,公司一旦关停,数据说没就没;
- 💳免费只是入口:高级功能后面挂着订阅墙,不续费就用不了自己的历史数据;
- 📡遥测与广告:不少 App 默认收集使用行为,甚至用你的数据做个性化广告。
openGym 对这三条的回答干脆利落:没有别人家的服务器、没有订阅档、没有遥测、没有广告。官方 FAQ 的原话是:"你的实例没有任何遥测,也不向任何人报告"(docs/FAQ.md)。
零订阅、零遥测:openGym 到底做了什么?
openGym 的全部代码以GNU AGPL v3.0协议开源(LICENSE),没有付费版本,没有给赞助商预留的后门功能。部署完成后,它由两个小型容器(nginx 前端 + Node API)和一个你自己拥有的./data文件夹组成——备份./data,就备份了全部(README.md)。
从架构图可以看出数据流向:浏览器/PWA 只通过 HTTPS 与你自己的服务器通信;API 把数据写成 JSON 存进./data;唯一的例外是默认关闭的可选 AI 教练——只有管理员开启、并填入你自己的模型服务商密钥后,它才会把必要的训练数据发给你指定的服务商(docs/AI_COACH.md)。也就是说,默认安装不调用任何 AI 服务,健身数据不出你的机器。🔐
5 分钟自托管部署:一条 docker compose 命令上线
部署是"一条命令"级别的,只需要装有 Docker 的机器(树莓派也行):
git clone https://gitcode.com/GitHub_Trending/op/openGym cd openGym cp .env.example .env docker compose pull # 预构建镜像,amd64 + arm64 docker compose up -d打开http://localhost:8080,创建 passkey 档案即可开始使用。首次启动会自动下载约 140 MB 的动作媒体文件(仅一次)。所有配置项都在 .env.example 中逐条注释说明:域名(RP_ID/ORIGIN)、多用户邀请码(INVITE_ONLY)、审计日志(AUDIT_*)等,全部可选。完整流程(含 Cloudflare Tunnel、Caddy 等 HTTPS 方案)见 docs/SELF_HOSTING.md。
多设备同步与 Passkey:隐私友好的登录方式
openGym 默认用WebAuthn passkey登录:没有邮箱、没有密码重置邮件流程,密钥私钥只留在你手机的 Secure Enclave / 指纹硬件里,永远不上服务器。会话 cookie 由 HMAC 签名,服务端密钥存放在./data/secret,"一键全设备登出"可作废该账号签发过的所有会话(api/server.js)。
两台设备同时编辑也不会互相覆盖:每次保存都带上"上次看到的版本号",若中间有其他设备写入,服务器返回 409 和当前文档,设备本地合并后重试——健身数据在同步中不会丢(README.md)。
值得加分的隐私细节
如果你习惯先审代码再看功能,这些设计会给你安全感(汇总自 SECURITY.md):
- 逐用户数据隔离:
/api/data路由永远只读写调用者自己的state-<uid>.json,普通用户没有任何路径能指名读写别人的数据; - 上传媒体先"验身"再落地:服务器只凭文件前几个字节判断类型,仅接受 JPEG/PNG/WebP/GIF/MP4/MOV/WebM,且只归还给上传者本人;照片在离开手机前就重编码,EXIF 与 GPS 信息直接抹掉;
- 审计日志默认开启但"记少不记多":登录、登录失败和管理员操作记入
./data/audit.log,默认不记录任何 IP(AUDIT_IP默认off); - 推送端点防内网探测:Web Push 的订阅地址强制 HTTPS,且拒绝解析到回环/内网/云元数据地址,无法被当作打向你内网的跳板;
- 依赖极简:整个 API 只有两个依赖(passkey 校验 + Web Push),训练逻辑(渐进、1RM、恢复模型)全部是 frontend/src/lib/ 下带单元测试的纯函数——攻击面小,逻辑可验证。
常用功能速览:它还是一个正经的训练 App
隐私是底线,好用是本体。openGym 内置1,324 个动作(带动画演示)、17 种界面语言,核心能力包括:
- 🏋️计划:按星期安排动作库、四套入门计划(推/拉/腿、上/下肢、全身、5×5)、超级组、热身组、递减组、计时有氧、计划性减载周;
- 📈进展:每动作渐进规则(线性、Greyskull LP、双渐进)、预估 1RM 曲线、全年训练热力图、体重对照目标线;
- 🧠肌肉图谱三模式:容量去了哪、哪些肌肉还在恢复、哪些已退训——这是其他 App 很少给到的视角;
- 📥数据迁移:FitNotes、Strong、Hevy(CSV 或 API key)开箱即用,Apple Health 体重也能导入,随时可导出为单个 JSON(docs/DATA_IMPORTS.md)。
常见问题速答
要花多少钱?0 元。开源 AGPL,无付费档、无广告、无遥测,服务器成本就是你自己那台机器。
iPhone 能用吗?可以:自托管后从 Safari 添加到主屏,它是可离线运行的完整 PWA;也可用 Xcode 把原生壳装到自己的设备上(docs/MOBILE.md)。
手机 App 要联网吗?Android 版可完全离线使用,数据只存手机本地,无需服务器和账号(docs/FAQ.md)。
会偷偷用 AI 吗?默认安装不调用任何 AI 服务;AI 教练与 MCP 服务器都是选装,且密钥、服务商都由你指定(docs/AI_COACH.md、mcp/README.md)。
📌 总结:openGym 用"两个容器 + 一个 JSON 文件夹"的极简架构,把健身数据隐私从口号做成了工程现实——免费开源、零订阅、零遥测,而好用程度(渐进算法、肌肉图谱、多设备合并同步)完全对得起一个主流商业 App。如果你受够了"数据在别人的服务器里",docker compose up五分钟,健身数据主权就回到你自己手中。
【免费下载链接】openGymSelf-hosted gym & body-weight tracker — plan routines, log workouts (supersets, warm-ups, cardio), see which muscles are trained, fatigued or detrained, import from FitNotes/Strong/Hevy, passkey login. Your data, your server.项目地址: https://gitcode.com/GitHub_Trending/op/openGym
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考