Home Automation post header

Install Home Assistant on Proxmox VE

Today we are going to see how to install Home Assistant OS with a single line of code and also how to install Home Assistant Supervised. I am going to show both methods using a virtual machine in Proxmox VE, but the process is applicable to any other device with minimal changes.

I currently use Home Assistant as my home automation controller. I still keep Jeedom on another virtual machine and use it as a “gateway” to control Somfy RTS blinds since the USB dongle I use, RFPlayer, is not supported in Home Assistant. It seemed like a very promising dongle but it did not have the expected success and the company went bankrupt, although it seems that recently it has been taken over by another company so maybe one day…

Home Assistant takes care of all the home automation and the commands for the control of the blinds are sent via MQTT to Jeedom (here you can see how to install Jeedom) which is responsible for forwarding them.

Official ways to install Home Assistant

Right now there are 4 official methods to install Home Assistant:

  • Home Assistant OS
  • Home Assistant Container
  • Home Assistant Core
  • Home Assistant Supervised

Each of them has its advantages and disadvantages, although as we can see here, its authors recommend using one of the first two methods and the last two are recommended only for advanced users.

In the following table we can see the functions offered by each of the installation forms.

As we can see, the two methods that offer the most functions are Home Assistant OS and Home Assistant Supervised.

Home Assistant OS method

We can download ready-to-use Home Assistant OS images from here. There are images for Raspberry Pi, Intel NUC, Odroid, etc. We can also use these images to create a new virtual machine

The advantages of this method are that after installing the image you will have a fully functional Home Assistant installation, with the Supervisor menu and Add-ons, everything is compatible, it is updated regularly and you will not have to worry about the maintenance of the operating system.

As disadvantages, if we install Home Assistant OS, for example on a Raspberry Pi or Odroid, as the operating system is managed by Home Assistant, we will not be able to use the device for anything else. We will also be limited to the Add-ons that are available in the Supervisor Store and nothing else.

In short, this method is recommended if you want (or don’t mind) to have a device dedicated to Home Assistant.

Home Assistant Container method

This is the second of the recommended methods.

Home Assistant Container is very easy to install, everything is supported and is regularly updated. The only requirement is to have a machine with Docker running and an Internet connection to be able to perform the installation.

The biggest advantage of this method is that like any docker container it is very fast to create a new Home Assistant instance and it is just as fast to restore it to its initial state.

The great disadvantage of Home Assistant Container is that we will not have the Supervisor menu or the Add-ons.

Home Assistant Core method

The third of the supported methods is called Home Assistant Core.

We could say that it is similar to the previous method but using a Python virtual environment instead of Docker.

As in the Home Assistant Container method, we will not have either the Supervisor menu or the Add-ons; also the installation requires a bit more work compared to the previous method.

It seems that this method is the origin of the Home Assistant. My first tests were using Home Assistant Core, which at that time was called only Home Assistant.

Then I switched to using the Home Assistant Container method and now I’m testing Home Assistant OS and Home Assistant Supervised on two virtual machines.

Home Assistant Supervised method

The fourth and last of the methods is called Home Assistant Supervised.

With this method we will have the Supervisor menu and the Add-ons. The extra advantage is that the device does not have to be dedicated to Home Assistant as with Home Assistant OS.

As a disadvantage, we will have to take care of the maintenance of the dependencies and the operating system ourselves.

Instalar Home Assistant OS en Proxmox VE

Installing Home Assistant OS on Proxmox VE is very, very simple thanks to a script created by the user Whiskerz007. Here you can find the script and information about how it works.

Since in Proxmox VE we can create as many virtual machines as we want, it will not affect us that the virtual machine cannot have other uses since it will be as simple as creating more virtual machines.

To install Home Assistant OS we will connect by SSH to our Proxmox VE server and execute the following command:

bash -c "$(wget -qLO - https://github.com/whiskerz007/proxmox_hassos_install/raw/master/install.sh)"

