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
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:
- „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".
- 27 s after „Alkalmaz" the old address stopped answering; the page stayed on „Kérjük várjon…" for good.
- 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.
- OMV's own screen text kept showing the old address both times.
- 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-simdestroyed with all its disks;/mnt/hdd_1/images/9310gone.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-68d1d8remain — 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-idname will readnvme-Samsung_SSD_980…ornvme-eui.…, not the QEMU name. - Jellyfin on the one disk through the dashboard's
sys_driveroute (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).