openGym 的 3 种使用方式完整对比:从浏览器试用到数据完全属于你【免费下载链接】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/openGymopenGym 是一款自托管健身房与体重追踪器:规划每周训练、记录每组次数与体重、查看哪些肌肉被练到、疲劳或退化,开源免费。本文帮你判断该从哪条路上手:在线演示、Android APK 还是自托管实例。三者共用同一套代码,功能一致,差别只在数据落在哪、要不要服务器。三条使用路径 30 秒选型表选型维度在线演示Android 独立 APK自托管实例前置条件任意浏览器一台安卓手机装有 Docker 与 Compose 插件的机器配置耗时0 分钟约 5 分钟(装 APK)约 10 分钟(拉镜像建档案)数据落在哪当前浏览器(游客模式)手机 App 私有目录文件服务器./data文件夹多设备同步❌可选,可配对到自己的服务器✅ 自动同步,字段级合并提醒方式浏览器通知原生系统通知Web Push打算用多久几分钟到几天单台手机长期使用长期、家人共用拿不准就从下一节的第 1 条看起,它不花你几分钟;确定要长期使用,直接看第 3 条。由轻到重:三条路径分别怎么走先花几分钟看看功能长什么样适合谁:不想装任何东西,只想体验引导式训练、组间休息计时、体重曲线长什么样,用几分钟到几天。怎么开始:打开 openGym 官网的在线演示页,无需注册随便点:演示是加载了示例数据的完整真实应用,5,600 多个带动画演示的动作、按肌肉群浏览、PR 检测都能用不想碰示例数据,就用游客模式自己记几组边界在哪:演示里是别人的示例数据,游客模式数据只存在那一个浏览器里,清缓存或换电脑就没了。当你开始认真记录、想换台手机接着看,说明该换下一条路径。只有一台安卓手机的时候适合谁:只有一台安卓手机,想要原生 App 的手感,不想搭服务器,也不想把数据交给任何人。怎么开始:从最新 release 下载官方签名 APK 并安装,每个构建旁附.sha256校验文件,App 会自己检查更新首次安装按系统提示允许未知来源安装——它故意不上 Play Store,不想让商店账号、审核规则和年费挡在开源应用和你之间首次启动选本地模式:没有登录界面、没有同步、没有遥测,手机本身就是账号边界在哪:本地模式每次修改都会写进 App 私有目录的opengym-state.json,提醒是原生通知,组间休息倒计时挂在通知栏,全程不需要后端——但数据也不出手机,换机前记得通过系统分享面板导出备份。哪天想用电脑看数据了,把同一个 APK 配对到自建服务器即可:在已登录的浏览器里打开 设置 → Pair the mobile app 生成 5 分钟有效的一次性配对码,在 App 里输入服务器地址和配对码。这不是另一个版本,是同一 App 的一种模式,离线改动会在恢复联网后自动补传。想让多设备同步、数据长期属于自己适合谁:打算长期使用,有多台设备或想给家人开档案,且有一台能跑 Docker 的机器。怎么开始:装好 Docker 与 Compose 插件依次执行:git clone https://gitcode.com/GitHub_Trending/op/openGym cd openGym cp .env.example .env docker compose pull docker compose up -d打开http://localhost:8080,点Create profile用 Passkey(Face ID / 指纹 / 密码管理器)建档边界在哪:整个系统就是web与api两个小容器加一个数据文件夹,动作动画素材(约 80 MB)已内置在镜像里,首次启动无需再下载;备份./data就等于备份全部。两台设备同时编辑不会互相覆盖:每次保存都带上上次看到的版本号,期间若另一台设备写过,服务器返回 409 并附上最新文档,设备合并本地改动后重试;断网、登出都不会丢弃未上传的改动,App 会显示离线横幅,恢复连接后自动补传。避坑清单Passkey 弹不出来→ 你正通过http://的局域网 IP 访问;Passkey 只走 HTTPS,仅localhost例外 → 挂一个 HTTPS 域名(Cloudflare Tunnel / Caddy / nginx 均可),或临时用游客模式、在.env开PASSWORD_LOGIN1。Passkey 报错但域名看着没问题→.env里RP_ID与ORIGIN和浏览器地址不完全一致 → 两处必须与你实际访问的地址逐字符对齐,见 docs/SELF_HOSTING.md。事后改域名→ 旧 Passkey 绑定的是原RP_ID,改完全部失效 → 在有人注册前就定好域名。换手机重装 APK 失败→ 新版本必须与旧版本同一签名 → 只用官方签名包并核对.sha256;自己重签的包无法覆盖旧版。手机 App 配不上服务器→ 配对码只在已登录的真实浏览器里生成(App 的 WebView 域名对不上,无法走 Passkey),且 5 分钟过期 → 在浏览器生成后立即输入;http://下生成配对码还需要先开密码登录。配对码走了明文 http://→ 配对码与 token 不加密 → 仅限家庭内网使用,公网请上 HTTPS。手机 App 提示 CORS 或登录页代替应答→ 反向代理抢答了 preflight 或多加了一份Access-Control-Allow-Origin→ 让/api/*原样透传,不要给该路由加 CORS 中间件,文档有 curl 自检命令。备份只拷了./data→ 自定义动作的照片与视频存在./data/uploads/→ 一起备份。iPhone 用户→ 没有可侧载的 APK,Apple 不允许应用商店外安装 → 推荐自托管后从 Safari 把 PWA 加到主屏幕;Xcode 免费签名可用但 7 天过期需重签,细节见 docs/MOBILE.md。升级服务器后旧手机同步异常→ 旧版本无法判断手机是否见过某次改动 → 服务器升级后把各端 App 一并更新。三条路径共用一套代码,随时可以从轻的那端升级:先在线演示熟悉界面,再docker compose up建实例,最后在 APK 里配对到同一台服务器,手机电脑自动同步,一步不浪费。更多细节: docs/FAQ.md、docs/SELF_HOSTING.md,训练逻辑源码在 frontend/src/lib/。【免费下载链接】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),仅供参考