Depending on which user we connect to our server we will have to execute the command with sudo.

As we can see in the previous image, once the installation is finished it will indicate that the process has been correct and the ID of the new virtual machine, in my case it is 103.

—– Update 13/06 —–

It seems that in the June version of Home Assistant they have made some changes and when executing the script the following error appears:

[ERROR] 0@115 Unable to handle file extension 'zip'.

Thanks to user mochman for posting the solution here. o solve it we will execute the following commands:

apt install unzip                                                                    # we will install the unzip program

wget https://github.com/whiskerz007/proxmox_hassos_install/raw/master/install.sh     # we will download the script

sed '/*"gz") gunzip -f $FILE;;/a\ \ *"zip") unzip -o $FILE;;' install.sh > temp.sh   # we will modify the install file
mv temp.sh install.sh
chmod 755 install.sh

./install.sh                                                                         # we will execute the installation

—– End of update 13/06 —–

Back in the graphical interface of Proxmox VE we will see that a new virtual machine called hassosova-x.xx has been created. The virtual machine is not started yet, and before starting it we will have to make some small adjustments.

Adjustments in the Hardware page

In the Hardware page of the virtual machine we are going to make the following adjustments:

  1. Memory: The amount with which the virtual machine has been created is 512MB. We are going to increase this amount to at least 1GB.
  2. Processors: The virtual machine has been created with 1 socket and 1 core. We can increase the number of cores to 2 or 4 depending on our hardware.
  3. Hard Disk: By default the virtual machine is created with a 32GB hard disk. This should be enough but otherwise we can configure the size we want.
  4. Network Device: We will check that the assigned Bridge is correct and if we want to connect the virtual machine to a VLAN we will fill in the corresponding field.
  5. USB Device: If we plan to use a USB dongle, for example a Z-wave or Zigbee stick, we will need to add these USB devices by clicking Add – USB Device and choosing the USB device in the drop-down that will appear.

Last steps

After doing the above, we will start the virtual machine; in the “Summary” page of the virtual machine we will see the IP address assigned to this virtual machine.

Now we can connect to Home Assistant through our web browser using the obtained IP address and port 8123.

If we want to connect to the virtual machine using the console or our SSH client we will use the root user, by default it does not have a password.

Install Home Assistant Supervised on Proxmox VE

If we want to install Home Assistant Supervised we will proceed as follows.

The first thing we are going to need is a virtual machine with Debian installed. Here you can see how.

In order to install Home Assistant Supervised our virtual machine has to meet certain requirements. As of today the requirements are as follows, but you can get the latest information here.

  • Debian Linux Debian 10 aka Buster (no derivatives)
  • Docker CE >= 19.03
  • Systemd >= 239
  • NetworkManager >= 1.14.6
  • AppArmor == 2.13.x (built into the kernel)

Let’s quickly review the list above:

  • Debian 10: If we use any other operating system, even if it is based on Debian, we will receive a notice in the Supervisor menu of Home Assistant indicating that we are using an unsupported operating system.
  • Docker: Next we will see how to install it.
  • Systemd: It comes installed by default in Debian and any other Debian-based distribution.
  • NetworkManager: Next we will see how to install it.
  • AppArmor: Next we will see how to install it.

Install dependencies

We will connect to our virtual machine through the Proxmox VE or SSH console and execute the following commands:

sudo apt-get update
sudo apt-get upgrade -y

ANext we will install NetworkManager, AppArmor and Jq:

sudo apt-get install network-manager apparmor-utils jq -y

After this we will restart the virtual machine:

sudo reboot

Install Docker

Once the virtual machine has restarted we will install Docker.

First we update the package list:

sudo apt update

Then we will execute the following command to install some necessary packages so that the apt command can use HTTPS addresses:

sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common

Then we will add the GPC key from the official repository:

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

Next we will add the repository:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

We will update the package list again since we have a new repository:

sudo apt update

We will make sure that we install Docker from the official repository and not from the Debian repository:

