PassNAT LogoPassNAT

wger开源健身营养管理器Docker部署教程,无公网帕斯内网穿透远程访问健身数据

作者

小编

发布时间

Curving abstract shapes with an orange and blue gradient

项目介绍

wger (ˈvɛɡɐ) 是一个免费的健身和营养管理器,专为健身爱好者和专业人士设计。它提供了全面的健身管理解决方案,包括自定义训练计划、营养跟踪、身体数据记录等功能。

这个项目的核心特色包括:自定义训练计划创建,支持自动重量递增规则;全面的数据跟踪功能,可以记录饮食计划、体重变化和自定义测量数据;营养管理系统,集成了 Open Food Facts 食物数据库来记录卡路里摄入;进度相册功能,可以上传照片跟踪健身进展;内置运动百科全书,用户可以访问和贡献运动库;跨平台应用支持,在 Android、iOS、F-Droid 和 Flathub 上都有客户端。

项目完全开源免费,采用 AGPL-3.0 许可证,支持多语言界面,拥有强大的 REST API 接口,支持多用户使用,还包含基础的健身房管理功能。最重要的是,它支持 Docker 自托管部署,让用户完全掌控自己的数据。

项目地址: 点我跳转

部署安装

如需在外也打开项目需要配置内网穿透使用,点击前往 帕斯内网穿透,先注册好账号备用。

wger 提供了完整的 Docker Compose 部署方案,包含应用服务器、反向代理、数据库、缓存服务器和 Celery 队列等所有必要组件。官方推荐使用 Docker Compose 进行一键部署。

复制下列的配置文件

1services:
2 web:
3 image: docker.io/wger/server:latest
4 depends_on:
5 db:
6 condition: service_healthy
7 cache:
8 condition: service_healthy
9 env_file:
10 - ./config/prod.env
11 volumes:
12 - static:/home/wger/static
13 - media:/home/wger/media
14 expose:
15 - 8000
16 healthcheck:
17 test: wget --no-verbose --tries=1 --spider http://localhost:8000
18 interval: 10s
19 timeout: 5s
20 start_period: 300s
21 retries: 5
22 restart: unless-stopped
23
24 nginx:
25 image: docker.io/nginx:stable
26 depends_on:
27 - web
28 volumes:
29 - ./config/nginx.conf:/etc/nginx/conf.d/default.conf
30 - static:/wger/static:ro
31 - media:/wger/media:ro
32 ports:
33 - '80:80'
34 healthcheck:
35 test: service nginx status
36 interval: 10s
37 timeout: 5s
38 retries: 5
39 start_period: 30s
40 restart: unless-stopped
41
42 db:
43 image: docker.io/postgres:15-alpine
44 environment:
45 - POSTGRES_USER=wger
46 - POSTGRES_PASSWORD=wger
47 - POSTGRES_DB=wger
48 - TZ=Europe/Berlin
49 volumes:
50 - postgres-data:/var/lib/postgresql/data/
51 expose:
52 - 5432
53 healthcheck:
54 test: pg_isready -U wger
55 interval: 10s
56 timeout: 5s
57 retries: 5
58 start_period: 30s
59 restart: unless-stopped
60
61 cache:
62 image: docker.io/redis
63 expose:
64 - 6379
65 volumes:
66 - ./config/redis.conf:/usr/local/etc/redis/redis.conf
67 - redis-data:/data
68 command: [ 'redis-server', '/usr/local/etc/redis/redis.conf']
69 healthcheck:
70 test: redis-cli ping
71 interval: 10s
72 timeout: 5s
73 retries: 5
74 start_period: 30s
75 restart: unless-stopped
76
77 celery_worker:
78 image: docker.io/wger/server:latest
79 command: /start-worker
80 env_file:
81 - ./config/prod.env
82 volumes:
83 - media:/home/wger/media
84 depends_on:
85 web:
86 condition: service_healthy
87 healthcheck:
88 test: celery -A wger inspect ping
89 interval: 10s
90 timeout: 5s
91 retries: 5
92 start_period: 30s
93
94 celery_beat:
95 image: docker.io/wger/server:latest
96 command: /start-beat
97 volumes:
98 - celery-beat:/home/wger/beat/
99 env_file:
100 - ./config/prod.env
101 depends_on:
102 celery_worker:
103 condition: service_healthy
104
105volumes:
106 postgres-data:
107 celery-beat:
108 redis-data:
109 media:
110 static:
111
112networks:
113 default:
114 name: wger_network

打开飞牛 NAS 或其他的 NAS 设备

项目名称可以随便填,点击创建 docker-compose.yml

点击 Compose -> 新建项目

需要同时创建配置文件目录和环境变量文件。在部署前需要下载完整的配置文件包,包括 nginx.conf、redis.conf 和 prod.env 文件。如果提示端口被占用可以修改 nginx 服务的端口映射,但是需要保持格式正确。

创建成功后可以访问 ip:80 到这里就可以正常显示项目了

穿透公网

打开帕斯内网穿透控制台,点击隧道管理-隧道列表

点击创建新隧道

隧道节点可以随便选,一般选个负载低的就可以

接下来填写信息,隧道名称可以随便填写

本地 IP 默认就可以

传输协议可以选择 TCP 也可以选择 HTTP/HTTPS

HTTP 就是域名的形式,教程以使用 TCP 为演示

本项目中如果没有修改端口的话默认是 80 端口,这里本地 IP 就填 80

远程端口可以留空也可以自定义。下图仅做参考,请按照实际项目端口添加。

填写完毕点击确定

点击刚才创建好的隧道,点击获取配置文件

回到飞牛 NAS,点击应用中心下载 frpc 客户端

打开后粘贴刚才复制的配置文件,点击确定即可

复制帕斯内网穿透控制台的访问 IP 和端口

可以看到已经正常穿透成功了

本篇教程结束