Docker is a critical tool for many home automation enthusiasts. It allows you to easily download and deliver software in isolated packages called containers which is useful if you are constantly experimenting with new platforms. All you need is a piece of hardware with sufficient processing power (all major platforms are supported) and a basic understanding of how Docker containers work. I run Docker on my Synology NAS which provides 24×7 uptime and a nice Docker UI from Synology. Here are some of my favorite use cases.
Table of Contents
Home Assistant
Installation instructions: https://www.home-assistant.io/docs/installation/docker/
Home Assistant is a very powerful open source home automation platform with a large community around it. It is a local platform and such relies on your local hardware instead of some cloud capability. I initially ran Home Assistant on my Mac, but it was always cumbersome to monitor, restart or update the instance.
With Docker, it is much easier – I can keep an eye on RAM requirements (Home Assistant can be a very memory-intense application depending on your use case), update the container when a new version comes out and restart it when things go wrong. If you are not happy with the limited optionality and compatibility of Apple HomeKit and Google Home, definitely look into Home Assistant. You can find some of my favorite recipes and dashboards in the Home Assistant category.
Grafana + InfluxDB
Installation instructions: https://www.home-assistant.io/blog/2017/04/25/influxdb-grafana-docker/
Home Assistant generates a lot of data and typically retains this information for a limited time (7-10 days) for performance reasons. If you want to understand long-term data trends and perform some more advanced analysis, you will need to ask Home Assistant to store this data in a dedicated database. Most users choose InfluxDB since it performs very well in storing and retrieving time series data. Other popular option includes MariaDB (which also comes as a native Synology package in case you are struggling with Docker).
Once you establish the link between the database and Home Assistant, you will still need a visualization platform for all your dashboards, tables, logs and charts. This is where Grafana becomes an incredibly useful tool. You can display years worth of data in a single chart without knowing anything about queries or databases. The interface is very user friendly and requires almost no learning curve. Bonus use case – Grafana supports many 3rd party plug-ins and data sources, so you can for example source your workout data from Strava or load spreadsheets from Google Sheets.
Homebridge
Installation instructions: https://github.com/oznu/docker-homebridge
If you are a HomeKit / iOS user, you should look into Homebridge. It allows you to activate an unofficial software bridge and enable HomeKit functionality for accessories that do not natively support HomeKit. There are 2,000+ Homebridge plugins available today including many TVs, air quality monitors, security systems or smart vacuums. Running Homebridge in a Docker container is ideal for monitoring and maintenance, although I have historically had very few reasons to interact with the platform beyond the initial setup. It can run without any issues for months and requires very little processing power. For more information, check out our tutorial below.
AdGuard Home
Installation instructions: https://hub.docker.com/r/adguard/adguardhome
Many people first learn about ad blocking through one of the many browser extensions. However, most of these extensions tend to have questionable privacy policies and use processing power of your device. For that reason, blocking ads at the network DNS level can be more effective.
- First, you do not need any browser extensions since the traffic is blocked before it hits your device.
- Second, you can monitor what is happening on your network and make adjustments (e.g., you will find many IOT devices unnecessarily querying their home cloud servers).
- Finally, you can use these applications for more than just ad blocking. AdGuard has a very effective filters for adult content, malware, phishing as well as a customizable safe search filter.
One thing to keep in mind is that the DNS server container should be constantly accessible (24/7) and run on a machine with a wired connection (to minimize response time) and enough computing resources (to accommodate all of your clients at the same time). If you want to automate things little bit more, you can link AdGuard with Home Assistant and control when should different filters be enabled.
Wiki.js
Installation instructions: https://docs.requarks.io/install/docker
While Wiki instances are not directly related to home automation, I find it useful to run a local wiki instance that is not exposed outside of my own network. I use wiki to share information with the rest of the household, document my projects and provide an easy access to certain files. There are many alternatives, but I personally liked the UI and capabilities of Wiki.js. It allows you to choose from different content editors (e.g., markdown, code, visual editor), backup content to third-party storage and set very granular user / group permissions. Moreover, the whole platform is very light and in my case Wiki.js is using <50MB of RAM.