R-762: wger server question measured on the bench (gunicorn 2 workers, 41 % of 384M)
gates / gates (push) Successful in 2m44s
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:
@@ -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 @@
|
||||
173166592
|
||||
@@ -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 @@
|
||||
402657280
|
||||
@@ -0,0 +1,2 @@
|
||||
ready_after_s=75 code=200
|
||||
css=/static/css/workout-manager.7007d84ce531.css
|
||||
+4
@@ -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
|
||||
+1
@@ -0,0 +1 @@
|
||||
0
|
||||
@@ -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 @@
|
||||
165064704
|
||||
@@ -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 @@
|
||||
402657280
|
||||
@@ -0,0 +1,2 @@
|
||||
ready_after_s=72 code=200
|
||||
css=/static/css/workout-manager.7007d84ce531.css
|
||||
+5
@@ -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
|
||||
+1
@@ -0,0 +1 @@
|
||||
0
|
||||
@@ -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 @@
|
||||
210657280
|
||||
@@ -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 @@
|
||||
402653184
|
||||
@@ -0,0 +1,2 @@
|
||||
ready_after_s=81 code=200
|
||||
css=/static/css/workout-manager.7007d84ce531.css
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
Using django's development server on port 8000...
|
||||
Starting development server at http://0.0.0.0:8000/
|
||||
+1
@@ -0,0 +1 @@
|
||||
0
|
||||
@@ -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
|
||||
@@ -129,7 +129,7 @@ stopping line that lies.
|
||||
| **R-562** | Apps & catalog | P3 | **[P3-LOW] Dates and sizes are not formatted for any locale — and the Hungarian pages disagree with themselves.** FOUND 2026-09-17 by the i18n inventory §2.8: the two template date layouts differ (`2006. 01. 02. 15:04` Hungarian vs `2006-01-02 15:04` ISO); 10 layout literals in `internal/web` Go and 25 elsewhere pick formats ad hoc; sizes print a decimal POINT (`%.1f GB`, 4 helpers) where Hungarian uses a comma; `timeAgo`/`nextRunLabel`/`pruneLabel` produce Hungarian words outside the three converted pages. Not changed by v0.247.0 (Hungarian bytes are frozen by the parity rule). **Fix shape:** one date and one size formatter per language in `internal/i18n`, the Hungarian output deliberately changed in ONE reviewed release with the parity fixtures re-captured for that release only and the change named in its CHANGELOG. Needs an operator word on the Hungarian format (comma, date style). | **READY - rank P3-LOW; owner: CC** **2026-10-06 night: not started — the row needs the operator's word on the Hungarian format (decimal comma, date style) before any code.** | — | — | CC |
|
||||
| **R-612** | Apps & catalog | P3 | **[P1-HIGH] `wishlist` cannot be signed up to on a fresh Felhom install, the deploy reports SUCCESS, and the error the customer sees is a LIE.** MEASURED 2026-09-21 on guest 9202 while seeding for the power-cut drill. The image's first-boot `pnpm prisma db seed` is **`Killed` — OOM at the catalog's `mem_limit: 128M`**. Without it the `Role` and `Group` rows are absent, so **every** signup fails. **The message the user is shown is `User with username or email already exists`** while the container log says the real cause: `FOREIGN KEY constraint violated`. A household would conclude the account already exists and try to recover a password that was never created. **The controller reports the app running and HEALTHY throughout, and the deploy reported successful** — so nothing on the box says anything is wrong. Repaired on the scratch guest only, to unblock seeding: memory raised to 512 M, the image's own seed re-run, memory put back to 128 M. **The catalog was NOT changed** — the fix is a memory-limit question for the catalog and is deliberately left to a session that can measure the real ceiling rather than guess it. **Needs: the actual peak RSS of that seed, then a `mem_limit` that clears it, plus a check that the seed's failure is not silent.** **— FIXED 2026-09-23 night (catalog `a5a729a`): 512M.** Measured on the bench: the seed peaks at 312–345M and was OOM-killed at 128M on every run (kernel `oom_kill` 3); running, the app sits at ~115M (90 % of the old limit alone). On 9202 at 128M the kill came AFTER the Role/Group rows this time, so the sign-up lie did NOT reproduce — the kill is timing-dependent, the fault is memory (the brief's claim held). At 512M the seed completes (`The seed command has been executed`), and wishlist then moved v0.66.0 → v0.67.1 with its test record. **Still open:** a failed first-boot seed is invisible to the box — nothing reads the seed's exit. | **READY — P3, narrowed to making a failed seed visible; owner: CC (catalog)** **Re-ranked 2026-10-03: P1->P3: the memory fix shipped (catalog a5a729a); only the silent-seed detection remains.** **2026-10-06 night: fixed on catalog branch `night-held-2026-10-06`** (`d4150d7`) — the healthcheck needs the role rows and a group or user (node:sqlite, read-only); bench: seedless DB old check rc 0, new rc 1; seeded both rc 0 (`audits/night-burndown-2026-10-06/cat/R-612-red.txt`). Reaches main after the read-back. | — | — | CC |
|
||||
| **R-676** | Apps & catalog | P3 | **[P3-LOW] Watch: immich's first start restarted 12 times — decision 28's crash-loop stop (6 in 10 min) would stop it.** From the 2026-09-17 chaos night (DB connection dropped during the first-start geocoding import on a 6 GB guest; it did not recover that night). No healthy app in any drill evidence restarts on a first start (1831 samples, 40 live containers), so the threshold stands; this row exists so the first immich install under v0.269.x is watched. `audits/night-2026-09-24/A3/40-first-start-restarts.txt` **2026-09-25 night (read from source, v0.271.0): a DEPLOY's first start is NOT covered by decision 28's suppression** — `Deploying` clears when `compose up -d` returns (`deploy.go` "Clear deploying flag"), and `ObserveUnhealthy` then samples the app; an automatic update's step, verify and undo ARE covered (`Updating`, pinned by `TestD28_NoCrashLoopStopDuringAnAutomaticStep`). So a first start that restarts ≥ 6 times in 10 min is stopped — which R-676 already accepts for a broken first start; a healthy slow first start would be stopped too. **-- 2026-09-30: the first-start restarts are explained.** immich's first-start geodata import OOM-kills its database at 512M on a guest with no swap (R-732, measured: 61–104 kills); the 2026-09-17 chaos-night case (DB connection dropped during the import on a 6 GB guest) fits it. Fixed in the catalog (`56c4888`, 768M). The watch itself (decision 28 on a DEPLOY's first start) is unchanged. | **OPEN — P3; owner: CC (watch)** | — | — | CC |
|
||||
| **R-762** | Apps & catalog | P3 | **[P2-MEDIUM] wger serves no CSS or JavaScript and no uploaded photo: every static file and every `/media/` file answers 404.** MEASURED 2026-10-01 on 9202 (drill catalog, the live template `82fff32`, wger 2.7), found by checklist rows 1.7 and 2.8: the login page links `/static/css/workout-manager.css`, `/static/bootstrap-compiled.css` — both 404 through traefik; the static root inside the container is empty (4 KB). A progress photo posted to `/api/v2/gallery/` answered 201 and the file is on the media volume, but `GET /media/gallery/…png` answers 404 signed in, without a session, and straight at the app inside the container. **Cause, read in the image:** the entrypoint runs `collectstatic` only when `DJANGO_DEBUG == "False"` and the template sets no `DJANGO_DEBUG`; and wger serves `/media/` only in development (`urls.py:393` „served like this during development only”) — upstream's production setup puts nginx in front for `/static` and `/media`. So the household gets an unstyled app and photos that never show. The same lines stand since the template was written (the 2026-09-29 template too). Not checked: whether any box runs wger (on 2026-09-30 none reported to the hub). **Needs:** `DJANGO_DEBUG=False` (collectstatic) and something that serves `/static` + `/media` (upstream's nginx sidecar, or the gunicorn switch of R-755 plus a static server), proven on the bench and on 9202 with a page that loads its CSS and a photo read back. Owner decides together with R-755 (same server question). `audits/new-app-checklist-2026-10-01/C/C8-signup-guest-media-static.txt`, `C/C4-seed-photo-size.txt` **-- 2026-10-01 (operator):** wger is `lifecycle: hidden` until this and its twin are fixed (catalog `55b8c8a`; read back on 9202: not on the app list, mealie control present). **Merged 2026-10-05 from R-755 (duplicate):** `templates/wger/docker-compose.yml` still sets no `WGER_USE_GUNICORN` — the gunicorn switch is the same server question. **-- 2026-10-06 (afternoon), measured again on 9202 (live template, wger 2.7):** `/static/css/workout-manager.css` 404 straight at the app, `/home/wger/static` 4 KB, settings `DEBUG False`; the image has gunicorn but no whitenoise and runs Django's `runserver` (no `WGER_USE_GUNICORN`, R-755). So `DJANGO_DEBUG=False` alone would collect the files and still serve none: the fix needs a server for `/static` + `/media` (a second container) — medium, not taken. `audits/r890-instructions-2026-10-06/C/wger.txt`. | **READY — rank P2-MEDIUM; owner: CC (catalog)** **Re-ranked 2026-10-03: P2→P3: wger is hidden from installs and no box runs it; needed only before it is offered again.** **2026-10-06: NARROWED — the files are served.** Catalog `cf1ed43`: `DJANGO_DEBUG=False` + a `wger-files` nginx serving `/static` and `/media`, a definition step proven on the bench (harness v5) and on 9202 (photo 404 → 200, CSS 404 → 200). **What remains is R-755's merged half:** wger still runs Django's `runserver`; upstream's gunicorn runs 3 workers, which do not fit wger's 384 MB — a memory decision and a new proof. Known cost of the fix: the collected static files are 283 MB in a named volume, in every backup of wger. Ready to show? Its files and sign-up are fixed and proven; the server question is open — `audits/design-build-2026-10-06/`F/. | — | Decide the gunicorn worker count against the memory limit, prove it on both venues; then the operator decides whether wger is shown. If nothing: wger stays hidden | CC |
|
||||
| **R-762** | Apps & catalog | P3 | **[P2-MEDIUM] wger serves no CSS or JavaScript and no uploaded photo: every static file and every `/media/` file answers 404.** MEASURED 2026-10-01 on 9202 (drill catalog, the live template `82fff32`, wger 2.7), found by checklist rows 1.7 and 2.8: the login page links `/static/css/workout-manager.css`, `/static/bootstrap-compiled.css` — both 404 through traefik; the static root inside the container is empty (4 KB). A progress photo posted to `/api/v2/gallery/` answered 201 and the file is on the media volume, but `GET /media/gallery/…png` answers 404 signed in, without a session, and straight at the app inside the container. **Cause, read in the image:** the entrypoint runs `collectstatic` only when `DJANGO_DEBUG == "False"` and the template sets no `DJANGO_DEBUG`; and wger serves `/media/` only in development (`urls.py:393` „served like this during development only”) — upstream's production setup puts nginx in front for `/static` and `/media`. So the household gets an unstyled app and photos that never show. The same lines stand since the template was written (the 2026-09-29 template too). Not checked: whether any box runs wger (on 2026-09-30 none reported to the hub). **Needs:** `DJANGO_DEBUG=False` (collectstatic) and something that serves `/static` + `/media` (upstream's nginx sidecar, or the gunicorn switch of R-755 plus a static server), proven on the bench and on 9202 with a page that loads its CSS and a photo read back. Owner decides together with R-755 (same server question). `audits/new-app-checklist-2026-10-01/C/C8-signup-guest-media-static.txt`, `C/C4-seed-photo-size.txt` **-- 2026-10-01 (operator):** wger is `lifecycle: hidden` until this and its twin are fixed (catalog `55b8c8a`; read back on 9202: not on the app list, mealie control present). **Merged 2026-10-05 from R-755 (duplicate):** `templates/wger/docker-compose.yml` still sets no `WGER_USE_GUNICORN` — the gunicorn switch is the same server question. **-- 2026-10-06 (afternoon), measured again on 9202 (live template, wger 2.7):** `/static/css/workout-manager.css` 404 straight at the app, `/home/wger/static` 4 KB, settings `DEBUG False`; the image has gunicorn but no whitenoise and runs Django's `runserver` (no `WGER_USE_GUNICORN`, R-755). So `DJANGO_DEBUG=False` alone would collect the files and still serve none: the fix needs a server for `/static` + `/media` (a second container) — medium, not taken. `audits/r890-instructions-2026-10-06/C/wger.txt`. | **READY — rank P2-MEDIUM; owner: CC (catalog)** **Re-ranked 2026-10-03: P2→P3: wger is hidden from installs and no box runs it; needed only before it is offered again.** **2026-10-06: NARROWED — the files are served.** Catalog `cf1ed43`: `DJANGO_DEBUG=False` + a `wger-files` nginx serving `/static` and `/media`, a definition step proven on the bench (harness v5) and on 9202 (photo 404 → 200, CSS 404 → 200). **What remains is R-755's merged half:** wger still runs Django's `runserver`; upstream's gunicorn runs 3 workers, which do not fit wger's 384 MB — a memory decision and a new proof. Known cost of the fix: the collected static files are 283 MB in a named volume, in every backup of wger. Ready to show? Its files and sign-up are fixed and proven; the server question is open — `audits/design-build-2026-10-06/`F/. **2026-10-06 night: the server question MEASURED on bench 9401** (wger 2.7, template 384M, `wger-files` in front; `audits/night-burndown-2026-10-06/r762/RESULT.md`): runserver anon 201 MB (52 %), gunicorn 1 worker 165 MB (43 %), 2 workers 157 MB (41 % — `--preload` shares pages); oom_kill 0 and restarts 0 in all three; login page and its CSS 200 every time; 20 GETs, 10 at once: avg 394 / 241 / 124 ms. The worker count is gunicorn's `WEB_CONCURRENCY` (the image passes no `-w`). Pick the numbers support: `WGER_USE_GUNICORN=True` + `WEB_CONCURRENCY=2`. Not measured: a signed-in page. Not built: the template change. | — | Decide the gunicorn worker count against the memory limit, prove it on both venues; then the operator decides whether wger is shown. If nothing: wger stays hidden | CC |
|
||||
| **R-76** | Apps & catalog | P4 | **FileBrowser-created folders break the setgid chain, and a drop-zone's mode is not stable** **MIGRATED FROM `ROADMAP.md` 2026-08-22 (R-369) — originally filed 2026-07-26, size S, roadmap state `idea (surfaced by the R-75 spike, 2026-07-26)`.** Moved verbatim; nothing added or reinterpreted. The roadmap keeps its copy as history, marked moved. | **OPEN — migrated from ROADMAP 2026-08-22, rank unchanged** **2026-10-06 night: not a catalog fix** — the setgid chain is set by the controller's FileBrowser setup; a controller row. | — | Two related findings from `audits/SPIKE-catalog-data-paths-2026-07-26.md` P3/P5, both **pre-existing** and deliberately left alone by that spike. **(a)** FileBrowser Quantum 1.3.3 creates files `0644` and folders `0755` and does **not** propagate the setgid bit — even though the entrypoint wrapper's `umask 002` really is in effect (`/proc/1/status` `Umask: 0002`). Group inheritance itself works (a file uploaded into a 2775 group-100 dir landed group 100, not the process gid 1000), so the convention's *group* half holds and only its *mode* half is lost. The consequence is proven with a control: inside a UI-created `0755` folder a gid-1000 process's file landed group **1000**, while the identical write into the 2775 parent landed group **100**. So **any folder a customer creates through FileBrowser breaks the shared-group chain one level down.** Latent today — every userdata-touching catalog app that declares an identity declares uid/gid **1000**, the same uid FileBrowser runs as, so owner permissions mask it; it bites the day a content app runs as a different non-root uid with gid 1000. The comment at `infra/infra.go:156` is right that the image ignores `-e UMASK` but does not say t | CC |
|
||||
| **R-577** | Apps & catalog | P4 | **[P3-LOW] A guest SHARE visitor has no way to pick a language, and the household's setting is the wrong default for them.** FOUND 2026-09-18 by localisation slice 2 release C (R-557, controller v0.254.0): every other page a person can reach now carries a language globe — the dashboard (the household's setting), and the sign-in and claim pages (the visitor's own cookie). The two guest share pages (`launcher_shared`, `launcher_share_password`) deliberately do NOT, and `TestGuestSharePagesHaveNoGlobe` pins that so it stays a decision rather than an oversight. **Why it is the operator's and not CC's:** a share visitor is a stranger the household sent a link to, and what language they are shown is a promise the SHARE FEATURE makes, not an implementation detail. The `felhom_lang` cookie already built would fit them exactly (display-only, their own browser, never the household's setting). **Fix shape, if the operator says yes:** add `{{template "lang_globe" .}}` to both shells with the anonymous form, and one render case per page per language. | **READY - rank P3-LOW; owner: operator (the decision), CC (the change)** **Re-ranked 2026-10-03: P3->P4: feature decision for the operator; Hungarian default works today.** | — | — | operator |
|
||||
| **R-707** | Apps & catalog | P4 | **[P2] 37 apps still start with a login a stranger can take (`09` §3 decision 45).** Audit of all 53 apps: `app-catalog-felhom.eu/FIRST-ADMIN.md` (class, fix route, status, measured or read). Open: **3 hard-coded defaults** — calibre-web (`admin / admin123`, measured working on demo-hp and 9202; its own `cps.py -s` route needs a generated password WITH a special character — our generator is letters+digits, a controller change), mealie (`changeme@example.com / MyPassword`), wger (`admin / adminadmin`); **34 open first-run screens** (the first visitor creates the admin: actualbudget, adventurelog, audiobookshelf, calcom, docmost, emby, ghost, gitea, gramps-web, home-assistant, homebox, immich, jellyfin, komga, n8n, navidrome, opengist, outline, papra, plant-it, radarr, rallly, recipe-importer, romm, seerr, sonarr, sparkyfitness, tandoor, termix, uptime-kuma, vikunja, wanderer, wishlist, zipline). **Stale notes:** romm's `default_creds` `admin / admin` answers 401 on demo-hp (like a wrong password) — the page now warns with a login that does not exist; zipline's looks stale too. **Measured on demo-hp 2026-09-28 (read-only):** bookstack's default still logs in on the INSTALLED app (the fix is for new installs; the page now warns). Each fix: route (a) env or (b) the app's own CLI/API via `after_install:`, proven on 9202 with the default failing and the generated password working; route (c) a page sentence. Several sessions (operator, 2026-09-28). **2026-09-29 (controller v0.280.0, catalog `d0e7e2e`):** every class-3 app fixed — mealie, wger, calibre-web by `after_install` (calibre-web with the new `password:24:special`), proven on 9202 fresh installs (`audits/login-gate-2026-09-29/D/`); the setup gate (decision 46, spike PASSED) built and live on immich, n8n, audiobookshelf (probes measured) and uptime-kuma (button) (`…/C/`); romm's and zipline's stale notes removed. **Left: 30 class-4 apps** — gate each (probe measured on 9202 where one exists — 11 upstream candidates listed in `…/B/B-VERDICT.md` §3; the button otherwise). **2026-09-29 afternoon (controller v0.281.0, catalog `6faf432`):** 28 more class-4 apps gated — 32 of 34 — each proven on 9202 (`audits/gate-rollout-2026-09-29/`B): stranger → gate page / 401, household reached the first-setup screen, the gate opened (9 by a measured probe, the rest by the press), the app answered after. seerr, outline, rallly: gated, their opening needs a media server / e-mail (not proven). **Left:** wanderer (R-714); plant-it is not installable. | **NARROWED** (2026-10-03 triage: the row's verdict was finished, but it names open work no other row carries — seerr, outline and rallly are gated, but the gate OPENING is not proven (needs a media server / e-mail)) — **CLOSED — 2026-09-29 (the rest → R-714)** | — | — | CC |
|
||||
|
||||
Reference in New Issue
Block a user