From 541129542d27fafe4b07b16cbf2d9ac589ddb14e Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Wed, 14 Oct 2026 15:27:56 +0200 Subject: [PATCH] =?UTF-8?q?Estimator:=20the=20HP=20figures=20published,=20?= =?UTF-8?q?raise=20only=20(R-1009=20=3D=20A)=20=E2=80=94=20one=20verdict?= =?UTF-8?q?=20stricter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sizing.json + sizing-data.json rebuilt (23 figures up, none down; the checksum chain matches, build_sizing_web --check OK). The household set without Immich on 8 GB: fits well -> fits, but tight (2,731 x 1.5 = 4,096.5 > 4,096). Presets keep their verdicts. SIZING.md section 5 table, bullets and memory table from the rule, plus the dated line; the per-app table re-rendered. Test expectations moved with the rule. Lede, meta and method note name both machines. Data ?v=4. Claude-Session: https://claude.ai/code/session_012qRErfCoiTkvDK9N5XHbzb --- .../audits/sizing-2026-10-13/SIZING.md | 63 +-- .../evidence/apps-table.json | 423 +++++++++++++++++- .../audits/sizing-2026-10-13/sizing.json | 235 ++++++++-- scripts/test_build_sizing_web.py | 10 +- website/CHANGELOG.md | 10 +- website/assets/sizing-data.json | 48 +- website/en/sizing.html | 8 +- website/gepigeny.html | 8 +- 8 files changed, 673 insertions(+), 132 deletions(-) diff --git a/documentation/audits/sizing-2026-10-13/SIZING.md b/documentation/audits/sizing-2026-10-13/SIZING.md index 2baff72d..4dd6078d 100644 --- a/documentation/audits/sizing-2026-10-13/SIZING.md +++ b/documentation/audits/sizing-2026-10-13/SIZING.md @@ -25,68 +25,68 @@ Samba is not in the floor: it runs only when sharing is switched on. Evidence: ` | App | Typical MB | Peak MB | Catalog request / limit | CPU class | CPU rest % | Busiest minute % | Source | |---|---|---|---|---|---|---|---| -| Immich (`immich`) | 1,356 | 3,061 | 2,048 / 4,480 | heavy-in-bursts | 0.74 | 74.2 | onboarding ! | -| Grimmory (`grimmory`) | 346 | 1,095 | 600 / 1,408 | medium | 0.83 | 22.0 | onboarding ! | -| Karakeep (`karakeep`) | 361 | 1,050 | 700 / 2,816 | light | 0.6 | 2.9 | onboarding ! | +| Immich (`immich`) | 1,557 | 3,290 | 2,048 / 4,480 | heavy-in-bursts | 0.74 | 74.2 | onboarding ! | +| Grimmory (`grimmory`) | 451 | 1,095 | 600 / 1,408 | medium | 0.83 | 22.0 | onboarding ! | +| Karakeep (`karakeep`) | 372 | 1,050 | 700 / 2,816 | light | 0.6 | 2.9 | onboarding ! | | Cal.com (`calcom`) | 800 | 950 | 200 / 1,792 | light | 0.14 | 1.8 | onboarding | | Dawarich (`dawarich`) | 390 | 890 | 500 / 2,688 | light | 0.48 | 14.4 | onboarding | | Tandoor Recipes (`tandoor`) | 868 | 868 | 512 / 1,280 | medium | 0.16 | 20.0 | onboarding | | RomM (`romm`) | 528 | 769 | 300 / 1,280 | medium | 0.71 | 24.2 | telemetry | -| SparkyFitness (`sparkyfitness`) | 305 | 664 | 400 / 1,792 | light | 0.23 | 0.4 | onboarding ! | -| Paperless-ngx (`paperless-ngx`) | 568 | 659 | 500 / 1,664 | medium | 0.37 | 31.3 | telemetry | -| n8n (`n8n`) | 321 | 550 | 512 / 1,536 | light | 0.1 | 0.5 | onboarding ! | +| Paperless-ngx (`paperless-ngx`) | 645 | 755 | 500 / 1,664 | medium | 0.37 | 31.3 | telemetry | +| SparkyFitness (`sparkyfitness`) | 316 | 664 | 400 / 1,792 | light | 0.23 | 0.4 | onboarding ! | +| n8n (`n8n`) | 351 | 578 | 512 / 1,536 | light | 0.1 | 0.5 | onboarding ! | | Nextcloud (`nextcloud`) | 314 | 525 | 256 / 1,664 | light | 0.4 | 12.8 | onboarding ! | | Komga (`komga`) | 442 | 496 | 200 / 768 | light | 0.15 | 0.5 | onboarding | | Docmost (`docmost`) | 415 | 495 | 200 / 896 | light | 0.38 | 0.8 | telemetry | | OnlyOffice (`onlyoffice`) | 364 | 488 | 512 / 2,048 | medium | 0.04 | 31.8 | measured | | Rallly (`rallly`) | 360 | 479 | 384 / 1,024 | light | 0.19 | 2.9 | onboarding | | AdventureLog (`adventurelog`) | 361 | 464 | 100 / 896 | medium | 0.45 | 19.3 | telemetry | -| Grafana (`grafana`) | 220 | 435 | 100 / 512 | light | 0.31 | 1.0 | onboarding ! | +| Jellyfin (`jellyfin`) | 191 | 448 | 512 / 2,048 | heavy-in-bursts | 0.06 | 51.3 | measured | +| Grafana (`grafana`) | 269 | 435 | 100 / 512 | light | 0.31 | 1.0 | onboarding ! | +| Home Assistant (`home-assistant`) | 352 | 434 | 256 / 1,024 | light | 0.2 | 2.4 | onboarding | | Mealie (`mealie`) | 273 | 431 | 200 / 1,000 | light | 0.15 | 1.4 | onboarding ! | | Calibre-Web Automated (`calibre-web`) | 191 | 413 | 200 / 768 | medium | 0.04 | 26.0 | telemetry ! | | Papra (`papra`) | 266 | 405 | 256 / 768 | light | 0.07 | 0.2 | onboarding | | Outline (`outline`) | 282 | 393 | 200 / 1,152 | light | 0.39 | 1.4 | onboarding | -| Jellyfin (`jellyfin`) | 191 | 373 | 512 / 2,048 | heavy-in-bursts | 0.06 | 51.3 | measured | | Gramps Web (`gramps-web`) | 326 | 342 | 384 / 1,024 | light | 0.04 | 0.0 | onboarding | | MeTube (`metube`) | 62 | 329 | 128 / 768 | light | 0.03 | 0.1 | onboarding ! | -| Home Assistant (`home-assistant`) | 318 | 328 | 256 / 1,024 | light | 0.2 | 2.4 | onboarding | | qBittorrent (`qbittorrent`) | 163 | 318 | 192 / 1,024 | light | 0.04 | 0.1 | onboarding ! | | wger (`wger`) | 246 | 267 | 256 / 416 | — | – | – | onboarding — hidden | | Plant-it (`plant-it`) | 50 | 256 | 50 / 256 | — | – | – | unmeasured — abandoned | +| Kimai (`kimai`) | 163 | 250 | 100 / 640 | light | 0.16 | 0.8 | telemetry ! | | Claper (`claper`) | 248 | 248 | 100 / 640 | light | 0.3 | 0.5 | onboarding | -| Kimai (`kimai`) | 163 | 240 | 100 / 640 | light | 0.16 | 0.8 | telemetry ! | | Plex (`plex`) | 232 | 234 | 512 / 2,048 | light | 0.22 | 3.4 | measured | -| Uptime Kuma (`uptime-kuma`) | 103 | 227 | 50 / 256 | light | 0.2 | 0.2 | onboarding ! | +| Uptime Kuma (`uptime-kuma`) | 118 | 227 | 50 / 256 | light | 0.2 | 0.2 | onboarding ! | | BookStack (`bookstack`) | 159 | 225 | 150 / 768 | light | 0.18 | 0.9 | telemetry ! | | Zipline (`zipline`) | 196 | 217 | 100 / 768 | light | 0.2 | 0.3 | onboarding | -| Wishlist (`wishlist`) | 115 | 184 | 120 / 512 | light | 0.07 | 0.1 | onboarding ! | +| Wishlist (`wishlist`) | 118 | 184 | 120 / 512 | light | 0.07 | 0.1 | onboarding ! | | Jellyseerr (`seerr`) | 166 | 168 | 100 / 384 | light | 0.04 | 0.1 | measured | | ActualBudget (`actualbudget`) | 44 | 167 | 50 / 256 | light | 0.06 | 0.1 | measured ! | | Ghost (`ghost`) | 149 | 149 | 150 / 512 | light | 0.08 | 0.2 | onboarding | | Wanderer (`wanderer`) | 143 | 147 | 350 / 1,024 | light | 0.2 | 0.3 | measured | | Emby (`emby`) | 142 | 146 | 512 / 2,048 | light | 0.18 | 1.9 | onboarding ! | -| Gitea (`gitea`) | 74 | 136 | 100 / 512 | light | 0.04 | 0.1 | onboarding ! | +| Gitea (`gitea`) | 76 | 136 | 100 / 512 | light | 0.04 | 0.1 | onboarding ! | | Homebox (`homebox`) | 17 | 118 | 50 / 256 | light | 0.06 | 0.1 | measured ! | | Termix (`termix`) | 102 | 117 | 30 / 128 | light | 0.04 | 0.1 | measured | -| Grocy (`grocy`) | 30 | 114 | 60 / 384 | light | 0.04 | 0.3 | onboarding ! | -| LubeLogger (`lubelogger`) | 53 | 113 | 80 / 512 | light | 0.08 | 0.3 | onboarding ! | +| Grocy (`grocy`) | 33 | 114 | 60 / 384 | light | 0.04 | 0.3 | onboarding ! | +| LubeLogger (`lubelogger`) | 56 | 113 | 80 / 512 | light | 0.08 | 0.3 | onboarding ! | | Vikunja (`vikunja`) | 20 | 104 | 50 / 256 | light | 0.0 | 0.0 | measured ! | | Radarr (`radarr`) | 96 | 100 | 150 / 512 | light | 0.09 | 0.3 | measured | | Vaultwarden (`vaultwarden`) | 44 | 99 | 50 / 256 | light | 0.03 | 0.0 | onboarding ! | -| Crafty Controller (`crafty-controller`) | 78 | 84 | 256 / 2,048 | light | 0.09 | 0.2 | onboarding ! | +| Crafty Controller (`crafty-controller`) | 79 | 84 | 256 / 2,048 | light | 0.09 | 0.2 | onboarding ! | | Homepage (`homepage`) | 82 | 83 | 50 / 256 | light | 0.03 | 0.0 | measured | | Gokapi (`gokapi`) | 7 | 77 | 30 / 128 | light | 0.03 | 0.0 | measured ! | | Sonarr (`sonarr`) | 77 | 77 | 150 / 512 | light | 0.07 | 0.2 | onboarding | | Recipe Importer (`recipe-importer`) | 63 | 72 | 30 / 128 | light | 0.09 | 0.1 | measured | | OpenGist (`opengist`) | 27 | 68 | 30 / 128 | light | 0.03 | 0.8 | telemetry | | SABnzbd (`sabnzbd`) | 68 | 68 | 192 / 1,024 | light | 0.04 | 0.1 | onboarding | +| PrivateBin (`privatebin`) | 40 | 60 | 30 / 128 | light | 0.04 | 0.0 | telemetry ! | | Code-Server (`code-server`) | 59 | 59 | 200 / 1,024 | light | 0.03 | 0.0 | measured | -| PrivateBin (`privatebin`) | 40 | 59 | 30 / 128 | light | 0.04 | 0.0 | telemetry ! | | Audiobookshelf (`audiobookshelf`) | 48 | 54 | 100 / 512 | light | 0.04 | 0.1 | onboarding | | Radicale (`radicale`) | 27 | 27 | 40 / 128 | light | 0.03 | 0.0 | onboarding | | Transmission (`transmission`) | 6 | 22 | 64 / 512 | light | 0.05 | 0.1 | onboarding ! | | Navidrome (`navidrome`) | 14 | 18 | 50 / 256 | light | 0.04 | 0.1 | onboarding | -| BentoPDF (`bentopdf`) | 5 | 10 | 100 / 384 | light | 0.03 | 0.0 | telemetry ! | +| BentoPDF (`bentopdf`) | 10 | 15 | 100 / 384 | light | 0.03 | 0.0 | telemetry ! | | Glance (`glance`) | 6 | 7 | 20 / 128 | light | 0.03 | 0.0 | measured | | NZBGet (`nzbget`) | 5 | 5 | 64 / 512 | light | 0.04 | 0.1 | onboarding | @@ -95,7 +95,10 @@ Samba is not in the floor: it runs only when sharing is switched on. Evidence: ` unmeasured = catalog value. `!` = two sources' peaks differ by more than 50 %; the higher is used (all values: `evidence/apps-table.json`). `—` = not installable today (hidden / abandoned), no bench. -**The five largest peaks:** Immich 3,061 · Grimmory 1,095 · Karakeep 1,050 · Cal.com 950 · Dawarich 890 MB. +**The five largest peaks:** Immich 3,290 · Grimmory 1,095 · Karakeep 1,050 · Cal.com 950 · Dawarich 890 MB. +**Raised with the HP check (2026-10-14, operator ruling A, R-1009):** 23 figures of 64 apps took the second machine's higher +figure (HP t740, `audits/sizing-check-2026-10-14/hp-figures.json`); none went down. Each raised figure is named in +`sizing.json` → `raised_by_hp` (the figure, what it was, what it is). The table above already holds the raised figures. **CPU bursts (heavy-in-bursts):** Immich — 74 % for the busiest minute, while it reads new photos; Jellyfin — 51 %, while it converts a film (CPU only, no GPU passed through). **Medium:** Paperless-ngx 31 % (reading scans), OnlyOffice 32 %, Calibre-Web 26 %, RomM 24 %, Grimmory 22 %, Tandoor 20 %, AdventureLog 19 % (first start). @@ -148,12 +151,12 @@ changes the checksum the website's data file carries, and the website was not to | | Memory | |---|---| -| Household set, typical (sum) | 2,791 MB | -| Household set, all at peak at once (sum — they rarely coincide; deliberately pessimistic) | 5,045 MB | +| Household set, typical (sum) | 3,103 MB | +| Household set, all at peak at once (sum — they rarely coincide; deliberately pessimistic) | 5,551 MB | | Guest platform | ≈ 470 MB | -| Guest needs at peak | ≈ 5.5 GB | -| + 50 % headroom | ≈ 8.3 GB guest | -| + the host's share (the installer keeps 4 GB for Proxmox; it used ≈ 2.0 GB here) | **≈ 12.3 GB box** | +| Guest needs at peak | ≈ 5.9 GB | +| + 50 % headroom | ≈ 8.8 GB guest | +| + the host's share (the installer keeps 4 GB for Proxmox; it used ≈ 2.0 GB here) | **≈ 12.8 GB box** | **Headroom 50 %, because:** the bench library is small (200 photos; tester-1's real Immich already peaked at 2.9 GB); the nightly backup runs database dumps and restic next to the apps; an update pulls new images while the old ones run; @@ -181,12 +184,14 @@ a backup at the same time can slow it down · **does not fit:** guest < peak. Pe | Selection | Peak | 8 GB | 16 GB | 24 GB | 32 GB | |---|---|---|---|---|---| -| Household set | 5.4 GB | does not fit | fits well | fits well | fits well | -| Household set without Immich | 2.4 GB | fits well | fits well | fits well | fits well | -| Immich alone | 3.4 GB | fits, but tight | fits well | fits well | fits well | -| All 62 apps | 21.3 GB | does not fit | does not fit | does not fit | fits, but tight | +| Household set | 5.9 GB | does not fit | fits well | fits well | fits well | +| Household set without Immich | 2.7 GB | fits, but tight | fits well | fits well | fits well | +| Immich alone | 3.7 GB | fits, but tight | fits well | fits well | fits well | +| All 62 apps | 21.8 GB | does not fit | does not fit | does not fit | fits, but tight | -- **8 GB:** the household set without Immich fits well; Immich alone fits, but tight; the whole household set does not fit. +- **8 GB:** the household set without Immich fits, but tight; Immich alone fits, but tight; the whole household set does not fit. - **16 GB:** the whole household set fits well. - **32 GB:** the household set fits well; all 62 apps at once fit, but tight. + +2026-10-14: raised with the HP check (operator ruling A); one verdict became stricter — household set without Immich on 8 GB, by 0.5 MB. diff --git a/documentation/audits/sizing-2026-10-13/evidence/apps-table.json b/documentation/audits/sizing-2026-10-13/evidence/apps-table.json index 001b2084..b1c0ad1a 100644 --- a/documentation/audits/sizing-2026-10-13/evidence/apps-table.json +++ b/documentation/audits/sizing-2026-10-13/evidence/apps-table.json @@ -14,6 +14,7 @@ "sources_disagree": true, "cpu_rest_pct": 0.06, "cpu_peak_1m_pct": 0.1, + "hp": null, "telemetry": { "app": "actualbudget", "customer": "tester-1", @@ -71,6 +72,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.45, "cpu_peak_1m_pct": 19.3, + "hp": null, "telemetry": { "app": "adventurelog", "customer": "demo-hp", @@ -143,6 +145,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.04, "cpu_peak_1m_pct": 0.1, + "hp": null, "telemetry": null, "onboarding": { "peak_mb": 54, @@ -178,18 +181,37 @@ { "slug": "bentopdf", "display_name": "BentoPDF", - "mem_typical_mb": 5, - "mem_peak_mb": 10, + "mem_typical_mb": 10, + "mem_peak_mb": 15, "cpu_class": "light", "cpu_note": "", "source": "telemetry", "measured_on": "demo-hp", "date": "2026-10-13", + "raised_by_hp": [ + { + "field": "typical", + "was": 5, + "now": 10 + }, + { + "field": "peak", + "was": 10, + "now": 15 + } + ], "catalog_request_mb": 100, "catalog_limit_mb": 384, "sources_disagree": true, "cpu_rest_pct": 0.03, "cpu_peak_1m_pct": 0.0, + "hp": { + "typical_mb": 10, + "peak_mb": 15, + "box": "demo-hp (HP t740)", + "run": "R1-set", + "cite": "audits/sizing-check-2026-10-14/evidence/R1-set/set-summary.json" + }, "telemetry": { "app": "bentopdf", "customer": "demo-hp", @@ -247,6 +269,13 @@ "sources_disagree": true, "cpu_rest_pct": 0.18, "cpu_peak_1m_pct": 0.9, + "hp": { + "typical_mb": 148, + "peak_mb": 222, + "box": "demo-hp (HP t740)", + "run": "R1-set", + "cite": "audits/sizing-check-2026-10-14/evidence/R1-set/set-summary.json" + }, "telemetry": { "app": "bookstack", "customer": "demo-hp", @@ -314,6 +343,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.14, "cpu_peak_1m_pct": 1.8, + "hp": null, "telemetry": null, "onboarding": { "peak_mb": 950, @@ -366,6 +396,13 @@ "sources_disagree": true, "cpu_rest_pct": 0.04, "cpu_peak_1m_pct": 26.0, + "hp": { + "typical_mb": 161, + "peak_mb": 242, + "box": "demo-hp (HP t740)", + "run": "R1-set", + "cite": "audits/sizing-check-2026-10-14/evidence/R1-set/set-summary.json" + }, "telemetry": { "app": "calibre-web", "customer": "demo-hp", @@ -428,6 +465,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.3, "cpu_peak_1m_pct": 0.5, + "hp": null, "telemetry": null, "onboarding": { "peak_mb": 208, @@ -480,6 +518,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.03, "cpu_peak_1m_pct": 0.0, + "hp": null, "telemetry": null, "onboarding": null, "bench": { @@ -510,18 +549,32 @@ { "slug": "crafty-controller", "display_name": "Crafty Controller", - "mem_typical_mb": 78, + "mem_typical_mb": 79, "mem_peak_mb": 84, "cpu_class": "light", "cpu_note": "", "source": "onboarding", "measured_on": null, "date": "2026-09-30", + "raised_by_hp": [ + { + "field": "typical", + "was": 78, + "now": 79 + } + ], "catalog_request_mb": 256, "catalog_limit_mb": 2048, "sources_disagree": true, "cpu_rest_pct": 0.09, "cpu_peak_1m_pct": 0.2, + "hp": { + "typical_mb": 79, + "peak_mb": 80, + "box": "demo-hp (HP t740)", + "run": "R4-b3", + "cite": "audits/sizing-check-2026-10-14/evidence/R4-b3/summary.json" + }, "telemetry": null, "onboarding": { "peak_mb": 54, @@ -569,6 +622,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.48, "cpu_peak_1m_pct": 14.4, + "hp": null, "telemetry": null, "onboarding": { "peak_mb": 890, @@ -631,6 +685,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.38, "cpu_peak_1m_pct": 0.8, + "hp": null, "telemetry": { "app": "docmost", "customer": "demo-hp", @@ -703,6 +758,13 @@ "sources_disagree": true, "cpu_rest_pct": 0.18, "cpu_peak_1m_pct": 1.9, + "hp": { + "typical_mb": 136, + "peak_mb": 142, + "box": "demo-hp (HP t740)", + "run": "R4-b3", + "cite": "audits/sizing-check-2026-10-14/evidence/R4-b3/summary.json" + }, "telemetry": null, "onboarding": { "peak_mb": 97, @@ -750,6 +812,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.08, "cpu_peak_1m_pct": 0.2, + "hp": null, "telemetry": null, "onboarding": { "peak_mb": 136, @@ -785,18 +848,32 @@ { "slug": "gitea", "display_name": "Gitea", - "mem_typical_mb": 74, + "mem_typical_mb": 76, "mem_peak_mb": 136, "cpu_class": "light", "cpu_note": "", "source": "onboarding", "measured_on": null, "date": "2026-09-30", + "raised_by_hp": [ + { + "field": "typical", + "was": 74, + "now": 76 + } + ], "catalog_request_mb": 100, "catalog_limit_mb": 512, "sources_disagree": true, "cpu_rest_pct": 0.04, "cpu_peak_1m_pct": 0.1, + "hp": { + "typical_mb": 76, + "peak_mb": 89, + "box": "demo-hp (HP t740)", + "run": "R4-b3", + "cite": "audits/sizing-check-2026-10-14/evidence/R4-b3/summary.json" + }, "telemetry": null, "onboarding": { "peak_mb": 136, @@ -844,6 +921,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.03, "cpu_peak_1m_pct": 0.0, + "hp": null, "telemetry": { "app": "glance", "customer": "demo-hp", @@ -901,6 +979,7 @@ "sources_disagree": true, "cpu_rest_pct": 0.03, "cpu_peak_1m_pct": 0.0, + "hp": null, "telemetry": { "app": "gokapi", "customer": "tester-1", @@ -946,18 +1025,32 @@ { "slug": "grafana", "display_name": "Grafana", - "mem_typical_mb": 220, + "mem_typical_mb": 269, "mem_peak_mb": 435, "cpu_class": "light", "cpu_note": "", "source": "onboarding", "measured_on": null, "date": "2026-09-30", + "raised_by_hp": [ + { + "field": "typical", + "was": 220, + "now": 269 + } + ], "catalog_request_mb": 100, "catalog_limit_mb": 512, "sources_disagree": true, "cpu_rest_pct": 0.31, "cpu_peak_1m_pct": 1.0, + "hp": { + "typical_mb": 269, + "peak_mb": 383, + "box": "demo-hp (HP t740)", + "run": "R4-b1", + "cite": "audits/sizing-check-2026-10-14/evidence/R4-b1/summary.json" + }, "telemetry": null, "onboarding": { "peak_mb": 241, @@ -1005,6 +1098,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.04, "cpu_peak_1m_pct": 0.0, + "hp": null, "telemetry": null, "onboarding": { "peak_mb": 342, @@ -1040,18 +1134,32 @@ { "slug": "grimmory", "display_name": "Grimmory", - "mem_typical_mb": 346, + "mem_typical_mb": 451, "mem_peak_mb": 1095, "cpu_class": "medium", "cpu_note": "at first start only", "source": "onboarding", "measured_on": null, "date": "2026-10-01", + "raised_by_hp": [ + { + "field": "typical", + "was": 346, + "now": 451 + } + ], "catalog_request_mb": 600, "catalog_limit_mb": 1408, "sources_disagree": true, "cpu_rest_pct": 0.83, "cpu_peak_1m_pct": 22.0, + "hp": { + "typical_mb": 451, + "peak_mb": 624, + "box": "demo-hp (HP t740)", + "run": "R4-b1", + "cite": "audits/sizing-check-2026-10-14/evidence/R4-b1/summary.json" + }, "telemetry": { "app": "grimmory", "customer": "demo-hp", @@ -1107,18 +1215,32 @@ { "slug": "grocy", "display_name": "Grocy", - "mem_typical_mb": 30, + "mem_typical_mb": 33, "mem_peak_mb": 114, "cpu_class": "light", "cpu_note": "", "source": "onboarding", "measured_on": null, "date": "2026-10-10", + "raised_by_hp": [ + { + "field": "typical", + "was": 30, + "now": 33 + } + ], "catalog_request_mb": 60, "catalog_limit_mb": 384, "sources_disagree": true, "cpu_rest_pct": 0.04, "cpu_peak_1m_pct": 0.3, + "hp": { + "typical_mb": 33, + "peak_mb": 34, + "box": "demo-hp (HP t740)", + "run": "R4-b3", + "cite": "audits/sizing-check-2026-10-14/evidence/R4-b3/summary.json" + }, "telemetry": null, "onboarding": { "peak_mb": 114, @@ -1154,18 +1276,37 @@ { "slug": "home-assistant", "display_name": "Home Assistant", - "mem_typical_mb": 318, - "mem_peak_mb": 328, + "mem_typical_mb": 352, + "mem_peak_mb": 434, "cpu_class": "light", "cpu_note": "", "source": "onboarding", "measured_on": null, "date": "2026-09-30", + "raised_by_hp": [ + { + "field": "typical", + "was": 318, + "now": 352 + }, + { + "field": "peak", + "was": 328, + "now": 434 + } + ], "catalog_request_mb": 256, "catalog_limit_mb": 1024, "sources_disagree": false, "cpu_rest_pct": 0.2, "cpu_peak_1m_pct": 2.4, + "hp": { + "typical_mb": 352, + "peak_mb": 434, + "box": "demo-hp (HP t740)", + "run": "R1-set", + "cite": "audits/sizing-check-2026-10-14/evidence/R1-set/set-summary.json" + }, "telemetry": null, "onboarding": { "peak_mb": 328, @@ -1213,6 +1354,7 @@ "sources_disagree": true, "cpu_rest_pct": 0.06, "cpu_peak_1m_pct": 0.1, + "hp": null, "telemetry": { "app": "homebox", "customer": "tester-1", @@ -1270,6 +1412,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.03, "cpu_peak_1m_pct": 0.0, + "hp": null, "telemetry": null, "onboarding": null, "bench": { @@ -1300,18 +1443,37 @@ { "slug": "immich", "display_name": "Immich", - "mem_typical_mb": 1356, - "mem_peak_mb": 3061, + "mem_typical_mb": 1557, + "mem_peak_mb": 3290, "cpu_class": "heavy-in-bursts", "cpu_note": "only while it reads new photos: thumbnails, face and search indexing (200 photos took about 6 minutes)", "source": "onboarding", "measured_on": null, "date": "2026-09-30", + "raised_by_hp": [ + { + "field": "typical", + "was": 1356, + "now": 1557 + }, + { + "field": "peak", + "was": 3061, + "now": 3290 + } + ], "catalog_request_mb": 2048, "catalog_limit_mb": 4480, "sources_disagree": true, "cpu_rest_pct": 0.74, "cpu_peak_1m_pct": 74.2, + "hp": { + "typical_mb": 1557, + "peak_mb": 3290, + "box": "demo-hp (HP t740)", + "run": "R1-set", + "cite": "audits/sizing-check-2026-10-14/evidence/R1-set/set-summary.json" + }, "telemetry": { "app": "immich", "customer": "tester-1", @@ -1378,17 +1540,31 @@ "slug": "jellyfin", "display_name": "Jellyfin", "mem_typical_mb": 191, - "mem_peak_mb": 373, + "mem_peak_mb": 448, "cpu_class": "heavy-in-bursts", "cpu_note": "only while it converts a film for a device that cannot play it (a 3-minute 1080p film took 41 seconds, CPU only)", "source": "measured", "measured_on": "demo-felhom (N100)", "date": "2026-10-13", + "raised_by_hp": [ + { + "field": "peak", + "was": 373, + "now": 448 + } + ], "catalog_request_mb": 512, "catalog_limit_mb": 2048, "sources_disagree": false, "cpu_rest_pct": 0.06, "cpu_peak_1m_pct": 51.3, + "hp": { + "typical_mb": 188, + "peak_mb": 448, + "box": "demo-hp (HP t740)", + "run": "R1-set", + "cite": "audits/sizing-check-2026-10-14/evidence/R1-set/set-summary.json" + }, "telemetry": { "app": "jellyfin", "customer": "tester-1", @@ -1434,18 +1610,32 @@ { "slug": "karakeep", "display_name": "Karakeep", - "mem_typical_mb": 361, + "mem_typical_mb": 372, "mem_peak_mb": 1050, "cpu_class": "light", "cpu_note": "", "source": "onboarding", "measured_on": null, "date": "2026-10-01", + "raised_by_hp": [ + { + "field": "typical", + "was": 361, + "now": 372 + } + ], "catalog_request_mb": 700, "catalog_limit_mb": 2816, "sources_disagree": true, "cpu_rest_pct": 0.6, "cpu_peak_1m_pct": 2.9, + "hp": { + "typical_mb": 372, + "peak_mb": 643, + "box": "demo-hp (HP t740)", + "run": "R4-b1", + "cite": "audits/sizing-check-2026-10-14/evidence/R4-b1/summary.json" + }, "telemetry": null, "onboarding": { "peak_mb": 1050, @@ -1492,17 +1682,31 @@ "slug": "kimai", "display_name": "Kimai", "mem_typical_mb": 163, - "mem_peak_mb": 240, + "mem_peak_mb": 250, "cpu_class": "light", "cpu_note": "", "source": "telemetry", "measured_on": "demo-hp", "date": "2026-10-13", + "raised_by_hp": [ + { + "field": "peak", + "was": 240, + "now": 250 + } + ], "catalog_request_mb": 100, "catalog_limit_mb": 640, "sources_disagree": true, "cpu_rest_pct": 0.16, "cpu_peak_1m_pct": 0.8, + "hp": { + "typical_mb": 155, + "peak_mb": 250, + "box": "demo-hp (HP t740)", + "run": "R1-set", + "cite": "audits/sizing-check-2026-10-14/evidence/R1-set/set-summary.json" + }, "telemetry": { "app": "kimai", "customer": "demo-hp", @@ -1570,6 +1774,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.15, "cpu_peak_1m_pct": 0.5, + "hp": null, "telemetry": null, "onboarding": { "peak_mb": 496, @@ -1605,18 +1810,32 @@ { "slug": "lubelogger", "display_name": "LubeLogger", - "mem_typical_mb": 53, + "mem_typical_mb": 56, "mem_peak_mb": 113, "cpu_class": "light", "cpu_note": "", "source": "onboarding", "measured_on": null, "date": "2026-10-10", + "raised_by_hp": [ + { + "field": "typical", + "was": 53, + "now": 56 + } + ], "catalog_request_mb": 80, "catalog_limit_mb": 512, "sources_disagree": true, "cpu_rest_pct": 0.08, "cpu_peak_1m_pct": 0.3, + "hp": { + "typical_mb": 56, + "peak_mb": 65, + "box": "demo-hp (HP t740)", + "run": "R4-b4", + "cite": "audits/sizing-check-2026-10-14/evidence/R4-b4/summary.json" + }, "telemetry": null, "onboarding": { "peak_mb": 113, @@ -1664,6 +1883,13 @@ "sources_disagree": true, "cpu_rest_pct": 0.15, "cpu_peak_1m_pct": 1.4, + "hp": { + "typical_mb": 226, + "peak_mb": 240, + "box": "demo-hp (HP t740)", + "run": "R4-b1", + "cite": "audits/sizing-check-2026-10-14/evidence/R4-b1/summary.json" + }, "telemetry": { "app": "mealie", "customer": "tester-1", @@ -1726,6 +1952,13 @@ "sources_disagree": true, "cpu_rest_pct": 0.03, "cpu_peak_1m_pct": 0.1, + "hp": { + "typical_mb": 62, + "peak_mb": 63, + "box": "demo-hp (HP t740)", + "run": "R4-b4", + "cite": "audits/sizing-check-2026-10-14/evidence/R4-b4/summary.json" + }, "telemetry": { "app": "metube", "customer": "demo-hp", @@ -1776,18 +2009,37 @@ { "slug": "n8n", "display_name": "n8n", - "mem_typical_mb": 321, - "mem_peak_mb": 550, + "mem_typical_mb": 351, + "mem_peak_mb": 578, "cpu_class": "light", "cpu_note": "", "source": "onboarding", "measured_on": null, "date": "2026-09-30", + "raised_by_hp": [ + { + "field": "typical", + "was": 321, + "now": 351 + }, + { + "field": "peak", + "was": 550, + "now": 578 + } + ], "catalog_request_mb": 512, "catalog_limit_mb": 1536, "sources_disagree": true, "cpu_rest_pct": 0.1, "cpu_peak_1m_pct": 0.5, + "hp": { + "typical_mb": 351, + "peak_mb": 578, + "box": "demo-hp (HP t740)", + "run": "R4-b2", + "cite": "audits/sizing-check-2026-10-14/evidence/R4-b2/summary.json" + }, "telemetry": null, "onboarding": { "peak_mb": 353, @@ -1835,6 +2087,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.04, "cpu_peak_1m_pct": 0.1, + "hp": null, "telemetry": null, "onboarding": { "peak_mb": 18, @@ -1882,6 +2135,13 @@ "sources_disagree": true, "cpu_rest_pct": 0.4, "cpu_peak_1m_pct": 12.8, + "hp": { + "typical_mb": 229, + "peak_mb": 290, + "box": "demo-hp (HP t740)", + "run": "R1-set", + "cite": "audits/sizing-check-2026-10-14/evidence/R1-set/set-summary.json" + }, "telemetry": { "app": "nextcloud", "customer": "tester-1", @@ -1954,6 +2214,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.04, "cpu_peak_1m_pct": 0.1, + "hp": null, "telemetry": null, "onboarding": { "peak_mb": 5, @@ -2001,6 +2262,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.04, "cpu_peak_1m_pct": 31.8, + "hp": null, "telemetry": null, "onboarding": null, "bench": { @@ -2043,6 +2305,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.03, "cpu_peak_1m_pct": 0.8, + "hp": null, "telemetry": { "app": "opengist", "customer": "demo-hp", @@ -2082,6 +2345,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.39, "cpu_peak_1m_pct": 1.4, + "hp": null, "telemetry": null, "onboarding": { "peak_mb": 393, @@ -2127,18 +2391,37 @@ { "slug": "paperless-ngx", "display_name": "Paperless-ngx", - "mem_typical_mb": 568, - "mem_peak_mb": 659, + "mem_typical_mb": 645, + "mem_peak_mb": 755, "cpu_class": "medium", "cpu_note": "only while it reads new scanned documents (text recognition, about 4 pages a minute)", "source": "telemetry", "measured_on": "demo-hp", "date": "2026-10-13", + "raised_by_hp": [ + { + "field": "typical", + "was": 568, + "now": 645 + }, + { + "field": "peak", + "was": 659, + "now": 755 + } + ], "catalog_request_mb": 500, "catalog_limit_mb": 1664, "sources_disagree": false, "cpu_rest_pct": 0.37, "cpu_peak_1m_pct": 31.3, + "hp": { + "typical_mb": 645, + "peak_mb": 755, + "box": "demo-hp (HP t740)", + "run": "R1-set", + "cite": "audits/sizing-check-2026-10-14/evidence/R1-set/set-summary.json" + }, "telemetry": { "app": "paperless-ngx", "customer": "demo-hp", @@ -2211,6 +2494,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.07, "cpu_peak_1m_pct": 0.2, + "hp": null, "telemetry": null, "onboarding": { "peak_mb": 405, @@ -2259,6 +2543,7 @@ "sources_disagree": false, "cpu_rest_pct": null, "cpu_peak_1m_pct": null, + "hp": null, "telemetry": null, "onboarding": null, "bench": null @@ -2278,6 +2563,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.22, "cpu_peak_1m_pct": 3.4, + "hp": null, "telemetry": null, "onboarding": null, "bench": { @@ -2309,17 +2595,31 @@ "slug": "privatebin", "display_name": "PrivateBin", "mem_typical_mb": 40, - "mem_peak_mb": 59, + "mem_peak_mb": 60, "cpu_class": "light", "cpu_note": "", "source": "telemetry", "measured_on": "demo-hp", "date": "2026-10-13", + "raised_by_hp": [ + { + "field": "peak", + "was": 59, + "now": 60 + } + ], "catalog_request_mb": 30, "catalog_limit_mb": 128, "sources_disagree": true, "cpu_rest_pct": 0.04, "cpu_peak_1m_pct": 0.0, + "hp": { + "typical_mb": 38, + "peak_mb": 60, + "box": "demo-hp (HP t740)", + "run": "R1-set", + "cite": "audits/sizing-check-2026-10-14/evidence/R1-set/set-summary.json" + }, "telemetry": { "app": "privatebin", "customer": "demo-hp", @@ -2377,6 +2677,13 @@ "sources_disagree": true, "cpu_rest_pct": 0.04, "cpu_peak_1m_pct": 0.1, + "hp": { + "typical_mb": 18, + "peak_mb": 18, + "box": "demo-hp (HP t740)", + "run": "R4-b4", + "cite": "audits/sizing-check-2026-10-14/evidence/R4-b4/summary.json" + }, "telemetry": null, "onboarding": { "peak_mb": 318, @@ -2424,6 +2731,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.09, "cpu_peak_1m_pct": 0.3, + "hp": null, "telemetry": null, "onboarding": null, "bench": { @@ -2466,6 +2774,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.03, "cpu_peak_1m_pct": 0.0, + "hp": null, "telemetry": null, "onboarding": { "peak_mb": 26, @@ -2513,6 +2822,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.19, "cpu_peak_1m_pct": 2.9, + "hp": null, "telemetry": null, "onboarding": { "peak_mb": 479, @@ -2565,6 +2875,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.09, "cpu_peak_1m_pct": 0.1, + "hp": null, "telemetry": null, "onboarding": null, "bench": { @@ -2607,6 +2918,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.71, "cpu_peak_1m_pct": 24.2, + "hp": null, "telemetry": { "app": "romm", "customer": "demo-hp", @@ -2679,6 +2991,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.04, "cpu_peak_1m_pct": 0.1, + "hp": null, "telemetry": null, "onboarding": { "peak_mb": 65, @@ -2726,6 +3039,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.04, "cpu_peak_1m_pct": 0.1, + "hp": null, "telemetry": null, "onboarding": null, "bench": { @@ -2768,6 +3082,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.07, "cpu_peak_1m_pct": 0.2, + "hp": null, "telemetry": null, "onboarding": { "peak_mb": 71, @@ -2803,18 +3118,32 @@ { "slug": "sparkyfitness", "display_name": "SparkyFitness", - "mem_typical_mb": 305, + "mem_typical_mb": 316, "mem_peak_mb": 664, "cpu_class": "light", "cpu_note": "", "source": "onboarding", "measured_on": null, "date": "2026-10-01", + "raised_by_hp": [ + { + "field": "typical", + "was": 305, + "now": 316 + } + ], "catalog_request_mb": 400, "catalog_limit_mb": 1792, "sources_disagree": true, "cpu_rest_pct": 0.23, "cpu_peak_1m_pct": 0.4, + "hp": { + "typical_mb": 316, + "peak_mb": 410, + "box": "demo-hp (HP t740)", + "run": "R4-b2", + "cite": "audits/sizing-check-2026-10-14/evidence/R4-b2/summary.json" + }, "telemetry": null, "onboarding": { "peak_mb": 664, @@ -2872,6 +3201,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.16, "cpu_peak_1m_pct": 20.0, + "hp": null, "telemetry": null, "onboarding": { "peak_mb": 819, @@ -2924,6 +3254,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.04, "cpu_peak_1m_pct": 0.1, + "hp": null, "telemetry": null, "onboarding": null, "bench": { @@ -2966,6 +3297,13 @@ "sources_disagree": true, "cpu_rest_pct": 0.05, "cpu_peak_1m_pct": 0.1, + "hp": { + "typical_mb": 6, + "peak_mb": 7, + "box": "demo-hp (HP t740)", + "run": "R4-b4", + "cite": "audits/sizing-check-2026-10-14/evidence/R4-b4/summary.json" + }, "telemetry": null, "onboarding": { "peak_mb": 22, @@ -3001,18 +3339,32 @@ { "slug": "uptime-kuma", "display_name": "Uptime Kuma", - "mem_typical_mb": 103, + "mem_typical_mb": 118, "mem_peak_mb": 227, "cpu_class": "light", "cpu_note": "", "source": "onboarding", "measured_on": null, "date": "2026-09-30", + "raised_by_hp": [ + { + "field": "typical", + "was": 103, + "now": 118 + } + ], "catalog_request_mb": 50, "catalog_limit_mb": 256, "sources_disagree": true, "cpu_rest_pct": 0.2, "cpu_peak_1m_pct": 0.2, + "hp": { + "typical_mb": 118, + "peak_mb": 119, + "box": "demo-hp (HP t740)", + "run": "R4-b2", + "cite": "audits/sizing-check-2026-10-14/evidence/R4-b2/summary.json" + }, "telemetry": { "app": "uptime-kuma", "customer": "tester-1", @@ -3075,6 +3427,13 @@ "sources_disagree": true, "cpu_rest_pct": 0.03, "cpu_peak_1m_pct": 0.0, + "hp": { + "typical_mb": 37, + "peak_mb": 40, + "box": "demo-hp (HP t740)", + "run": "R1-set", + "cite": "audits/sizing-check-2026-10-14/evidence/R1-set/set-summary.json" + }, "telemetry": { "app": "vaultwarden", "customer": "tester-1", @@ -3137,6 +3496,7 @@ "sources_disagree": true, "cpu_rest_pct": 0.0, "cpu_peak_1m_pct": 0.0, + "hp": null, "telemetry": { "app": "vikunja", "customer": "tester-1", @@ -3194,6 +3554,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.2, "cpu_peak_1m_pct": 0.3, + "hp": null, "telemetry": null, "onboarding": null, "bench": { @@ -3247,6 +3608,7 @@ "sources_disagree": false, "cpu_rest_pct": null, "cpu_peak_1m_pct": null, + "hp": null, "telemetry": null, "onboarding": { "peak_mb": 267, @@ -3259,18 +3621,32 @@ { "slug": "wishlist", "display_name": "Wishlist", - "mem_typical_mb": 115, + "mem_typical_mb": 118, "mem_peak_mb": 184, "cpu_class": "light", "cpu_note": "", "source": "onboarding", "measured_on": null, "date": "2026-09-23", + "raised_by_hp": [ + { + "field": "typical", + "was": 115, + "now": 118 + } + ], "catalog_request_mb": 120, "catalog_limit_mb": 512, "sources_disagree": true, "cpu_rest_pct": 0.07, "cpu_peak_1m_pct": 0.1, + "hp": { + "typical_mb": 118, + "peak_mb": 121, + "box": "demo-hp (HP t740)", + "run": "R4-b2", + "cite": "audits/sizing-check-2026-10-14/evidence/R4-b2/summary.json" + }, "telemetry": null, "onboarding": { "peak_mb": 184, @@ -3318,6 +3694,7 @@ "sources_disagree": false, "cpu_rest_pct": 0.2, "cpu_peak_1m_pct": 0.3, + "hp": null, "telemetry": null, "onboarding": { "peak_mb": 217, diff --git a/documentation/audits/sizing-2026-10-13/sizing.json b/documentation/audits/sizing-2026-10-13/sizing.json index fb92da3a..8d42174e 100644 --- a/documentation/audits/sizing-2026-10-13/sizing.json +++ b/documentation/audits/sizing-2026-10-13/sizing.json @@ -1,6 +1,6 @@ { "schema": 1, - "generated": "2026-10-13", + "generated": "2026-10-14", "units": { "mem": "MB (MiB); docker-style used = memory.current - inactive_file", "cpu": "% of the whole Intel N100 (4 cores = 100 %)" @@ -81,13 +81,25 @@ { "slug": "bentopdf", "display_name": "BentoPDF", - "mem_typical_mb": 5, - "mem_peak_mb": 10, + "mem_typical_mb": 10, + "mem_peak_mb": 15, "cpu_class": "light", "cpu_note": "", "source": "telemetry", "measured_on": "demo-hp", - "date": "2026-10-13" + "date": "2026-10-13", + "raised_by_hp": [ + { + "field": "typical", + "was": 5, + "now": 10 + }, + { + "field": "peak", + "was": 10, + "now": 15 + } + ] }, { "slug": "bookstack", @@ -147,13 +159,20 @@ { "slug": "crafty-controller", "display_name": "Crafty Controller", - "mem_typical_mb": 78, + "mem_typical_mb": 79, "mem_peak_mb": 84, "cpu_class": "light", "cpu_note": "", "source": "onboarding", "measured_on": null, - "date": "2026-09-30" + "date": "2026-09-30", + "raised_by_hp": [ + { + "field": "typical", + "was": 78, + "now": 79 + } + ] }, { "slug": "dawarich", @@ -202,13 +221,20 @@ { "slug": "gitea", "display_name": "Gitea", - "mem_typical_mb": 74, + "mem_typical_mb": 76, "mem_peak_mb": 136, "cpu_class": "light", "cpu_note": "", "source": "onboarding", "measured_on": null, - "date": "2026-09-30" + "date": "2026-09-30", + "raised_by_hp": [ + { + "field": "typical", + "was": 74, + "now": 76 + } + ] }, { "slug": "glance", @@ -235,13 +261,20 @@ { "slug": "grafana", "display_name": "Grafana", - "mem_typical_mb": 220, + "mem_typical_mb": 269, "mem_peak_mb": 435, "cpu_class": "light", "cpu_note": "", "source": "onboarding", "measured_on": null, - "date": "2026-09-30" + "date": "2026-09-30", + "raised_by_hp": [ + { + "field": "typical", + "was": 220, + "now": 269 + } + ] }, { "slug": "gramps-web", @@ -257,35 +290,61 @@ { "slug": "grimmory", "display_name": "Grimmory", - "mem_typical_mb": 346, + "mem_typical_mb": 451, "mem_peak_mb": 1095, "cpu_class": "medium", "cpu_note": "at first start only", "source": "onboarding", "measured_on": null, - "date": "2026-10-01" + "date": "2026-10-01", + "raised_by_hp": [ + { + "field": "typical", + "was": 346, + "now": 451 + } + ] }, { "slug": "grocy", "display_name": "Grocy", - "mem_typical_mb": 30, + "mem_typical_mb": 33, "mem_peak_mb": 114, "cpu_class": "light", "cpu_note": "", "source": "onboarding", "measured_on": null, - "date": "2026-10-10" + "date": "2026-10-10", + "raised_by_hp": [ + { + "field": "typical", + "was": 30, + "now": 33 + } + ] }, { "slug": "home-assistant", "display_name": "Home Assistant", - "mem_typical_mb": 318, - "mem_peak_mb": 328, + "mem_typical_mb": 352, + "mem_peak_mb": 434, "cpu_class": "light", "cpu_note": "", "source": "onboarding", "measured_on": null, - "date": "2026-09-30" + "date": "2026-09-30", + "raised_by_hp": [ + { + "field": "typical", + "was": 318, + "now": 352 + }, + { + "field": "peak", + "was": 328, + "now": 434 + } + ] }, { "slug": "homebox", @@ -312,46 +371,79 @@ { "slug": "immich", "display_name": "Immich", - "mem_typical_mb": 1356, - "mem_peak_mb": 3061, + "mem_typical_mb": 1557, + "mem_peak_mb": 3290, "cpu_class": "heavy-in-bursts", "cpu_note": "only while it reads new photos: thumbnails, face and search indexing (200 photos took about 6 minutes)", "source": "onboarding", "measured_on": null, - "date": "2026-09-30" + "date": "2026-09-30", + "raised_by_hp": [ + { + "field": "typical", + "was": 1356, + "now": 1557 + }, + { + "field": "peak", + "was": 3061, + "now": 3290 + } + ] }, { "slug": "jellyfin", "display_name": "Jellyfin", "mem_typical_mb": 191, - "mem_peak_mb": 373, + "mem_peak_mb": 448, "cpu_class": "heavy-in-bursts", "cpu_note": "only while it converts a film for a device that cannot play it (a 3-minute 1080p film took 41 seconds, CPU only)", "source": "measured", "measured_on": "demo-felhom (N100)", - "date": "2026-10-13" + "date": "2026-10-13", + "raised_by_hp": [ + { + "field": "peak", + "was": 373, + "now": 448 + } + ] }, { "slug": "karakeep", "display_name": "Karakeep", - "mem_typical_mb": 361, + "mem_typical_mb": 372, "mem_peak_mb": 1050, "cpu_class": "light", "cpu_note": "", "source": "onboarding", "measured_on": null, - "date": "2026-10-01" + "date": "2026-10-01", + "raised_by_hp": [ + { + "field": "typical", + "was": 361, + "now": 372 + } + ] }, { "slug": "kimai", "display_name": "Kimai", "mem_typical_mb": 163, - "mem_peak_mb": 240, + "mem_peak_mb": 250, "cpu_class": "light", "cpu_note": "", "source": "telemetry", "measured_on": "demo-hp", - "date": "2026-10-13" + "date": "2026-10-13", + "raised_by_hp": [ + { + "field": "peak", + "was": 240, + "now": 250 + } + ] }, { "slug": "komga", @@ -367,13 +459,20 @@ { "slug": "lubelogger", "display_name": "LubeLogger", - "mem_typical_mb": 53, + "mem_typical_mb": 56, "mem_peak_mb": 113, "cpu_class": "light", "cpu_note": "", "source": "onboarding", "measured_on": null, - "date": "2026-10-10" + "date": "2026-10-10", + "raised_by_hp": [ + { + "field": "typical", + "was": 53, + "now": 56 + } + ] }, { "slug": "mealie", @@ -400,13 +499,25 @@ { "slug": "n8n", "display_name": "n8n", - "mem_typical_mb": 321, - "mem_peak_mb": 550, + "mem_typical_mb": 351, + "mem_peak_mb": 578, "cpu_class": "light", "cpu_note": "", "source": "onboarding", "measured_on": null, - "date": "2026-09-30" + "date": "2026-09-30", + "raised_by_hp": [ + { + "field": "typical", + "was": 321, + "now": 351 + }, + { + "field": "peak", + "was": 550, + "now": 578 + } + ] }, { "slug": "navidrome", @@ -477,13 +588,25 @@ { "slug": "paperless-ngx", "display_name": "Paperless-ngx", - "mem_typical_mb": 568, - "mem_peak_mb": 659, + "mem_typical_mb": 645, + "mem_peak_mb": 755, "cpu_class": "medium", "cpu_note": "only while it reads new scanned documents (text recognition, about 4 pages a minute)", "source": "telemetry", "measured_on": "demo-hp", - "date": "2026-10-13" + "date": "2026-10-13", + "raised_by_hp": [ + { + "field": "typical", + "was": 568, + "now": 645 + }, + { + "field": "peak", + "was": 659, + "now": 755 + } + ] }, { "slug": "papra", @@ -523,12 +646,19 @@ "slug": "privatebin", "display_name": "PrivateBin", "mem_typical_mb": 40, - "mem_peak_mb": 59, + "mem_peak_mb": 60, "cpu_class": "light", "cpu_note": "", "source": "telemetry", "measured_on": "demo-hp", - "date": "2026-10-13" + "date": "2026-10-13", + "raised_by_hp": [ + { + "field": "peak", + "was": 59, + "now": 60 + } + ] }, { "slug": "qbittorrent", @@ -632,13 +762,20 @@ { "slug": "sparkyfitness", "display_name": "SparkyFitness", - "mem_typical_mb": 305, + "mem_typical_mb": 316, "mem_peak_mb": 664, "cpu_class": "light", "cpu_note": "", "source": "onboarding", "measured_on": null, - "date": "2026-10-01" + "date": "2026-10-01", + "raised_by_hp": [ + { + "field": "typical", + "was": 305, + "now": 316 + } + ] }, { "slug": "tandoor", @@ -676,13 +813,20 @@ { "slug": "uptime-kuma", "display_name": "Uptime Kuma", - "mem_typical_mb": 103, + "mem_typical_mb": 118, "mem_peak_mb": 227, "cpu_class": "light", "cpu_note": "", "source": "onboarding", "measured_on": null, - "date": "2026-09-30" + "date": "2026-09-30", + "raised_by_hp": [ + { + "field": "typical", + "was": 103, + "now": 118 + } + ] }, { "slug": "vaultwarden", @@ -732,13 +876,20 @@ { "slug": "wishlist", "display_name": "Wishlist", - "mem_typical_mb": 115, + "mem_typical_mb": 118, "mem_peak_mb": 184, "cpu_class": "light", "cpu_note": "", "source": "onboarding", "measured_on": null, - "date": "2026-09-23" + "date": "2026-09-23", + "raised_by_hp": [ + { + "field": "typical", + "was": 115, + "now": 118 + } + ] }, { "slug": "zipline", diff --git a/scripts/test_build_sizing_web.py b/scripts/test_build_sizing_web.py index 18853723..fcccb95a 100644 --- a/scripts/test_build_sizing_web.py +++ b/scripts/test_build_sizing_web.py @@ -107,9 +107,9 @@ class SizingWeb(unittest.TestCase): W, T, N = "well", "tight", "no" cases = { "household": (HOUSEHOLD, [N, T, W, W, W, W, W], 16, 12), - "household without immich": ([s for s in HOUSEHOLD if s != "immich"], [W, W, W, W, W, W, W], 8, None), + "household without immich": ([s for s in HOUSEHOLD if s != "immich"], [T, W, W, W, W, W, W], 12, 8), # 2026-10-14 HP raise: 2,731 x 1.5 = 4,096.5 > 4,096 "immich alone": (["immich"], [T, W, W, W, W, W, W], 12, 8), - "all 62": (self.all, [N, N, N, N, T, W, W], 48, 32), # 24 GB: guest 19,868 < peak 21,783 + "all 62": (self.all, [N, N, N, N, T, W, W], 48, 32), # 24 GB: guest 19,868 < peak 22,333 "nothing": ([], [W] * 7, 8, None), } for name, (sel, want, rec, tight) in cases.items(): @@ -138,9 +138,9 @@ class SizingWeb(unittest.TestCase): self.assertAlmostEqual(sum(mb for _, mb in segs), well * 1024, delta=1, msg=name) self.assertGreaterEqual(dict(segs)["base"], 0, name + ": base system negative") self.assertGreaterEqual(dict(segs)["spare"], 0, name + ": spare negative") - # the household preset, by hand: peak 5,515 MiB; the bar holds 5,515 * 1.5 = 8,272.5 in the guest + # the household preset, by hand: peak 6,021 MiB; the bar holds 6,021 * 1.5 = 9,031.5 in the guest well, segs = segments(self.d, HOUSEHOLD) - self.assertAlmostEqual(dict(segs)["spare"], 5515 * 0.5, delta=1) + self.assertAlmostEqual(dict(segs)["spare"], 6021 * 0.5, delta=1) self.assertAlmostEqual(dict(segs)["base"], 4708, delta=1) # 4,096 for Proxmox + 612 MemTotal shortfall def test_bar_never_below_the_smallest_named_box(self): @@ -160,7 +160,7 @@ class SizingWeb(unittest.TestCase): def test_sentence_base_is_the_drawn_box_base(self): # the explaining sentence's „kb. {base} GB a gép alaprendszeréé” is the base part of the box the BAR draws, - # from the same rule: 4.0 GB when the bar is an 8 GB box, 4.6 GB for the household preset (a 12.7 GB bar) + # from the same rule: 4.0 GB when the bar is an 8 GB box, 4.6 GB for the household preset (a 13.4 GB bar) for name, sel, want in (("files and passwords", ["nextcloud", "vaultwarden"], "4.0"), ("household", HOUSEHOLD, "4.6")): _, segs = segments(self.d, sel) diff --git a/website/CHANGELOG.md b/website/CHANGELOG.md index f87a4077..149c09d3 100644 --- a/website/CHANGELOG.md +++ b/website/CHANGELOG.md @@ -1,4 +1,12 @@ -## 2026-10-14 — FAQ: the power-cut answer says who sets the BIOS; a new answer on turning the machine off (R-1003, R-1000) +## 2026-10-14 — „Milyen gép kell?": the figures raised with the HP check (R-1009, operator ruling A) + +- `assets/sizing-data.json` rebuilt from `sizing.json`, now with the second machine's figures (HP t740, 14 October): 23 + figures raised, none lowered (Immich peak 3,061 → 3,290 MB; Jellyfin, Home Assistant, Paperless-ngx, Grimmory and 18 small + ones). One answer is stricter: the household set without Immich on 8 GB now reads „fits, but tight" (0.5 MB over the + fits-well line). The presets keep their verdicts. Data `?v=4`. +- The lede, the meta description and the method note name both machines (N100 and HP t740, 13–14 October 2026). + +## 2026-10-14 — FAQ: the power-cut answer says who sets the BIOS; a new answer on turning the machine off (R-1003, R-1000) - „Mi történik, ha elmegy az áram?” / „What happens if the power goes off?”: the operator's text of 2026-10-14 — I set the BIOS when I install the machine, and help a household that installs Felhom itself; tested with real power cuts (8 of 8 diff --git a/website/assets/sizing-data.json b/website/assets/sizing-data.json index f94c1591..fa69bd7f 100644 --- a/website/assets/sizing-data.json +++ b/website/assets/sizing-data.json @@ -5,7 +5,7 @@ "source": { "path": "documentation/audits/sizing-2026-10-13/sizing.json", "commit": "c885b5ac", - "sha256": "bb9aba3e89be436cf665b956eee43e6b49f646e7f9fe40dd5875829ebed15375" + "sha256": "56e12018217fe3e05c096569321b106a73fc0a9f762480745b32340ecdbb458e" }, "platform_mb": 470, "headroom": 1.5, @@ -146,8 +146,8 @@ "tagline_hu": "PDF eszköztár (adatvédelem)", "tagline_en": "PDF toolkit (privacy first)", "category": "fajlkezeles", - "typical_mb": 5, - "peak_mb": 10, + "typical_mb": 10, + "peak_mb": 15, "cpu_class": "light", "cpu_note_hu": "", "cpu_note_en": "", @@ -174,8 +174,8 @@ "tagline_hu": "Google Photos alternatíva", "tagline_en": "A Google Photos alternative", "category": "media", - "typical_mb": 1356, - "peak_mb": 3061, + "typical_mb": 1557, + "peak_mb": 3290, "cpu_class": "heavy-in-bursts", "cpu_note_hu": "csak amíg új fotókat dolgoz fel (bélyegképek, arcok, keresés): 200 fotó kb. 6 perc", "cpu_note_en": "only while it processes new photos (thumbnails, faces, search): 200 photos took about 6 minutes", @@ -189,7 +189,7 @@ "tagline_en": "Media server (Netflix)", "category": "media", "typical_mb": 191, - "peak_mb": 373, + "peak_mb": 448, "cpu_class": "heavy-in-bursts", "cpu_note_hu": "csak amíg egy filmet átalakít egy olyan eszköznek, amely azt nem tudja lejátszani", "cpu_note_en": "only while it converts a film for a device that cannot play it", @@ -356,7 +356,7 @@ "tagline_hu": "E-könyvtár böngészőben", "tagline_en": "E-book library in the browser", "category": "media", - "typical_mb": 346, + "typical_mb": 451, "peak_mb": 1095, "cpu_class": "medium", "cpu_note_hu": "csak az első indításkor", @@ -426,7 +426,7 @@ "tagline_hu": "Minecraft szerver kezelő", "tagline_en": "Minecraft server manager", "category": "media", - "typical_mb": 78, + "typical_mb": 79, "peak_mb": 84, "cpu_class": "light", "cpu_note_hu": "", @@ -440,8 +440,8 @@ "tagline_hu": "Okos otthon központ", "tagline_en": "Smart home hub", "category": "otthon", - "typical_mb": 318, - "peak_mb": 328, + "typical_mb": 352, + "peak_mb": 434, "cpu_class": "light", "cpu_note_hu": "", "cpu_note_en": "", @@ -454,8 +454,8 @@ "tagline_hu": "Workflow automatizálás", "tagline_en": "Workflow automation", "category": "otthon", - "typical_mb": 321, - "peak_mb": 550, + "typical_mb": 351, + "peak_mb": 578, "cpu_class": "light", "cpu_note_hu": "", "cpu_note_en": "", @@ -510,7 +510,7 @@ "tagline_hu": "Családi kívánságlista", "tagline_en": "Family wish list", "category": "otthon", - "typical_mb": 115, + "typical_mb": 118, "peak_mb": 184, "cpu_class": "light", "cpu_note_hu": "", @@ -552,7 +552,7 @@ "tagline_hu": "Táplálkozási napló", "tagline_en": "Food diary", "category": "otthon", - "typical_mb": 305, + "typical_mb": 316, "peak_mb": 664, "cpu_class": "light", "cpu_note_hu": "", @@ -636,7 +636,7 @@ "tagline_hu": "Autónyilvántartás", "tagline_en": "Vehicle records", "category": "otthon", - "typical_mb": 53, + "typical_mb": 56, "peak_mb": 113, "cpu_class": "light", "cpu_note_hu": "", @@ -650,7 +650,7 @@ "tagline_hu": "Háztartásvezetés", "tagline_en": "Household management", "category": "otthon", - "typical_mb": 30, + "typical_mb": 33, "peak_mb": 114, "cpu_class": "light", "cpu_note_hu": "", @@ -693,7 +693,7 @@ "tagline_en": "Time tracking", "category": "produktivitas", "typical_mb": 163, - "peak_mb": 240, + "peak_mb": 250, "cpu_class": "light", "cpu_note_hu": "", "cpu_note_en": "", @@ -748,8 +748,8 @@ "tagline_hu": "Digitális irattár", "tagline_en": "A digital filing cabinet", "category": "produktivitas", - "typical_mb": 568, - "peak_mb": 659, + "typical_mb": 645, + "peak_mb": 755, "cpu_class": "medium", "cpu_note_hu": "csak amíg új beszkennelt dokumentumokat olvas be (szövegfelismerés, kb. 4 oldal percenként)", "cpu_note_en": "only while it reads new scanned documents (text recognition, about 4 pages a minute)", @@ -804,7 +804,7 @@ "tagline_hu": "Kereshető saját archívum", "tagline_en": "Your own searchable archive", "category": "produktivitas", - "typical_mb": 361, + "typical_mb": 372, "peak_mb": 1050, "cpu_class": "light", "cpu_note_hu": "", @@ -819,7 +819,7 @@ "tagline_en": "Encrypted note sharing", "category": "produktivitas", "typical_mb": 40, - "peak_mb": 59, + "peak_mb": 60, "cpu_class": "light", "cpu_note_hu": "", "cpu_note_en": "", @@ -874,7 +874,7 @@ "tagline_hu": "Szolgáltatás monitoring", "tagline_en": "Service monitoring", "category": "rendszer", - "typical_mb": 103, + "typical_mb": 118, "peak_mb": 227, "cpu_class": "light", "cpu_note_hu": "", @@ -888,7 +888,7 @@ "tagline_hu": "Adatvizualizáció", "tagline_en": "Data visualisation", "category": "rendszer", - "typical_mb": 220, + "typical_mb": 269, "peak_mb": 435, "cpu_class": "light", "cpu_note_hu": "", @@ -916,7 +916,7 @@ "tagline_hu": "Git szerver (GitHub)", "tagline_en": "Git server (GitHub)", "category": "rendszer", - "typical_mb": 74, + "typical_mb": 76, "peak_mb": 136, "cpu_class": "light", "cpu_note_hu": "", diff --git a/website/en/sizing.html b/website/en/sizing.html index e16969d1..9750c74f 100644 --- a/website/en/sizing.html +++ b/website/en/sizing.html @@ -5,7 +5,7 @@ Which machine do I need? — an estimate for the apps you pick | Felhom.eu - + @@ -70,10 +70,10 @@ -

Tick what you would run on the box, and the page shows how much machine memory it needs. This is an estimate from my own measurements on an N100 mini PC (13 October 2026), not a promise.

+

Tick what you would run on the box, and the page shows how much machine memory it needs. This is an estimate from my own measurements on two machines, an N100 mini PC and an HP t740 (13–14 October 2026), not a promise.

-