Best hardware for installing HA?


I have had HA on a RPi3 and it was good, but not as quick as I would like for various things, ffmpeg for one, so I moved to a docker on my QNAP, it works well but I am constantly battling against Z Wave USB flipping between ACM0 and ACM1 and cannot get a persistent mapping to /dev/zwave like I had an the Pi.

So I have a spare laptop I was thinking of using and wondering what is the best OS to install for HA please?


I started on a Pi and eventually upgraded to a dedicated computer for the same reasons. Went with Ubuntu Server 16.04 LTS, works great.

1 Like

I’m running a Intel NUC myself, also because of the performance.

But, take a look in /dev/serial/by-id/ here you will find your usb devices by id instead of the numbered ones.

that doesn’t exist on my qnap and I wish I hadn’t sold my NUC!!! :smiley:

Might try Ubuntu thanks!

I’m using a CentOS 7.3 for the host (HP Gen8 micro server) and home-assistant run in a Debian Jessie based docker container.

I am using HASSIO.
It’s running on Ubuntu server on a proxmox server.

thanks… I am trying to steer clear of hassio and dockers, just want it simple as possible.

So install ubuntu I would just follow this guide?

+1 for Ubuntu server.
I am running an Ubuntu server minimal install VM dedicated to hassio.
This is on ESXi hypervisor on the Xeon version of the cheapo dell T20 server.

@MarkR - actually you make be surprised how simple hassio is.
There is a good discussion of hassio on ubuntu here including input on a minimal ubuntu deployment:

If you have docker on ubuntu then you have huge flexibility to deploy other things that are not yet supported as hassio addons (plex, pihole, openVPN etc etc)

For the first installation of HA I used, also on Ubuntu server 16.04

I’m running it via a Docker on a Synology DS918+ after upgrading from a rpi3 which should stand you in good stead to get started.

You say you want to steer clear of Docker but it really does make things extremely simple. I use a Chromebox flashed with a UEFI bios (basically turning into a Celeron NUC) and a minimal install of Debian Stretch. Then just installed Docker and Docker Compose, and once my docker-compose.yml file was written, getting everything up and running was as simple as docker-compose up -d.

When I need to upgrade, it’s just docker-compose pull to fetch updated images, then docker-compose down to bring down all containers and docker-compose up -d to restart them with their updated versions. Minimal downtime.

This setup is also completely portable between hosts/oses. If my Chromebox dies, I’d just order a new one or repurpose old hardware in the meantime, restore a backup of my /opt directory (where all my containers store their data), copy the Docker-compose.yml file over, and docker-compose up -d to get back up and running.

1 Like

I run it now in a docker on my qnap and I’m having issues with the z wave etc hence why looking to move to a new system.

what benefit would i have running a docker on Ubuntu as apposed to Ubuntu in a virtual environment? I’m a windows tech (ok IT manager for years who WAS a windows engineer :slight_smile: )who dabbles in unix via the qnap and raspbian only, so far :slight_smile:

@MarkR Here’s my two cents on your question.

Don’t conflate a virtualized host and containerized apps: regardless whether you install Ubuntu on bare metal (like me with my Chromebox and Debian) or as a virtual machine in ESX, Proxmox, etc., you could (and I would say should) take advantage of Docker and containerized apps. So make the choice about bare metal vs virtualized os based on your own home IT setup and how complex you want that to be, it doesn’t have anything to do with whether you use Docker.

The real debate here is between the various ways to install Home Assistant, and I’ll use two examples for the sake of debate: 1) installing like a regular program directly on your OS vs 2) using a Docker container.

If you install like any other program, you need to install dependencies. HASS depends first and foremost on Python3 but has a lot of other dependencies, many of which are automatically installed by HASS based on the platforms you define in configuration.yaml. But that isn’t always the case: take the (still ongoing) example of the difficulties people have been having getting IKEA’s TRÅDFRI platform to work - because of issues with the dependencies that the HASS tradfri implementation has, users have had to figure out how to compile/install (among other things) aiocoap, tinydtls, and Cython to get tradfri talking to HASS. With a regular install, in other words, you need to worry about dependencies and installing programs on your OS. May not be a headache, but could be. If something gets messed up, it’s not uncommon to read about people blowing away their whole install and doing it again. Depending on your OS (take CentOS) as an example, you may also need to worry about manually updating Python3, since HASS has deprecated 3.4 and recommends running 3.6 moving forward. And if you use any companion programs to HASS (Homebridge, nginx for reverse proxy, Appdaemon) you need to worry about installing them and their dependencies too. If for some reason you need to reinstall your OS, you’ll need to spend a considerable amount of time reinstalling dependencies and tracking down configurations too.

