# Django's secret key, change to a 50 character random string if you are running # this instance publicly. For an online generator, see e.g. https://djecrety.ir/ SECRET_KEY=wger-docker-supersecret-key-1234567890!@#$%^&*(-_) # Signing key used for JWT, use something different than the secret key SIGNING_KEY=wger-docker-secret-jwtkey-1234567890!@#$%^&*(-_=+) # The server's timezone, for a list of possible names: # https://en.wikipedia.org/wiki/List_of_tz_database_time_zones TIME_ZONE=America/Moncton # # Consult the deployment section in the readme if you are running this behind a # reverse proxy with HTTPS enabled CSRF_TRUSTED_ORIGINS=https://wger.shoebottom.ca X_FORWARDED_PROTO_HEADER_SET=True # # Static files # If you are running the application behind a reverse proxy or changed the port, the # links for some images *might* break (specially in the mobile app). Also note that # the API response is cached and contains the host, if you change this setting, just run # docker compose exec web python3 manage.py warmup-exercise-api-cache --force MEDIA_URL=https://static:80/media/ STATIC_URL=https://static:80/static/ # # These settings usually don't need changing # # # Application WGER_INSTANCE=https://wger.de # Wger instance from which to sync exercises, images, etc. ALLOW_REGISTRATION=True ALLOW_GUEST_USERS=False ALLOW_UPLOAD_VIDEOS=False # Users won't be able to contribute to exercises if their account age is # lower than this amount in days. MIN_ACCOUNT_AGE_TO_TRUST=21 # Synchronzing exercises # It is recommended to keep the local database synchronized with the wger # instance specified in WGER_INSTANCE since there are new added or translations # improved. For this you have different possibilities: # - Sync exercises on startup: # SYNC_EXERCISES_ON_STARTUP=True # DOWNLOAD_EXERCISE_IMAGES_ON_STARTUP=True # - Sync them in the background with celery. This will setup a job that will run # once a week at a random time (this time is selected once when starting the server) SYNC_EXERCISES_CELERY=True SYNC_EXERCISE_IMAGES_CELERY=True SYNC_EXERCISE_VIDEOS_CELERY=True # - Manually trigger the process as needed: # docker compose exec web python3 manage.py sync-exercises # docker compose exec web python3 manage.py download-exercise-images # docker compose exec web python3 manage.py download-exercise-videos # Synchronzing ingredients # You can also syncronize the ingredients from a remote wger instance, and have # basically the same options as for the ingredients: # - Sync them in the background with celery. This will setup a job that will run # once a week at a random time (this time is selected once when starting the server) SYNC_INGREDIENTS_CELERY=True # - Manually trigger the process as needed: # docker compose exec web python3 manage.py sync-ingredients # When scanning products with the barcode scanner, it is possible to dynamically # fetch the ingredient if it is not known in the local database. This option controlls # where to try to download the ingredient and their images. # Possible values OFF, WGER or None. Note that it is recommended to keep this as WGER # so that we don't overwhelm the Open Food Facts servers. Needs to have USE_CELERY # set to true DOWNLOAD_INGREDIENTS_FROM=WGER # Whether celery is configured and should be used. Can be left to true with # this setup but can be deactivated if you are using the app in some other way USE_CELERY=True # # Celery CELERY_BROKER=redis://cache:6379/2 CELERY_BACKEND=redis://cache:6379/2 CELERY_FLOWER_PASSWORD=adminadmin # # Database DJANGO_DB_ENGINE=django.db.backends.postgresql DJANGO_DB_DATABASE=wger DJANGO_DB_USER=wger DJANGO_DB_PASSWORD=wger DJANGO_DB_HOST=db DJANGO_DB_PORT=5432 DJANGO_PERFORM_MIGRATIONS=True # Perform any new database migrations on startup # # Cache DJANGO_CACHE_BACKEND=django_redis.cache.RedisCache DJANGO_CACHE_LOCATION=redis://cache:6379/1 DJANGO_CACHE_TIMEOUT=1296000 # in seconds - 60*60*24*15, 15 Days DJANGO_CACHE_CLIENT_CLASS=django_redis.client.DefaultClient #DJANGO_CACHE_CLIENT_PASSWORD=abcde... # Only if you changed the redis config # # Brute force login attacks # https://django-axes.readthedocs.io/en/latest/index.html AXES_ENABLED=True AXES_FAILURE_LIMIT=10 AXES_COOLOFF_TIME=30 # in minutes AXES_HANDLER=axes.handlers.cache.AxesCacheHandler AXES_LOCKOUT_PARAMETERS=ip_address AXES_IPWARE_PROXY_COUNT=1 AXES_IPWARE_META_PRECEDENCE_ORDER=HTTP_X_FORWARDED_FOR,REMOTE_ADDR # # Others DJANGO_DEBUG=False WGER_USE_GUNICORN=True EXERCISE_CACHE_TTL=18000 # in seconds - 5*60*60, 5 hours SITE_URL=http://localhost # # JWT auth ACCESS_TOKEN_LIFETIME=10 # The lifetime duration of the access token, in minutes REFRESH_TOKEN_LIFETIME=24 # The lifetime duration of the refresh token, in hours # # Other possible settings # Recaptcha keys. You will need to create an account and register your domain # https://www.google.com/recaptcha/ # RECAPTCHA_PUBLIC_KEY=abcde... # RECAPTCHA_PRIVATE_KEY=abcde... USE_RECAPTCHA=False # Clears the static files before copying the new ones (i.e. just calls collectstatic # with the appropriate flag: "manage.py collectstatic --no-input --clear"). Usually # This can be left like this but if you have problems and new static files are not # being copied correctly, clearing everything might help DJANGO_CLEAR_STATIC_FIRST=False # # Email # https://docs.djangoproject.com/en/4.1/topics/email/#smtp-backend # ENABLE_EMAIL=False # EMAIL_HOST=email.example.com # EMAIL_PORT=587 # EMAIL_HOST_USER=username # EMAIL_HOST_PASSWORD=password # EMAIL_USE_TLS=True # EMAIL_USE_SSL=False FROM_EMAIL='wger Workout Manager ' # Set your name and email to be notified if an internal server error occurs. # Needs a working email configuration # DJANGO_ADMINS=your name,email@example.com