Docker一键部署wger:自建免费健身管理系统,训练计划、营养追踪、体重记录一站搞定
摘要
试了一圈健身 App 都要付费买会员,干脆自己搭一个。wger 开源免费,Docker Compose 一条命令起全栈(Django + PostgreSQL + Redis),训练计划、营养追踪、体重管理、进度相册全部自带,数据存在自己的服务器上。附飞牛 NAS 部署避坑。
前言
最近想要减肥健身,十一放假想找一款健身相关的软件,试用了几个 App,好用的都要付费或是买会员,免费的功能又太单一,于是就找到了这个项目,所有功能完全免费,且可以自主部署在自己的服务器上,完全掌控自己的数据。 wger 是一个完全免费且开源的健身与营养管理平台,采用 Django + PostgreSQL + Redis 架构构建。它提供了一个全面的健身解决方案,包括自定义训练计划、营养追踪、体重管理、进度相册等功能。 项目地址:https://github.com/wger-project/wger
部署安装
Docker Compose 一键部署
这是最快速、最推荐的部署方式。wger 官方提供了完整的 Docker Compose 配置,只需一条命令就能启动完整的应用栈。
第一步:获取配置文件
打开你的 NAS 设备(飞牛 NAS、群晖、威联通等)或 Linux 服务器,创建一个项目文件夹,然后从 GitHub 克隆官方配置:

第二步:配置环境变量
进入 config 文件夹,编辑 prod.env 文件进行必要的配置。以下是一些重要的环境变量说明: 必须修改的关键变量:
SECRET_KEY - Django 密钥,建议改为 50 个字符的随机字符串(可以让 AI 直接生成)
SITE_URL - 你的访问域名或 IP 地址,例如
http://192.168.1.100或https://wger.yourdomain.com
可选但推荐配置:
TIME_ZONE - 时区设置,默认为
Europe/Berlin,改为Asia/Shanghai适配中国时区CSRF_TRUSTED_ORIGINS - 如果使用自定义域名,需要配置此项以避免 CSRF 错误
ALLOW_REGISTRATION - 是否允许用户注册,默认为
TrueALLOW_GUEST_USERS - 是否允许游客用户,默认为
TrueALLOW_UPLOAD_VIDEOS - 是否允许上传视频,默认为
True
上面这两项默认都是 True,意味着装好之后任何人都能在你的实例上注册,还允许游客账号。如果你要用内网穿透把它开放到公网,建议在编排里就把 ALLOW_REGISTRATION 和 ALLOW_GUEST_USERS 设成
False,而不是等挂上去之后再改。

数据库配置(通常无需修改):
DJANGO_DB_PASSWORD - 数据库密码,默认为
wger(建议改为强密码)CELERY_FLOWER_PASSWORD - Celery 监控面板密码,默认为
adminadmin
其他变量保持默认即可,系统会自动处理同步训练计划、食物数据库等功能。
端口说明
80 端口 - Nginx 反向代理,这是主要的访问端口 5432 端口 - PostgreSQL 数据库(容器内部使用,无需暴露) 6379 端口 - Redis 缓存(容器内部使用,无需暴露)
如果你的 80 端口已被占用,可以在 docker-compose.yml 文件中修改 nginx 的端口映射。找到以下部分:
改为你想要的端口,例如 "8680:80",然后重新启动服务即可。

第三步:启动应用
进入项目目录后,执行以下命令即可启动所有服务:
这条命令会自动下载并启动以下服务:
Web 应用 - wger 主应用服务 Nginx - 反向代理和静态文件服务 PostgreSQL - 数据库服务 Redis - 缓存和消息队列服务 Celery Worker & Beat - 后台任务处理服务
第四步:访问应用
启动完成后,打开浏览器访问:
或者如果你配置了域名,直接访问你的域名即可。首次访问会看到 wger 的欢迎界面,你可以创建账户开始使用。

这个项目具体使用方法我还在研究,我是先挑选他的公开模板,然后照着练习,有 GIF 和视频作为参考,然后照着练习。

第五步:后续管理
查看日志:docker compose logs -f web 停止服务:docker compose down 更新应用:docker compose pull && docker compose up -d 重启服务:docker compose restart
数据持久化
wger 会自动创建以下数据卷来保存你的数据:
postgres-data - 数据库数据 redis-data - 缓存数据 celery-beat - 定时任务数据 static - 静态文件 media - 用户上传的文件(如进度照片)
这些数据会永久保存在 Docker 卷中,即使容器重启也不会丢失。
总结
这个项目已经连续更新好几年了,适合长期使用,包含了训练计划制定、营养追踪、进度记录等所有功能,还可以通过 API 和其他项目关联,可以去官网下载手机 APP,方便随时使用。最重要的是数据完全掌握在自己手里,不会被大数据割了。但是对中文支持不好,还对网络有要求。
踩坑
我是在飞牛上部署的,遇到了一个错误,原因是飞牛的 compose 版本太低导致的

为了不影响系统本身,我是在项目目录单独安装一个高版本的 compose

然后就可以正常运行了,要注意的是所有 docker compose 的命令都需要加一个 ./。 并且不影响直接在面板中操作
