Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[Support] junkerderprovinz - BombVault

Featured Replies

BombVault – the only backup & recovery tool you need for Unraid

Your Unraid data, sealed in a vault — armed with a fuse.

BombVault

Install on Unraid   View on GitHub   Buy me a coffee

What is this?

BombVault is a single-binary, Unraid-native web app for one-click backup and full disaster recovery of your Docker containers, KVM/libvirt VMs and the Unraid flash — all powered by restic. The restore is the star: a backed-up container automatically reappears in the Docker tab and a VM in the VM Manager, exactly as before — no manual reinstall, no reconfiguration, even after you deleted it. Everything (backup paths, encryption on/off, schedule, retention) is configured in the modern dark web UI; nothing to hand-edit.

Highlights

  • Three domains, one app — Docker containers (appdata + definition), KVM/libvirt VMs (disks + XML + UEFI NVRAM), and the whole Unraid flash (/boot)

  • Restore that re-installs for you — containers are replayed against the Docker API and VMs re-defined in the VM Manager, so they come back exactly as they were

  • VM backup with no libvirt mount — BombVault runs virsh on the host over SSH (qemu+ssh://), so it can never disturb your VM Manager; graceful-shutdown or live (guest-agent) snapshots

  • Off-site repos — rclone (Backblaze B2, S3, Google Drive, …) plus SMB/NFS; the rclone config is stored encrypted

  • Retention — keep-last / daily / weekly / monthly, auto-pruned after each backup

  • File-level restore — browse a container snapshot and restore a single file back to its original location

  • Integrity checks (restic check) and pre/post-backup hooks (e.g. mysqldump for an app-consistent backup)

  • Incremental, deduplicated and always encrypted (encryption is optional); pre-flight IP/port conflict check before a restore

  • Per-domain scheduling, HTTPS out of the box, optional password, English + German UI

  • Multi-arch — amd64 + arm64. Image: ghcr.io/junkerderprovinz/bombvault:latest

Requirements

  • Unraid 6.12+

  • The template mounts the Docker socket, your storage root (/mnt) and the flash (/boot) automatically — backup sources and destinations both live under /mnt; pick the exact subpaths in the WebUI

  • A required APP_KEY — generate with openssl rand -hex 32. It derives the restic password, so keep it safe: losing it makes encrypted backups unrecoverable

  • VM backup is opt-in — it talks to libvirt over SSH, so authorize BombVault's key on the host once (Settings → VM Backup over SSH shows a ready-to-paste command + a Test button). No libvirt mount needed

  • Trusted LAN only: BombVault holds root-equivalent control of your host (via docker.sock and the /mnt mount). Run it on a non-exposed network; optional password protection is in Settings (off by default)

Posting a bug report

Please post:

  • Unraid version (Settings → System Information)

  • Image tag (latest or a pinned vX.Y.Z)

  • Output of docker logs --tail 200 BombVault

  • Which domain (containers / VMs / flash) and what you were doing (backup / restore)

  • For VM issues: the result of Settings → VM Backup over SSHTest connection

  • Browser + OS you're using

GitHub issues with the same info are also welcome: github.com/junkerderprovinz/bombvault/issues

Credits

The core idea — one-click backup and automatic re-install of Docker containers — comes from VolumeVault by @Darkdragon14 (Apache-2.0). BombVault is an independent Go + restic rewrite that extends the concept to VMs and the Unraid flash. Built on restic (engine) and rclone (off-site). If BombVault saves your bacon, you can buy me a coffee.


Self-hosted, MIT-licensed. BombVault has root-equivalent control of your host — you run it, you own your data and the responsibility.

  • Replies 105
  • Views 2.1k
  • Created
  • Last Reply

Top Posters In This Topic

Most Popular Posts

  • manilx
    manilx

    tried it, ssh connection test was OK. But when trying to backup VM I get an "error 400" on some vm's. Didn't want to fiddle around and uninstalled as I'm backing up via scripts anyway. There as a new

  • manilx
    manilx

    How do we restore from the remote location? Only the local are shown...?

  • manilx
    manilx

    Does this also apply to the remote repo?

Posted Images

tried it, ssh connection test was OK. But when trying to backup VM I get an "error 400" on some vm's. Didn't want to fiddle around and uninstalled as I'm backing up via scripts anyway.
There as a new Bombvault datastore created on m main zfs volume, which I had to delete via cli! Nowhere is a mention of a datastore being created....

Waiting on some more users trying this before I hand over control of my server......

Edited by manilx

  • Author
4 hours ago, manilx said:

tried it, ssh connection test was OK. But when trying to backup VM I get an "error 400" on some vm's. Didn't want to fiddle around and uninstalled as I'm backing up via scripts anyway.
There as a new Bombvault datastore created on m main zfs volume, which I had to delete via cli! Nowhere is a mention of a datastore being created....

Waiting on some more users trying this before I hand over control of my server......

Thanks for trying it, and for the blunt feedback! 🙏

The "error 400 on some VMs" was a real bug: VM names with a space (e.g. Windows 11) got rejected by a too-strict name check. Fixed in v1.3.4, spaced names back up fine now.

The mystery "datastore" is just the restic backup repo, it defaults to /mnt/user/bombvault/ (changeable in Settings → Backup paths). Fair point that it wasn't mentioned anywhere, now spelled out in the description + README.

No pressure to switch from your scripts, but if you fancy another go, grab v1.3.4/:latest and it should just work. 👍

will try..... Sorry for the bluntness 😉

P.S Actually I'm using Backrest for all but VM's.... Also restic under the hood.

Reinstalled. Set HTTP_ONLY to true. Webui defaults to https. I have to manually change https://[IP]:[PORT:3443]/

Did a test container backup. I didn't find any display of progression. Finished.
It started the container, which was stopped before the backup. Shouldn't.

Deleted it, also appdata. Restored it, again no feedback until the end. restored OK and started, shouldn't.

Edited by manilx

Did a flash back: ok
VM (stopped) backup (via snapshot): OK And VM wasn't started.

Big question regarding docker backups:

which folders are backed by default, appdata i guess, what about other bind mounts? They should backup also ( and ideally be able to choose to include/exclude).
If bind mounts are excluded there should another option to backup select folders.....

Edited by manilx

Tried backing up a Windows Server vm (live). Failed. No indication anywhere why.....

Done my testing for now. Back to working backups ;)

