From 51a799c7d55011fc5817b4e49212cd931329c7b7 Mon Sep 17 00:00:00 2001 From: "CanbiZ (MickLesk)" <47820557+MickLesk@users.noreply.github.com> Date: Thu, 22 Jan 2026 15:58:48 +0100 Subject: [PATCH] Refactor wger config to use .env and environment variables Replaces the custom settings directory with a .env file for configuration. Updates backup and restore logic to handle .env instead of settings, and sets required Django environment variables explicitly. Simplifies installation and update scripts for better maintainability and security. --- ct/wger.sh | 11 ++++++----- install/wger-install.sh | 30 ++++++++++++++---------------- 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/ct/wger.sh b/ct/wger.sh index 4da90279d..ddfbf3e2c 100644 --- a/ct/wger.sh +++ b/ct/wger.sh @@ -37,7 +37,7 @@ function update_script() { msg_info "Backing up Data" cp -r /opt/wger/db /opt/wger_db_backup cp -r /opt/wger/media /opt/wger_media_backup - cp -r /opt/wger/settings /opt/wger_settings_backup + cp /opt/wger/.env /opt/wger_env_backup msg_ok "Backed up Data" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wger" "wger-project/wger" "tarball" "latest" "/opt/wger" @@ -45,15 +45,16 @@ function update_script() { msg_info "Restoring Data" cp -r /opt/wger_db_backup/. /opt/wger/db cp -r /opt/wger_media_backup/. /opt/wger/media - cp -r /opt/wger_settings_backup/. /opt/wger/settings - rm -rf /opt/wger_db_backup /opt/wger_media_backup /opt/wger_settings_backup + cp /opt/wger_env_backup /opt/wger/.env + rm -rf /opt/wger_db_backup /opt/wger_media_backup /opt/wger_env_backup msg_ok "Restored Data" msg_info "Updating wger" cd /opt/wger - $STD uv pip install . + source /opt/wger/.env export DJANGO_SETTINGS_MODULE=settings.main - export PYTHONPATH=/opt/wger + export DJANGO_DB_DATABASE DJANGO_MEDIA_ROOT DJANGO_STATIC_ROOT SECRET_KEY + $STD uv pip install . $STD uv run python manage.py migrate $STD uv run python manage.py collectstatic --no-input msg_ok "Updated wger" diff --git a/install/wger-install.sh b/install/wger-install.sh index eff990e60..dfd0f689f 100644 --- a/install/wger-install.sh +++ b/install/wger-install.sh @@ -33,23 +33,18 @@ chmod o+w /opt/wger/media cd /opt/wger $STD uv venv $STD uv pip install . -mkdir -p /opt/wger/settings -cat </opt/wger/settings/main.py -from wger.settings_global import * - -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': '/opt/wger/db/database.sqlite', - } -} - -MEDIA_ROOT = '/opt/wger/media' -STATIC_ROOT = '/opt/wger/static' +SECRET_KEY=$(openssl rand -base64 40) +cat </opt/wger/.env +DJANGO_DB_DATABASE=/opt/wger/db/database.sqlite +DJANGO_MEDIA_ROOT=/opt/wger/media +DJANGO_STATIC_ROOT=/opt/wger/static +SECRET_KEY=${SECRET_KEY} EOF -touch /opt/wger/settings/__init__.py export DJANGO_SETTINGS_MODULE=settings.main -export PYTHONPATH=/opt/wger +export DJANGO_DB_DATABASE=/opt/wger/db/database.sqlite +export DJANGO_MEDIA_ROOT=/opt/wger/media +export DJANGO_STATIC_ROOT=/opt/wger/static +export SECRET_KEY="${SECRET_KEY}" $STD uv run python manage.py migrate $STD uv run python manage.py collectstatic --no-input msg_ok "Set up wger" @@ -69,7 +64,10 @@ cat </etc/apache2/sites-available/wger.conf WSGIScriptAlias / /opt/wger/wger/wsgi.py WSGIPassAuthorization On SetEnv DJANGO_SETTINGS_MODULE settings.main - SetEnv PYTHONPATH /opt/wger + SetEnv DJANGO_DB_DATABASE /opt/wger/db/database.sqlite + SetEnv DJANGO_MEDIA_ROOT /opt/wger/media + SetEnv DJANGO_STATIC_ROOT /opt/wger/static + SetEnv SECRET_KEY ${SECRET_KEY} Alias /static/ /opt/wger/static/