apt-cache policy docker-ce

This command will return something similar to this; there are quite a few lines, but we are only interested in the first ones:

docker-ce:
  Installed: (none)
  Candidate: 5:20.10.7~3-0~debian-buster
  Version table:
     5:20.10.7~3-0~debian-buster 500
        500 https://download.docker.com/linux/debian buster/stable amd64 Packages
     5:20.10.6~3-0~debian-buster 500
        500 https://download.docker.com/linux/debian buster/stable amd64 Packages
     5:20.10.5~3-0~debian-buster 500

As we can see, there is no version installed and the candidate version is from the official Docker repository.

Finally we will install Docker:

sudo apt install docker-ce

Next we will check that the service is active:

sudo systemctl status docker

The response to this command will look like this:

● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2021-06-08 18:42:43 CEST; 55s ago
     Docs: https://docs.docker.com
 Main PID: 2639 (dockerd)
    Tasks: 9
   Memory: 48.8M
   CGroup: /system.slice/docker.service
           └─2639 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Configure Docker

Once we have installed Docker and we have made sure that the service is active, we will add our user to the Docker group. This is necessary to avoid having to use sudo when we run Docker commands:

sudo usermod -aG docker ${USER}

We will apply the changes by executing the following command; It will ask us for the password of our user:

su - ${USER}

Next we will verify that our user is a member of the Docker group by executing the following and verifying that our user is in the list that the command returns:

id -nG

Instalar Home Assistant Supervised

It’s time to install Home Assistant Supervised; For this we are going to use the official script of the developers, you can get more information here.

We will execute the following command to download the script:

sudo curl -Lo installer.sh https://raw.githubusercontent.com/home-assistant/supervised-installer/master/installer.sh

When executing the script we are going to have to say on what type of machine we are going to perform the installation, the supported machine types are the following:

  • intel-nuc
  • odroid-c2
  • odroid-n2
  • odroid-xu
  • qemuarm
  • qemuarm-64
  • qemux86
  • qemux86-64
  • raspberrypi
  • raspberrypi2
  • raspberrypi3
  • raspberrypi4
  • raspberrypi3-64
  • raspberrypi4-64
  • tinker

In my case, a virtual machine in Proxmox VE, I need to use qemux86-64 with the following command, you can replace it with the type of machine you need.

sudo bash installer.sh --machine qemux86-64

The installation will begin with the recommendation to use Home Assistant OS or Home Assistant Container instead of this method.

At some point during the installation, it will ask us if we want to overwrite the /etc/network/interfaces file, to which we will respond with Y.

The installation will continue and once finished it will indicate that the installation has been correct and it will indicate the IP address to which we must connect.

We will connect to the IP address and we will see that the installation is still preparing the system. This can take a few minutes depending on our system.

When everything is ready, the screen will appear where we will create our user, define our location… etc.

With this we conclude the installation of Home Assistant Supervised.

Conclusions

As we have seen, each of the methods has its advantages and disadvantages, so everyone must decide the one that best suits their needs.

The biggest drawback of Home Assistant OS is that the machine where we install it is dedicated exclusively to Home Assistant but if we work with virtual machines this problem is irrelevant.

Home Assistant Supervised will require more attention on our part since we must install a specific operating system, all dependencies and we must also keep the operating system updated. In return we will have full control of the operating system.

My personal opinion is that Home Assistant Supervised is more interesting when we do not use virtual machines but something like a Raspberry Pi, since in this way we can give more uses to the Raspberry Pi. When we use a virtual machine, the great advantage of Home Assistant Supervised is no longer important and using Home Assistant OS we will not worry about maintaining the operating system.

What do you think? You can leave your opinions in the comments.

If you have made it this far, thank you very much! If you have any questions, do not hesitate to leave them in the comments and I will do my best to help.

And don’t forget to subscribe to receive an email when new articles are published.

Don’t miss any new post!

We don’t spam! Read more in our privacy policy

Leave a Comment

Your email address will not be published.