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.
This commit is contained in:
CanbiZ (MickLesk) 2026-01-22 15:58:48 +01:00
parent 249113c2b9
commit 51a799c7d5
2 changed files with 20 additions and 21 deletions

View File

@ -37,7 +37,7 @@ function update_script() {
msg_info "Backing up Data" msg_info "Backing up Data"
cp -r /opt/wger/db /opt/wger_db_backup cp -r /opt/wger/db /opt/wger_db_backup
cp -r /opt/wger/media /opt/wger_media_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" msg_ok "Backed up Data"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wger" "wger-project/wger" "tarball" "latest" "/opt/wger" 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" msg_info "Restoring Data"
cp -r /opt/wger_db_backup/. /opt/wger/db cp -r /opt/wger_db_backup/. /opt/wger/db
cp -r /opt/wger_media_backup/. /opt/wger/media cp -r /opt/wger_media_backup/. /opt/wger/media
cp -r /opt/wger_settings_backup/. /opt/wger/settings cp /opt/wger_env_backup /opt/wger/.env
rm -rf /opt/wger_db_backup /opt/wger_media_backup /opt/wger_settings_backup rm -rf /opt/wger_db_backup /opt/wger_media_backup /opt/wger_env_backup
msg_ok "Restored Data" msg_ok "Restored Data"
msg_info "Updating wger" msg_info "Updating wger"
cd /opt/wger cd /opt/wger
$STD uv pip install . source /opt/wger/.env
export DJANGO_SETTINGS_MODULE=settings.main 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 migrate
$STD uv run python manage.py collectstatic --no-input $STD uv run python manage.py collectstatic --no-input
msg_ok "Updated wger" msg_ok "Updated wger"

View File

@ -33,23 +33,18 @@ chmod o+w /opt/wger/media
cd /opt/wger cd /opt/wger
$STD uv venv $STD uv venv
$STD uv pip install . $STD uv pip install .
mkdir -p /opt/wger/settings SECRET_KEY=$(openssl rand -base64 40)
cat <<EOF >/opt/wger/settings/main.py cat <<EOF >/opt/wger/.env
from wger.settings_global import * DJANGO_DB_DATABASE=/opt/wger/db/database.sqlite
DJANGO_MEDIA_ROOT=/opt/wger/media
DATABASES = { DJANGO_STATIC_ROOT=/opt/wger/static
'default': { SECRET_KEY=${SECRET_KEY}
'ENGINE': 'django.db.backends.sqlite3',
'NAME': '/opt/wger/db/database.sqlite',
}
}
MEDIA_ROOT = '/opt/wger/media'
STATIC_ROOT = '/opt/wger/static'
EOF EOF
touch /opt/wger/settings/__init__.py
export DJANGO_SETTINGS_MODULE=settings.main 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 migrate
$STD uv run python manage.py collectstatic --no-input $STD uv run python manage.py collectstatic --no-input
msg_ok "Set up wger" msg_ok "Set up wger"
@ -69,7 +64,10 @@ cat <<EOF >/etc/apache2/sites-available/wger.conf
WSGIScriptAlias / /opt/wger/wger/wsgi.py WSGIScriptAlias / /opt/wger/wger/wsgi.py
WSGIPassAuthorization On WSGIPassAuthorization On
SetEnv DJANGO_SETTINGS_MODULE settings.main 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/ Alias /static/ /opt/wger/static/
<Directory /opt/wger/static> <Directory /opt/wger/static>