ANNIVERSARY SALE 20.03-26.03
EXCLUSIVE DISCOUNT CODES
SHS5 ($5 off $45) | SHS9 ($9 off $75) | SHS18 ($18 off $150) | SHS25 ($25 off $210) | SHS35 ($35 off $290)
EXCLUDING RU, AE, UZ, BH, KR, AM, KW, YE, FR, SA, ES, KZ, QA, BR, TJ, BY, MD, AZ, TM, KG, GE, OM, US
So, you’ve been using Home Assistant for a while now and decided to move from the Raspberry Pi to something more powerful. You picked up a cheap used Intel NUC Mini PC or maybe a refurbished Dell Optiplex and you want to deploy it as your main Home Assistant server.
That’s all great, only you find out your NUC is really overpowered and would like to have the option to run something else in parallel to your Home Assistant instance. You’ve come across Promox a few times within the community, but thought that it might be too complicated for you to setup and maintain.
Well, developer tteck created a bunch of helper scripts for deploying various different VMs within Promox with simple commands, streamlining the setup process significantly. We can use it to spin up a Home Assistant OS VM in Proxmox and if needed, customize the dedicated resources the VM will use.
We can use these helper scripts to also setup a Zigbee2MQTT VM and separate it from Home Assistant, so it’s always up and running in case of Home Assistant failure. Follow along if you want to find out how to do it.
If you already have Proxmox up and running, jump to Installing Home Assistant on Proxmox section and continue from there.
Proxmox VE is a complete, open-source server management platform for enterprise virtualization. It tightly integrates the KVM hypervisor and Linux Containers (LXC), software-defined storage and networking functionality, on a single platform. With the integrated web-based user interface you can manage VMs and containers, high availability for clusters, or the integrated disaster recovery tools with ease.
For the smart home use case, we can utilize Proxmox and it’s capabilities do deploy different VMs for Home Assistant, Zigbee2MQTT, ESPHome, MQTT Broker or maybe Plex Servers and similar. This will allow you to really utilize the mini PC you just bought.
Create a Proxmox Bootable USB Drive
Before installing Proxmox on your new Mini PC, first, you need to create a bootable USB Drive with the latest version of Proxmox. You can do this by flashing the ISO file either with Balena Etcher or Rufus.
1. Download Balena Etcher and install it
2. Download the latest Proxmox VE ISO Installer and save it
3. Insert the USB drive in your PC
4. Open Balena Etcher and click Flash from file
5. Select the Proxmox ISO file you just downloaded
6. Click Select target and choose your USB Drive
7. Click Flash and wait for the process to finish
8. Depending on the speed of your USB Drive, the process should take ~2-5minutes
9. You will get a Flash complete! confirmation
10. Close Balena Etcher
11. Safely remove hardware (USB)
12. You are ready to install Proxmox on your Mini PC
Install Proxmox on your Mini PC
1. Plug in the USB Drive you just created in your Mini PC
2. Power it on, and navigate to BIOS (Usually by pressing DEL or F10 key during boot)
– Depending on your model, the BIOS will look differently and certain things may be labelled differently. But in general, you need to tweak the following settings:
– Make sure Secure Boot is disabled
– Make sure Legacy Boot is enabled
– Make sure Virtualization Technology is enabled
3. Save your BIOS settings and reboot
4. Enter your Boot Order Menu (Usually F8 key)
5. Select your USB Drive and hit enter
6. You will be presented with the Proxmox Welcome Screen
7. Select Install Proxmox VE
8. Accept the License Agreement and hit Next
9. Select the Hard Drive you want to install Proxmox to and hit Next
10. Select your Country, Time zone and Keyboard layout
– Make sure select the correct information, as Proxmox is heavily reliant on the time zone to synchronize everything
11. Set a password and e-mail and click Next
– Password needs to be at least 8 characters, containing letters and numbers
– You will use this password for the initial Proxmox login
– E-mail is used for alert notifications (backup failures etc.)
12. Setup your Network configuration and click Next
– Set Hostname (pve.proxmox or pve.smarthomescene)
– IP Address, Gateway and DNS Settings should automatically populate if you have the Mini PC plugged to your home network
13. Wait for the process to finish
14. Installation successful should appear on the screen
15. Click Reboot and after a couple of minutes you can access your Promox server from the IP address you gave it
Installing Home Assistant on Promox
1. Open your Proxmox instance by navigating to IP_Address:8006 from your main PC
2. You will get a warning message Your connection is not private
3. Click Advanced and click Proceed to IP_Address
4. On the Promox login screen login with the credentials:
– Username: root
– Password: password you set during installation
5. You will get a message saying you do not have a valid subscription
– This is showing up because you don’t have a valid enterprise license
– We will clean this up with a script too
6. Before we deploy Home Assistant, we need to update Proxmox packages
7. On the left side of the screen, select your VM and click Updates
8. Click Refresh and click Upgrade
9. A dialog window will popup, going through the available package updates
10. You may get another license warning, just ignore it
11. If you get a confirmation dialog, type in “y” and hit enter
12. If you get a dialog asking the Keyboard encoding select UTF-8 and English
13. You will get a your system is up to date message
14. Close the window and you are done
15. If you click Refresh again, the package list should disappear since you already updated them
16. To Install Home Assistant, we are going to use a script by tteck which will automate the process significantly
17. Running this script will:
– Find, download and extract the official KVM (qcow2) Home Assistant OS image
– Define user settings, import and attach disk, set boot order and start the VM automatically
– Install the VM with Default Settings: 4GB RAM, 32GB Storage and 2vCPU cores
– Settings can be tweaked during installation
18. Click your VM on the left and select Shell
19. Copy the following command to run the script and hit enter:
bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/vm/haos-vm.sh)"Code language: YAML (yaml)
20. The wizard will ask you to confirm that you want to create a Home Assistant OS VM
21. Select Yes and click confirm
22. On the next screen, choose either Default settings or Advanced
– Default settings are fine for a Home Assistant OS install, but you can assign more RAM and Storage if you need to
23. If you choose Advanced Settings, you will be prompted to choose:
– Home Assistant OS Version (Stable, Beta)
– VM Machine ID
– Machine type
– Allocated CPU Cores
– Allocated RAM Memory
24. Select the final Yes to confirm
25. Wait for the script to download, extract and install the latest KVM image of HA OS
26. Once you get a Completed Successfully message, HA is installed
27. To see the IP address your router assigned to your Home Assistant VM instance, click your node on the left
28. Select your newly created Home Assistant VM
29. The IP address is displayed in the middle
– Use it to access Home Assistant in your web browser 192.168.xxx.xxx:8123
30. Finished, you’ve just install HA OS on Proxmox!
(Optional) USB Passthrough to Home Assistant VM
If you use a Zigbee or a Z-Wave dongle, there is one additional step you must do in order to allow the Home Assistant VM to read your attached USB device.
1. Attach your USB Device (Zigbee dongle) to your Mini PC
2. Select your Home Assistant VM on the left
3. Select Hardware from the Menu
4. Click Add at the top bar
5. Select USB Device
6. Select Use USB Vendor/Device ID from the menu
7. Select your USB Device (Zigbee/Z-Wave Dongle)
8. Click Add
8. At the top corner, press the small arrow next to Shutdown
9. Choose Reboot and confirm to restart the VM
10. If you navigate to Home Assistant, you USB dongle will be auto-discovered
(Optional) Post Install Proxmox VE 7 Script
This step is optional, but I highly suggest you run this script too as it will clean up your Proxmox Virtual Environment, get rid of the Enterprise message that keeps pestering you, add or correct repositories and update Proxmox VE.
To run this script, select your node on the left and click Shell again:
1. Copy the following code in the Shell and hit enter
bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/misc/post-pve-install.sh)"Code language: YAML (yaml)
2. You will get a couple of confirmation prompts
3. Answer “y” to all of them and finally confirm to reboot Proxmox
Deploying Home Assistant on a Proxmox Virtual Environment using these scripts is a breeze. Developer tteck made it a seamless process that even the non-technical can follow. He has a bunch of scripts on his repository, which allow you to further customize your Home Assistant installation in a VE. For example:
- Install Zigbee2MQTT as a separate VM
- Install MQTT Mosquitto Broker as separate VM
- Install ESPHome as a separate VM
- Install MariaDB as a separate VM
- Install InfluxDB as a separate VM
- Deploy AdGuard or Pi-Hole for system-wide ad blocking
- Deploy Tailscale for easy remote access
The advantage of deploying these Home Assistant add-ons separately is they will be independent of Home Assistant and it’s current state (installing, rebooting, breaking changes etc). You can connect them together and setup HA to read data from each one, operating as it should. I intend to cover the process in a separate tutorial.
If you are looking to replace that old Raspberry Pi, this is the way to go, especially if you are not familiar with virtual machines and Linux environments. Consider buying him a coffee for creating these awesome scripts.
4 thoughts on “How To Install Home Assistant on Proxmox: The Easy Way”
Amazing and useful post
Going forward, versioning will no longer be utilized in order to avoid breaking web-links in blogs and YouTube videos (for the final time). So, as a result, the name of the shell script has been updated from `haos-vm-v5.sh` to `haos-vm.sh` .
Thank you for stopping by.
I will update the code and thanks again for creating these awesome scripts!