Je vous détail dans cet article l’installation de Home-assistant supervised dans un container sur RaspberryPi.

Introduction

Home assistant peut être installé de 4 façon différentes :

  • Hassio OS : Vous utilisez leur système d’exploitation (basé sur alpine)
  • Container : Vous lancez home assistant dans un docker à partir d’un docker-compose
  • Supervised : Vous installez les services de gestion sur votre débian qui s’occuperont de configurer les containers
  • Core : Vous installez tout à la main (python)

J’ai choisis de m’appuyer sur leur manager supervised, les 2 grands interrêts que je vois sont que j’ai la main sur le container où tournera supervised, et qu’il me permet d’installer des add-ons facilement.

Cela signifie que Home-assistant tournera dans des containers dockers géré par supervised qui tournera dans un container LXC de mon Raspberry Pi.

Je pars du principe que vous avez déjà un Raspberry Pi fonctionnel avec une interface bridge (pour des raisons précisés ici).

Installation de LXC et création d’un container attaché au réseau

Installation LXC :

apt-get install lxc

Création du container qui accueillera supervised de Home-assistant :

lxc-create -t download -n homeassistant -- -d debian -r bookworm -a arm64

On édit la configuration du container pour qu’il soit attaché au bon réseau avec l’ip 10.35.7.10, pour cela, on édit le fichier /var/lib/lxc/homeassistant/config ainsi :

lxc.net.0.type = veth
lxc.net.0.link = br357
lxc.net.0.flags = up
lxc.net.0.ipv4.address = 10.35.7.10/24
lxc.net.0.ipv4.gateway = 10.35.7.254

On lance le container et on s’attache dessus :

lxc-start homeassistant

lxc-attach homeassistant

Installation de supervised

A partir d’ici, on est dans le shell du container « homeassistant » (voir commande lxc-attach) qui lancera supervised. On installe les dépendances :

apt install apparmor cifs-utils curl dbus jq libglib2.0-bin lsb-release network-manager nfs-common systemd-journal-remote systemd-resolved udisks2 wget -y

On installe docker :

curl -fsSL get.docker.com | sh

On installe os-agent :

wget https://github.com/home-assistant/os-agent/releases/download/1.6.0/os-agent_1.6.0_linux_aarch64.deb
apt install ./os-agent_1.6.0_linux_aarch64.deb

On Installe les dépendances pour supervised :

wget -O homeassistant-supervised.deb https://github.com/home-assistant/supervised-installer/releases/latest/download/homeassistant-supervised.deb
apt install ./homeassistant-supervised.deb

Répondez quemu-aarch64 quand il vous demandera l’architecture. Attendez quelques minutes qui supervised démarre les instances home-assistant.

Vous pouvez vous rendre sur la page http://10.35.7.85:8123 comme indiqué dans la console, il vous sera proposé de configurer Home-assistant à travers un assistant web.

Remarques

En utilisant Supervised de Home-assistant dans un container LXC, certaines technos ne seront pas compatibles. J’en ai relevé 3 et restent facultatives sans retirer des fonctionnalités à Home-assistant :

  • cgroup v1 (on est en v2)
  • NetworkManager
  • Apparmor

J’ai pu configurer NetworkManager, mais je ne pense pas que cela soit nécessaire. J’ai tout de même eu le problème de « homeassistant.components.hassio.handler.HassioAPIError: 'HomeAssistantCore.update' blocked from execution, no host internet connection« , alors que j’arrive à pinguer depuis le container et même depuis chaque docker…

J’ai réglé ce souci en bypassant ce check avec la commande suivante dans le container lxc :

ha jobs options --ignore-conditions internet_host

En faisant cela, vous aurez une autre alerte ce qui est normal : Ignored job conditions