Shows promises but has a longer way to go.

  • Author
3 hours ago, manilx said:

Tried backing up a Windows Server vm (live). Failed. No indication anywhere why.....

Done my testing for now. Back to working backups ;)

Shows promises but has a longer way to go.

Hey, thanks a lot for taking the time to test this properly and write it all up. That kind of detailed feedback is exactly what I needed. Most of it is sorted in the latest version, so here's where things stand.

The big one you caught: a backup was starting a container that had been stopped beforehand. That was a real bug and it's fixed now. A stopped container gets backed up in place and stays stopped, and a running one gets stopped for a clean backup and started again afterwards. Restore behaves the same way now, it brings the container back in the exact state it was in when you backed it up instead of always starting it.

You also said there was no sign of anything happening during a backup or restore. There's now a live progress bar on each container, VM and flash card that fills up as the job runs, for both backup and restore, so you can actually see how far along it is.

On the HTTP_ONLY setting: when it's on, the WebUI link still points at https, so for now you have to open http://[ip]:[port] yourself. I've noted that in the template description.

For the Windows VM backup that failed without telling you why, I improved the error reporting, so instead of restic's generic "please open an issue" line you now get the real reason in the UI. About that specific failure: if the message is something like "detected data corruption while saving blob ... hash mismatch", that one is worth a closer look. restic checks every chunk it writes, and that error means the data changed in memory between being read and being written. If you run the backup a few times and it fails on a different block each time, while the disk file itself reads back identical when the VM is off, that points at the RAM rather than at the tool or the disk. The good news is restic refuses to store a corrupt backup, so nothing bad got saved. I'd run MemTest86 (it's in the Unraid boot menu), and if you're using an XMP or EXPO memory profile, try turning it off and testing again. That fixes this kind of thing more often than you'd expect.

On backing up other folders: right now it automatically grabs the container's appdata. Choosing which of the container's other mapped folders to include or exclude, plus adding your own paths, is the next feature I'm working on. The Backup Hooks field isn't for that, by the way, it just runs a command around the backup (like dumping a database into appdata so it gets picked up), it doesn't add folders. I made that description clearer too.

Good to hear the flash backup and the stopped-VM snapshot both worked for you.

And yeah, it's still got room to grow, no argument there. Thanks again for pushing on it, it genuinely makes the thing better. Let me know how the next version treats you.

This is the error I get on VM backups: vm live backup: snapshot: virshcli: snapshot-create-as: error: unsupported configuration: external snapshot file for disk hdc already exists and is not a block device: [path] Server 2022[path]
In this server I have only a zfs pool on which all resides:
My vm backup script uses zfs snapshots to backup.

ScreenShot 2026-06-19 at 09.24.52.png

ScreenShot 2026-06-19 at 10.24.55.png

Edited by manilx

P.S. backup hooks. In Backrest i can run a shell script as hook that shuts down certain containers (databases) before the backup and restarts them after.
Something like this is needed.

Backed up all my containers on 2 servers. Both did run without any error message displayed. But on the dashboard i get some with error. Problem is I can't tell which one it is and I can't display the error. Not useful....

ScreenShot 2026-06-19 at 11.19.08.png

Looking at them I see that some have no backups attached.

When I force a backup on those I get: restic backup failed: Fatal: all source directories[path] do not exist

Edited by manilx

Just tried latest update, still get errors on containers, which do not have an appdata folder. But it should just back up the settings!

ScreenShot 2026-06-19 at 19.56.15.png

VM live backups still broken:

ScreenShot 2026-06-19 at 19.57.58.png

Hallo 😉

you done a lot! Tested latest version:

Docker backups with additional folders OK.
One thing here, if the container has no data folder it says it is backed up but no backup is created, should be mentioned in the interface somehow (one expects the config/yaml to be nacked up anyway as the backup plugin does).
VM backups, Graceful works but I have 2 VM's that do not backup live:

ScreenShot 2026-06-20 at 09.02.35.png

On my second server I also backed up but I have this in the dashboard:

ScreenShot 2026-06-20 at 09.07.00.png

Corrupted sqlite db?

Edited by manilx

P.S. One VM, which did backup live just fine now has the same error as above and does no longer backup. I can't shutdown this one for backup.


I'm seeing the progress here but I'll stop for now and revisit in a few months time. It's in alpha stage in my feeling right now. And backups are to critical a thing......

  • Author

Hey @manilx , thanks again for all the testing and the clear write-ups, that feedback shaped a whole release. I bundled everything into 2.0.0, just force-update the container in the Docker tab to pull it. Here's what's in there for the things you ran into:

- "Failed to load runs": fixed, and good news, it's not a corrupted database. A backup that was still running or got interrupted left a record the run history couldn't read, and that one record broke the whole list. It loads fine again after updating, no reset needed. Interrupted runs also get tidied up on startup now instead of sitting there as "running" forever.

- Containers with no data folder: they now show "Config only" instead of a plain "done", so it's clear no data snapshot was made (the container definition is still saved, so it can be recreated). And there's a new per-container Export button that drops a plain <name>.tar.gz + <name>.xml next to your repo, same idea as the Appdata Backup plugin, if you want the config/settings as readable files.

- Containers without an appdata folder no longer fail with "all source directories do not exist".

- The dashboard now shows which container/VM a run was for, and the error message when one fails, instead of an opaque snapshot id.

- Stop other containers during a backup: each container has a field where you can list other containers (like a database) to stop while it's backed up and start again after. Covers the backrest-style use case, over the Docker API, no scripts.

- VM live backups, two things. First, cd-rom / read-only disks are skipped during the snapshot now. Second, and this is the big one for your two VMs: if a live snapshot still can't be created, BombVault automatically falls back to a graceful backup instead of erroring out, so the backup always completes.

So those two VMs should just back up now (they may quietly fall back to graceful, which means a short shutdown during the backup). If you'd rather keep them truly live, the snapshot is failing because of how one of their disks is set up. Grab "virsh dumpxml VMNAME" from the Unraid terminal and post it, and I'll get that disk classified properly.

One more on the earlier "hash mismatch" on the Windows 11 VM: that one points at the host (RAM or the cache pool), not BombVault. BombVault actually caught it and refused to store a corrupt backup. A MemTest86 run is worth it when you get the chance.

Thanks again, this was a great batch of feedback.

This is one:
<domain type='kvm' id='7'>

<name>Windows Server 2022</name>

<uuid>8ab129f6-30ae-2191-b439-4e06ad06e17d</uuid>

<metadata>

<vmtemplate xmlns="http://unraid" name="Windows Server 2016" iconold="windows.png" icon="windows.png" os="windows2016" webui="" storage="default"/>

</metadata>

<memory unit='KiB'>4194304</memory>

<currentMemory unit='KiB'>4194304</currentMemory>

<memoryBacking>

<nosharepages/>

</memoryBacking>

<vcpu placement='static'>1</vcpu>

<resource>

<partition>/machine</partition>

</resource>

<os>

<type arch='x86_64' machine='pc-i440fx-9.2'>hvm</type>

<loader readonly='yes' type='pflash' format='raw'>/usr/share/qemu/ovmf-x64/OVMF_CODE-pure-efi.fd</loader>

<nvram format='raw'>/etc/libvirt/qemu/nvram/8ab129f6-30ae-2191-b439-4e06ad06e17d_VARS-pure-efi.fd</nvram>

</os>

<features>

<acpi/>

<apic/>

<hyperv mode='custom'>

<relaxed state='on'/>

<vapic state='on'/>

<spinlocks state='on' retries='8191'/>

<vpindex state='on'/>

<synic state='on'/>

<stimer state='on'/>

<vendor_id state='on' value='none'/>

</hyperv>

</features>

<cpu mode='host-passthrough' check='none' migratable='on'>

<topology sockets='1' dies='1' clusters='1' cores='1' threads='1'/>

<cache mode='passthrough'/>

</cpu>

<clock offset='localtime'>

<timer name='hpet' present='no'/>

<timer name='hypervclock' present='yes'/>

</clock>

<on_poweroff>destroy</on_poweroff>

<on_reboot>restart</on_reboot>

<on_crash>restart</on_crash>

<devices>

<emulator>/usr/local/sbin/qemu</emulator>

<disk type='file' device='disk'>

<driver name='qemu' type='qcow2' cache='writeback' discard='unmap'/>

<source file='/mnt/user/domains/Windows Server 2022/vdisk1.bombvault-tmp' index='2'/>

<backingStore type='file' index='3'>

<format type='qcow2'/>

<source file='/mnt/user/domains/Windows Server 2022/vdisk1.qcow2'/>

<backingStore/>

</backingStore>

<target dev='hdc' bus='virtio'/>

<serial>vdisk1</serial>

<boot order='1'/>

<alias name='virtio-disk2'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>

</disk>

<disk type='file' device='cdrom'>

<driver name='qemu' type='raw'/>

<source index='1'/>

<target dev='hdb' bus='sata'/>

<readonly/>

<alias name='sata0-0-1'/>

<address type='drive' controller='0' bus='0' target='0' unit='1'/>

</disk>

<controller type='usb' index='0' model='ich9-ehci1'>

<alias name='usb'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x7'/>

</controller>

<controller type='usb' index='0' model='ich9-uhci1'>

<alias name='usb'/>

<master startport='0'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0' multifunction='on'/>

</controller>

<controller type='usb' index='0' model='ich9-uhci2'>

<alias name='usb'/>

<master startport='2'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x1'/>

</controller>

<controller type='usb' index='0' model='ich9-uhci3'>

<alias name='usb'/>

<master startport='4'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x2'/>

</controller>

<controller type='pci' index='0' model='pci-root'>

<alias name='pci.0'/>

</controller>

<controller type='sata' index='0'>

<alias name='sata0'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>

</controller>

<controller type='virtio-serial' index='0'>

<alias name='virtio-serial0'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>

</controller>

<interface type='bridge'>

<mac address='52:54:00:45:86:4a'/>

<source bridge='br0'/>

<target dev='vnet6'/>

<model type='virtio-net'/>

<alias name='net0'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>

</interface>

<serial type='pty'>

<source path='/dev/pts/0'/>

<target type='isa-serial' port='0'>

<model name='isa-serial'/>

</target>

<alias name='serial0'/>

</serial>

<console type='pty' tty='/dev/pts/0'>

<source path='/dev/pts/0'/>

<target type='serial' port='0'/>

<alias name='serial0'/>

</console>

<channel type='unix'>

<source mode='bind' path='/run/libvirt/qemu/channel/7-Windows Server 2022/org.qemu.guest_agent.0'/>

<target type='virtio' name='org.qemu.guest_agent.0' state='connected'/>

<alias name='channel0'/>

<address type='virtio-serial' controller='0' bus='0' port='1'/>

</channel>

<input type='tablet' bus='usb'>

<alias name='input0'/>

<address type='usb' bus='0' port='1'/>

</input>

<input type='mouse' bus='ps2'>

<alias name='input1'/>

</input>

<input type='keyboard' bus='ps2'>

<alias name='input2'/>

</input>

<graphics type='vnc' port='5900' autoport='yes' websocket='5701' listen='0.0.0.0' sharePolicy='ignore'>

<listen type='address' address='0.0.0.0'/>

</graphics>

<audio id='1' type='none'/>

<video>

<model type='qxl' ram='65536' vram='16384' vgamem='16384' heads='1' primary='yes'/>

<alias name='video0'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x1e' function='0x0'/>

</video>

<memballoon model='virtio'>

<alias name='balloon0'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>

</memballoon>

</devices>

<seclabel type='dynamic' model='dac' relabel='yes'>

<label>+0:+100</label>

<imagelabel>+0:+100</imagelabel>

</seclabel>

</domain>






And the other one, worked live for one backup than didn't:

<domain type='kvm' id='6'>

<name>Tailscale</name>

<uuid>ac760bc7-e0f7-1a61-6539-cc62a39a9a01</uuid>

<metadata>

<vmtemplate xmlns="http://unraid" name="Debian" iconold="tailscale.png" icon="tailscale.png" os="debian" webui="" storage="default"/>

</metadata>

<memory unit='KiB'>1048576</memory>

<currentMemory unit='KiB'>1048576</currentMemory>

<memoryBacking>

<nosharepages/>

</memoryBacking>

<vcpu placement='static'>1</vcpu>

<resource>

<partition>/machine</partition>

</resource>

<os>

<type arch='x86_64' machine='pc-q35-9.2'>hvm</type>

</os>

<features>

<acpi/>

<apic/>

</features>

<cpu mode='host-passthrough' check='none' migratable='on'>

<topology sockets='1' dies='1' clusters='1' cores='1' threads='1'/>

<cache mode='passthrough'/>

</cpu>

<clock offset='utc'>

<timer name='hpet' present='no'/>

<timer name='hypervclock' present='no'/>

</clock>

<on_poweroff>destroy</on_poweroff>

<on_reboot>restart</on_reboot>

<on_crash>restart</on_crash>

<devices>

<emulator>/usr/local/sbin/qemu</emulator>

<disk type='file' device='disk'>

<driver name='qemu' type='qcow2' cache='writeback' discard='unmap'/>

<source file='/mnt/zfs/domains/Tailscale/vdisk1.qcow2' index='1'/>

<backingStore/>

<target dev='hdc' bus='virtio'/>

<serial>vdisk1</serial>

<boot order='1'/>

<alias name='virtio-disk2'/>

<address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>

</disk>

<controller type='usb' index='0' model='ich9-ehci1'>

<alias name='usb'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x7'/>

</controller>

<controller type='usb' index='0' model='ich9-uhci1'>

<alias name='usb'/>

<master startport='0'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0' multifunction='on'/>

</controller>

<controller type='usb' index='0' model='ich9-uhci2'>

<alias name='usb'/>

<master startport='2'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x1'/>

</controller>

<controller type='usb' index='0' model='ich9-uhci3'>

<alias name='usb'/>

<master startport='4'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x2'/>

</controller>

<controller type='pci' index='0' model='pcie-root'>

<alias name='pcie.0'/>

</controller>

<controller type='pci' index='1' model='pcie-root-port'>

<model name='pcie-root-port'/>

<target chassis='1' port='0x8'/>

<alias name='pci.1'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0' multifunction='on'/>

</controller>

<controller type='pci' index='2' model='pcie-root-port'>

<model name='pcie-root-port'/>

<target chassis='2' port='0x9'/>

<alias name='pci.2'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>

</controller>

<controller type='pci' index='3' model='pcie-root-port'>

<model name='pcie-root-port'/>

<target chassis='3' port='0xa'/>

<alias name='pci.3'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>

</controller>

<controller type='pci' index='4' model='pcie-root-port'>

<model name='pcie-root-port'/>

<target chassis='4' port='0xb'/>

<alias name='pci.4'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x3'/>

</controller>

<controller type='pci' index='5' model='pcie-root-port'>

<model name='pcie-root-port'/>

<target chassis='5' port='0xc'/>

<alias name='pci.5'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x4'/>

</controller>

<controller type='virtio-serial' index='0'>

<alias name='virtio-serial0'/>

<address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>

</controller>

<controller type='sata' index='0'>

<alias name='ide'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>

</controller>

<interface type='bridge'>

<mac address='52:54:00:19:f6:e6'/>

<source bridge='br0'/>

<target dev='vnet5'/>

<model type='virtio-net'/>

<alias name='net0'/>

<address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>

</interface>

<serial type='pty'>

<source path='/dev/pts/1'/>

<target type='isa-serial' port='0'>

<model name='isa-serial'/>

</target>

<alias name='serial0'/>

</serial>

<console type='pty' tty='/dev/pts/1'>

<source path='/dev/pts/1'/>

<target type='serial' port='0'/>

<alias name='serial0'/>

</console>

<channel type='unix'>

<source mode='bind' path='/run/libvirt/qemu/channel/6-Tailscale/org.qemu.guest_agent.0'/>

<target type='virtio' name='org.qemu.guest_agent.0' state='connected'/>

<alias name='channel0'/>

<address type='virtio-serial' controller='0' bus='0' port='1'/>

</channel>

<input type='tablet' bus='usb'>

<alias name='input0'/>

<address type='usb' bus='0' port='1'/>

</input>

<input type='mouse' bus='ps2'>

<alias name='input1'/>

</input>

<input type='keyboard' bus='ps2'>

<alias name='input2'/>

</input>

<graphics type='vnc' port='5901' autoport='yes' websocket='5700' listen='0.0.0.0' keymap='pt' sharePolicy='ignore'>

<listen type='address' address='0.0.0.0'/>

</graphics>

<audio id='1' type='none'/>

<video>

<model type='virtio' heads='1' primary='yes'/>

<alias name='video0'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x1e' function='0x0'/>

</video>

<watchdog model='itco' action='reset'>

<alias name='watchdog0'/>

</watchdog>

<memballoon model='virtio'>

<alias name='balloon0'/>

<address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>

</memballoon>

</devices>

<seclabel type='dynamic' model='dac' relabel='yes'>

<label>+0:+100</label>

<imagelabel>+0:+100</imagelabel>

</seclabel>

</domain>

And Home Assistant, this I really don't want to shutdown during backup (I don't with scripts backup, just use zfs snapshit):
<domain type='kvm' id='3'>

