最快跑通 openGym自托管健身记录应用 5 分钟部署与手机配对【免费下载链接】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 自托管健身记录应用里不存在。它是一整套跑在你自己机器上的健身与体重记录系统排周计划、记录每一次组数、看肌群疲劳情况还能从 FitNotes、Strong 导入历史。本文带你从零部署实例、确认数据落盘再把 Android 手机配对上去。最小可用路径前提只有一台装了 Docker 和 Compose 插件的机器不需要 Node。git clone https://gitcode.com/GitHub_Trending/op/openGym cd openGym cp .env.example .env docker compose pull docker compose up -d把仓库克隆到打算长期跑它的机器上web 和 api 两个容器都从这份配置启动。复制.env.example为.env。默认值就是http://localhost:8080本地跑不用改任何一行。docker compose pull拉取预构建镜像amd64 和 arm64 都有。想从源码构建就跳过这步改用docker compose up -d --build。docker compose up -d启动。约一分钟后 web 和 api 两个容器都应变为 Up。浏览器打开http://localhost:8080点Create profile用 passkey指纹/面容创建第一个档案。动作图片与动画已打进镜像没有别的下载步骤。确认它正常了两条命令验证服务与接口docker compose ps curl http://localhost:8080/api/health # 应返回 {ok:true,...}容器都 Up、health 返回 ok就算跑通了。日志用docker compose logs -f看停掉用docker compose down。数据落在哪一次说清你的全部数据在项目目录的./data里db.json是档案列表state-用户.json是每人的计划、训练、体重与设置secret是会话签名密钥audit.log是管理日志。备份这个文件夹就等于备份了一切换机器就是复制这个目录。passkey 的私钥只存在你设备的安全硬件或密码管理器里从不上服务器。它为什么这样做故意不上应用商店。APK 由 CI 构建、签名、发布每个版本旁边都带.sha256校验文件。对你意味着文件完整性可以自行验证更新不依赖商店推送也没有商店账号和年费夹在中间。整个数据层是一堆 JSON 文件没有数据库。对你意味着迁移和备份策略都简单到只有一条tar命令排查问题直接读文件。passkey 登录是默认且推荐方式。它绑定精确主机名且只在 HTTPS 下生效唯一例外是 localhost。对你意味着部署机上http://localhost:8080直接可用想在手机上登录就得先套一个域名加证书Cloudflare Tunnel、Caddy、nginx 均可见 docs/SELF_HOSTING.md。默认无遥测、无 AI 调用。默认安装不向任何外部服务发请求AI 教练和 MCP 服务器都是管理员可选项、默认关闭。对你意味着你的训练数据默认不出你的实例。跑通之后把 Android APK 配对到自托管服务器从项目 Releases 页下载官方签名的 APK含arm64-v8a与armeabi-v7a覆盖几乎所有真机首次安装时允许安装未知来源应用。然后在已登录的浏览器里打开 Settings → Account →Pair the mobile app页面生成一个5 分钟有效的一次性配对码在 App 里输入你的服务器地址和这个码即完成绑定。App 的 WebView 无法走 passkey所以配对换发的是 bearer token 而不是 cookie这带来两个实际好处token 寿命是SESSION_DAYS默认 90 天每次启动若超过一半寿命就自动换新常用的手机永远不掉线。离线时照常记录网络恢复后自动同步断线期间没有任何改动会丢。更新也不用你操心App 每次会话只查一次最新版本发现更新后先做文件大小检查小于 100 KB 判定无效再计算 SHA-256 与官方哈希比对不一致会报 download may be corrupted or tampered with 并中止通过才调系统安装器覆盖安装。本地模式、离线行为与自构建流程详见 docs/MOBILE.md。多设备同步如何合并冲突每个档案的数据是一个带服务器修订号revision的文档。设备写入时上报它上次看到的修订号如果中间有别的设备写过服务器拒绝并返回当前文档设备合并后重试。每条改动都带自己的时间戳细到一个设置项或计划字段所以合并保留每个字段的最新编辑删除保持删除。手机、笔记本同时改互不覆盖。从 FitNotes、Strong 或 Hevy 导入历史Settings → Data backup 里从旧应用导出 CSV走Import from another app导入。动作名会对动作库做匹配认不出的变成你的自定义动作所以文件里什么都没有丢失同一天已有训练的记录会被跳过同一文件导两次不会产生重复。Hevy Pro 用户可以直接用 API key 导入训练、计划和体重iPhone 上的体重数据则从 Apple Health 的导出文件读取。边界与代价不想维护服务器的人不适合。没有服务器就只能用 Android APK 的纯本地模式数据存在应用私有目录opengym-state.json能记录但不能跨设备同步。LAN 里用纯http://访问时 passkey 不可用。只能启用PASSWORD_LOGIN1走密码登录、用访客模式数据仅存于那个浏览器或者照 docs/SELF_HOSTING.md 给内网地址配证书。./data明文存放没有静态加密。备份归档里还包含audit.log登录时间等记录把备份丢到第三方云盘前先知道里面有这些。动作图片版权仅限 openGym 使用。它们不受 AGPL 覆盖非商业 fork 可原样保留其他用途需向版权方单独授权。iOS 没有商店应用。可选方案是自托管后用 Safari添加到主屏幕完整 PWA支持离线与同步或用 Xcode 免费签名装机7 天后签名过期需重新签。常见问题必须花钱吗不需要。AGPL-3.0 开源无订阅、无广告、无付费层代码和文档全部公开。更多短问答见 docs/FAQ.md。多人可以共用一个实例吗可以。每个人建自己的档案数据彼此隔离。INVITE_ONLY1可把注册改为邀请制FIRST_USER_ADMIN1让空实例上第一个注册的档案自动成为管理员记得先于分享地址前注册自己的档案。怎么升级git pull后docker compose pull再docker compose up -d即可./data不受影响动作媒体随新镜像一起更新。手机上的数据存在哪本地模式下是应用私有目录里的opengym-state.json每次变更都写盘。打开 Settings →Auto-backup on changes后每次完成训练会在手机Documents/openGym/生成一份带日期的 JSON 备份每天一份自动只保留最新 14 份可以直接交给 Syncthing 或云盘同步。服务器跑起来的那一刻你的训练记录就有了一个可以备份、可以迁移、可以审计的去处——数据始终是你的。【免费下载链接】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),仅供参考