aboutsummaryrefslogtreecommitdiff
path: root/blog/2023-01-28-self-hosting-wger-workout-manager.org
diff options
context:
space:
mode:
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.org178
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:
-![wger dashboard](https://img.cleberg.net/blog/20230128-wger/wger.png "wger dashboard")
+#+caption: wger dashboard
+[[https://img.cleberg.net/blog/20230128-wger/wger.png]]