<name>Home Assistant</name>

<uuid>654b4761-b1dc-4680-8fd0-b6be94d7a0f4</uuid>

<metadata>

<vmtemplate xmlns="http://unraid" name="Linux" icon="Hassio_2.png" os="linux" iconold="Hassio_2.png" webui="http://192.168.2.40:8123"/>

</metadata>

<memory unit='KiB'>4194304</memory>

<currentMemory unit='KiB'>4194304</currentMemory>

<memoryBacking>

<nosharepages/>

</memoryBacking>

<vcpu placement='static'>4</vcpu>

<resource>

<partition>/machine</partition>

</resource>

<os>

<type arch='x86_64' machine='pc-q35-9.2'>hvm</type>

<loader readonly='yes' type='pflash' format='raw'>/usr/share/qemu/ovmf-x64/OVMF_CODE-pure-efi.fd</loader>

<nvram format='raw'>/etc/libvirt/qemu/nvram/654b4761-b1dc-4680-8fd0-b6be94d7a0f4_VARS-pure-efi.fd</nvram>

</os>

<features>

<acpi/>

<apic/>

</features>

<cpu mode='host-passthrough' check='none' migratable='on'>

<topology sockets='1' dies='1' clusters='1' cores='2' threads='2'/>

<cache mode='passthrough'/>

