Files
felhom.eu/documentation/audits/sizing-2026-10-13/evidence/telemetry-30d.json
T
admin c885b5acf4 Audit: what a Felhom box needs — floor, 64 apps' memory and CPU, power (N100 bench); R-993..R-995; R-231 due check read green
Measured on demo-felhom (N100, 16 GB): 61 apps deployed and removed through the
product, sampled every 5 s; heavy apps with one real action (Immich 200 photos,
Jellyfin transcode, Paperless OCR, Nextcloud 500 MB, ...). sizing.json for the
estimator (tools/build_sizing.py), SIZING.md with the proposed minimum machine,
METHOD.md. Power is RAPL CPU-package only (no meter). R-993 asks the operator to
approve the minimum machine; R-994 lists catalog limits/requests that are too low;
R-995 records leftover unnamed volumes after removal. R-231's dated check measured:
dooplex-backup.service success, journal green.
2026-10-13 13:23:51 +02:00

642 lines
12 KiB
JSON

[
{
"app": "actualbudget",
"customer": "demo-hp",
"reports": 2,
"days": 1,
"first": "2026-09-13",
"last": "2026-09-13",
"mem_avg": 47,
"mem_p95": 48,
"mem_max": 48,
"cpu_avg_dockerpct": 0.0,
"cpu_p95_15min": 0.0,
"cpu_max_15min": 0.0,
"est": "50M",
"limit": "256M"
},
{
"app": "actualbudget",
"customer": "tester-1",
"reports": 52,
"days": 2,
"first": "2026-09-29",
"last": "2026-09-30",
"mem_avg": 87,
"mem_p95": 167,
"mem_max": 167,
"cpu_avg_dockerpct": 0.72,
"cpu_p95_15min": 6.2,
"cpu_max_15min": 9.3,
"est": "50M",
"limit": "256M"
},
{
"app": "adventurelog",
"customer": "demo-hp",
"reports": 3024,
"days": 31,
"first": "2026-09-13",
"last": "2026-10-13",
"mem_avg": 361,
"mem_p95": 464,
"mem_max": 501,
"cpu_avg_dockerpct": 3.05,
"cpu_p95_15min": 6.9,
"cpu_max_15min": 125.4,
"est": "100M",
"limit": "896M"
},
{
"app": "adventurelog",
"customer": "tester-1",
"reports": 44,
"days": 4,
"first": "2026-09-14",
"last": "2026-09-17",
"mem_avg": 327,
"mem_p95": 491,
"mem_max": 529,
"cpu_avg_dockerpct": 13.1,
"cpu_p95_15min": 83.7,
"cpu_max_15min": 83.7,
"est": "100M",
"limit": "384M"
},
{
"app": "bentopdf",
"customer": "demo-hp",
"reports": 3138,
"days": 31,
"first": "2026-09-13",
"last": "2026-10-13",
"mem_avg": 5,
"mem_p95": 10,
"mem_max": 16,
"cpu_avg_dockerpct": 0.13,
"cpu_p95_15min": 1.2,
"cpu_max_15min": 3.0,
"est": "100M",
"limit": "384M"
},
{
"app": "bookstack",
"customer": "demo-hp",
"reports": 3138,
"days": 31,
"first": "2026-09-13",
"last": "2026-10-13",
"mem_avg": 159,
"mem_p95": 225,
"mem_max": 233,
"cpu_avg_dockerpct": 0.98,
"cpu_p95_15min": 3.2,
"cpu_max_15min": 43.2,
"est": "150M",
"limit": "768M"
},
{
"app": "bookstack",
"customer": "tester-1",
"reports": 966,
"days": 16,
"first": "2026-09-14",
"last": "2026-10-13",
"mem_avg": 194,
"mem_p95": 286,
"mem_max": 299,
"cpu_avg_dockerpct": 1.53,
"cpu_p95_15min": 4.6,
"cpu_max_15min": 85.1,
"est": "150M",
"limit": "768M"
},
{
"app": "calibre-web",
"customer": "demo-hp",
"reports": 3134,
"days": 31,
"first": "2026-09-13",
"last": "2026-10-13",
"mem_avg": 191,
"mem_p95": 361,
"mem_max": 391,
"cpu_avg_dockerpct": 0.36,
"cpu_p95_15min": 2.3,
"cpu_max_15min": 74.1,
"est": "200M",
"limit": "768M"
},
{
"app": "docmost",
"customer": "demo-hp",
"reports": 3137,
"days": 31,
"first": "2026-09-13",
"last": "2026-10-13",
"mem_avg": 415,
"mem_p95": 495,
"mem_max": 545,
"cpu_avg_dockerpct": 2.16,
"cpu_p95_15min": 4.8,
"cpu_max_15min": 67.1,
"est": "200M",
"limit": "896M"
},
{
"app": "docmost",
"customer": "tester-1",
"reports": 25,
"days": 2,
"first": "2026-09-14",
"last": "2026-09-15",
"mem_avg": 353,
"mem_p95": 420,
"mem_max": 420,
"cpu_avg_dockerpct": 3.2,
"cpu_p95_15min": 13.0,
"cpu_max_15min": 17.7,
"est": "200M",
"limit": "768M"
},
{
"app": "felhom-controller",
"customer": "Tester-2",
"reports": 7,
"days": 1,
"first": "2026-10-04",
"last": "2026-10-04",
"mem_avg": 104,
"mem_p95": 137,
"mem_max": 137,
"cpu_avg_dockerpct": 17.5,
"cpu_p95_15min": 69.0,
"cpu_max_15min": 69.0,
"est": "",
"limit": ""
},
{
"app": "felhom-controller",
"customer": "demo-felhom",
"reports": 3033,
"days": 31,
"first": "2026-09-13",
"last": "2026-10-13",
"mem_avg": 43,
"mem_p95": 122,
"mem_max": 156,
"cpu_avg_dockerpct": 2.35,
"cpu_p95_15min": 7.3,
"cpu_max_15min": 62.3,
"est": "",
"limit": ""
},
{
"app": "felhom-controller",
"customer": "demo-hp",
"reports": 3116,
"days": 31,
"first": "2026-09-13",
"last": "2026-10-13",
"mem_avg": 79,
"mem_p95": 149,
"mem_max": 1340,
"cpu_avg_dockerpct": 6.25,
"cpu_p95_15min": 19.0,
"cpu_max_15min": 83.1,
"est": "",
"limit": ""
},
{
"app": "felhom-controller",
"customer": "tester-1",
"reports": 1021,
"days": 16,
"first": "2026-09-14",
"last": "2026-10-13",
"mem_avg": 73,
"mem_p95": 152,
"mem_max": 345,
"cpu_avg_dockerpct": 5.13,
"cpu_p95_15min": 15.7,
"cpu_max_15min": 72.2,
"est": "",
"limit": ""
},
{
"app": "glance",
"customer": "demo-hp",
"reports": 3,
"days": 1,
"first": "2026-09-23",
"last": "2026-09-23",
"mem_avg": 6,
"mem_p95": 7,
"mem_max": 7,
"cpu_avg_dockerpct": 0.0,
"cpu_p95_15min": 0.0,
"cpu_max_15min": 0.0,
"est": "20M",
"limit": "128M"
},
{
"app": "gokapi",
"customer": "demo-hp",
"reports": 4,
"days": 1,
"first": "2026-09-13",
"last": "2026-09-13",
"mem_avg": 5,
"mem_p95": 7,
"mem_max": 7,
"cpu_avg_dockerpct": 0.26,
"cpu_p95_15min": 1.0,
"cpu_max_15min": 1.0,
"est": "30M",
"limit": "128M"
},
{
"app": "gokapi",
"customer": "tester-1",
"reports": 59,
"days": 4,
"first": "2026-09-14",
"last": "2026-09-17",
"mem_avg": 13,
"mem_p95": 77,
"mem_max": 77,
"cpu_avg_dockerpct": 8.63,
"cpu_p95_15min": 49.4,
"cpu_max_15min": 98.7,
"est": "30M",
"limit": "128M"
},
{
"app": "grimmory",
"customer": "demo-hp",
"reports": 3,
"days": 1,
"first": "2026-10-02",
"last": "2026-10-02",
"mem_avg": 459,
"mem_p95": 580,
"mem_max": 580,
"cpu_avg_dockerpct": 12.24,
"cpu_p95_15min": 22.9,
"cpu_max_15min": 22.9,
"est": "600M",
"limit": "1408M"
},
{
"app": "homebox",
"customer": "demo-hp",
"reports": 1,
"days": 1,
"first": "2026-09-17",
"last": "2026-09-17",
"mem_avg": 17,
"mem_p95": 19,
"mem_max": 19,
"cpu_avg_dockerpct": 0.25,
"cpu_p95_15min": 0.2,
"cpu_max_15min": 0.2,
"est": "50M",
"limit": "256M"
},
{
"app": "homebox",
"customer": "tester-1",
"reports": 38,
"days": 3,
"first": "2026-09-15",
"last": "2026-09-17",
"mem_avg": 42,
"mem_p95": 118,
"mem_max": 120,
"cpu_avg_dockerpct": 0.35,
"cpu_p95_15min": 1.3,
"cpu_max_15min": 2.6,
"est": "50M",
"limit": "256M"
},
{
"app": "immich",
"customer": "tester-1",
"reports": 38,
"days": 4,
"first": "2026-09-14",
"last": "2026-09-17",
"mem_avg": 1036,
"mem_p95": 2873,
"mem_max": 2879,
"cpu_avg_dockerpct": 36.84,
"cpu_p95_15min": 183.7,
"cpu_max_15min": 189.5,
"est": "2048M",
"limit": "4096M"
},
{
"app": "jellyfin",
"customer": "tester-1",
"reports": 42,
"days": 4,
"first": "2026-09-14",
"last": "2026-09-17",
"mem_avg": 166,
"mem_p95": 405,
"mem_max": 472,
"cpu_avg_dockerpct": 2.28,
"cpu_p95_15min": 12.2,
"cpu_max_15min": 22.1,
"est": "512M",
"limit": "2048M"
},
{
"app": "kimai",
"customer": "demo-hp",
"reports": 3138,
"days": 31,
"first": "2026-09-13",
"last": "2026-10-13",
"mem_avg": 163,
"mem_p95": 240,
"mem_max": 437,
"cpu_avg_dockerpct": 1.05,
"cpu_p95_15min": 3.5,
"cpu_max_15min": 69.9,
"est": "100M",
"limit": "640M"
},
{
"app": "mealie",
"customer": "tester-1",
"reports": 49,
"days": 4,
"first": "2026-09-14",
"last": "2026-09-17",
"mem_avg": 266,
"mem_p95": 431,
"mem_max": 431,
"cpu_avg_dockerpct": 7.05,
"cpu_p95_15min": 40.8,
"cpu_max_15min": 81.4,
"est": "200M",
"limit": "1000M"
},
{
"app": "metube",
"customer": "demo-hp",
"reports": 1,
"days": 1,
"first": "2026-10-02",
"last": "2026-10-02",
"mem_avg": 87,
"mem_p95": 87,
"mem_max": 87,
"cpu_avg_dockerpct": 0.02,
"cpu_p95_15min": 0.0,
"cpu_max_15min": 0.0,
"est": "128M",
"limit": "768M"
},
{
"app": "nextcloud",
"customer": "demo-hp",
"reports": 28,
"days": 2,
"first": "2026-09-13",
"last": "2026-09-28",
"mem_avg": 283,
"mem_p95": 321,
"mem_max": 337,
"cpu_avg_dockerpct": 7.3,
"cpu_p95_15min": 68.2,
"cpu_max_15min": 84.4,
"est": "256M",
"limit": "1024M"
},
{
"app": "nextcloud",
"customer": "tester-1",
"reports": 64,
"days": 4,
"first": "2026-09-14",
"last": "2026-09-17",
"mem_avg": 230,
"mem_p95": 525,
"mem_max": 525,
"cpu_avg_dockerpct": 14.04,
"cpu_p95_15min": 69.6,
"cpu_max_15min": 138.4,
"est": "256M",
"limit": "1024M"
},
{
"app": "opengist",
"customer": "demo-felhom",
"reports": 3037,
"days": 31,
"first": "2026-09-13",
"last": "2026-10-13",
"mem_avg": 24,
"mem_p95": 67,
"mem_max": 73,
"cpu_avg_dockerpct": 0.09,
"cpu_p95_15min": 0.8,
"cpu_max_15min": 3.2,
"est": "30M",
"limit": "128M"
},
{
"app": "opengist",
"customer": "demo-hp",
"reports": 3138,
"days": 31,
"first": "2026-09-13",
"last": "2026-10-13",
"mem_avg": 27,
"mem_p95": 68,
"mem_max": 73,
"cpu_avg_dockerpct": 0.13,
"cpu_p95_15min": 1.4,
"cpu_max_15min": 3.3,
"est": "30M",
"limit": "128M"
},
{
"app": "paperless-ngx",
"customer": "demo-hp",
"reports": 3136,
"days": 31,
"first": "2026-09-13",
"last": "2026-10-13",
"mem_avg": 568,
"mem_p95": 659,
"mem_max": 690,
"cpu_avg_dockerpct": 2.31,
"cpu_p95_15min": 4.3,
"cpu_max_15min": 62.4,
"est": "500M",
"limit": "1664M"
},
{
"app": "paperless-ngx",
"customer": "tester-1",
"reports": 902,
"days": 14,
"first": "2026-09-14",
"last": "2026-10-13",
"mem_avg": 605,
"mem_p95": 743,
"mem_max": 809,
"cpu_avg_dockerpct": 4.93,
"cpu_p95_15min": 12.0,
"cpu_max_15min": 242.0,
"est": "500M",
"limit": "1664M"
},
{
"app": "privatebin",
"customer": "demo-hp",
"reports": 3138,
"days": 31,
"first": "2026-09-13",
"last": "2026-10-13",
"mem_avg": 40,
"mem_p95": 59,
"mem_max": 64,
"cpu_avg_dockerpct": 0.19,
"cpu_p95_15min": 1.5,
"cpu_max_15min": 3.0,
"est": "30M",
"limit": "128M"
},
{
"app": "privatebin",
"customer": "tester-1",
"reports": 927,
"days": 14,
"first": "2026-09-14",
"last": "2026-10-13",
"mem_avg": 36,
"mem_p95": 68,
"mem_max": 73,
"cpu_avg_dockerpct": 0.19,
"cpu_p95_15min": 1.5,
"cpu_max_15min": 5.9,
"est": "30M",
"limit": "128M"
},
{
"app": "romm",
"customer": "demo-hp",
"reports": 2264,
"days": 22,
"first": "2026-09-13",
"last": "2026-10-04",
"mem_avg": 528,
"mem_p95": 769,
"mem_max": 855,
"cpu_avg_dockerpct": 7.5,
"cpu_p95_15min": 9.9,
"cpu_max_15min": 460.8,
"est": "300M",
"limit": "1280M"
},
{
"app": "uptime-kuma",
"customer": "demo-hp",
"reports": 4,
"days": 1,
"first": "2026-09-13",
"last": "2026-09-13",
"mem_avg": 103,
"mem_p95": 104,
"mem_max": 104,
"cpu_avg_dockerpct": 3.03,
"cpu_p95_15min": 4.2,
"cpu_max_15min": 4.2,
"est": "50M",
"limit": "256M"
},
{
"app": "uptime-kuma",
"customer": "tester-1",
"reports": 49,
"days": 4,
"first": "2026-09-14",
"last": "2026-09-17",
"mem_avg": 109,
"mem_p95": 227,
"mem_max": 240,
"cpu_avg_dockerpct": 1.83,
"cpu_p95_15min": 4.1,
"cpu_max_15min": 20.2,
"est": "50M",
"limit": "256M"
},
{
"app": "vaultwarden",
"customer": "demo-hp",
"reports": 1,
"days": 1,
"first": "2026-09-18",
"last": "2026-09-18",
"mem_avg": 0,
"mem_p95": 0,
"mem_max": 0,
"cpu_avg_dockerpct": 0.0,
"cpu_p95_15min": 0.0,
"cpu_max_15min": 0.0,
"est": "50M",
"limit": "256M"
},
{
"app": "vaultwarden",
"customer": "tester-1",
"reports": 64,
"days": 4,
"first": "2026-09-14",
"last": "2026-09-17",
"mem_avg": 45,
"mem_p95": 99,
"mem_max": 99,
"cpu_avg_dockerpct": 0.15,
"cpu_p95_15min": 0.9,
"cpu_max_15min": 1.7,
"est": "50M",
"limit": "256M"
},
{
"app": "vikunja",
"customer": "demo-hp",
"reports": 1,
"days": 1,
"first": "2026-09-23",
"last": "2026-09-23",
"mem_avg": 15,
"mem_p95": 15,
"mem_max": 15,
"cpu_avg_dockerpct": 0.0,
"cpu_p95_15min": 0.0,
"cpu_max_15min": 0.0,
"est": "50M",
"limit": "256M"
},
{
"app": "vikunja",
"customer": "tester-1",
"reports": 52,
"days": 2,
"first": "2026-09-29",
"last": "2026-09-30",
"mem_avg": 50,
"mem_p95": 104,
"mem_max": 104,
"cpu_avg_dockerpct": 0.0,
"cpu_p95_15min": 0.0,
"cpu_max_15min": 0.0,
"est": "50M",
"limit": "256M"
}
]