本文是
2021
年2
月完成的,最近因为工作比较忙,就把这些老文章翻出来,但为了发表,老苏差不多又重写了一遍。因为当时跑的是
wger/apache
,现在新的wger/apache
版本在老苏的机器上,会遇到AH00141: Could not initialize random number generator
错误。
什么是 wger ?
wger
是一个用Django
编写的锻炼管理器,是一个免费的开源Web
应用程序,可以帮助您管理个人锻炼,体重和饮食计划,还可以用作简单的健身房管理实用程序。它还提供了REST API
,可轻松与其他项目和工具集成。
前期准备
反向代理
如果要从公网访问,需要先要准备好域名,当然这一步不是必须的,只在局域网使用的话也是可以的
域名 | 局域网地址 | 备注 |
---|---|---|
https://wger.laosu.ml | http://192.168.0.197:8456 | wger 的访问地址 |
用 Nginx Proxy Manager
做反代处理;实际访问时,因为老苏没有备案,所以是 https://wger.laosu.ml:444
其中:
192.168.0.197
为群晖的IP
8456
是准备分配给wger
的端口
SSL
设置里一般没啥问题的话都是全部勾选
科学上网
Production
模式安装时,会执行 yarn install
安装相关依赖
不确定安装失败会不会有什么问题,有可能是下面这样的
建议将 yarnpkg.com
放入白名单中,来确保安装成功
命令行安装
docker-compose.yml
用 docker-compose
安装,将下面的内容保存为 docker-compose.yml
文件
version: '3'
services:
web:
image: wger/server:latest
container_name: wger_server
restart: unless-stopped
env_file:
- ./.env.txt
volumes:
- ./static:/home/wger/static
- ./media:/home/wger/media
#ports:
# - "8000"
healthcheck:
test: wget --no-verbose --tries=1 --spider http://localhost:8000
interval: 10s
timeout: 5s
retries: 5
depends_on:
db:
condition: service_healthy
cache:
condition: service_healthy
nginx:
image: nginx
container_name: wger_nginx
restart: unless-stopped
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
- ./static:/wger/static:ro
- ./media:/wger/media:ro
ports:
- 8456:80
healthcheck:
test: service nginx status
interval: 10s
timeout: 5s
retries: 5
depends_on:
- web
db:
image: postgres:14
container_name: wger_db
restart: unless-stopped
environment:
- POSTGRES_USER=wger
- POSTGRES_PASSWORD=wger
- POSTGRES_DB=wger
volumes:
- ./data:/var/lib/postgresql/data/
#expose:
# - 5432
healthcheck:
test: pg_isready -U wger
interval: 10s
timeout: 5s
retries: 5
cache:
image: redis:6.2
container_name: wger_cache
restart: unless-stopped
#expose:
# - 6379
healthcheck:
test: redis-cli ping
interval: 10s
timeout: 5s
retries: 5
.env.txt
另外要下载 .env.txt
文件,并如下修改,其他的暂时默认即可
TIME_ZONE
:默认是Europe/Berlin
,改为Asia/Shanghai
;SITE_URL
:默认是http://localhost
,改为前面设置的域名https://wger.xxsu.ml:8443
;
启用 CSRF_TRUSTED_ORIGINS
和 X_FORWARDED_PROTO_HEADER_SET
只要取消前面的
#
即可启用;
CSRF_TRUSTED_ORIGINS
:值改为https://wger.laosu.ml:444,http://192.168.0.197:8456
,多个域名的话用逗号分隔;X_FORWARDED_PROTO_HEADER_SET
:默认的True
就可以;
命令
然后执行下面的命令
# 新建文件夹 wger 和 子目录
mkdir -p /volume2/docker/wger/{data,media,static}
# 进入 wger 目录
cd /volume2/docker/wger
# 修改目录权限
chmod 777 static
# 下载 .env.txt 文件
curl -sSL https://raw.githubusercontent.com/wger-project/docker/master/config/prod.env -o .env.txt
## 下不动就加个代理试试
curl -sSL https://ghproxy.com/raw.githubusercontent.com/wger-project/docker/master/config/prod.env -o .env.txt
# 下载 nginx.conf
curl -sSL https://raw.githubusercontent.com/wger-project/docker/master/config/nginx.conf -o nginx.conf
## 下不动就加个代理试试
curl -sSL https://ghproxy.com/raw.githubusercontent.com/wger-project/docker/master/config/nginx.conf -o nginx.conf
# 修改 .env.txt 文件中的时区设置
# 将 docker-compose.yml 放入当前目录
# 一键启动
docker-compose up -d
文件夹结构
容器资源占用状况
运行
前面说过,容器启动时会有个 yarn install
的过程,这个时间还是比较长的,当日志中看到 Listening at: http://0.0.0.0:8000
时
就可以浏览器中输入 http://群晖IP:8456
或者 https://wger.laosu.ml:444
了,如果一切正常的话,就可以看到主界面了
点 LOGIN
默认的账号:
admin
,密码:adminadmin
登录成功后,从左至右依次为 锻炼计划
、营养计划
、体重
很奇怪,虽然识别了中文,但是居然还是英文界面
而官网 https://wger.de/ 是支持中文的,不知道这是不是 bug
参考文档
wger-project/wger: Self hosted FLOSS fitness/workout, nutrition and weight tracker written with Django
地址:https://github.com/wger-project/wger
wger-project/docker: Production…ish docker-compose image for wger
地址:https://github.com/wger-project/docker
Welcome to wger Workout Manager’s documentation! — wger Workout Manager 2.1 alpha documentation
地址:https://wger.readthedocs.io/en/latest/
wger-project/docs: Documentation for wger
地址:https://github.com/wger-project/docs
wger Workout Manager - Features
地址:https://wger.de/