</cpu>

<clock offset='utc'>

<timer name='hpet' present='no'/>

<timer name='hypervclock' present='no'/>

<timer name='pit' tickpolicy='delay'/>

<timer name='rtc' tickpolicy='catchup'/>

</clock>

<on_poweroff>destroy</on_poweroff>

<on_reboot>restart</on_reboot>

<on_crash>restart</on_crash>

<devices>

<emulator>/usr/local/sbin/qemu</emulator>

<disk type='file' device='disk'>

<driver name='qemu' type='qcow2' cache='writeback' discard='ignore'/>

<source file='/mnt/zfs/domains/Home Assistant/vdisk1.img' index='1'/>

<backingStore/>

<target dev='hdc' bus='virtio'/>

<serial>vdisk1</serial>

<boot order='1'/>

<alias name='virtio-disk2'/>

<address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>

</disk>

<controller type='usb' index='0' model='ich9-ehci1'>

<alias name='usb'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x7'/>

</controller>

<controller type='usb' index='0' model='ich9-uhci1'>

<alias name='usb'/>

<master startport='0'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0' multifunction='on'/>

</controller>

<controller type='usb' index='0' model='ich9-uhci2'>

<alias name='usb'/>

<master startport='2'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x1'/>

</controller>

<controller type='usb' index='0' model='ich9-uhci3'>

