Skip to content

Fully Dockerized Home Assistant

I was unable to find a full yet short description on how to install and run a fully dockerized Home Assistant (HA) setup. Knowing myself, I will probably also not deliver on keeping in short but I will do my best.

So what do I mean by fully dockerized Home Assistant? There are numerous ways to get HA up and running on anything from a Raspberry Pi to a normal Windows, Linux or Mac computer. There is fairly exhaustive documentation on all the different installation methods, with the “Home Assistant Operating System” option on a Raspberry the easiest and probably most used choice.
This is also how I started gathering my first experience with HA and it’s great to get started and learn just how powerful HA is when it comes to bringing together all those “smart” devices in your home.

However, the ease of setup using the “Home Assistant Operating System” approach on a Raspberry has some disadvantages which eventually led me down a different path. The biggest issue for me was “poor” performance of the Raspberry compared to standard PC hardware, especially with respect to storage. The standard Raspi install on an SD card is just not a great storage solution when it comes to speed, size or reliability. With a small HA setup this does not matter, but as I added more and more devices and functionality, my databases grew and my system was less and less responsive.

Of course one can find ways to connect better and faster storage to a Raspi, but I decided to rather use a dedicated mini PC. As of the time of writing this, Raspis are very hard to find for a good price while older mini PCs can be found fairly cheaply on the used market.

My goal was to find a PC that can not only run HA and all the other services I’d like for home automation, logging and graphing but also act as a sort of general purpose home server to run for example a PLEX server which serves media to our TV or mobile devices. I also wanted enough power under the hood to maybe do some simple AI on images or videos streams should the need arise one day.
In short, my hardware requirements were (in decreasing order of importance):

  • fast CPUenough speed for video transcoding (ideally hardware accelerated) and simple AI
  • fast storage – SSD hard drive for fast and reliable storage
  • power consumption – less than 15 W on average, as this will run 24/7
  • connectivity – 1000 MBit ethernet, WIFI is not recommended for the HA server, USB 3 for optional external devices such as Zigbee dongles etc
  • size – smallish, not super important but I don’t want a server rack yet…

Being from Germany, eBay Kleinanzeigen was the way to go and after a short search I purchased a “Fujitsu ESPRIMO Q910”.

1. Getting started with Debian

2. Setting up Docker and Docker compose

First, install Docker, or to be precise the Docker Engine. I followed these instructions.

sudo apt-get update

sudo apt-get install \
   ca-certificates \
   curl \
   gnupg \
   lsb-release

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

https://docs.docker.com/compose/install/

3. Maintaining our Docker

4. Setting up Home Assistant

4. Setting up Grafana for use with InfluxDB / FLUX

Configuration > Data sources

Add data source > InfluxDB

Query Language: Flux (in beta but work splendid for me)

HTTP > URL: http://[your_IP_here]:8086, eg. http://192.168.178.3:8086, localhost did not work for me

Basic Auth Details > User and Password as defined in the docker-compose.yaml and the corresponding .env file

InfluxDB Details: Organization, Token and Default Bucket have all been define in the previous step when we setup our InfluxDB database.

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.