With docker, you don’t have this problem. The HASS devs define a Docker image that contains all the required dependencies - Python3.6, the tradfri requirements, etc. So you just run one Docker command with a number of options, defining a directory where you want to store your configuration, ports, any devices you want to pass to the container (eg your zwave stick), and so on, and then it runs sandboxed from the rest of your system. Updating is as simple as docker pull imagename, deleting your container, and recreating it with the same options. There are containerized versions of most major software, including the HASS companion apps I mentioned earlier.

I could go on. The problem you are having with your Zwave stick is a QNAP problem, not a Docker problem. On a normal OS, you have access to more tools (including, on Linux, udev rules) to ensure that the naming of devices stays consistent between reboots. is a great step forward for the whole HASS project and is an easy way to get up and running fast with minimal under the hood configuration. It’s great for people who don’t want/need to tinker. I like more control so I ultimately went with my setup and am very happy.

Feel free to ask any questions you might have, I’m happy to share my config in more detail including my Docker specifics.


Superb summary

Totally agree with @hijinx brilliant repy thank you. Even though I use Docker on the QNAP I hadn’t really given it much thought that it is totally contained and I have blown it away several times and got it back in seconds. Hassio isn’t for me for the same reasons you state, I am a tinkerer and how I am learning being on the dark side of unix commands etc

So I have found 6GB ram, a 500GB disk and HP probook 6555b with AMD Turion II Dual-Core N530 / 2.5 GHz, Like I said I wish I hadn’t sold my NUC but hey ho, time to play with Ubuntu or maybe Debain (since I am used t it on the RPi) options options options!

Thanks a lot for this…

If you run hassio on your own linux platform (e.g. Ubuntu, centos etc) then its no different from a docker install of HA from a tinkering perspective. (I assume you’re not hacking your active docker container).

The “benefits” of hassio over docker install on your own linux install are:

  • You get access to the official and unoffical addons. It’s nothing that you can’t deploy yourself in most cases, but the hassio store works quite well, and you get the benefits of support from this community.
  • You get a systemd process to autostart docker. Means upgrades are even easier.
  • You still have the flexibility to run non-hassio stuff in your docker. E.g. I always run portainer in any docker install, and I have it running side by side with hassio since it really helps when debugging add-ons in development.

stop giving me more of a headache with options!! :smiley:

Debian up and running on the laptop, now which way to turn :slight_smile:

Edit, already switched to Ubuntu 16.04

well that was fairly painless (I know I should be working!!)
up and running in a docker on ubuntu

I always had issues on the qnap docker which I never really liked. So that test worked well and might have a play with tonight

If I stick to a docker, is this command looking good to go? zwave stick still in the qnap as that is still live, but you get the idea.

docker run -d -p 8123:8123 --name home-assistant --restart=always --net=host --privileged -v /home/mark/homeassitant/:/config --device /dev/zwave homeassistant/home-assistant

Do you have a GUI version of docker or is there really no need for it? As I said I am a windows person trying to break free from guis :slight_smile:

I use unraid and its docker implementation. I have unraid installed on a liva-x mini pc and just have HA and Appdaemon running on it. Unraid complains that I only have one drive but essentially I am only using unraid for its docker portions and not its file server portions.

Unraid gives the most user friendly docker “gui” I have found so far (I’ve looked but everything else is for datacenters).

Your command looks good :slight_smile:
I dont think you need --privileged AND --device but I dont think it harms.

For docker GUI install portainer.
Its a nice and light web GUI. Really helps find and clean up orphaned containers that wont show in docker -ps, and unused images.

I start it with:

docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock

not worried about mapping a volume for persistence.