banner
约 1,800 字
6 分钟

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 克隆官方配置:

纯文本
git clone https://github.com/wger-project/docker.git wger

cd wger

blog image

第二步:配置环境变量

进入 config 文件夹,编辑 prod.env 文件进行必要的配置。以下是一些重要的环境变量说明: 必须修改的关键变量:

  • SECRET_KEY - Django 密钥,建议改为 50 个字符的随机字符串(可以让 AI 直接生成)

  • SITE_URL - 你的访问域名或 IP 地址,例如 http://192.168.1.100 或 https://wger.yourdomain.com

    blog image

可选但推荐配置:

  • TIME_ZONE - 时区设置,默认为 Europe/Berlin,改为 Asia/Shanghai 适配中国时区

  • CSRF_TRUSTED_ORIGINS - 如果使用自定义域名,需要配置此项以避免 CSRF 错误

  • ALLOW_REGISTRATION - 是否允许用户注册,默认为 True

  • ALLOW_GUEST_USERS - 是否允许游客用户,默认为 True

  • ALLOW_UPLOAD_VIDEOS - 是否允许上传视频,默认为 True

上面这两项默认都是 True,意味着装好之后任何人都能在你的实例上注册,还允许游客账号。如果你要用内网穿透把它开放到公网,建议在编排里就把 ALLOW_REGISTRATION 和 ALLOW_GUEST_USERS 设成 False,而不是等挂上去之后再改。

blog image

数据库配置(通常无需修改):

  • DJANGO_DB_PASSWORD - 数据库密码,默认为 wger(建议改为强密码)

  • CELERY_FLOWER_PASSWORD - Celery 监控面板密码,默认为 adminadmin

其他变量保持默认即可,系统会自动处理同步训练计划、食物数据库等功能。

端口说明

80 端口 - Nginx 反向代理,这是主要的访问端口 5432 端口 - PostgreSQL 数据库(容器内部使用,无需暴露) 6379 端口 - Redis 缓存(容器内部使用,无需暴露)

如果你的 80 端口已被占用,可以在 docker-compose.yml 文件中修改 nginx 的端口映射。找到以下部分:

纯文本
ports:

  - "80:80"

改为你想要的端口,例如 "8680:80",然后重新启动服务即可。

blog image

第三步:启动应用

进入项目目录后,执行以下命令即可启动所有服务:

纯文本
docker compose up -d

这条命令会自动下载并启动以下服务:

Web 应用 - wger 主应用服务 Nginx - 反向代理和静态文件服务 PostgreSQL - 数据库服务 Redis - 缓存和消息队列服务 Celery Worker & Beat - 后台任务处理服务

第四步:访问应用

启动完成后,打开浏览器访问:

纯文本
http://你的IP地址:8680

或者如果你配置了域名,直接访问你的域名即可。首次访问会看到 wger 的欢迎界面,你可以创建账户开始使用。

blog image

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

blog image

第五步:后续管理

查看日志: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 版本太低导致的

blog image

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

纯文本
cd /vol3/1000/docker/wger

# 1. 下载最新版(x86_64 已确认)
curl -L --retry 3 -o docker-compose \
  https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64

# 2. 加执行权限
chmod +x docker-compose

# 3. 验证版本 —— 应显示 v5.1.x
./docker-compose version

blog image

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

blog image
END