====== WGer ======
[[https://wger.de|WGer]] is a self-hosted workout tracker. It is actually targeted at gyms and not very capable of tracking more activities like byke, runs, etc.
**Note:** I am not using this at this time, so this information might be out of date.
===== Installation =====
WGer provides instruction for a bare-metal installation, but as is often the case, it require to install some additional packages system-wide and that's not a good practice in my opinion. This is one of the cases where going container might be a good idea.
Some good refrence for WGer and docker can be found [[https://github.com/wger-project/docker|here]].
As usual, let's create the dedicated user **wger** first:
useradd -d /data/daemons/wger -m wger
mkdir /data/wger
mkdir /data/wger/db
chown -R wger /data/wger
services:
web:
image: wger/server:latest
container_name: wger_server
env_file:
- ./config/prod.env
volumes:
- /data/wger/static:/home/wger/static
- /data/wger/media:/home/wger/media
ports:
- 8123:8000
networks:
- wger-net
networks:
wger-net: {}
Also, you need the following **prod.env** file:
SECRET_KEY=wger-docker-supersecret-key-
SIGNING_KEY=wger-docker-secret-jwtkey-
TIME_ZONE=Europe/Berlin
CSRF_TRUSTED_ORIGINS=https://train.mydomain.com
X_FORWARDED_PROTO_HEADER_SET=True
WGER_INSTANCE=https://wger.de # Wger instance from which to sync exercises, images, etc.
ALLOW_REGISTRATION=True
ALLOW_GUEST_USERS=True
ALLOW_UPLOAD_VIDEOS=True
MIN_ACCOUNT_AGE_TO_TRUST=21
DJANGO_DB_ENGINE=django.db.backends.sqlite3
DJANGO_DB_DATABASE=/home/wger/db/wger.sqlite3
DJANGO_DB_USER=wger
DJANGO_DB_PASSWORD=wger
DJANGO_DB_HOST=localhost
DJANGO_DB_PORT=5432
DJANGO_PERFORM_MIGRATIONS=True
DJANGO_DEBUG=False
WGER_USE_GUNICORN=True
EXERCISE_CACHE_TTL=18000
SITE_URL=http://localhost
ACCESS_TOKEN_LIFETIME=10
REFRESH_TOKEN_LIFETIME=24
USE_RECAPTCHA=False
DJANGO_CLEAR_STATIC_FIRST=False
FROM_EMAIL='wger Workout Manager '
===== Reverse Proxy =====
I didn't try to urn WGer on a subpath.
The following NGINX config file should be enough:
server {
server_name train.mydomain.com;
listen 443 ssl;
listen 8443 ssl;
access_log /var/log/nginx/train.mydomain.com_access_log main;
error_log /var/log/nginx/train.mydomain.com_error_log info;
location / {
proxy_pass http://127.0.0.1:8123;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_redirect off;
}
location /static/ {
alias /deposito/wger/static/;
}
location /media/ {
alias /deposito/wger/media/;
}
client_max_body_size 100M;
include com.mydomain/certbot.conf;
}
See [[selfhost:nginx|The Reverse Proxy concept]] for more details.