HAOS ships as a qcow2 disk image rather than an ISO, so the VM is created empty and the image imported afterwards. Build a q35 VM on OVMF UEFI, delete the disk Proxmox adds, then run qm importdisk 200 /tmp/haos_ova-*.qcow2 local-lvm and attach the result as scsi0 first in boot order. Onboarding waits on port 8123.
By LK Wood IV · 2026-05-31 · ~13 min read · St. Louis County, MO
Running Home Assistant on dedicated hardware (a Pi, an old NUC) made sense five years ago. If you already have a Proxmox homelab, there is no reason for a second machine. (If you don’t have a homelab yet and just want a dedicated box for Home Assistant, start with our best mini PC for Home Assistant guide and come back here to install it.) A HAOS VM on Proxmox runs exactly like bare-metal HAOS, gets the same updates, supports all add-ons, and takes up about 4GB of RAM when loaded.
This guide installs Home Assistant OS as a Proxmox VM — the supported method that gets you Supervisor, the add-on store, and HA-style snapshots. Not HA Core in an LXC (unsupported, loses add-ons), not HA Container (no Supervisor). HAOS in a VM.
Why VM, not LXC
The LXC vs VM decision applies here clearly: Home Assistant OS is a full operating system, not a service. It runs its own kernel, manages its own update cycle, and orchestrates multiple internal containers via Supervisor. Putting it in an LXC violates the architectural contract HAOS was designed around and breaks add-ons that depend on host kernel access.
If you want to run it in a container anyway, use the official Home Assistant Container image in Docker — but you lose Supervisor and the add-on ecosystem. For everything, use a VM.
Step 1: Download the HAOS disk image
Go to home-assistant.io/installation/alternative and download the KVM/Proxmox image. As of 2026 this is a .qcow2 file — pre-built disk image for QEMU.
Or download directly to your Proxmox host:
# SSH into Proxmox host
cd /tmp
# Get the latest HAOS version number from GitHub releases
HAOS_VERSION=$(curl -s https://api.github.com/repos/home-assistant/operating-system/releases/latest | grep tag_name | cut -d'"' -f4)
# Download qcow2 image (replace x86_64 with aarch64 for ARM)
wget "https://github.com/home-assistant/operating-system/releases/download/${HAOS_VERSION}/haos_ova-${HAOS_VERSION}.qcow2.xz"
# Extract
xz -d haos_ova-${HAOS_VERSION}.qcow2.xz
Step 2: Create the VM in Proxmox
In the Proxmox web UI, click Create VM:
General tab:
- Node: your Proxmox host
- VM ID: choose a free ID (e.g., 200)
- Name:
home-assistant
OS tab:
- Select “Do not use any media” (we’ll import the disk image instead of booting from ISO)
System tab:
- Machine:
q35 - BIOS:
OVMF (UEFI)— HAOS requires UEFI - Check “Add EFI Disk” → storage: local-lvm (or your preferred storage)
Disks tab:
- Delete the default disk that was created (we’ll import our own)
CPU tab:
- Sockets: 1
- Cores: 2 (minimum), 4 recommended for add-ons like Frigate
- Type:
host— lets the VM use your CPU’s full instruction set
Memory tab:
- 2048 MB minimum, 4096 MB comfortable
Network tab:
- Bridge: vmbr0 (your main LAN bridge)
- Model: VirtIO
Click Finish — do NOT start the VM yet.
Step 3: Import the HAOS disk
SSH into Proxmox and import the downloaded image into the VM you just created. Replace 200 with your VM ID and local-lvm with your storage:
qm importdisk 200 /tmp/haos_ova-*.qcow2 local-lvm
This creates a new disk in the storage. Back in the Proxmox web UI:
- Go to the VM → Hardware
- You’ll see an “Unused Disk” entry — click it → Edit
- Set Bus/Device to
SCSI(scsi0) — required for best performance with HAOS - Enable Discard (for SSD/NVMe storage)
- Click Add
Now set the boot order:
- VM → Options → Boot Order
- Enable
scsi0and move it to position 1 - Disable any other boot devices
Step 4: First boot and initial setup
Start the VM. In the Proxmox web console, watch the boot sequence. HAOS boots in about 30–60 seconds on first run (initial setup takes longer as it downloads updates).
Find the IP address. HAOS uses DHCP by default. Check your router’s DHCP table for a device named homeassistant, or watch the console — HAOS prints its IP when fully booted.
Open a browser to http://homeassistant-ip:8123. You’ll see the Home Assistant onboarding wizard:
- Create your account
- Set your home location
- HA will discover devices on your network automatically — review them and add what’s yours
After onboarding, go to Settings → System → Updates and apply any pending updates. HAOS manages its own OS updates separately from HA Core updates.
Step 5: USB device passthrough (Zigbee/Z-Wave)
If you have a Zigbee coordinator (Sonoff Zigbee 3.0 Dongle Plus, HUSBZB-1, Aeotec Z-Stick) or Z-Wave stick connected to your Proxmox host, pass it through to the HA VM.
Identify the device on the host:
lsusb
Find your coordinator in the list. Note the vendor:product ID (e.g., 1a86:55d4 for the Sonoff Zigbee dongle).
Pass through in Proxmox:
- VM → Hardware → Add → USB Device
- Select Use USB vendor/product ID (not port — this survives physical port changes)
- Enter vendor ID and product ID
- Click Add
Restart the VM. In Home Assistant, go to Settings → Add-ons → Zigbee2MQTT (install from the add-on store), configure it with the USB device path (typically /dev/ttyACM0 or /dev/ttyUSB0 — check the Z2M add-on logs if wrong).
Step 6: Configure external backups
HAOS has its own backup system (supervisor-level snapshots). By default, backups stay inside the HAOS VM. For real off-site protection, configure an external backup location.
NAS via SMB/CIFS:
- Home Assistant → Settings → System → Backups
- Configure a network backup location → SMB share on your NAS
- Set automatic backup schedule (daily is reasonable for an active HA setup)
Rclone add-on: The community Rclone add-on can sync HA backups to Backblaze B2, Google Drive, or any rclone-supported destination. Combined with your PBS VM backup, this gives you two-layer coverage: HA config-level backups on NAS, full VM snapshot via PBS.
Step 7: Remote access
Nabu Casa (Home Assistant Cloud). The easiest remote access option — $65/year buys remote access, Google/Alexa integration, and supports HA development. If you’re already paying for cloud services, this is worth it.
Tailscale add-on. For free remote access through Tailscale, install the Tailscale add-on from the HA add-on store. After installing and authorizing, your HA instance gets a Tailscale IP and becomes accessible from anywhere on your tailnet. No port forwarding, no external domain required.
Install the add-on: Settings → Add-ons → Add-on Store → search “Tailscale”
The Tailscale add-on handles the key exchange and keeps the tunnel running. Combined with your existing Tailscale homelab setup, HA is just another device on your tailnet.
NGINX Proxy Manager. If you want a proper domain with HTTPS: add a proxy host in NPM pointing to the HA VM’s LAN IP on port 8123. Enable Let’s Encrypt. In HA’s configuration.yaml:
http:
use_x_forwarded_for: true
trusted_proxies:
- 192.168.1.x # NPM container's LAN IP
Increasing VM disk size
HAOS ships with a ~6GB disk image. If you’re using add-ons that store data (Frigate with video, Music Assistant with a library, or large recorder databases), you’ll need more. Frigate is the one that gets away from people — the Frigate NVR storage calculator turns camera count, resolution, codec, and retention into an actual figure before you size the disk.
Resize in Proxmox (VM must be running):
qm resize 200 scsi0 +32G
HAOS’s filesystem resizing is automatic — it detects available space at boot and expands its partition to fill the disk. No fdisk, no resize2fs.
Performance notes
HAOS on a Proxmox VM with host CPU type and VirtIO networking is functionally indistinguishable from bare-metal performance for home automation workloads. HA Core updates complete in under 60 seconds. Z-Wave and Zigbee latency is USB-passthrough latency — no virtualization penalty.
The one area where a dedicated Pi still has an edge: always-on idle power consumption. HAOS on Proxmox shares the host’s idle draw. If your Proxmox host is a mini PC using 20W at idle, HA is part of that 20W — but so are your other VMs and containers. It doesn’t add measurable power on its own. A dedicated Pi 5 would use 3–5W idle for HA alone, but then you’ve added another device to manage. The Power & Cost Calculator can model both scenarios.
Running HAOS and other services on Proxmox? The Proxmox Backup Server guide covers protecting the whole setup with 3-2-1 backups. For remote access to the HA dashboard without opening ports, Tailscale or WireGuard both work well — Tailscale is faster to set up, WireGuard gives you full control. To trigger automations from outside Home Assistant (n8n workflows calling the HA REST API, for example), the n8n self-hosted guide covers connecting to LAN services. For the next step after this guide — pairing Zigbee devices via Zigbee2MQTT and Z-Wave devices via Z-Wave JS UI, and managing mesh health — the Zigbee and Z-Wave integration guide picks up where this one leaves off. Once your devices are paired and reporting state, the Home Assistant automations guide covers turning those devices into triggers, conditions, and actions.
Sources
- Home Assistant: Alternative installation methods – official source for the KVM/Proxmox qcow2 disk image.
- Home Assistant OS GitHub releases – official release artifacts and version numbers for the HAOS image.
- Proxmox VE QEMU/KVM Virtual Machines – official reference for VM creation, q35/OVMF, importdisk, and boot order.
- Proxmox VE USB Devices in Virtual Machines – official guide to passing a Zigbee/Z-Wave USB coordinator by vendor/product ID.
- Home Assistant OS common tasks – official reference for HAOS backups and system maintenance.
Frequently asked questions
Why use a VM instead of an LXC for Home Assistant?
Can I use a Zigbee or Z-Wave USB stick with Proxmox Home Assistant?
How do I back up Home Assistant on Proxmox?
What are the minimum VM resources for HAOS?
Does this installation method support Home Assistant Supervisor and add-ons?
Evidence ledger
- Last updated
- Methodology
- This tutorial was written and edited by Lowell K. Wood IV in St. Louis County, MO. Specs, prices, commands, and version numbers are drawn from the official vendor, reseller, and project documentation current on the date above, and were verified before publishing. First-person hardware claims appear only where the article shows a verifiable artifact — a photo, receipt, or measurement — or links to the TechFuelHQ Open Bench Datasets. Every fact is human-verified against its cited source before publishing; AI assists with first-draft structure and source-gathering, not with the verdict. Full editorial standard: methodology.
- Update log
- 2026-07-25 — Last reviewed and updated.
- Corrections
- Spotted an error or stale price? Email hello@techfuelhq.com. Confirmed corrections are added to the update log above.