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"
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"

View File

@ -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 <<EOF >/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 <<EOF >/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 <<EOF >/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/
<Directory /opt/wger/static>