news 2026/10/9 19:26:58

openGym部署前置准备:Docker Compose环境搭建完整教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
openGym部署前置准备:Docker Compose环境搭建完整教程

openGym部署前置准备:Docker Compose环境搭建完整教程

【免费下载链接】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、Hevy 导入历史数据。它的官方部署方式只依赖Docker Compose——不需要在服务器上安装 Node、Postgres 或任何数据库。本文带你完成 openGym Docker Compose 部署前的全部准备:环境检查、仓库克隆、.env配置,直到一键启动并通过健康检查。

部署前必知:openGym 的容器架构

在动手之前,先花 1 分钟看懂 openGym 由哪几部分组成。整个部署就是3 个容器 + 1 个数据目录:

  • media:一次性容器,首次启动时下载约 140 MB 的动作演示图片和 GIF 到media/img与media/gif,完成即退出;
  • api:Node 服务,负责登录(passkey)与数据存储,所有用户数据以 JSON 形式写入宿主机的./data目录;
  • web:nginx 容器,对外暴露 8080 端口,负责提供前端页面并把/api请求代理给 api 容器。

完整的编排逻辑都在根目录的 docker-compose.yml 中:media 服务定义、api 服务定义、web 服务定义。理解了这一点,后面排查问题会轻松很多。

Docker Compose 部署前置条件清单

在开始之前,请逐项确认你的服务器满足以下条件:

检查项要求说明
Docker 引擎已安装并运行唯一硬性依赖
Compose 插件docker compose可用现代发行版默认自带
端口占用8080(web)、3000(api)被占用时可在.env中改为WEB_PORT
磁盘空间≥ 1 GB首次启动会下载 ~140 MB 动作媒体
网络可访问容器镜像仓库docker compose pull需要拉取预构建镜像
HTTPS 域名手机使用 passkey 登录时必需纯局域网 IP 无法使用 passkey,见下文"避坑"

💡为什么 passkey 这么重要?openGym 默认用 passkey(Face ID / 指纹)登录,浏览器强制要求 HTTPS(仅http://localhost例外)。所以"电脑上用没问题、手机上用不了"几乎是 100% 的 HTTPS 问题,不是环境没搭好。

克隆仓库并配置 .env 环境变量

在服务器上执行以下命令获取代码(仓库地址:https://gitcode.com/GitHub_Trending/op/openGym):

git clone https://gitcode.com/GitHub_Trending/op/openGym cd openGym cp .env.example .env

openGym 的全部配置都通过.env文件完成,官方模板.env.example顶部就给了可直接运行的本地默认值:

RP_ID=localhost ORIGIN=http://localhost:8080 WEB_PORT=8080 RP_NAME=openGym

只在你自己的电脑上体验的话,保持默认即可。如果你打算用手机访问(正式部署),需要提前决定一个域名,并改为:

RP_ID=gym.example.com ORIGIN=https://gym.example.com

⚠️两个高频错误:RP_ID只能写裸主机名(无协议、无端口、无斜杠),ORIGIN必须带协议且不带结尾斜杠。另外,后期修改RP_ID会使所有已注册的 passkey 失效,所以域名要在别人注册账号之前定好。

一条命令启动:Docker Compose 部署步骤

配置完成后,部署只有三步:

docker compose pull # 拉取预构建镜像(amd64 + arm64) docker compose up -d # 后台启动三个容器 docker compose ps # 确认 web 与 api 状态为 running

首次启动时,media 容器会打印类似↓ Downloading exercise media (~140 MB, one time)…的日志,下载完成后 web 容器才会就绪。如果你所在网络拉取镜像困难,也可以跳过pull,改用docker compose up -d --build从源码构建(api/Dockerfile 与 web/Dockerfile 已内置构建流程),主机上依然不需要 Node 环境。

部署验证:健康检查与首次登录

用下面的命令确认服务真正可用:

docker compose ps curl http://localhost:8080/api/health # 返回 {"ok":true,...} 即成功

然后打开http://localhost:8080,点击Create profile创建你的第一个 passkey 档案,就能进入应用首页。查看容器日志可以随时执行docker compose logs -f,停止栈用docker compose down。

部署避坑:三个高频问题与修复

现象原因与修复
手机浏览器不弹 passkey你访问的是http://<局域网IP>:8080,不是 HTTPS。方案:挂一个域名走 HTTPS(docs/SELF_HOSTING_HTTPS.md 专门讲了无公网域名的局域网方案),或临时开启PASSWORD_LOGIN=1用密码登录
提示 8080 端口已被占用在.env中改WEB_PORT=9090,然后重新docker compose up -d
动作图片/动画一直空白媒体下载未完成,执行docker compose logs media查看,重跑docker compose up -d或手动运行 scripts/fetch-media.sh

还有一个新手容易踩的坑:修改.env后执行docker compose restart不会重新读取环境变量,必须用docker compose up -d重建容器。

部署之后:备份与进阶路线

openGym 的所有用户数据(档案、passkey 公钥、训练记录、自定义动作媒体)都集中在宿主机的./data目录,备份只需一行:

tar czf opengym-backup-$(date +%F).tar.gz data/

后续可深入阅读的资料(仓库内均为相对路径文档):

  • 官方自托管完整指南(域名、反代、多用户管理):docs/SELF_HOSTING.md
  • Kubernetes 部署清单:kubernetes/ 目录,说明见 docs/SELF_HOSTING_KUBERNETES.md
  • 常见问题速查:docs/FAQ.md
  • 全部环境变量参考表:README.md

到这里,你的 openGym 自托管实例已经跑起来了。记住核心原则:一个.env管所有配置,一个data/目录管所有数据,这就是 openGym Docker Compose 部署的全部复杂度。🏋️

【免费下载链接】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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/9 19:26:43

PySlowFast 从零上手指南:训练、恢复与测试视频理解模型

人工智能计算机视觉深度学习预训练 【免费下载链接】SlowFast PySlowFast: video understanding codebase from FAIR for reproducing state-of-the-art video models. 项目地址&#xff1a; https://gitcode.com/gh_mirrors/sl/SlowFast 点击查看 免费下载 PySlowFast 是 FAI…

作者头像 李华
网站建设 2026/10/9 19:21:24

Ornith-1.5 对位 DeepSeek V4:‘叫板‘的底气到底有几分

Ornith-1.5 对位 DeepSeek V4&#xff1a;叫板的底气到底有几分 【免费下载链接】Ornith-1.5-35B-A3B-GGUF 项目地址: https://ai.gitcode.com/hf_mirrors/ornith-ai/Ornith-1.5-35B-A3B-GGUF 2026 年 8 月&#xff0c;DeepReinforce 发布 Ornith-1.5 系列&#xff0c;…

作者头像 李华
网站建设 2026/10/9 19:20:48

2025届最火的五大降重复率方案推荐榜单:TaoToken统一Key接入实测

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/9 19:20:06

Windows 上部署 Neo4j 5.15.0 企业版:从安装到备份的完整指南

简介&#xff1a;本资源为 Neo4j 企业版 5.15.0 的 Windows 安装包&#xff0c;面向需要在本地搭建图数据库服务、开展高并发或集群化图数据应用的开发者与运维人员。相比社区版&#xff0c;企业版在容量、并发、容灾、热备、性能与插件支持上均有明显优势&#xff1a;节点与关…

作者头像 李华
网站建设 2026/10/9 19:18:52

SQL Server人事管理系统课程设计:从建表到存储过程完整实战

简介&#xff1a;面向数据库课程设计与Java GUI开发学习者&#xff0c;SQL Server人事管理系统项目完整覆盖从数据库建表到界面交互的全流程。压缩包内共197个文件&#xff0c;约18.06MB&#xff0c;含SQL建库脚本、18个Java源码、116个编译后的class文件、44张界面PNG图片、8个…

作者头像 李华
网站建设 2026/10/9 19:18:24

几百页投诉书堆在桌上,AI 怎么才能“读懂“一个案子?

&#x1f30a; 专注 AI 大模型与前沿科技深度解析&#xff0c;习惯从工程师视角拆解技术热点&#xff0c;让我们一起在技术浪潮中保持清醒与好奇 &#x1f680;几百页投诉书堆在桌上&#xff0c;AI 怎么才能"读懂"一个案子&#xff1f; 想象这样一个场景&#xff1a;…

作者头像 李华