<alias name='usb'/>

<master startport='4'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x2'/>

</controller>

<controller type='pci' index='0' model='pcie-root'>

<alias name='pcie.0'/>

</controller>

<controller type='pci' index='1' model='pcie-root-port'>

<model name='pcie-root-port'/>

<target chassis='1' port='0x8'/>

<alias name='pci.1'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0' multifunction='on'/>

</controller>

<controller type='pci' index='2' model='pcie-root-port'>

<model name='pcie-root-port'/>

<target chassis='2' port='0x9'/>

<alias name='pci.2'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>

</controller>

<controller type='pci' index='3' model='pcie-root-port'>

<model name='pcie-root-port'/>

<target chassis='3' port='0xa'/>

<alias name='pci.3'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>

</controller>

<controller type='pci' index='4' model='pcie-root-port'>

<model name='pcie-root-port'/>

<target chassis='4' port='0xb'/>

<alias name='pci.4'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x3'/>

</controller>

<controller type='pci' index='5' model='pcie-root-port'>

<model name='pcie-root-port'/>

<target chassis='5' port='0xc'/>

<alias name='pci.5'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x4'/>

</controller>

<controller type='virtio-serial' index='0'>

<alias name='virtio-serial0'/>

<address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>

</controller>

<controller type='sata' index='0'>

