Journey to Docker
Right before the end of 2017, I updated my repo with a Massive Update. (#292). This was my Home Assistant migration from the Raspberry Pi to a full Docker deployment. For the past few years, I’ve run my entire smart home platform on a Raspberry Pi without issue. As the scope and size of my deployment grew, the Pi began to really struggle. I was seeing slowdowns and timing errors throughout the house. When groups of lights would turn on, they would cycle individually which became increasingly noticeable to everyone in the house. The quick solution was to upgrade the underlying hardware which ran the home’s platform.
After a lot of back and forth weighing the different options, I decided to use a spare laptop I had sitting around doing nothing. The former work laptop represented a substantial hardware upgrade from the humble Pi. Core i7 processor, 12 GB RAM and solid State drive. Since it was a laptop, it would be electricity friendly and have a built in monitor.. Next decision point was the OS. I had briefly considered Hass.io but after looking into it, it didn’t seem like the right fit for a power user like myself. I did love the idea of a preconfigured environment though and after talking a lot in the forums and on my repo, I decided to give Docker a go.
TLDR; Home Assistant on Docker is GREAT! I should have made this move a long time ago.
Even though I should have done this a long time ago, there were always 2 pieces of my configuration that were holding me back to the Pi. The first and biggest was the EMULATED HUE component. This component allowed me to leverage Amazon Alexa devices to communication with my Home Assistant install. This allowed non supported devices such as Garadget garage door openers or off the shelf RGB LED strips to be fully accessible and controllable via voice as if they had full native Alexa support. Without this ability, the whole ‘Smart Home’ just doesn’t work for my family. Thankfully, the Home Assistant Developers had just released the Home Assistant Cloud component. Even though it is not meant to replace Emulated Hue, the Cloud Component did EXACTLY that for me. In addition, this put me on back on the active development track for Alexa/HA integrations.
The second roadblock holding back my migration was my 433 MHz outlets. I have quite a few of these inexpensive outlets controlling accent lighting around the house controlled by a 433Mhz Transmitter and receiver attached to the Pi. I really didn’t know how to replace this functionality in a Docker container. Again, my fellow Smart Home enthusiasts offered up a solution..
The RM Pro by Broadlink:
This little spaceship shaped device could learn and transmit 433mhz controls in addition to the expected IR controls most people used it for. The results were amazing. it worked even better than the original Pi transmitter design I had. Increased range and reliability were felt immediately. The 433mhz Etekcity outlets (at ~5 buck each) are now amazing additions to my Smart Home.
Now that those 2 issues were solved, the journey to Docker began.
Here are some of the high level (and some low level) steps I used for my journey to Docker.
First step was to blank slate my laptop by installing Ubuntu Server core on the laptop and then installing Docker. Both of these items were SUPER easy to do. Basically just Etching the Ubuntu image onto a USB drive, rebooting and following the prompts. Nothing crazy at all. The Docker install was even easier.
For Docker and Ubuntu management, I chose Cockpit. It’s probably not the most powerful management system out there but it’s perfect for my dedicated HA environment.
Once Docker was up and running, it was super easy to just import containers into the environment. The ones I have currently running are :
MQTT – image: eclipse-mosquitto:latest
This container provides all the IOT to IOT communications.
Home Assistant – image: homeassistant/home-assistant:latest
This is the latest version of Home Assistant. The container makes it super easy to upgrade and downgrade versions.
HomeBridge – image: oznu/homebridge:latest
This container provides full Apple HomeKit support for all my Home Assistant devices. Works amazingly well.
Dasher – image: clemenstyp/dasher-docker:latest
This container provides support for the few Amazon Dash buttons I have deployed around the house.
Unifi – image: jacobalberty/unifi:latest
This container runs the Ubiquity Unifi software controller to manage the Access Points in the house. Automatic firmware upgrades, configuration consistency and neat client charts and stats.
All of these containers took a few minutes to bring up and the results are incredible. Home Assistant now restarts in under 45 seconds. On the Pi, it was around a 3 minute reboot.
This move to Docker has been great. The underlying technology, although used for my Smart Home set up, is used in enterprises everywhere and is heavily used in Cloud environments like AWS and others.
Thanks for reading! You can find my Docker-Compose file here: