Files
felhom.eu/documentation/audits/omv-vm-2026-10-15
admin 340804f9af
gates / gates (push) Successful in 6m53s
Felhom in a VM on OpenMediaVault 8 (KVM plugin): tried on an exact copy of the pilot's box; Hungarian guide; R-1068..R-1073; capability A23
On demo-hp: OMV 8.5.11-1 + openmediavault-kvm 8.3.4 in a VM, every OMV step done in its web pages
(headless browser). Public ISO 1.29.0 on the whole passed NVMe, BIOS firmware, bound and claimed as
throwaway customer Tester4, Vaultwarden + Jellyfin, local backups, two OMV restarts (clean guest
shutdown, AutoStart back in 1 min 52 s). Guest memory 7,863 MiB of 12 GiB.
Traps for the guide: the bridge changes OMV's IP; the plugin boots the disk first (wipe the NVMe);
the host-disk list offers OMV's own disk. Rows: one-disk Jellyfin refusal (R-1068), virtio disk not
formattable (R-1069), tunnel-less OS-update alarm (R-1070), NAS films for Jellyfin (R-1071, operator),
mixed formal/informal backup text (R-1072), no SMART in a VM (R-1073, operator). Register 157 -> 163.
Everything removed; Tester 1 back ONLINE. Customer Tester4 waits for the operator's delete.

Claude-Session: https://claude.ai/code/session_012qRErfCoiTkvDK9N5XHbzb
2026-10-15 19:24:59 +02:00
..

Felhom in a virtual machine on OpenMediaVault 8 (KVM plugin) — a copy of the pilot tester's box, 2026-10-15

Why: the first outside tester runs OMV 8 on an i3-8100T mini PC and wants Felhom in a VM on his NVMe, without wiping OMV. Nobody had tried Felhom under OMV's KVM plugin. This run built a copy of his machine on demo-hp (Tier 0), did every step through the OMV web interface (a headless Chromium in a throwaway LXC on demo-hp drove the pages; the screenshots are in screens/), installed Felhom from the public ISO, bound and claimed it as the throwaway customer Tester4 (tester4.test, made by the operator in the browser — CC's token cannot make customers since decision 252), installed two apps, made a backup, restarted OMV twice, and removed everything. The guide that came out of it: documentation/pilot/GUIDE-omv-kvm-hu.md.

Times are UTC. „Seen in the web page" = clicked in OMV's own pages by the headless browser; „not in the web page" = done with omv-rpc, virsh or the Felhom dashboard's own API calls (the endpoints the dashboard's buttons call).

The copy (Part A)

Item Ferenc's box The copy (VM 9310 omv-sim on demo-hp)
OMV 8.5.11-1 (Synchrony) ISO 8.3.1 (newest ISO on SourceForge, sha256 matched) → omv-upgrade → 8.5.11-1
Kernel 7.2.6+deb13-amd64 the same — the 8.5 upgrade installs it (A4-omv-installed.txt)
CPU i3-8100T, 4 cores 4 vCPU cpu=host on a Ryzen V1756B; nested KVM was already on (kvm_amd nested=1, untouched)
Memory 16 GB (planned) 16 GiB
OMV system disk Samsung 128 GB SATA SSD 32 GB virtual disk
Felhom's disk Samsung 980 500 GB NVMe with a films partition 200 GB thin file shown as a real NVMe device (-device nvme, serial S64DNF0R980500)
Old HDD Toshiba 500 GB 2.5" 20 GB virtual disk (added later, for the second-disk test)
omv-extras / KVM plugin listed 8.3.4 omv-extras 8.0.3, openmediavault-kvm 8.3.4 (same)
„Films" nvme0n1p1 ext4 on nvme0n1p1, shared folder Filmek, SMB share, 3 × 300 MB files

Tester 1 (VM 341) was stopped at 14:48 to free memory (15.6 → 23.4 GiB available); VM 300 did not exist. A1-free-memory.txt.

What happened (Part B)

Step Result Minutes Evidence
OMV install from ISO OK 6 screens omv-17/18/22
Upgrade to 8.5.11-1 + omv-extras OK 3 + 0.3 A4-omv-installed.txt
KVM plugin (Rendszer → Bővítmények → kvm → Telepítés, „Megerősítés" tick) OK; menu „Szolgáltatások → KVM" appears; the plugin pages are English 1.5 w05, w06, w08, w10
Pool (KVM → Pools → Add new pool, Directory, /srv/felhom-iso, then Állapot → Indítás) OK; the pool is created stopped and must be started 1 w12, w13, w15
Felhom ISO by URL with the sha256 (KVM → ISOs → Download ISO) OK, „Checksum OK" 1.5 w20, w22
Network bridge (Hálózat → Interfészek) Works, but OMV's address changed and the open page hung — see below — B1-*
Free the NVMe (SMB share → shared folder → Fájlrendszerek „Leválasztás" → Alkalmaz) OK 2 w46
VM (KVM → VMs → Add new VM: 4 CPU, 12 GiB, 1 GB throw-away disk, Felhom ISO, Modell bridge, Híd br0) OK. Defaults: CPU host-passthrough, OS Debian 13, firmware BIOS (UEFI box empty), VNC+SPICE 2 w52–w55, B2-felhom-vm-libvirt.xml.txt
Whole NVMe to the VM (Hard disk → Add host disk → /dev/disk/by-id/nvme-…), throw-away disk removed, AutoStart → Engedélyezés OK. The host-disk list also offers OMV's own system disk 2 w57–w63
First start HUNG at „Booting from Hard Disk…" — the VM boots the disk first, and the old films partition table has no boot code — f-02-boot.png
Wipe the NVMe (Tárolás → Lemezek → Törlés → Gyors), start again Felhom installer starts. BIOS firmware works; UEFI was not needed and not tried 1 w67, w68, f-03-boot2.png
Felhom installer 1.29.0 target /dev/vda 200 GB; it refuses the prefilled e-mail and the default hostname (known, the volunteer guide covers both); VM got 192.168.0.129 from the router through the bridge Install → pairing screen < 4½ f-05…f-20, B3-timeline-raw.txt
Bind (mailed link + pairing code + owner phrase) „Sikeres összekötés"; host ONLINE 16:12:45; controller 0.313.0 → 0.314.0 by itself at 16:14:21 1.5 to ONLINE, 3 to the controller B3-bind.txt, C-hub-events-Tester4.txt
Claim (setup code from the mail) 302 → / — B3-claim.txt
Vaultwarden installed and running < 1 B4-deploy.txt
Jellyfin, one disk refused: „a(z) "Médiatár útvonal" (HDD_PATH) mező kitöltése kötelező" — no data drive registered (R-1068) — B4-deploy.txt
Second disk via the plugin, bus virtio (default) Felhom refused to format it: „device has no durable id" (R-1069). Bus sata works — B4c-second-disk-format.txt
Second disk, bus sata, attached as „Filmlemez" OK; Jellyfin then installed and ran < 1 B4c-…, B4-deploy.txt

Memory. The VM has 12 GiB; Proxmox inside it sees 11,960 MiB (memory_total_bytes 12,540,755,968); the installer rule (total − 4 GiB) gave the Felhom guest 7,863 MiB. The sizing estimator (/gepigeny, SIZING.md §5) has no 12 GB size; by its own rule (fits well = peak × 1.5 ≤ guest) a 7.7 GB guest gives: the household set (peak 5.9 GB) fits, but tight; the household set without Immich fits well; Immich alone fits well.

Disk layout on the passed 200 GB disk (the box's own report): host root local 62.8 GB, thin pool local-lvm 121.3 GB, the rest swap and boot. The guest's system data volume is mounted at /mnt/sys_drive (offered by the dashboard as an attachable store — see R-1068).

Backups on a one-disk box (B4-backup-pages.txt, B4-backup-run.txt):

Tier Works? What the household sees
Whole-guest, local (local on the same disk) yes — first archive 16:19, 645 MB „A rendszermentés jelenleg ugyanazon a lemezen van, mint a rendszer — így hibás fájlok ellen véd, lemezhiba ellen nem. Csatlakoztass egy második meghajtót a teljes védelemhez."
Per-app copy 1 (local) yes — „Mentés most" ran in 4 s „1. mentés helyi"
Per-app copy 2 (another drive) cannot exist „Csak egy másolat készül (nincs második meghajtó) — a 3-2-1 mentéshez csatlakoztasson egy második meghajtót vagy offsite tárolót." and per app „Nincs 2. (off-drive) másolat"
Off-site (restic) not switched on for this test customer „Felhom offsite tárhely — igényelhető szolgáltatás."
PBS-DR not provisioned for this customer hub event backup_tier_skipped (warning, operator)

The two sentences mix „csatlakoztasson" (formal) and „Csatlakoztass" (informal) on one page (R-1072).

The bridge (B1 — the trap for Ferenc)

B1-bridge-timeline.txt has the minute-by-minute record. In short:

  1. „Létrehozás → Híd" offers no network card while the card has its own setting: the card's setting must be deleted first (not applied), then the bridge made, then one „Alkalmaz".
  2. 27 s after „Alkalmaz" the old address stopped answering; the page stayed on „Kérjük várjon…" for good.
  3. The bridge took a new hardware address and a new IP (192.168.0.119 → .121). Copying the card's hardware address into the bridge's „MAC cím" did not bring the old IP back (→ .123): systemd-networkd asks the router with its own client ID.
  4. OMV's own screen text kept showing the old address both times.
  5. What found it: http://omv-sim.local (OMV's avahi answers) — or the router's device list.

The restarts (B5)

Restart Felhom VM before OMV page back Felhom dashboard back How the VM stopped Evidence
1 — OMV power menu → Újraindítás switched off 26 s 63 s (AutoStart) — B5-omv-restart-1.txt
2 — the same running, Vaultwarden + Jellyfin 72 s 1 min 52 s clean shutdown, ~20 s: the plugin sets ON_SHUTDOWN=shutdown, ON_BOOT=ignore (the AutoStart flag starts it) B5-omv-restart-2.txt

The household's „turn off" from the dashboard refuses for 10 minutes after a start („A gép most indult el. 10 perc múlva kapcsolhatod ki.") — by design, noted for the guide. Every dashboard power-off was recorded by the hub as deliberate (host_deliberate_off), so no alarm mail.

An OMV share for Jellyfin (B6) — No

Steps tried once: openmediavault-sharerootfs, a shared folder TesztFilmek with one file, SMB share, an OMV user felhom. Felhom „Hálózati tárhely" (/api/storage/netstorage/add, the page's call):

  • without a user name → refused „SMB-hez felhasználónév és jelszó szükséges";
  • with a user, read-only share → refused „A megosztás csatolható, de az alkalmazások nem tudnak rá írni…";
  • writable share → added and verified, mounted at /mnt/felhom-drives/omv-filmek.

The household's „Újraindítás most" for media apps then bound only the local drive into Jellyfin (per-drive binds 1 [/mnt/felhom-drives/filmlemez/userdata/media]). A network share is browse-only by design (R-108, media_library.go skips Kind == "network"). Filed as R-1071 for the operator's decision. B6-omv-share.txt.

Things this run caused, recorded so nobody reads them as product faults

  • storage_disconnected (error) for „Adatlemez" at 16:51 and 17:02: my own mistake — I first used the low-level disk calls (/api/disks/format + /api/disks/assign + register-mounted) instead of the dashboard's „Csatlakoztatás" (/api/storage/attach), so the drive was registered but not bound into the guest. Removed with „Végleges leszerelés"; the household path worked at once.
  • Two dashboard power-offs and a third at the end; all deliberate.

Hub-side finding

os_update_health_failed (error) at 16:30: „NOT healthy after 106 package(s) were installed (the tunnel is unknown)" — on a box that never had a tunnel. Filed as R-1070. C-hub-events-Tester4.txt.

Clean-up (Part D) — three layers

  • Machine: Felhom VM switched off by the household path (17:15), then omv-sim destroyed with all its disks; /mnt/hdd_1/images/9310 gone. D1-poweroff.txt, D2-teardown-demo-hp.txt.
  • Host (demo-hp): browser LXC 9311 destroyed; the OMV ISO deleted; nested setting untouched (it was on); Tester 1 started 17:16 and ONLINE on the hub at 17:16:54, its guest 9201 running (read over SSH too).
  • Hub: customer Tester4 and its host record Tester4-68d1d8 remain — deleting them is the operator's browser-only act. No tunnel or DNS name was made (placeholder domain). Nothing ran on ep0.

Not checked

  • UEFI firmware (BIOS worked, so UEFI was not tried).
  • A real Samsung 980: its /dev/disk/by-id name will read nvme-Samsung_SSD_980… or nvme-eui.…, not the QEMU name.
  • Jellyfin on the one disk through the dashboard's sys_drive route (R-1068) — seen in the code and in the dashboard's candidate list, not pressed.
  • The noVNC console of the plugin (the installer was driven with virsh send-key; Ferenc will use the console page).