Skip to content

Home Assistant OS on Proxmox

Advanced 30 min Free

Proxmox is a fantastic platform to run Home Assistant OS. You get full VM isolation, snapshots, backup, and the ability to run other services on the same hardware.

Proxmox + Home Assistant architecture

FeatureProxmox VMRaspberry PiDocker
Snapshotsโœ… One clickโŒ NoโŒ No
Live backupโœ… Yesโš ๏ธ Manualโš ๏ธ Manual
Hardware passthroughโœ… USB, PCIeโœ… Directโš ๏ธ Limited
Resource scalingโœ… EasyโŒ Fixed hardwareโœ… Yes
Other VMs/containersโœ… UnlimitedโŒ Noโœ… Yes
Add-ons supportโœ… Fullโœ… FullโŒ Separate
  • โœ… Proxmox VE 8.x or newer installed
  • โœ… At least 2 CPU cores available
  • โœ… At least 4 GB RAM available
  • โœ… At least 32 GB storage (SSD recommended)
  • โœ… Access to Proxmox shell (SSH or web console)

The easiest method uses the official community script from community-scripts.github.io/ProxmoxVE.

  1. Log into Proxmox shell

    SSH to your Proxmox server or use Shell in web interface:

    Terminal window
    ssh root@YOUR-PROXMOX-IP
  2. Run installation script

    Terminal window
    bash -c "$(wget -qLO - https://github.com/community-scripts/ProxmoxVE/raw/main/vm/haos-vm.sh)"
  3. Follow installation wizard

    The script will ask about:

    • VM ID: Choose an available number (e.g., 100)
    • Machine Type: Choose q35 (modern, better performance)
    • BIOS: Choose OVMF (UEFI) - required for HAOS
    • Disk size: Minimum 32GB, recommended 64GB+
    • CPU cores: Minimum 2, recommended 4
    • RAM: Minimum 4096MB, recommended 4096-8192MB
    • Bridge: Your network bridge (typically vmbr0)
    • MAC address: Accept auto-generated
    • VLAN: Leave empty unless you use VLAN
    • Start after creation: Yes
  4. Wait for installation

    The script downloads HAOS image and creates the VM. This takes 2-5 minutes.

  5. Find IP address

    When VM is started, find IP via:

    Terminal window
    # In Proxmox shell
    qm guest cmd VMID network-get-interfaces

    Or check your routerโ€™s DHCP list.

If you prefer full control, you can install manually.

  1. Find latest version

    Go to Home Assistant OS releases and find the latest qcow2 file for KVM/Proxmox.

  2. Download to Proxmox

    Terminal window
    # SSH to Proxmox
    cd /var/lib/vz/template/iso/
    # Download latest HAOS (replace VERSION with current)
    wget https://github.com/home-assistant/operating-system/releases/download/VERSION/haos_ova-VERSION.qcow2.xz
    # Extract
    xz -d haos_ova-VERSION.qcow2.xz
  1. Create VM without disk

    Terminal window
    # Replace VMID with your desired ID (e.g., 100)
    qm create VMID \
    --name haos \
    --memory 4096 \
    --cores 2 \
    --cpu host \
    --bios ovmf \
    --machine q35 \
    --net0 virtio,bridge=vmbr0 \
    --ostype l26 \
    --agent 1 \
    --onboot 1
  2. Add EFI disk

    Terminal window
    qm set VMID --efidisk0 local-lvm:1,efitype=4m
  3. Import HAOS disk

    Terminal window
    # Import qcow2 to VM
    qm importdisk VMID /var/lib/vz/template/iso/haos_ova-VERSION.qcow2 local-lvm
    # Attach disk to VM
    qm set VMID --scsi0 local-lvm:vm-VMID-disk-1,cache=writethrough,discard=on,ssd=1
    # Set boot order
    qm set VMID --boot order=scsi0
  4. Start VM

    Terminal window
    qm start VMID
SettingValueExplanation
Machineq35Modern chipset, better USB/PCIe
BIOSOVMF (UEFI)Required for HAOS
CPU TypehostFull CPU support
CPU Cores2-42 minimum, 4 recommended
RAM4096-8192 MB4GB minimum
SCSI ControllerVirtIO SCSIBest disk performance
Disk CacheWrite throughSafe, good performance
NetworkVirtIOBest network performance
QEMU AgentEnabledSnapshots, IP display

To use USB devices (Zigbee coordinator, Z-Wave stick) in Home Assistant:

  1. Find USB device ID

    Terminal window
    # On Proxmox host
    lsusb
  2. Add to VM

    Terminal window
    # Format: vendor:product (from lsusb output)
    qm set VMID --usb0 host=1a86:55d4
  3. Restart VM

    Terminal window
    qm reboot VMID

Perfect before updates or experiments:

Terminal window
# Create snapshot
qm snapshot VMID pre-upgrade --vmstate 1
# Restore snapshot
qm rollback VMID pre-upgrade
# Delete snapshot
qm delsnapshot VMID pre-upgrade

Kommentarer