Skip to content

System Overview

This page describes my system setup. Here you can find software I rely on for running my smart home system.

Prior art

Previously, I've been using Home Assistant OS installation. Home Assistant OS was installed directly on my Raspberry Pi, controlling every aspect of it.

Info

Home Assistant OS is nice, especially for newbies. Supervisor handles everything: networking, addons, updates, backups, etc. This lets you start quickly, automate your home, thinking in a safe box.

Please, use it if you don't fell confident enough in networking, Linux, and DevOps stuff.

The only major downside is an inability to control the system. You cannot host custom software alongside Home Assistant, you don't have full access to your system, you cannot mount external drives.

As my knowledge was growing, so was my demands. Raspberry Pi is a very capable device, so I knew I can host more useful things for my home on it. First of all, I wanted to hook up an external hard drive and stream my media via Plex.

However, leaving Home Assistant OS means no more benefits of Supervisor. I should manage my system myself: network, updates, backups. This bears more responsibility and headache.

I've been developing an alternative solution gradually for a few months, looking for a replacement for every part of the Supervisor's functionality. Then, when I felt confident, I migrated to my new setup.

Ubuntu Server 20.04 LTS

I use Ubuntu as a primary OS for my Raspberry Pi. Ubuntu is a well-maintained Linux distribution with a huge community and large support forums.

It officially supports Raspberry Pi and can be easily installed via the official Raspberry Pi Imager.

Docker

I use Docker for managing all containers in my smart home.

Docker allows to encapsulate everything related to a single service within a container. This approach helps to maintain host system clean and manage (start, stop, update and delete) every container separatly.

docker-compose helps to describe my whole setup in a single file and manage it with a few commands.

Cockpit

Cockpit UI

Cockpit is a web-based graphical interface for servers. Ubuntu is officially supported.

This tool let me easily manage my system from web browser: network, external drives, processes and services, system update, etc.

avahi-daemon

In simple works, Avahi is a tool to make my server with hostname discoverable in local network as hostname.local. This let me avoid typing local IP address every time I want to access my server localy.

smart-home

Thi is just a bash script I wrote for personal need. You can find it here.

This performs typical tasks I do in my smart home, like bootstraping, controlling server, updating, etc.