R-762: wger server question measured on the bench (gunicorn 2 workers, 41 % of 384M)
gates / gates (push) Successful in 2m44s

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
2026-10-06 21:22:53 +02:00
parent 8372c08e70
commit 12ffae3d53
44 changed files with 1344 additions and 1 deletions
@@ -49,3 +49,4 @@ no reboot.
| R-392 | **closed** — `architecture/12-agent-tooling.md` written (a map, points at the doc-authoring skill); routed from `.claude/rules/docs.md` (instruction-file edit: one table row added) | 25 | (this batch) |
| (DooPlex fence) | **A helper ran the catalog's full gate run on DooPlex**, whose `volume-persistence` gate builds and runs canary containers on the local Docker (`scripts/check-volume-persistence.py` canary self-test). Read at 21:20: no container and no volume left; one local image `felhom-volgate-canary:1` (alpine, built ~21:10) remains — left in place (not mine to prune; it may have existed before). The helper reports the gate's self-test fails on DooPlex for every app, also on `main` — not investigated: running it again would act on DooPlex. Fence repeated to the next helper | 5 | — |
| R-896 | **OPENED** — the volume-persistence gate runs Docker locally (acts on DooPlex); its self-test fails here | 5 | (this batch) |
| R-762 | **measured** on the bench (runserver 52 %, gunicorn 1w 43 %, 2w 41 % of 384M; no kills); the numbers pick gunicorn with 2 workers; template change not built. Bench back to stopped; no Docker on DooPlex | 25 | (this batch) |
@@ -0,0 +1,40 @@
# R-762 second half — wger under gunicorn, measured (2026-10-06 night, bench 9401)
**What was measured.** wger 2.7 (`wger/server:2.7`, the catalog template on `main` `d63ea35`: `DJANGO_DEBUG=False` and the
`wger-files` nginx), the template's limit **384M** (`deploy.resources.limits.memory: 384M`; the file server 32M). Three
runs, each on fresh volumes, on test bench VM 9401 (demo-hp): Django `runserver` (today's template), and gunicorn with
1 and 2 workers. No traefik: ports on the bench's loopback (wger 18000, the file server 18080). Script and compose:
`bench/run.sh`, `bench/compose.yml`; raw outputs `bench/out-*/`.
**How the worker count is set.** The image's entrypoint runs `gunicorn wger.wsgi:application --preload --bind
0.0.0.0:$PORT` when `WGER_USE_GUNICORN=True` — no `-w` and no config file in the image, so gunicorn's own default
applies: `WEB_CONCURRENCY` (unset = 1). **Control from a different channel** — the container's own log
(`bench/out-*/server-lines.txt`): 1 × „Booting worker" for gunicorn1, 2 × for gunicorn2, „Starting development server"
for runserver.
| Mode | Workers | anon peak (MB) | % of 384M | oom_kill | restarts | ready after | login page (10 × seq.) | its CSS via wger-files | 20 GETs, 10 parallel |
|---|---|---|---|---|---|---|---|---|---|
| runserver (today) | — | 201 | 52 % | 0 | 0 | 81 s | 200, avg 32 ms | 200, 1 ms | 200 ×20, avg 394 ms |
| gunicorn | 1 | 165 | 43 % | 0 | 0 | 75 s | 200, avg 31 ms | 200, 1 ms | 200 ×20, avg 241 ms |
| gunicorn | 2 | 157 | 41 % | 0 | 0 | 72 s | 200, avg 43 ms | 200, 1 ms | 200 ×20, avg 124 ms |
- anon peak: the highest `anon` in the container's `memory.stat`, sampled every 0.5 s from start to the end of the load
(MB = MiB). `memory.peak` read **384 MiB in all three runs** — the file cache fills the limit (collectstatic and the
sqlite file); it is not the app's memory and caused no kill (memory note: `memory.peak` counts the page cache).
- With `--preload`, the two workers share the app's pages with the master, so 2 workers did not cost more `anon` than 1
here (157 vs 165 MB; the difference is run-to-run noise, not a saving).
- ready after: from `compose up` to the first 200 on the login page — dominated by bootstrap, collectstatic and migrate
on a fresh volume, not by the server.
**Not measured:** a signed-in page. The scripted sign-in did not take (the form came back 200; the dashboard answered
302 to the login) and the brief said „if cheap". Nothing else was tried.
**Pick the numbers support: gunicorn with 2 workers** (`WGER_USE_GUNICORN=True`, `WEB_CONCURRENCY=2`): 41 % of the
limit, no kill, and half the wait of 1 worker when ten requests arrive together. 1 worker also fits; runserver is the
heaviest and is a development server.
**Teardown.** Bench 9401 was stopped when found; started 21:16, stopped again after the runs (`pct status`: stopped).
The project's containers, volumes and network were removed by `docker compose down -v` on the project `r762` only
(0 left by name); `/root/r762` deleted. The two images were already on the bench and stay. No prune of any kind. No
Docker command ran on DooPlex. Host: nothing created (the copy files in `/tmp` were deleted). Hub: nothing.
The image's default admin password appears in its own bootstrap log line; it is redacted in these files.
@@ -0,0 +1,41 @@
name: r762
services:
wger:
image: wger/server:2.7
container_name: r762-wger
environment:
- TZ=Europe/Budapest
- SECRET_KEY=${SECRET_KEY}
- CSRF_TRUSTED_ORIGINS=http://127.0.0.1:18000
- DJANGO_PERFORM_MIGRATIONS=True
- ALLOW_REGISTRATION=False
- ALLOW_GUEST_USERS=False
- ENABLE_EMAIL=False
- DJANGO_DB_ENGINE=django.db.backends.sqlite3
- DJANGO_DB_DATABASE=/home/wger/db/database.sqlite
- DJANGO_DB_USER=wger
- DJANGO_DB_PASSWORD=wger
- DJANGO_DB_HOST=localhost
- DJANGO_DB_PORT=5432
- SITE_URL=http://127.0.0.1:18000
- DJANGO_DEBUG=False
- WGER_USE_GUNICORN=${USE_GUNICORN}
- WEB_CONCURRENCY=${WORKERS}
volumes:
- r762_data:/home/wger/db
- r762_media:/home/wger/media
- r762_static:/home/wger/static
ports: ["127.0.0.1:18000:8000"]
deploy: {resources: {limits: {memory: 384M}}}
files:
image: nginx:1.30.5-alpine
container_name: r762-files
volumes:
- r762_static:/usr/share/nginx/html/static:ro
- r762_media:/usr/share/nginx/html/media:ro
ports: ["127.0.0.1:18080:80"]
deploy: {resources: {limits: {memory: 32M}}}
volumes:
r762_data:
r762_media:
r762_static:
@@ -0,0 +1 @@
cg=/sys/fs/cgroup/system.slice/docker-0fe5407dd081b37892db0bc386a4b3bf29691fd48aa024e6b467e67802171516.scope
@@ -0,0 +1,16 @@
Container r762-files Stopping
Container r762-wger Stopping
Container r762-files Stopped
Container r762-files Removing
Container r762-files Removed
Container r762-wger Stopped
Container r762-wger Removing
Container r762-wger Removed
Volume r762_r762_static Removing
Volume r762_r762_media Removing
Volume r762_r762_data Removing
Network r762_default Removing
Volume r762_r762_media Removed
Network r762_default Removed
Volume r762_r762_static Removed
Volume r762_r762_data Removed
@@ -0,0 +1,2 @@
oom 0
oom_kill 0
@@ -0,0 +1 @@
restarts=0 oomkilled=false status=running
@@ -0,0 +1,44 @@
login 200 0.029225
css 200 0.000990
login 200 0.030157
css 200 0.000852
login 200 0.028203
css 200 0.000778
login 200 0.028003
css 200 0.000780
login 200 0.042576
css 200 0.000725
login 200 0.027264
css 200 0.000684
login 200 0.027799
css 200 0.000653
login 200 0.028705
css 200 0.000756
login 200 0.036473
css 200 0.000788
login 200 0.035939
css 200 0.000807
conc 200 0.033693
conc 200 0.061308
conc 200 0.089760
conc 200 0.117106
conc 200 0.141659
conc 200 0.165625
conc 200 0.191559
conc 200 0.218629
conc 200 0.243975
conc 200 0.270413
conc 200 0.273171
conc 200 0.273157
conc 200 0.274259
conc 200 0.269569
conc 200 0.272369
conc 200 0.275821
conc 200 0.412664
conc 200 0.412170
conc 200 0.409205
conc 200 0.407689
signin 200 0.028778
dashboard 302 0.002369
dashboard 302 0.002113
dashboard 302 0.004232
@@ -0,0 +1,2 @@
ready_after_s=75 code=200
css=/static/css/workout-manager.7007d84ce531.css
@@ -0,0 +1,4 @@
Using gunicorn on port 8000...
[2026-10-06 21:19:10 +0200] [11] [INFO] Starting gunicorn 26.1.0
[2026-10-06 21:19:10 +0200] [11] [INFO] Listening at: http://0.0.0.0:8000 (11)
[2026-10-06 21:19:10 +0200] [12] [INFO] Booting worker with pid: 12
@@ -0,0 +1,2 @@
anon 173166592
file 177762304
@@ -0,0 +1,16 @@
Network r762_default Creating
Network r762_default Created
Volume "r762_r762_data" Creating
Volume "r762_r762_data" Created
Volume "r762_r762_media" Creating
Volume "r762_r762_media" Created
Volume "r762_r762_static" Creating
Volume "r762_r762_static" Created
Container r762-files Creating
Container r762-wger Creating
Container r762-wger Created
Container r762-files Created
Container r762-wger Starting
Container r762-files Starting
Container r762-files Started
Container r762-wger Started
@@ -0,0 +1,300 @@
*** Using settings from env: settings.main
/home/wger/src/settings/main.py:117: UserWarning: JWT_PRIVATE_KEY / JWT_PUBLIC_KEY are not set. JWT authentication will not work until you run `./manage.py generate-jwt-keys` and add the output to your environment.
warnings.warn(
level=INFO ts=2026-10-06 21:17:58,281 module=apps path=/home/wger/.local/lib/python3.12/site-packages/axes/apps.py line=53 message=AXES: BEGIN version 8.3.1, blocking by ip_address
*** Database is empty or incomplete, setting it up now
*** Using settings from env: settings.main
Operations to perform:
Apply all migrations: account, actstream, allauth_idp_oidc, auth, authtoken, axes, config, contenttypes, core, easy_thumbnails, exercises, gallery, gym, mailer, manager, measurements, mfa, nutrition, sessions, sites, socialaccount, token_blacklist, trophies, weight
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying account.0001_initial... OK
Applying account.0002_email_max_length... OK
Applying account.0003_alter_emailaddress_create_unique_verified_email... OK
Applying account.0004_alter_emailaddress_drop_unique_email... OK
Applying account.0005_emailaddress_idx_upper_email... OK
Applying account.0006_emailaddress_lower... OK
Applying account.0007_emailaddress_idx_email... OK
Applying account.0008_emailaddress_unique_primary_email_fixup... OK
Applying account.0009_emailaddress_unique_primary_email... OK
Applying actstream.0001_initial... OK
Applying actstream.0002_remove_action_data... OK
Applying actstream.0003_add_follow_flag... OK
Applying allauth_idp_oidc.0001_initial... OK
Applying allauth_idp_oidc.0002_client_default_scopes... OK
Applying allauth_idp_oidc.0003_client_allow_uri_wildcards... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying authtoken.0001_initial... OK
Applying authtoken.0002_auto_20160226_1747... OK
Applying authtoken.0003_tokenproxy... OK
Applying authtoken.0004_alter_tokenproxy_options... OK
Applying axes.0001_initial... OK
Applying axes.0002_auto_20151217_2044... OK
Applying axes.0003_auto_20160322_0929... OK
Applying axes.0004_auto_20181024_1538... OK
Applying axes.0005_remove_accessattempt_trusted... OK
Applying axes.0006_remove_accesslog_trusted... OK
Applying axes.0007_alter_accessattempt_unique_together... OK
Applying axes.0008_accessfailurelog... OK
Applying axes.0009_add_session_hash... OK
Applying axes.0010_accessattemptexpiration... OK
Applying gym.0001_initial... OK
Applying core.0001_initial... OK
Applying config.0001_initial... OK
Applying config.0002_auto_20190618_1617... OK
Applying config.0003_delete_languageconfig... OK
Applying sessions.0001_initial... OK
Applying weight.0001_initial... OK
Applying weight.0002_auto_20150604_2139... OK
Applying weight.0003_auto_20160416_1030... OK
Applying weight.0004_multiple_weight_entries_per_day... OK
Applying weight.0005_add_uuid... OK
Applying nutrition.0001_initial... OK
Applying nutrition.0002_auto_20170101_1538... OK
Applying nutrition.0003_auto_20170118_2308... OK
Applying nutrition.0004_auto_20200819_2310... OK
Applying nutrition.0005_logitem... OK
Applying nutrition.0006_auto_20201201_0653... OK
Applying nutrition.0007_auto_20201214_0013... OK
Applying nutrition.0008_auto_20210102_1446... OK
Applying nutrition.0009_meal_name... OK
Applying nutrition.0010_logitem_meal... OK
Applying nutrition.0011_alter_logitem_datetime... OK
Applying nutrition.0012_alter_ingredient_license_author... OK
Applying gym.0002_auto_20151003_1944... OK
Applying gym.0003_auto_20151003_2008... OK
Applying gym.0004_auto_20151003_2357... OK
Applying gym.0005_auto_20151023_1522... OK
Applying gym.0006_auto_20160214_1013... OK
Applying gym.0007_auto_20170123_0920... OK
Applying gym.0008_auto_20190618_1617... OK
Applying exercises.0001_initial... OK
Applying manager.0001_initial... OK
Applying manager.0002_auto_20150202_2040... OK
Applying manager.0004_auto_20150609_1603... OK
Applying core.0002_auto_20141225_1512... OK
Applying core.0003_auto_20150217_1554... OK
Applying core.0004_auto_20150217_1914... OK
Applying core.0005_auto_20151025_2236... OK
Applying core.0006_auto_20151025_2237... OK
Applying core.0007_repetitionunit... OK
Applying core.0008_weightunit... OK
Applying core.0009_auto_20160303_2340... OK
Applying core.0010_auto_20170403_0144... OK
Applying core.0011_auto_20201201_0653... OK
Applying core.0012_auto_20210210_1228... OK
Applying core.0013_auto_20210726_1729... OK
Applying nutrition.0013_ingredient_image... OK
Applying nutrition.0014_license_information... OK
Applying nutrition.0015_alter_ingredient_creation_date_and_more... OK
Applying nutrition.0016_alter_logitem_options_and_more... OK
Applying nutrition.0017_remove_nutritionplan_language_alter_logitem_meal... OK
Applying nutrition.0018_nutritionplan_goal_carbs_nutritionplan_goal_energy_and_more... OK
Applying nutrition.0019_alter_image_license_author_and_more... OK
Applying nutrition.0020_full_text_search... OK
Applying nutrition.0021_add_fibers_field... OK
Applying nutrition.0022_add_remote_id_increase_author_field_length... OK
Applying nutrition.0023_fiber_spelling... OK
Applying nutrition.0024_remove_ingredient_status... OK
Applying nutrition.0025_add_last_image_check... OK
Applying nutrition.0026_add_start_and_end_fields... OK
Applying nutrition.0027_prefill_end_date... OK
Applying nutrition.0028_ingredient_dietary_properties... OK
Applying nutrition.0029_ingredient_nutriscore... OK
Applying manager.0005_auto_20160303_2008... OK
Applying manager.0006_auto_20160303_2138... OK
Applying manager.0007_auto_20160311_2258... OK
Applying manager.0008_auto_20190618_1617... OK
Applying manager.0009_auto_20201202_1559... OK
Applying manager.0010_auto_20210102_1446... OK
Applying manager.0011_remove_set_exercises... OK
Applying manager.0012_auto_20210430_1449... OK
Applying manager.0013_set_comment... OK
Applying manager.0014_auto_20210717_1858... OK
Applying manager.0015_auto_20211028_1113... OK
Applying exercises.0002_auto_20150307_1841... OK
Applying exercises.0003_auto_20160921_2000... OK
Applying exercises.0004_auto_20170404_0114... OK
Applying exercises.0005_auto_20190618_1617... OK
Applying exercises.0006_auto_20201203_0203... OK
Applying exercises.0007_auto_20201203_1042... OK
Applying exercises.0008_exercisebase... OK
Applying exercises.0009_auto_20201211_0139... OK
Applying exercises.0010_auto_20201211_0205... OK
Applying exercises.0011_auto_20201214_0033... OK
Applying exercises.0012_auto_20210327_1219... OK
Applying exercises.0013_auto_20210503_1232... OK
Applying exercises.0014_exerciseimage_style... OK
Applying exercises.0015_exercise_videos... OK
Applying exercises.0016_exercisealias... OK
Applying exercises.0017_muscle_name_en... OK
Applying core.0013_userprofile_email_verified... OK
Applying core.0014_merge_20210818_1735... OK
Applying exercises.0018_delete_pending_exercises... OK
Applying exercises.0019_exercise_crowdsourcing_changes... OK
Applying manager.0016_move_to_exercise_base... OK
Applying manager.0017_alter_workoutlog_exercise_base... OK
Applying exercises.0020_historicalexerciseimage_historicalexercisevideo... OK
Applying exercises.0021_deletionlog... OK
Applying exercises.0022_alter_exercise_license_author_and_more... OK
Applying exercises.0023_make_uuid_unique... OK
Applying exercises.0024_license_information... OK
Applying exercises.0025_rename_update_date_exercise_last_update_and_more... OK
Applying exercises.0026_deletionlog_replaced_by... OK
Applying exercises.0027_alter_deletionlog_replaced_by_and_more... OK
Applying exercises.0028_add_uuid_alias_and_comments... OK
Applying exercises.0029_full_text_search... OK
Applying exercises.0030_increase_author_field_length... OK
Applying exercises.0032_rename_exercise... OK
Applying core.0015_alter_language_short_name... OK
Applying core.0016_alter_language_short_name... OK
Applying manager.0018_flexible_routines... OK
Applying manager.0019_flexible_routines_migration... OK
Applying manager.0021_flexible_routines_cleanup... OK
Applying core.0017_language_full_name_en... OK
Applying core.0018_rounding... OK
Applying core.0019_delete_daysofweek... OK
Applying core.0020_add_trophies_enabled_to_userprofile... OK
Applying core.0021_add_unit_type_to_repetitionunit... OK
Applying nutrition.0030_add_indices... OK
Applying nutrition.0031_start_weight_unit_merge... OK
Applying nutrition.0032_continue_weight_unit_merge... OK
Applying nutrition.0033_finalize_weight_unit_merge... OK
Applying nutrition.0034_ingredient_trigram_gin_index... OK
Applying nutrition.0035_add_uuids... OK
Applying nutrition.0036_alter_image_license_author_and_more... OK
Applying nutrition.0037_powersync_synced_ingredient_tables... OK
Applying measurements.0001_initial... OK
Applying measurements.0002_auto_20210722_1042... OK
Applying measurements.0003_alter_measurement_unique_together_and_more... OK
Applying measurements.0004_add_uuids... OK
Applying measurements.0005_alter_measurement_date... OK
Applying trophies.0001_initial... OK
Applying trophies.0002_load_initial_trophies... OK
Applying manager.0022_alter_rir_type... OK
Applying manager.0023_change_validators... OK
Applying manager.0024_log_and_session_uuid... OK
Applying manager.0025_change_pk_to_uuid... OK
Applying trophies.0003_migrate_context_data_uuids... OK
Applying manager.0026_change_pk_to_uuid_swap... OK
Applying core.0022_move_email_verified_to_emailaddress... OK
Applying core.0023_create_publication... OK
Applying manager.0027_cleanup_fields... OK
Applying manager.0028_backfill_session_day... OK
Applying gallery.0001_initial... OK
Applying exercises.0033_uniqueness_constraint_translations... OK
Applying exercises.0034_add_exercise_image_dimensions... OK
Applying exercises.0035_add_is_ai_generated... OK
Applying exercises.0036_add_markdown_description_field... OK
Applying exercises.0037_replace_variation_with_uuid_field... OK
Applying exercises.0038_sync_model_changes... OK
Applying exercises.0039_translation_alias_trigram_gin_index... OK
Applying exercises.0040_alter_exercise_license_author_and_more... OK
Applying core.0024_backfill_emailaddress... OK
Applying core.0025_remove_unused_fields_in_userprofile... OK
Applying core.0026_alter_userprofile_birthdate_alter_userprofile_height... OK
Applying core.0027_powersync_publication... OK
Applying core.0028_longlivedsession... OK
Applying core.0029_userprofile_timezone... OK
Applying easy_thumbnails.0001_initial... OK
Applying easy_thumbnails.0002_thumbnaildimensions... OK
Applying mailer.0001_initial... OK
Applying mailer.0002_auto_20190618_1617... OK
Applying mailer.0003_auto_20201201_0653... OK
Applying manager.0029_alter_workoutsession_options_and_more... OK
Applying measurements.0006_health_sync... OK
Applying measurements.0007_migrate_weight... OK
Applying measurements.0008_dynamic_type... OK
Applying mfa.0001_initial... OK
Applying mfa.0002_authenticator_timestamps... OK
Applying mfa.0003_authenticator_type_uniq... OK
Applying sites.0001_initial... OK
Applying sites.0002_alter_domain_unique... OK
Applying socialaccount.0001_initial... OK
Applying socialaccount.0002_token_max_lengths... OK
Applying socialaccount.0003_extra_data_default_dict... OK
Applying socialaccount.0004_app_provider_id_settings... OK
Applying socialaccount.0005_socialtoken_nullable_app... OK
Applying socialaccount.0006_alter_socialaccount_extra_data... OK
Applying token_blacklist.0001_initial... OK
Applying token_blacklist.0002_outstandingtoken_jti_hex... OK
Applying token_blacklist.0003_auto_20171017_2007... OK
Applying token_blacklist.0004_auto_20171017_2013... OK
Applying token_blacklist.0005_remove_outstandingtoken_jti... OK
Applying token_blacklist.0006_auto_20171017_2113... OK
Applying token_blacklist.0007_auto_20171017_2214... OK
Applying token_blacklist.0008_migrate_to_bigautofield... OK
Applying token_blacklist.0010_fix_migrate_to_bigautofield... OK
Applying token_blacklist.0011_linearizes_history... OK
Applying token_blacklist.0012_alter_outstandingtoken_user... OK
Applying token_blacklist.0013_alter_blacklistedtoken_options_and_more... OK
Applying weight.0006_delete_weightentry... OK
*** Using settings from env: settings.main
Installed 1 object(s) from 1 fixture(s)
Installed 33 object(s) from 1 fixture(s)
Installed 7 object(s) from 1 fixture(s)
Installed 3 object(s) from 1 fixture(s)
Installed 5 object(s) from 1 fixture(s)
Installed 8 object(s) from 1 fixture(s)
Installed 6 object(s) from 1 fixture(s)
Installed 1 object(s) from 1 fixture(s)
Installed 12 object(s) from 1 fixture(s)
Installed 16 object(s) from 1 fixture(s)
Installed 8 object(s) from 1 fixture(s)
Installed 872 object(s) from 1 fixture(s)
Installed 2429 object(s) from 1 fixture(s)
Installed 1 object(s) from 1 fixture(s)
Installed 1 object(s) from 1 fixture(s)
Installed 1 object(s) from 1 fixture(s)
*** Using settings from env: settings.main
*** Password for user admin was reset to '<image-default, redacted>'
Installed 3 object(s) from 1 fixture(s)
Running in production mode, running collectstatic now
/home/wger/src/settings/main.py:117: UserWarning: JWT_PRIVATE_KEY / JWT_PUBLIC_KEY are not set. JWT authentication will not work until you run `./manage.py generate-jwt-keys` and add the output to your environment.
warnings.warn(
level=INFO ts=2026-10-06 21:18:45,187 module=apps path=/home/wger/.local/lib/python3.12/site-packages/axes/apps.py line=53 message=AXES: BEGIN version 8.3.1, blocking by ip_address
11362 static files copied to '/home/wger/static', 11362 post-processed.
Performing database migrations
/home/wger/src/settings/main.py:117: UserWarning: JWT_PRIVATE_KEY / JWT_PUBLIC_KEY are not set. JWT authentication will not work until you run `./manage.py generate-jwt-keys` and add the output to your environment.
warnings.warn(
level=INFO ts=2026-10-06 21:19:04,477 module=apps path=/home/wger/.local/lib/python3.12/site-packages/axes/apps.py line=53 message=AXES: BEGIN version 8.3.1, blocking by ip_address
System check identified some issues:
WARNINGS:
?: (axes.W001) You are using the django-axes cache handler for login attempt tracking. Your cache configuration is however invalid and will not work correctly with django-axes. This can leave security holes in your login systems as attempts are not tracked correctly. Reconfigure settings.AXES_CACHE and settings.CACHES per django-axes configuration documentation.
Operations to perform:
Apply all migrations: account, actstream, allauth_idp_oidc, auth, authtoken, axes, config, contenttypes, core, easy_thumbnails, exercises, gallery, gym, mailer, manager, measurements, mfa, nutrition, sessions, sites, socialaccount, token_blacklist, trophies, weight
Running migrations:
No migrations to apply.
Your models in app(s): 'exercises', 'gallery' have changes that are not yet reflected in a migration, and so won't be applied.
Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage.py migrate' to apply them.
/home/wger/src/settings/main.py:117: UserWarning: JWT_PRIVATE_KEY / JWT_PUBLIC_KEY are not set. JWT authentication will not work until you run `./manage.py generate-jwt-keys` and add the output to your environment.
warnings.warn(
level=INFO ts=2026-10-06 21:19:07,339 module=apps path=/home/wger/.local/lib/python3.12/site-packages/axes/apps.py line=53 message=AXES: BEGIN version 8.3.1, blocking by ip_address
System check identified some issues:
WARNINGS:
?: (axes.W001) You are using the django-axes cache handler for login attempt tracking. Your cache configuration is however invalid and will not work correctly with django-axes. This can leave security holes in your login systems as attempts are not tracked correctly. Reconfigure settings.AXES_CACHE and settings.CACHES per django-axes configuration documentation.
Set site URL to 127.0.0.1:18000
Using gunicorn on port 8000...
/home/wger/src/settings/main.py:117: UserWarning: JWT_PRIVATE_KEY / JWT_PUBLIC_KEY are not set. JWT authentication will not work until you run `./manage.py generate-jwt-keys` and add the output to your environment.
warnings.warn(
level=INFO ts=2026-10-06 21:19:09,558 module=apps path=/home/wger/.local/lib/python3.12/site-packages/axes/apps.py line=53 message=AXES: BEGIN version 8.3.1, blocking by ip_address
[2026-10-06 21:19:10 +0200] [11] [INFO] Starting gunicorn 26.1.0
[2026-10-06 21:19:10 +0200] [11] [INFO] Listening at: http://0.0.0.0:8000 (11)
[2026-10-06 21:19:10 +0200] [11] [INFO] Using worker: sync
[2026-10-06 21:19:10 +0200] [12] [INFO] Booting worker with pid: 12
[2026-10-06 21:19:10 +0200] [11] [INFO] Control socket listening at /home/wger/.gunicorn/gunicorn.ctl
@@ -0,0 +1 @@
cg=/sys/fs/cgroup/system.slice/docker-43e2bbaf77cce593c3c45bb339313ed1b7e4487b86e42096a2b98bc800c0ea2f.scope
@@ -0,0 +1,16 @@
Container r762-files Stopping
Container r762-wger Stopping
Container r762-files Stopped
Container r762-files Removing
Container r762-files Removed
Container r762-wger Stopped
Container r762-wger Removing
Container r762-wger Removed
Volume r762_r762_static Removing
Volume r762_r762_media Removing
Volume r762_r762_data Removing
Network r762_default Removing
Network r762_default Removed
Volume r762_r762_static Removed
Volume r762_r762_media Removed
Volume r762_r762_data Removed
@@ -0,0 +1,2 @@
oom 0
oom_kill 0
@@ -0,0 +1 @@
restarts=0 oomkilled=false status=running
@@ -0,0 +1,44 @@
login 200 0.027505
css 200 0.001036
login 200 0.167486
css 200 0.000875
login 200 0.035283
css 200 0.000725
login 200 0.030707
css 200 0.000748
login 200 0.029255
css 200 0.000693
login 200 0.027881
css 200 0.000801
login 200 0.029632
css 200 0.000685
login 200 0.027624
css 200 0.000707
login 200 0.028084
css 200 0.000761
login 200 0.029816
css 200 0.000739
conc 200 0.039183
conc 200 0.046380
conc 200 0.072315
conc 200 0.076656
conc 200 0.103310
conc 200 0.097737
conc 200 0.125782
conc 200 0.123173
conc 200 0.147026
conc 200 0.152308
conc 200 0.147579
conc 200 0.151358
conc 200 0.147262
conc 200 0.145966
conc 200 0.145188
conc 200 0.142898
conc 200 0.151948
conc 200 0.150439
conc 200 0.150489
conc 200 0.160370
signin 200 0.036947
dashboard 302 0.002328
dashboard 302 0.002854
dashboard 302 0.001981
@@ -0,0 +1,2 @@
ready_after_s=72 code=200
css=/static/css/workout-manager.7007d84ce531.css
@@ -0,0 +1,5 @@
Using gunicorn on port 8000...
[2026-10-06 21:20:40 +0200] [12] [INFO] Starting gunicorn 26.1.0
[2026-10-06 21:20:40 +0200] [12] [INFO] Listening at: http://0.0.0.0:8000 (12)
[2026-10-06 21:20:40 +0200] [13] [INFO] Booting worker with pid: 13
[2026-10-06 21:20:40 +0200] [14] [INFO] Booting worker with pid: 14
@@ -0,0 +1,2 @@
anon 165064704
file 183894016
@@ -0,0 +1,16 @@
Network r762_default Creating
Network r762_default Created
Volume "r762_r762_static" Creating
Volume "r762_r762_static" Created
Volume "r762_r762_data" Creating
Volume "r762_r762_data" Created
Volume "r762_r762_media" Creating
Volume "r762_r762_media" Created
Container r762-files Creating
Container r762-wger Creating
Container r762-files Created
Container r762-wger Created
Container r762-files Starting
Container r762-wger Starting
Container r762-files Started
Container r762-wger Started
@@ -0,0 +1,301 @@
*** Using settings from env: settings.main
/home/wger/src/settings/main.py:117: UserWarning: JWT_PRIVATE_KEY / JWT_PUBLIC_KEY are not set. JWT authentication will not work until you run `./manage.py generate-jwt-keys` and add the output to your environment.
warnings.warn(
level=INFO ts=2026-10-06 21:19:29,633 module=apps path=/home/wger/.local/lib/python3.12/site-packages/axes/apps.py line=53 message=AXES: BEGIN version 8.3.1, blocking by ip_address
*** Database is empty or incomplete, setting it up now
*** Using settings from env: settings.main
Operations to perform:
Apply all migrations: account, actstream, allauth_idp_oidc, auth, authtoken, axes, config, contenttypes, core, easy_thumbnails, exercises, gallery, gym, mailer, manager, measurements, mfa, nutrition, sessions, sites, socialaccount, token_blacklist, trophies, weight
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying account.0001_initial... OK
Applying account.0002_email_max_length... OK
Applying account.0003_alter_emailaddress_create_unique_verified_email... OK
Applying account.0004_alter_emailaddress_drop_unique_email... OK
Applying account.0005_emailaddress_idx_upper_email... OK
Applying account.0006_emailaddress_lower... OK
Applying account.0007_emailaddress_idx_email... OK
Applying account.0008_emailaddress_unique_primary_email_fixup... OK
Applying account.0009_emailaddress_unique_primary_email... OK
Applying actstream.0001_initial... OK
Applying actstream.0002_remove_action_data... OK
Applying actstream.0003_add_follow_flag... OK
Applying allauth_idp_oidc.0001_initial... OK
Applying allauth_idp_oidc.0002_client_default_scopes... OK
Applying allauth_idp_oidc.0003_client_allow_uri_wildcards... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying authtoken.0001_initial... OK
Applying authtoken.0002_auto_20160226_1747... OK
Applying authtoken.0003_tokenproxy... OK
Applying authtoken.0004_alter_tokenproxy_options... OK
Applying axes.0001_initial... OK
Applying axes.0002_auto_20151217_2044... OK
Applying axes.0003_auto_20160322_0929... OK
Applying axes.0004_auto_20181024_1538... OK
Applying axes.0005_remove_accessattempt_trusted... OK
Applying axes.0006_remove_accesslog_trusted... OK
Applying axes.0007_alter_accessattempt_unique_together... OK
Applying axes.0008_accessfailurelog... OK
Applying axes.0009_add_session_hash... OK
Applying axes.0010_accessattemptexpiration... OK
Applying gym.0001_initial... OK
Applying core.0001_initial... OK
Applying config.0001_initial... OK
Applying config.0002_auto_20190618_1617... OK
Applying config.0003_delete_languageconfig... OK
Applying sessions.0001_initial... OK
Applying weight.0001_initial... OK
Applying weight.0002_auto_20150604_2139... OK
Applying weight.0003_auto_20160416_1030... OK
Applying weight.0004_multiple_weight_entries_per_day... OK
Applying weight.0005_add_uuid... OK
Applying nutrition.0001_initial... OK
Applying nutrition.0002_auto_20170101_1538... OK
Applying nutrition.0003_auto_20170118_2308... OK
Applying nutrition.0004_auto_20200819_2310... OK
Applying nutrition.0005_logitem... OK
Applying nutrition.0006_auto_20201201_0653... OK
Applying nutrition.0007_auto_20201214_0013... OK
Applying nutrition.0008_auto_20210102_1446... OK
Applying nutrition.0009_meal_name... OK
Applying nutrition.0010_logitem_meal... OK
Applying nutrition.0011_alter_logitem_datetime... OK
Applying nutrition.0012_alter_ingredient_license_author... OK
Applying gym.0002_auto_20151003_1944... OK
Applying gym.0003_auto_20151003_2008... OK
Applying gym.0004_auto_20151003_2357... OK
Applying gym.0005_auto_20151023_1522... OK
Applying gym.0006_auto_20160214_1013... OK
Applying gym.0007_auto_20170123_0920... OK
Applying gym.0008_auto_20190618_1617... OK
Applying exercises.0001_initial... OK
Applying manager.0001_initial... OK
Applying manager.0002_auto_20150202_2040... OK
Applying manager.0004_auto_20150609_1603... OK
Applying core.0002_auto_20141225_1512... OK
Applying core.0003_auto_20150217_1554... OK
Applying core.0004_auto_20150217_1914... OK
Applying core.0005_auto_20151025_2236... OK
Applying core.0006_auto_20151025_2237... OK
Applying core.0007_repetitionunit... OK
Applying core.0008_weightunit... OK
Applying core.0009_auto_20160303_2340... OK
Applying core.0010_auto_20170403_0144... OK
Applying core.0011_auto_20201201_0653... OK
Applying core.0012_auto_20210210_1228... OK
Applying core.0013_auto_20210726_1729... OK
Applying nutrition.0013_ingredient_image... OK
Applying nutrition.0014_license_information... OK
Applying nutrition.0015_alter_ingredient_creation_date_and_more... OK
Applying nutrition.0016_alter_logitem_options_and_more... OK
Applying nutrition.0017_remove_nutritionplan_language_alter_logitem_meal... OK
Applying nutrition.0018_nutritionplan_goal_carbs_nutritionplan_goal_energy_and_more... OK
Applying nutrition.0019_alter_image_license_author_and_more... OK
Applying nutrition.0020_full_text_search... OK
Applying nutrition.0021_add_fibers_field... OK
Applying nutrition.0022_add_remote_id_increase_author_field_length... OK
Applying nutrition.0023_fiber_spelling... OK
Applying nutrition.0024_remove_ingredient_status... OK
Applying nutrition.0025_add_last_image_check... OK
Applying nutrition.0026_add_start_and_end_fields... OK
Applying nutrition.0027_prefill_end_date... OK
Applying nutrition.0028_ingredient_dietary_properties... OK
Applying nutrition.0029_ingredient_nutriscore... OK
Applying manager.0005_auto_20160303_2008... OK
Applying manager.0006_auto_20160303_2138... OK
Applying manager.0007_auto_20160311_2258... OK
Applying manager.0008_auto_20190618_1617... OK
Applying manager.0009_auto_20201202_1559... OK
Applying manager.0010_auto_20210102_1446... OK
Applying manager.0011_remove_set_exercises... OK
Applying manager.0012_auto_20210430_1449... OK
Applying manager.0013_set_comment... OK
Applying manager.0014_auto_20210717_1858... OK
Applying manager.0015_auto_20211028_1113... OK
Applying exercises.0002_auto_20150307_1841... OK
Applying exercises.0003_auto_20160921_2000... OK
Applying exercises.0004_auto_20170404_0114... OK
Applying exercises.0005_auto_20190618_1617... OK
Applying exercises.0006_auto_20201203_0203... OK
Applying exercises.0007_auto_20201203_1042... OK
Applying exercises.0008_exercisebase... OK
Applying exercises.0009_auto_20201211_0139... OK
Applying exercises.0010_auto_20201211_0205... OK
Applying exercises.0011_auto_20201214_0033... OK
Applying exercises.0012_auto_20210327_1219... OK
Applying exercises.0013_auto_20210503_1232... OK
Applying exercises.0014_exerciseimage_style... OK
Applying exercises.0015_exercise_videos... OK
Applying exercises.0016_exercisealias... OK
Applying exercises.0017_muscle_name_en... OK
Applying core.0013_userprofile_email_verified... OK
Applying core.0014_merge_20210818_1735... OK
Applying exercises.0018_delete_pending_exercises... OK
Applying exercises.0019_exercise_crowdsourcing_changes... OK
Applying manager.0016_move_to_exercise_base... OK
Applying manager.0017_alter_workoutlog_exercise_base... OK
Applying exercises.0020_historicalexerciseimage_historicalexercisevideo... OK
Applying exercises.0021_deletionlog... OK
Applying exercises.0022_alter_exercise_license_author_and_more... OK
Applying exercises.0023_make_uuid_unique... OK
Applying exercises.0024_license_information... OK
Applying exercises.0025_rename_update_date_exercise_last_update_and_more... OK
Applying exercises.0026_deletionlog_replaced_by... OK
Applying exercises.0027_alter_deletionlog_replaced_by_and_more... OK
Applying exercises.0028_add_uuid_alias_and_comments... OK
Applying exercises.0029_full_text_search... OK
Applying exercises.0030_increase_author_field_length... OK
Applying exercises.0032_rename_exercise... OK
Applying core.0015_alter_language_short_name... OK
Applying core.0016_alter_language_short_name... OK
Applying manager.0018_flexible_routines... OK
Applying manager.0019_flexible_routines_migration... OK
Applying manager.0021_flexible_routines_cleanup... OK
Applying core.0017_language_full_name_en... OK
Applying core.0018_rounding... OK
Applying core.0019_delete_daysofweek... OK
Applying core.0020_add_trophies_enabled_to_userprofile... OK
Applying core.0021_add_unit_type_to_repetitionunit... OK
Applying nutrition.0030_add_indices... OK
Applying nutrition.0031_start_weight_unit_merge... OK
Applying nutrition.0032_continue_weight_unit_merge... OK
Applying nutrition.0033_finalize_weight_unit_merge... OK
Applying nutrition.0034_ingredient_trigram_gin_index... OK
Applying nutrition.0035_add_uuids... OK
Applying nutrition.0036_alter_image_license_author_and_more... OK
Applying nutrition.0037_powersync_synced_ingredient_tables... OK
Applying measurements.0001_initial... OK
Applying measurements.0002_auto_20210722_1042... OK
Applying measurements.0003_alter_measurement_unique_together_and_more... OK
Applying measurements.0004_add_uuids... OK
Applying measurements.0005_alter_measurement_date... OK
Applying trophies.0001_initial... OK
Applying trophies.0002_load_initial_trophies... OK
Applying manager.0022_alter_rir_type... OK
Applying manager.0023_change_validators... OK
Applying manager.0024_log_and_session_uuid... OK
Applying manager.0025_change_pk_to_uuid... OK
Applying trophies.0003_migrate_context_data_uuids... OK
Applying manager.0026_change_pk_to_uuid_swap... OK
Applying core.0022_move_email_verified_to_emailaddress... OK
Applying core.0023_create_publication... OK
Applying manager.0027_cleanup_fields... OK
Applying manager.0028_backfill_session_day... OK
Applying gallery.0001_initial... OK
Applying exercises.0033_uniqueness_constraint_translations... OK
Applying exercises.0034_add_exercise_image_dimensions... OK
Applying exercises.0035_add_is_ai_generated... OK
Applying exercises.0036_add_markdown_description_field... OK
Applying exercises.0037_replace_variation_with_uuid_field... OK
Applying exercises.0038_sync_model_changes... OK
Applying exercises.0039_translation_alias_trigram_gin_index... OK
Applying exercises.0040_alter_exercise_license_author_and_more... OK
Applying core.0024_backfill_emailaddress... OK
Applying core.0025_remove_unused_fields_in_userprofile... OK
Applying core.0026_alter_userprofile_birthdate_alter_userprofile_height... OK
Applying core.0027_powersync_publication... OK
Applying core.0028_longlivedsession... OK
Applying core.0029_userprofile_timezone... OK
Applying easy_thumbnails.0001_initial... OK
Applying easy_thumbnails.0002_thumbnaildimensions... OK
Applying mailer.0001_initial... OK
Applying mailer.0002_auto_20190618_1617... OK
Applying mailer.0003_auto_20201201_0653... OK
Applying manager.0029_alter_workoutsession_options_and_more... OK
Applying measurements.0006_health_sync... OK
Applying measurements.0007_migrate_weight... OK
Applying measurements.0008_dynamic_type... OK
Applying mfa.0001_initial... OK
Applying mfa.0002_authenticator_timestamps... OK
Applying mfa.0003_authenticator_type_uniq... OK
Applying sites.0001_initial... OK
Applying sites.0002_alter_domain_unique... OK
Applying socialaccount.0001_initial... OK
Applying socialaccount.0002_token_max_lengths... OK
Applying socialaccount.0003_extra_data_default_dict... OK
Applying socialaccount.0004_app_provider_id_settings... OK
Applying socialaccount.0005_socialtoken_nullable_app... OK
Applying socialaccount.0006_alter_socialaccount_extra_data... OK
Applying token_blacklist.0001_initial... OK
Applying token_blacklist.0002_outstandingtoken_jti_hex... OK
Applying token_blacklist.0003_auto_20171017_2007... OK
Applying token_blacklist.0004_auto_20171017_2013... OK
Applying token_blacklist.0005_remove_outstandingtoken_jti... OK
Applying token_blacklist.0006_auto_20171017_2113... OK
Applying token_blacklist.0007_auto_20171017_2214... OK
Applying token_blacklist.0008_migrate_to_bigautofield... OK
Applying token_blacklist.0010_fix_migrate_to_bigautofield... OK
Applying token_blacklist.0011_linearizes_history... OK
Applying token_blacklist.0012_alter_outstandingtoken_user... OK
Applying token_blacklist.0013_alter_blacklistedtoken_options_and_more... OK
Applying weight.0006_delete_weightentry... OK
*** Using settings from env: settings.main
Installed 1 object(s) from 1 fixture(s)
Installed 33 object(s) from 1 fixture(s)
Installed 7 object(s) from 1 fixture(s)
Installed 3 object(s) from 1 fixture(s)
Installed 5 object(s) from 1 fixture(s)
Installed 8 object(s) from 1 fixture(s)
Installed 6 object(s) from 1 fixture(s)
Installed 1 object(s) from 1 fixture(s)
Installed 12 object(s) from 1 fixture(s)
Installed 16 object(s) from 1 fixture(s)
Installed 8 object(s) from 1 fixture(s)
Installed 872 object(s) from 1 fixture(s)
Installed 2429 object(s) from 1 fixture(s)
Installed 1 object(s) from 1 fixture(s)
Installed 1 object(s) from 1 fixture(s)
Installed 1 object(s) from 1 fixture(s)
*** Using settings from env: settings.main
*** Password for user admin was reset to '<image-default, redacted>'
Installed 3 object(s) from 1 fixture(s)
Running in production mode, running collectstatic now
/home/wger/src/settings/main.py:117: UserWarning: JWT_PRIVATE_KEY / JWT_PUBLIC_KEY are not set. JWT authentication will not work until you run `./manage.py generate-jwt-keys` and add the output to your environment.
warnings.warn(
level=INFO ts=2026-10-06 21:20:16,693 module=apps path=/home/wger/.local/lib/python3.12/site-packages/axes/apps.py line=53 message=AXES: BEGIN version 8.3.1, blocking by ip_address
11362 static files copied to '/home/wger/static', 11362 post-processed.
Performing database migrations
/home/wger/src/settings/main.py:117: UserWarning: JWT_PRIVATE_KEY / JWT_PUBLIC_KEY are not set. JWT authentication will not work until you run `./manage.py generate-jwt-keys` and add the output to your environment.
warnings.warn(
level=INFO ts=2026-10-06 21:20:34,441 module=apps path=/home/wger/.local/lib/python3.12/site-packages/axes/apps.py line=53 message=AXES: BEGIN version 8.3.1, blocking by ip_address
System check identified some issues:
WARNINGS:
?: (axes.W001) You are using the django-axes cache handler for login attempt tracking. Your cache configuration is however invalid and will not work correctly with django-axes. This can leave security holes in your login systems as attempts are not tracked correctly. Reconfigure settings.AXES_CACHE and settings.CACHES per django-axes configuration documentation.
Operations to perform:
Apply all migrations: account, actstream, allauth_idp_oidc, auth, authtoken, axes, config, contenttypes, core, easy_thumbnails, exercises, gallery, gym, mailer, manager, measurements, mfa, nutrition, sessions, sites, socialaccount, token_blacklist, trophies, weight
Running migrations:
No migrations to apply.
Your models in app(s): 'exercises', 'gallery' have changes that are not yet reflected in a migration, and so won't be applied.
Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage.py migrate' to apply them.
/home/wger/src/settings/main.py:117: UserWarning: JWT_PRIVATE_KEY / JWT_PUBLIC_KEY are not set. JWT authentication will not work until you run `./manage.py generate-jwt-keys` and add the output to your environment.
warnings.warn(
level=INFO ts=2026-10-06 21:20:37,318 module=apps path=/home/wger/.local/lib/python3.12/site-packages/axes/apps.py line=53 message=AXES: BEGIN version 8.3.1, blocking by ip_address
System check identified some issues:
WARNINGS:
?: (axes.W001) You are using the django-axes cache handler for login attempt tracking. Your cache configuration is however invalid and will not work correctly with django-axes. This can leave security holes in your login systems as attempts are not tracked correctly. Reconfigure settings.AXES_CACHE and settings.CACHES per django-axes configuration documentation.
Set site URL to 127.0.0.1:18000
Using gunicorn on port 8000...
/home/wger/src/settings/main.py:117: UserWarning: JWT_PRIVATE_KEY / JWT_PUBLIC_KEY are not set. JWT authentication will not work until you run `./manage.py generate-jwt-keys` and add the output to your environment.
warnings.warn(
level=INFO ts=2026-10-06 21:20:39,609 module=apps path=/home/wger/.local/lib/python3.12/site-packages/axes/apps.py line=53 message=AXES: BEGIN version 8.3.1, blocking by ip_address
[2026-10-06 21:20:40 +0200] [12] [INFO] Starting gunicorn 26.1.0
[2026-10-06 21:20:40 +0200] [12] [INFO] Listening at: http://0.0.0.0:8000 (12)
[2026-10-06 21:20:40 +0200] [12] [INFO] Using worker: sync
[2026-10-06 21:20:40 +0200] [13] [INFO] Booting worker with pid: 13
[2026-10-06 21:20:40 +0200] [14] [INFO] Booting worker with pid: 14
[2026-10-06 21:20:40 +0200] [12] [INFO] Control socket listening at /home/wger/.gunicorn/gunicorn.ctl
@@ -0,0 +1 @@
cg=/sys/fs/cgroup/system.slice/docker-c9e47eae7d10b29d467f256f0e54de5e695ee74c29b90b43564118361e38bba4.scope
@@ -0,0 +1,16 @@
Container r762-files Stopping
Container r762-wger Stopping
Container r762-files Stopped
Container r762-files Removing
Container r762-files Removed
Container r762-wger Stopped
Container r762-wger Removing
Container r762-wger Removed
Volume r762_r762_data Removing
Volume r762_r762_static Removing
Volume r762_r762_media Removing
Network r762_default Removing
Volume r762_r762_data Removed
Network r762_default Removed
Volume r762_r762_static Removed
Volume r762_r762_media Removed
@@ -0,0 +1,2 @@
oom 0
oom_kill 0
@@ -0,0 +1 @@
restarts=0 oomkilled=false status=running
@@ -0,0 +1,44 @@
login 200 0.035321
css 200 0.000971
login 200 0.031548
css 200 0.000792
login 200 0.029122
css 200 0.000825
login 200 0.028041
css 200 0.000757
login 200 0.027987
css 200 0.000694
login 200 0.030125
css 200 0.000763
login 200 0.036617
css 200 0.000838
login 200 0.036226
css 200 0.000969
login 200 0.033944
css 200 0.000696
login 200 0.031335
css 200 0.000720
conc 200 0.410949
conc 200 0.443611
conc 200 0.448561
conc 200 0.454908
conc 200 0.461576
conc 200 0.471760
conc 200 0.463850
conc 200 0.480722
conc 200 0.507565
conc 200 0.510700
conc 200 0.349673
conc 200 0.287485
conc 200 0.324582
conc 200 0.310080
conc 200 0.356899
conc 200 0.332309
conc 200 0.340294
conc 200 0.328755
conc 200 0.295187
conc 200 0.294409
signin 200 0.033918
dashboard 302 0.002958
dashboard 302 0.002211
dashboard 302 0.002689
@@ -0,0 +1,2 @@
ready_after_s=81 code=200
css=/static/css/workout-manager.7007d84ce531.css
@@ -0,0 +1,2 @@
Using django's development server on port 8000...
Starting development server at http://0.0.0.0:8000/
@@ -0,0 +1,2 @@
anon 210644992
file 115146752
@@ -0,0 +1,16 @@
Network r762_default Creating
Network r762_default Created
Volume "r762_r762_static" Creating
Volume "r762_r762_static" Created
Volume "r762_r762_media" Creating
Volume "r762_r762_media" Created
Volume "r762_r762_data" Creating
Volume "r762_r762_data" Created
Container r762-wger Creating
Container r762-files Creating
Container r762-wger Created
Container r762-files Created
Container r762-wger Starting
Container r762-files Starting
Container r762-files Started
Container r762-wger Started
@@ -0,0 +1,352 @@
*** Using settings from env: settings.main
/home/wger/src/settings/main.py:117: UserWarning: JWT_PRIVATE_KEY / JWT_PUBLIC_KEY are not set. JWT authentication will not work until you run `./manage.py generate-jwt-keys` and add the output to your environment.
warnings.warn(
level=INFO ts=2026-10-06 21:16:21,126 module=apps path=/home/wger/.local/lib/python3.12/site-packages/axes/apps.py line=53 message=AXES: BEGIN version 8.3.1, blocking by ip_address
*** Database is empty or incomplete, setting it up now
*** Using settings from env: settings.main
Operations to perform:
Apply all migrations: account, actstream, allauth_idp_oidc, auth, authtoken, axes, config, contenttypes, core, easy_thumbnails, exercises, gallery, gym, mailer, manager, measurements, mfa, nutrition, sessions, sites, socialaccount, token_blacklist, trophies, weight
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying account.0001_initial... OK
Applying account.0002_email_max_length... OK
Applying account.0003_alter_emailaddress_create_unique_verified_email... OK
Applying account.0004_alter_emailaddress_drop_unique_email... OK
Applying account.0005_emailaddress_idx_upper_email... OK
Applying account.0006_emailaddress_lower... OK
Applying account.0007_emailaddress_idx_email... OK
Applying account.0008_emailaddress_unique_primary_email_fixup... OK
Applying account.0009_emailaddress_unique_primary_email... OK
Applying actstream.0001_initial... OK
Applying actstream.0002_remove_action_data... OK
Applying actstream.0003_add_follow_flag... OK
Applying allauth_idp_oidc.0001_initial... OK
Applying allauth_idp_oidc.0002_client_default_scopes... OK
Applying allauth_idp_oidc.0003_client_allow_uri_wildcards... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying authtoken.0001_initial... OK
Applying authtoken.0002_auto_20160226_1747... OK
Applying authtoken.0003_tokenproxy... OK
Applying authtoken.0004_alter_tokenproxy_options... OK
Applying axes.0001_initial... OK
Applying axes.0002_auto_20151217_2044... OK
Applying axes.0003_auto_20160322_0929... OK
Applying axes.0004_auto_20181024_1538... OK
Applying axes.0005_remove_accessattempt_trusted... OK
Applying axes.0006_remove_accesslog_trusted... OK
Applying axes.0007_alter_accessattempt_unique_together... OK
Applying axes.0008_accessfailurelog... OK
Applying axes.0009_add_session_hash... OK
Applying axes.0010_accessattemptexpiration... OK
Applying gym.0001_initial... OK
Applying core.0001_initial... OK
Applying config.0001_initial... OK
Applying config.0002_auto_20190618_1617... OK
Applying config.0003_delete_languageconfig... OK
Applying sessions.0001_initial... OK
Applying weight.0001_initial... OK
Applying weight.0002_auto_20150604_2139... OK
Applying weight.0003_auto_20160416_1030... OK
Applying weight.0004_multiple_weight_entries_per_day... OK
Applying weight.0005_add_uuid... OK
Applying nutrition.0001_initial... OK
Applying nutrition.0002_auto_20170101_1538... OK
Applying nutrition.0003_auto_20170118_2308... OK
Applying nutrition.0004_auto_20200819_2310... OK
Applying nutrition.0005_logitem... OK
Applying nutrition.0006_auto_20201201_0653... OK
Applying nutrition.0007_auto_20201214_0013... OK
Applying nutrition.0008_auto_20210102_1446... OK
Applying nutrition.0009_meal_name... OK
Applying nutrition.0010_logitem_meal... OK
Applying nutrition.0011_alter_logitem_datetime... OK
Applying nutrition.0012_alter_ingredient_license_author... OK
Applying gym.0002_auto_20151003_1944... OK
Applying gym.0003_auto_20151003_2008... OK
Applying gym.0004_auto_20151003_2357... OK
Applying gym.0005_auto_20151023_1522... OK
Applying gym.0006_auto_20160214_1013... OK
Applying gym.0007_auto_20170123_0920... OK
Applying gym.0008_auto_20190618_1617... OK
Applying exercises.0001_initial... OK
Applying manager.0001_initial... OK
Applying manager.0002_auto_20150202_2040... OK
Applying manager.0004_auto_20150609_1603... OK
Applying core.0002_auto_20141225_1512... OK
Applying core.0003_auto_20150217_1554... OK
Applying core.0004_auto_20150217_1914... OK
Applying core.0005_auto_20151025_2236... OK
Applying core.0006_auto_20151025_2237... OK
Applying core.0007_repetitionunit... OK
Applying core.0008_weightunit... OK
Applying core.0009_auto_20160303_2340... OK
Applying core.0010_auto_20170403_0144... OK
Applying core.0011_auto_20201201_0653... OK
Applying core.0012_auto_20210210_1228... OK
Applying core.0013_auto_20210726_1729... OK
Applying nutrition.0013_ingredient_image... OK
Applying nutrition.0014_license_information... OK
Applying nutrition.0015_alter_ingredient_creation_date_and_more... OK
Applying nutrition.0016_alter_logitem_options_and_more... OK
Applying nutrition.0017_remove_nutritionplan_language_alter_logitem_meal... OK
Applying nutrition.0018_nutritionplan_goal_carbs_nutritionplan_goal_energy_and_more... OK
Applying nutrition.0019_alter_image_license_author_and_more... OK
Applying nutrition.0020_full_text_search... OK
Applying nutrition.0021_add_fibers_field... OK
Applying nutrition.0022_add_remote_id_increase_author_field_length... OK
Applying nutrition.0023_fiber_spelling... OK
Applying nutrition.0024_remove_ingredient_status... OK
Applying nutrition.0025_add_last_image_check... OK
Applying nutrition.0026_add_start_and_end_fields... OK
Applying nutrition.0027_prefill_end_date... OK
Applying nutrition.0028_ingredient_dietary_properties... OK
Applying nutrition.0029_ingredient_nutriscore... OK
Applying manager.0005_auto_20160303_2008... OK
Applying manager.0006_auto_20160303_2138... OK
Applying manager.0007_auto_20160311_2258... OK
Applying manager.0008_auto_20190618_1617... OK
Applying manager.0009_auto_20201202_1559... OK
Applying manager.0010_auto_20210102_1446... OK
Applying manager.0011_remove_set_exercises... OK
Applying manager.0012_auto_20210430_1449... OK
Applying manager.0013_set_comment... OK
Applying manager.0014_auto_20210717_1858... OK
Applying manager.0015_auto_20211028_1113... OK
Applying exercises.0002_auto_20150307_1841... OK
Applying exercises.0003_auto_20160921_2000... OK
Applying exercises.0004_auto_20170404_0114... OK
Applying exercises.0005_auto_20190618_1617... OK
Applying exercises.0006_auto_20201203_0203... OK
Applying exercises.0007_auto_20201203_1042... OK
Applying exercises.0008_exercisebase... OK
Applying exercises.0009_auto_20201211_0139... OK
Applying exercises.0010_auto_20201211_0205... OK
Applying exercises.0011_auto_20201214_0033... OK
Applying exercises.0012_auto_20210327_1219... OK
Applying exercises.0013_auto_20210503_1232... OK
Applying exercises.0014_exerciseimage_style... OK
Applying exercises.0015_exercise_videos... OK
Applying exercises.0016_exercisealias... OK
Applying exercises.0017_muscle_name_en... OK
Applying core.0013_userprofile_email_verified... OK
Applying core.0014_merge_20210818_1735... OK
Applying exercises.0018_delete_pending_exercises... OK
Applying exercises.0019_exercise_crowdsourcing_changes... OK
Applying manager.0016_move_to_exercise_base... OK
Applying manager.0017_alter_workoutlog_exercise_base... OK
Applying exercises.0020_historicalexerciseimage_historicalexercisevideo... OK
Applying exercises.0021_deletionlog... OK
Applying exercises.0022_alter_exercise_license_author_and_more... OK
Applying exercises.0023_make_uuid_unique... OK
Applying exercises.0024_license_information... OK
Applying exercises.0025_rename_update_date_exercise_last_update_and_more... OK
Applying exercises.0026_deletionlog_replaced_by... OK
Applying exercises.0027_alter_deletionlog_replaced_by_and_more... OK
Applying exercises.0028_add_uuid_alias_and_comments... OK
Applying exercises.0029_full_text_search... OK
Applying exercises.0030_increase_author_field_length... OK
Applying exercises.0032_rename_exercise... OK
Applying core.0015_alter_language_short_name... OK
Applying core.0016_alter_language_short_name... OK
Applying manager.0018_flexible_routines... OK
Applying manager.0019_flexible_routines_migration... OK
Applying manager.0021_flexible_routines_cleanup... OK
Applying core.0017_language_full_name_en... OK
Applying core.0018_rounding... OK
Applying core.0019_delete_daysofweek... OK
Applying core.0020_add_trophies_enabled_to_userprofile... OK
Applying core.0021_add_unit_type_to_repetitionunit... OK
Applying nutrition.0030_add_indices... OK
Applying nutrition.0031_start_weight_unit_merge... OK
Applying nutrition.0032_continue_weight_unit_merge... OK
Applying nutrition.0033_finalize_weight_unit_merge... OK
Applying nutrition.0034_ingredient_trigram_gin_index... OK
Applying nutrition.0035_add_uuids... OK
Applying nutrition.0036_alter_image_license_author_and_more... OK
Applying nutrition.0037_powersync_synced_ingredient_tables... OK
Applying measurements.0001_initial... OK
Applying measurements.0002_auto_20210722_1042... OK
Applying measurements.0003_alter_measurement_unique_together_and_more... OK
Applying measurements.0004_add_uuids... OK
Applying measurements.0005_alter_measurement_date... OK
Applying trophies.0001_initial... OK
Applying trophies.0002_load_initial_trophies... OK
Applying manager.0022_alter_rir_type... OK
Applying manager.0023_change_validators... OK
Applying manager.0024_log_and_session_uuid... OK
Applying manager.0025_change_pk_to_uuid... OK
Applying trophies.0003_migrate_context_data_uuids... OK
Applying manager.0026_change_pk_to_uuid_swap... OK
Applying core.0022_move_email_verified_to_emailaddress... OK
Applying core.0023_create_publication... OK
Applying manager.0027_cleanup_fields... OK
Applying manager.0028_backfill_session_day... OK
Applying gallery.0001_initial... OK
Applying exercises.0033_uniqueness_constraint_translations... OK
Applying exercises.0034_add_exercise_image_dimensions... OK
Applying exercises.0035_add_is_ai_generated... OK
Applying exercises.0036_add_markdown_description_field... OK
Applying exercises.0037_replace_variation_with_uuid_field... OK
Applying exercises.0038_sync_model_changes... OK
Applying exercises.0039_translation_alias_trigram_gin_index... OK
Applying exercises.0040_alter_exercise_license_author_and_more... OK
Applying core.0024_backfill_emailaddress... OK
Applying core.0025_remove_unused_fields_in_userprofile... OK
Applying core.0026_alter_userprofile_birthdate_alter_userprofile_height... OK
Applying core.0027_powersync_publication... OK
Applying core.0028_longlivedsession... OK
Applying core.0029_userprofile_timezone... OK
Applying easy_thumbnails.0001_initial... OK
Applying easy_thumbnails.0002_thumbnaildimensions... OK
Applying mailer.0001_initial... OK
Applying mailer.0002_auto_20190618_1617... OK
Applying mailer.0003_auto_20201201_0653... OK
Applying manager.0029_alter_workoutsession_options_and_more... OK
Applying measurements.0006_health_sync... OK
Applying measurements.0007_migrate_weight... OK
Applying measurements.0008_dynamic_type... OK
Applying mfa.0001_initial... OK
Applying mfa.0002_authenticator_timestamps... OK
Applying mfa.0003_authenticator_type_uniq... OK
Applying sites.0001_initial... OK
Applying sites.0002_alter_domain_unique... OK
Applying socialaccount.0001_initial... OK
Applying socialaccount.0002_token_max_lengths... OK
Applying socialaccount.0003_extra_data_default_dict... OK
Applying socialaccount.0004_app_provider_id_settings... OK
Applying socialaccount.0005_socialtoken_nullable_app... OK
Applying socialaccount.0006_alter_socialaccount_extra_data... OK
Applying token_blacklist.0001_initial... OK
Applying token_blacklist.0002_outstandingtoken_jti_hex... OK
Applying token_blacklist.0003_auto_20171017_2007... OK
Applying token_blacklist.0004_auto_20171017_2013... OK
Applying token_blacklist.0005_remove_outstandingtoken_jti... OK
Applying token_blacklist.0006_auto_20171017_2113... OK
Applying token_blacklist.0007_auto_20171017_2214... OK
Applying token_blacklist.0008_migrate_to_bigautofield... OK
Applying token_blacklist.0010_fix_migrate_to_bigautofield... OK
Applying token_blacklist.0011_linearizes_history... OK
Applying token_blacklist.0012_alter_outstandingtoken_user... OK
Applying token_blacklist.0013_alter_blacklistedtoken_options_and_more... OK
Applying weight.0006_delete_weightentry... OK
*** Using settings from env: settings.main
Installed 1 object(s) from 1 fixture(s)
Installed 33 object(s) from 1 fixture(s)
Installed 7 object(s) from 1 fixture(s)
Installed 3 object(s) from 1 fixture(s)
Installed 5 object(s) from 1 fixture(s)
Installed 8 object(s) from 1 fixture(s)
Installed 6 object(s) from 1 fixture(s)
Installed 1 object(s) from 1 fixture(s)
Installed 12 object(s) from 1 fixture(s)
Installed 16 object(s) from 1 fixture(s)
Installed 8 object(s) from 1 fixture(s)
Installed 872 object(s) from 1 fixture(s)
Installed 2429 object(s) from 1 fixture(s)
Installed 1 object(s) from 1 fixture(s)
Installed 1 object(s) from 1 fixture(s)
Installed 1 object(s) from 1 fixture(s)
*** Using settings from env: settings.main
*** Password for user admin was reset to '<image-default, redacted>'
Installed 3 object(s) from 1 fixture(s)
Running in production mode, running collectstatic now
/home/wger/src/settings/main.py:117: UserWarning: JWT_PRIVATE_KEY / JWT_PUBLIC_KEY are not set. JWT authentication will not work until you run `./manage.py generate-jwt-keys` and add the output to your environment.
warnings.warn(
level=INFO ts=2026-10-06 21:17:08,412 module=apps path=/home/wger/.local/lib/python3.12/site-packages/axes/apps.py line=53 message=AXES: BEGIN version 8.3.1, blocking by ip_address
11362 static files copied to '/home/wger/static', 11362 post-processed.
Performing database migrations
/home/wger/src/settings/main.py:117: UserWarning: JWT_PRIVATE_KEY / JWT_PUBLIC_KEY are not set. JWT authentication will not work until you run `./manage.py generate-jwt-keys` and add the output to your environment.
warnings.warn(
level=INFO ts=2026-10-06 21:17:30,632 module=apps path=/home/wger/.local/lib/python3.12/site-packages/axes/apps.py line=53 message=AXES: BEGIN version 8.3.1, blocking by ip_address
System check identified some issues:
WARNINGS:
?: (axes.W001) You are using the django-axes cache handler for login attempt tracking. Your cache configuration is however invalid and will not work correctly with django-axes. This can leave security holes in your login systems as attempts are not tracked correctly. Reconfigure settings.AXES_CACHE and settings.CACHES per django-axes configuration documentation.
Operations to perform:
Apply all migrations: account, actstream, allauth_idp_oidc, auth, authtoken, axes, config, contenttypes, core, easy_thumbnails, exercises, gallery, gym, mailer, manager, measurements, mfa, nutrition, sessions, sites, socialaccount, token_blacklist, trophies, weight
Running migrations:
No migrations to apply.
Your models in app(s): 'exercises', 'gallery' have changes that are not yet reflected in a migration, and so won't be applied.
Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage.py migrate' to apply them.
/home/wger/src/settings/main.py:117: UserWarning: JWT_PRIVATE_KEY / JWT_PUBLIC_KEY are not set. JWT authentication will not work until you run `./manage.py generate-jwt-keys` and add the output to your environment.
warnings.warn(
level=INFO ts=2026-10-06 21:17:33,736 module=apps path=/home/wger/.local/lib/python3.12/site-packages/axes/apps.py line=53 message=AXES: BEGIN version 8.3.1, blocking by ip_address
System check identified some issues:
WARNINGS:
?: (axes.W001) You are using the django-axes cache handler for login attempt tracking. Your cache configuration is however invalid and will not work correctly with django-axes. This can leave security holes in your login systems as attempts are not tracked correctly. Reconfigure settings.AXES_CACHE and settings.CACHES per django-axes configuration documentation.
Set site URL to 127.0.0.1:18000
Using django's development server on port 8000...
/home/wger/src/settings/main.py:117: UserWarning: JWT_PRIVATE_KEY / JWT_PUBLIC_KEY are not set. JWT authentication will not work until you run `./manage.py generate-jwt-keys` and add the output to your environment.
warnings.warn(
level=INFO ts=2026-10-06 21:17:36,005 module=apps path=/home/wger/.local/lib/python3.12/site-packages/axes/apps.py line=53 message=AXES: BEGIN version 8.3.1, blocking by ip_address
/home/wger/src/settings/main.py:117: UserWarning: JWT_PRIVATE_KEY / JWT_PUBLIC_KEY are not set. JWT authentication will not work until you run `./manage.py generate-jwt-keys` and add the output to your environment.
warnings.warn(
level=INFO ts=2026-10-06 21:17:37,185 module=apps path=/home/wger/.local/lib/python3.12/site-packages/axes/apps.py line=53 message=AXES: BEGIN version 8.3.1, blocking by ip_address
level=INFO ts=2026-10-06 21:17:37,196 module=autoreload path=/home/wger/.local/lib/python3.12/site-packages/django/utils/autoreload.py line=681 message=Watching for file changes with StatReloader
Performing system checks...
System check identified some issues:
WARNINGS:
?: (axes.W001) You are using the django-axes cache handler for login attempt tracking. Your cache configuration is however invalid and will not work correctly with django-axes. This can leave security holes in your login systems as attempts are not tracked correctly. Reconfigure settings.AXES_CACHE and settings.CACHES per django-axes configuration documentation.
System check identified 1 issue (0 silenced).
October 06, 2026 - 21:17:38
Django version 6.0.8, using settings 'settings.main'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
WARNING: This is a development server. Do not use it in a production setting. Use a production WSGI or ASGI server instead.
For more information on production servers see: https://docs.djangoproject.com/en/6.0/howto/deployment/
[06/Oct/2026 21:17:39] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:39] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:39] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:39] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:39] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:39] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:39] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:39] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:39] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:39] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:39] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:39] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:40] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:40] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:40] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:40] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:40] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:40] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:40] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:40] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:40] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:40] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:40] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:40] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:40] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:40] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:40] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:40] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:40] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:40] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:40] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:40] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:40] "GET /en/user/login HTTP/1.1" 200 43815
[06/Oct/2026 21:17:40] "POST /en/user/login HTTP/1.1" 200 44014
[06/Oct/2026 21:17:40] "GET /en/dashboard HTTP/1.1" 302 0
[06/Oct/2026 21:17:40] "GET /en/dashboard HTTP/1.1" 302 0
[06/Oct/2026 21:17:40] "GET /en/dashboard HTTP/1.1" 302 0
[06/Oct/2026 21:17:40] "GET /en/dashboard HTTP/1.1" 302 0
@@ -0,0 +1,36 @@
#!/bin/bash
# usage: run.sh <label> <USE_GUNICORN True|False> <WORKERS>
set -u
L=$1; export USE_GUNICORN=$2 WORKERS=$3
export SECRET_KEY=$(head -c 32 /dev/urandom | base64 | tr -d '/+=')
cd /root/r762; O=/root/r762/out-$L; mkdir -p $O
docker compose -f compose.yml up -d >$O/up.txt 2>&1
ID=$(docker inspect -f '{{.Id}}' r762-wger)
CG=$(find /sys/fs/cgroup -maxdepth 4 -type d -name "*$ID*" | head -1); echo "cg=$CG" > $O/cg.txt
( max=0; while docker inspect r762-wger >/dev/null 2>&1; do a=$(awk '$1=="anon"{print $2}' $CG/memory.stat 2>/dev/null); [ -n "$a" ] && [ "$a" -gt "$max" ] && max=$a && echo $max > $O/anon-max; sleep 0.5; done ) &
SAMP=$!
# wait for the server to answer
t0=$(date +%s); for i in $(seq 1 240); do c=$(curl -s -o /dev/null -w '%{http_code}' http://127.0.0.1:18000/en/user/login); [ "$c" = 200 ] && break; sleep 1; done
echo "ready_after_s=$(( $(date +%s)-t0 )) code=$c" > $O/ready.txt
CSS=$(curl -s http://127.0.0.1:18000/en/user/login | grep -o '/static/[^"]*\.css[^"]*' | head -1); echo "css=$CSS" >> $O/ready.txt
# page loads: login page + its CSS, 10 times sequential, then 20 concurrent login GETs
for i in $(seq 1 10); do curl -s -o /dev/null -w 'login %{http_code} %{time_total}\n' http://127.0.0.1:18000/en/user/login; curl -s -o /dev/null -w 'css %{http_code} %{time_total}\n' "http://127.0.0.1:18080${CSS%%\?*}"; done > $O/loads.txt
seq 1 20 | xargs -P 10 -I{} curl -s -o /dev/null -w 'conc %{http_code} %{time_total}\n' http://127.0.0.1:18000/en/user/login >> $O/loads.txt
# signed in: the image default admin (not a secret of any box; not written anywhere)
J=$O/jar; rm -f $J
curl -s -c $J -b $J http://127.0.0.1:18000/en/user/login -o /dev/null
TOK=$(awk '$6=="csrftoken"{print $7}' $J)
curl -s -c $J -b $J -o /dev/null -w 'signin %{http_code} %{time_total}\n' -e http://127.0.0.1:18000/en/user/login -d "csrfmiddlewaretoken=$TOK&username=admin&password=<image-default, redacted>" http://127.0.0.1:18000/en/user/login >> $O/loads.txt
for i in 1 2 3; do curl -s -c $J -b $J -o /dev/null -w 'dashboard %{http_code} %{time_total}\n' http://127.0.0.1:18000/en/dashboard; done >> $O/loads.txt
curl -s -c $J -b $J http://127.0.0.1:18000/en/dashboard | grep -c -i 'logout' > $O/signed-in-logout-links.txt
rm -f $J
sleep 3
grep -E '^(oom|oom_kill) ' $CG/memory.events > $O/events.txt
awk '$1=="anon"||$1=="file"{print}' $CG/memory.stat > $O/stat-end.txt
cat $CG/memory.peak > $O/memory.peak 2>/dev/null
docker inspect -f 'restarts={{.RestartCount}} oomkilled={{.State.OOMKilled}} status={{.State.Status}}' r762-wger > $O/inspect.txt
docker logs r762-wger > $O/wger.log 2>&1
grep -E 'Using gunicorn|Using django|Booting worker|Listening at|Starting gunicorn|Starting development server' $O/wger.log > $O/server-lines.txt
docker compose -f compose.yml down -v >$O/down.txt 2>&1
kill $SAMP 2>/dev/null
echo done