Skip to Content
Self HostingRunning and Verification

Running and Verification

Operate the self-hosted VM console as a privileged component of the KVM host. Container health alone is insufficient: verify the path from browser to API to libvirt to the guest.

Startup Check

docker compose -f docker-compose.self-hosted.yml ps docker compose -f docker-compose.self-hosted.yml logs --tail=200 backend frontend virsh -c qemu:///system list --all

Then confirm the UI loads and the backend mode response reports self-hosted mode. Review its feature map rather than assuming a hosted feature is present.

End-to-End Smoke Test

Use a disposable, licensed test ISO:

  1. upload the ISO and verify its displayed size and name;
  2. create a small VM with explicit CPU, memory, disk, and network choices;
  3. start it and open the VNC console;
  4. confirm boot progress is visible and keyboard input reaches the guest;
  5. stop the VM;
  6. delete it and confirm its domain, overlays, and temporary NVRAM are cleaned;
  7. restart the backend and confirm no stale replacement launch is blocked.

Do not interpret a successful boot as hardware certification, application correctness, patch compliance, or proof that an installer completed.

Operational Signals

Monitor at least:

  • frontend and API reachability;
  • backend libvirt connectivity;
  • free host memory and disk space;
  • failed uploads and guest-launch errors;
  • guest domains, overlays, NVRAM, and network inventory;
  • the persistent cleanup journal under TEST_STORAGE_DIR;
  • container restart loops and backend exceptions.

The evaluation Compose file does not configure an external alerting system.

Common Failures

SymptomCheck
/dev/kvm permission deniedHost group membership and device mapping; do not make the device world-writable
Cannot connect to libvirtDaemon status, socket path, KVM_URI, and container mount
Upload rejectedFile type, free space, image-directory permissions, and the configured size limit
Guest cannot open source imageHost/container absolute-path identity and read permission
VNC disconnectsGuest state, libvirt graphics endpoint, proxy path, and browser console diagnostics
Replacement launch remains blockedPersisted cleanup journal, stale domain/overlay/NVRAM resources, and backend logs

Shutdown

Stop or delete disposable guests in the UI before stopping the stack. Then run:

docker compose -f docker-compose.self-hosted.yml down

Inventory libvirt domains, images, networks, and the named volume afterward. Stopping containers does not automatically remove every host-owned resource.