diff options
author | Christian Cleberg <hello@cleberg.net> | 2024-03-04 22:34:28 -0600 |
---|---|---|
committer | Christian Cleberg <hello@cleberg.net> | 2024-03-04 22:34:28 -0600 |
commit | 797a1404213173791a5f4126a77ad383ceb00064 (patch) | |
tree | fcbb56dc023c1e490df70478e696041c566e58b4 /blog/self-hosting-wger | |
parent | 3db79e7bb6a34ee94935c22d7f0e18cf227c7813 (diff) | |
download | cleberg.net-797a1404213173791a5f4126a77ad383ceb00064.tar.gz cleberg.net-797a1404213173791a5f4126a77ad383ceb00064.tar.bz2 cleberg.net-797a1404213173791a5f4126a77ad383ceb00064.zip |
initial migration to test org-mode
Diffstat (limited to 'blog/self-hosting-wger')
-rw-r--r-- | blog/self-hosting-wger/index.org | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/blog/self-hosting-wger/index.org b/blog/self-hosting-wger/index.org new file mode 100644 index 0000000..10825b8 --- /dev/null +++ b/blog/self-hosting-wger/index.org @@ -0,0 +1,143 @@ +#+title: Self-Hosting Wger Workout Manager +#+date: 2023-01-28 +#+description: A guide to self-hosting the Wger application on your own server. +#+filetags: :selfhosting: + +* Wger: The Self-Hosted Workout Manager +[[https://wger.de][Wger Workout Manager]] is a fitness tracking tool for +those who enjoy self-hosting their data. You can also register an +account on their main website if you'd prefer to try without +self-hosting. + +** Features +I didn't see a full listing of features anywhere, so I compiled this +list of my own after installing wger: + +1. Dashboard + + - Dashboard view of Workout Schedule, Nutrition Plan, Weight Graph, & + last 5 Weight Logs + +2. Training + + - Workout Log + - Workout Schedule + - Calendar (shows weight logs and Bad/Neutral/Good days) + - Gallery (shows images you upload) + - Workout templates + - Public templates + - Exercises + +3. Nutrition + + - Nutrition plans + - BMI calculator + - Daily calories calculator + - Ingredient overview + +4. Body Weight + + - Weight overview + +** Documentation +In order to self-host wger, I opted to use the Docker version of the +application. You can read the README within the +[[https://github.com/wger-project/docker][wger-project/docker]] project +on GitHub for information and installation instructions. + +** Installation +To start the installation, I created a folder for wger and started +creating the three necessary files: + +#+begin_src sh +mkdir ~/wger && mkdir ~/wger/config +touch ~/wger/docker-compose.yml && \ +touch ~/wger/config/prod.env && \ +touch ~/wger/config/nginx.conf +#+end_src + +Once you have the folders and files created, you will need to copy the +contents of the =docker-compose.yml=, =prod.env=, and =nginx.conf= from +the GitHub link above. + +A few notes to explain the changes I made to the default files: + +- I updated the =ALLOW_REGISTRAION= variable in =prod.env= to =False= + after I created an account via my LAN connection, *before** I connected + this app to a publicly-available domain. +- I uncommented and updated =CSRF_TRUSTED_ORIGINS= to be equal to the + public version of this app: =https://wger.example.com=. +- I updated the port within =docker-compose.yml=, within the =nginx= + block. The port I updated this to will be reflected in my nginx + configuration file on the server (NOT the wger nginx.conf file). + +** Deploy +Once all files are created and modified to your needs, simply start the +container. + +#+begin_src sh +docker-compose up -d +#+end_src + +You can now visit the website on your LAN by going to +=localhost:YOUR_PORT= or by the server's IP, if you're not on the same +machine that is running the container. + +If you wish to connect this app to a public domain name, you'll need to +point an =A= DNS record from the domain to your server's public IP. +You'll then need to create a configuration file for whichever web server +or reverse proxy you're using. + +Wger's README suggests the following reverse proxy configuration for +Nginx: + +#+begin_src conf +upstream wger { + # This port should match the port in the `nginx` block of docker-compose.yml + # If the container is running on this same machine, replace this with + # server 127.0.0.1:8080 + server 123.456.789.0:8080; +} + +server { + listen 80; + listen [::]:443 ssl; + listen 443 ssl; + + location / { + proxy_pass http://wger; + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_redirect off; + } + + server_name my.domain.example.com; + + ssl_certificate /path/to/https/certificate.crt; + ssl_certificate_key /path/to/https/certificate.key; +} +#+end_src + +* Thoughts on Wger +I'm still playing around with the app itself, but it seems to be a solid +all-around workout manager, weight log, and food log. + +I like that the weight log graph is fluid and updates quickly. You can +also import or export data in CSV format if you'd like to move your data +elsewhere. + +The workout manager is slightly odd, as it requires you to enter sets +and reps for each exercise when you enter it into the plan. Then, when +you add a log entry for performing a workout, you then add what you +actually performed, in terms of reps and weight. + +I haven't tried the food log yet and I likely will not, at least for a +while. I have no need for a food log or calorie tracker at the moment. + +** Screenshot Example +You can see an example of a dashboard with placeholder data here: + +#+caption: wger dashboard +[[https://img.cleberg.net/blog/20230128-wger/wger.png]] |