<alias name='ide'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>

</controller>

<interface type='bridge'>

<mac address='ac:87:a3:7b:92:f0'/>

<source bridge='br0'/>

<target dev='vnet2'/>

<model type='virtio-net'/>

<alias name='net0'/>

<address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>

</interface>

<serial type='pty'>

<source path='/dev/pts/2'/>

<target type='isa-serial' port='0'>

<model name='isa-serial'/>

</target>

<alias name='serial0'/>

</serial>

<console type='pty' tty='/dev/pts/2'>

<source path='/dev/pts/2'/>

<target type='serial' port='0'/>

<alias name='serial0'/>

</console>

<channel type='unix'>

<source mode='bind' path='/run/libvirt/qemu/channel/3-Home Assistant/org.qemu.guest_agent.0'/>

<target type='virtio' name='org.qemu.guest_agent.0' state='connected'/>

<alias name='channel0'/>

<address type='virtio-serial' controller='0' bus='0' port='1'/>

</channel>

<input type='tablet' bus='usb'>

<alias name='input0'/>

<address type='usb' bus='0' port='1'/>

</input>

<input type='mouse' bus='ps2'>

<alias name='input1'/>

</input>

<input type='keyboard' bus='ps2'>

<alias name='input2'/>

</input>

<graphics type='vnc' port='5902' autoport='yes' websocket='5702' listen='0.0.0.0' keymap='en-us' sharePolicy='ignore'>

<listen type='address' address='0.0.0.0'/>

</graphics>

<audio id='1' type='none'/>

<video>

<model type='qxl' ram='131072' vram='65536' vram64='64512' vgamem='65536' heads='1' primary='yes'/>

<alias name='video0'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x1e' function='0x0'/>

</video>

<watchdog model='itco' action='reset'>

<alias name='watchdog0'/>

</watchdog>

<memballoon model='virtio'>

<alias name='balloon0'/>

<address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>

</memballoon>

</devices>

<seclabel type='dynamic' model='dac' relabel='yes'>

<label>+0:+100</label>

<imagelabel>+0:+100</imagelabel>

</seclabel>

</domain>

I have deleted all and would have to reinstall/config from scratch now 😉

16 minutes ago, Junker der Provinz said:

- Containers without an appdata folder no longer fail with "all source directories do not exist".

I don't see that.
What I see for example is this:
This container has no appdata, the folder shown here does not exist. When I delete it, it is put in there again.

ScreenShot 2026-06-20 at 10.52.25.png

I've just seen that my VM disk was changed!!!!!!

ScreenShot 2026-06-20 at 10.56.55.png

Had to manually edit the yaml to correct this

Edited by manilx

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.