Home Assistant on Proxmox: Install HAOS as a VM
By LK Wood IV · 2026-06-13 · ~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. 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.
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.