我是如何停止支付健身追踪器订阅费并在自有服务器上部署 wger 的
我有一个老习惯:一开始去健身房,我的手机就会堆满一堆健身应用。起初一切顺利,但一周后你就会遇到付费墙。想要创建带有重量进阶的复杂训练计划?按月付费。想要追踪卡路里而不被可疑补充剂的侵入性广告打扰?再次付费。再加上封闭的专有格式阻止了正确的数据导出,继续记录数据的欲望很快就会消失。
一段时间前,我偶然发现了一个名为 wger 的开源项目(发音大致为"vee-ger")。这是一个功能完整的自托管训练和营养管理器,使用 Python 和 Django 编写。该项目自 2013 年起在 GitHub 上,已获得超过 6600 颗星,并已发展成为一个成熟的平台,拥有移动客户端和开放的 REST API。
系统功能
在功能方面,wger 几乎涵盖了定期锻炼和追踪健身数据的人的所有需求。
训练计划构建器和重量进阶
在这里你可以创建任何复杂度的计划:从简单的分化训练到带有精确重量进阶规则的周期化。运动数据库开箱即用,包含图片、技术说明和按肌肉群分类的信息。如果缺少特定的器械,你可以轻松地自己添加或提交给社区。
营养追踪和 Open Food Facts 集成
无需手动输入每个苹果或鸡胸肉的营养信息,wger 会从 Open Food Facts 获取产品数据库。这是一个庞大的全球食品开放数据库。你可以构建自己的膳食计划,追踪宏量营养素(蛋白质、脂肪、碳水化合物)和每日卡路里摄入量。
身体测量和进度相册
除了基本体重外,系统还存储腰围、二头肌、体脂百分比和任何自定义指标的的历史记录。你还可以按日期上传进度照片。由于服务器由你控制,个人照片不会泄露到第三方云服务。
移动端和桌面客户端
通常,像这样的开源项目只有网页界面,在杠铃架旁用智能手机打开很不方便。wger 有一个官方 Flutter 应用。它支持 Android(包括 Google Play 和 F-Droid)、iOS 以及桌面 Linux 的 Flathub。客户端通过 API 直接连接到你的实例。
技术架构
该项目的架构对于可靠的网络服务来说非常经典:
- 后端使用 Django(Python)编写。
- 数据库:PostgreSQL 或 SQLite(用于快速测试)。
- 前端使用标准 Django 模板加上基于 Django REST Framework 构建的 REST API。
- 移动应用使用 Flutter 编写,源代码存放在组织下的独立仓库中。
- 许可证:AGPL-3.0。
拥有完整的 REST API 意味着你可以自动化训练日志记录、连接智能体重秤,或编写自己的 Python 脚本,编译年度统计数据并发送一份漂亮的报告到你的通讯软件。
快速开始
通过 Docker Compose 部署自己的实例是最简单的方式。项目团队维护着一个包含所有现成配置的独立仓库。
第一步。克隆包含 Docker 文件的仓库:
git clone https://github.com/wger-project/docker.git wger-docker
cd wger-docker
第二步。启动容器堆栈:
docker compose up -d
启动后,网页界面将在本地端口上可用(默认 http://localhost:80)。首次登录时,系统会提示你创建管理员账户并加载基本的运动和食材数据集。
如果觉得搭建自己的服务器太麻烦,作者有一个公开的免费服务器,地址是 wger.de。你可以在那里注册,测试界面,然后再决定是否需要自己的托管。
适用人群
该项目非常适合以下人群:
- 想要在自有硬件上存储健康和训练数据的人。
- 受够了 MyFitnessPal 或 Hevy 等商业应用中无休止订阅费的人。
- 正在为健身项目或健身房寻找现成后端的人(wger 具有基本的多用户模式,具有基于角色的访问控制功能,可供教练和客户使用)。
缺点方面:网页界面在某些地方看起来有点过时,移动应用在流畅度方面有时也落后于付费替代品。但不依赖第三方云服务和开放的 API 足以弥补这些不足。如果你正在为家庭服务器或 Raspberry Pi 寻找解决方案,wger 绝对值得放入你的 docker-compose.yml 中。
相关项目
