diff options
Diffstat (limited to 'blog/2023-01-28-self-hosting-wger-workout-manager.org')
-rw-r--r-- | blog/2023-01-28-self-hosting-wger-workout-manager.org | 178 |
1 files changed, 100 insertions, 78 deletions
diff --git a/blog/2023-01-28-self-hosting-wger-workout-manager.org b/blog/2023-01-28-self-hosting-wger-workout-manager.org index 4e1730d..a4314c3 100644 --- a/blog/2023-01-28-self-hosting-wger-workout-manager.org +++ b/blog/2023-01-28-self-hosting-wger-workout-manager.org @@ -1,27 +1,33 @@ -+++ -date = 2023-01-28 -title = "Self-Hosting Wger Workout Manager" -description = "A walkthrough on how to host Wger with Docker on Linux." -+++ - -## Wger: The Self-Hosted Workout Manager - -[Wger Workout Manager](https://wger.de) 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: - -#### Dashboard - -- Dashboard view of Workout Schedule, Nutrition Plan, Weight Graph, & last 5 -Weight Logs - -#### Training - +#+title: Self-Hosting Wger Workout Manager +#+date: 2023-01-28 + +** Wger: The Self-Hosted Workout Manager +:PROPERTIES: +:CUSTOM_ID: wger-the-self-hosted-workout-manager +:END: +[[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 +:PROPERTIES: +:CUSTOM_ID: features +:END: +I didn't see a full listing of features anywhere, so I compiled this +list of my own after installing wger: + +**** Dashboard +:PROPERTIES: +:CUSTOM_ID: dashboard +:END: +- Dashboard view of Workout Schedule, Nutrition Plan, Weight Graph, & + last 5 Weight Logs + +**** Training +:PROPERTIES: +:CUSTOM_ID: training +:END: - Workout Log - Workout Schedule - Calendar (shows weight logs and Bad/Neutral/Good days) @@ -30,72 +36,83 @@ Weight Logs - Public templates - Exercises -#### Nutrition - +**** Nutrition +:PROPERTIES: +:CUSTOM_ID: nutrition +:END: - Nutrition plans - BMI calculator - Daily calories calculator - Ingredient overview -#### Body Weight - +**** Body Weight +:PROPERTIES: +:CUSTOM_ID: body-weight +:END: - Weight overview -### Documentation - +*** Documentation +:PROPERTIES: +:CUSTOM_ID: documentation +:END: In order to self-host wger, I opted to use the Docker version of the application. You can read the README within the -[wger-project/docker](https://github.com/wger-project/docker) project on GitHub -for information and installation instructions. +[[https://github.com/wger-project/docker][wger-project/docker]] project +on GitHub for information and installation instructions. -### Installation +*** Installation +:PROPERTIES: +:CUSTOM_ID: installation +:END: +To start the installation, I created a folder for wger and started +creating the three necessary files: -To start the installation, I created a folder for wger and started creating the -three necessary files: - -```sh +#+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. +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 - +- 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 +:PROPERTIES: +:CUSTOM_ID: deploy +:END: Once all files are created and modified to your needs, simply start the container. -```sh +#+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. +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. +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: +Wger's README suggests the following reverse proxy configuration for +Nginx: -```conf +#+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 @@ -122,27 +139,32 @@ server { ssl_certificate /path/to/https/certificate.crt; ssl_certificate_key /path/to/https/certificate.key; } -``` - -## Thoughts on Wger +#+end_src +** Thoughts on Wger +:PROPERTIES: +:CUSTOM_ID: thoughts-on-wger +:END: 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 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. -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. +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. -### Screenshot Example +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 +:PROPERTIES: +:CUSTOM_ID: screenshot-example +:END: You can see an example of a dashboard with placeholder data here: - +#+caption: wger dashboard +[[https://img.cleberg.net/blog/20230128-wger/wger.png]] |