Вступление

Обновлен мануал по установке Home Assistant (далее для краткости - HA) в связи с выходом новой версии Ubuntu и Home Assistant. В качестве отправной точки взято видео Alex Kvazis Raspberry Pi 4B в корпусе Argon ONE M.2 c SSD диском 128 ГБ, собираем сервер для Home Assistant. Однако автор использует вариант установки Home Assistant Operating System, который является наиболее простым и удобным. В данной же статье будет использоваться способ Home Assistant Supervised.

Варианты установки Home Assistant

Официальный сайт предлагает нам несколько способов установки Home Assistant:

Home Assistant Operating System для Raspberry Pi. Самый простой способ установки: залил образ и нет проблем. Все фичи в наличии. Рекомендован разработчиками. Минус - отсутствие полноценной системы.

Home Assistant Operating System (VM) для Linux. Поднимаем виртуальную машину. Качаем образ. Запускаем. Профит. Да, все фичи на месте. Рекомендован разработчиками. Минус - виртуальная машина более затратна для системы чем Docker. Впрочем, этот способ я не пробовал.

Home Assistant Container. Установка в контейнер Docker. Также рекомендован разработчиками. Минус - нет Supervisor.

Home Assistant Core. Устанавливаем окружение Python. Устанавливаем Home Assistant. Минус - нет Supervisor.

Home Assistant Supervised. Установка в контейнер Docker, но уже с Supervisor в комплекте.

Шаг 0. Установка Ubuntu Server 22.04 LTS

Здесь и далее я буду подключать Raspberry через WiFi. Начнем с того, что пропишем в нашем домашнем DHСP сервере статический IP-адрес Raspberry. Это нужно для удобства, чтобы не выяснять каждый раз, как достучаться до малинки.

Вот официальный туториал как подружить Raspberry и WiFi.

Качаем образ Ubuntu от сюда и заливаем при помощи Balena Etcher на имеющийся под рукой usb-носитель или SD-карту.

Внимание

Возможно, перед началом последующих действий потребуется обновить загрузчик малинки.

sudo apt update
sudo apt upgrade
sudo apt install rpi-eeprom
sudo rpi-eeprom-update -a
sudo reboot -h now

Открываем файл network-configи прописываем туда параметры WiFi. Должно получится что-то вроде:

version: 2
ethernets:
  eth0:
    dhcp4: true
    optional: true
wifis:
  wlan0:
    dhcp4: true
    optional: true
    access-points:
      Название сети:
        password: "сюда пишем пароль"

А теперь немного комментариев разработчиков:

При первой загрузке Raspberry попытается присоединится к WiFi. Эта попытка обречена на провал. Но не расстраивайтесь, просто перезагрузите малинку sudo reboot -h now и все заработает.

Дефолтный логинubuntuпароль ubuntu. При первом запуске пароль придется сменить. Что мы делаем сразу после установки системы? Правильно - обновляемся.

sudo apt update
sudo apt upgrade
sudo reboot -h now

Так же рекомендую воспользоваться сервисом duckdns.org, чтобы получить доступ к системе удаленно. После этого требуется настроить обновление информации о текущем ip адресе. Как это сделать, подробно написано на duckdns.org. Если используете Argon ONE M.2, как у меня, рекомендую настроить power button & fan control
sudo curl https://download.argon40.com/argon1.sh | bash.

Ну и конечно же не забываем пробросить порты 22 - на консоль Ubuntu, 8123 на Home Assistant

Шаг 1. Устанавливаем зависимости

Устанавливаем jq. sudo apt install jq.

Устанавливаем Docker по инструкции с официального сайта.

sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Разработчики требуют, чтобы в системе было установлено Docker, Systemd, NetworkManager, AppArmor. Systemd и AppArmor уже установлены в системе - по ним дополнительных действий не требуется.

Теперь возьмемся за NetworkManager. Для начала устанавливаем его командой sudo apt install network-manager. Добавляем в автозагрузку sudo systemctl enable NetworkManager. Чтобы переключится на него идем в /etc/netplanи редактируем файл конфигурации командой sudo vi /etc/netplan/50-cloud-init.yaml. Примечание: у меня это 50-cloud-init.yaml . Говорят, название может отличаться. Добавляем строку renderer: NetworkManager на уровень ниже (с одним отступом) после строки network:. Обращаем внимание на отступы. В yaml отступы решают. Делаем sudo netplan generateиsudo netplan apply, перезагружаемся. Останавливаем systemd-networkd - он теперь больше не нужен -sudo systemctl stop systemd-networkd и отключаем его от автозагрузкиsudo systemctl disable systemd-networkd, перезагружаемся.

Устанавливаем OS-Agent. В командах ниже ссылка на последнюю версию OS-Agent на момент написания статьи. Перед скачиванием рекомендую уточнить этот вопрос. В любом случае наша архитектура aarch64.

wget github.com/home-assistant/os-agent/releases/download/1.2.2/os-agent_1.2.2_linux_aarch64.deb
sudo dpkg -i os-agent_1.2.2_linux_aarch64.deb

Шаг 2. Устанавливаем Home Assisistant Supervised

Скачиваем установочный файл

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

Но запускать его не спешим. Сначала создаем временный файл командой

sudo vi /etc/default/grub

и добавляем туда строку systemd.unified_cgroup_hierarchy=false.

Запускаем установщик и удаляем временный файл

sudo dpkg -i homeassistant-supervised.deb
sudo rm /etc/default/grub

Ждем когда скрипт отработает до конца. Первая загрузка Home Assistant занимает некоторое время. Будьте терпеливы. Если все прошло нормально, достучаться до HA можно по адресу http://локальный ip малинки:8123.

Вот и все.

Комментарии (7)


  1. lenz1986
    11.05.2022 13:31

    А может кто-то обьяснить что такое супервайзер и с чем его едят ? просто куда ни гляну все ставят супервайзед версию...


    1. IRT
      11.05.2022 15:36

      Набор плагинов, которые на самом деле являются Docker контейнерами, запущенными параллельно с HA, который запущен тоже в Docker контейнере. Supervisor просто управляет этими контейнерами.

      Я бы поставил на Raspberry Pi вместо Ubuntu обычный Debian https://raspi.debian.net/daily-images/, там мусора меньше. И HA в Docker, для обновления контейнера из хостового Debian вызывать скрипт:

      docker pull homeassistant/home-assistant:stable
      docker stop home-assistant
      docker rm home-assistant
      docker run --restart=always -d --name="home-assistant" -v /home/user/homeassistant/:/config -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/home-assistant:stable
      docker image prune --force


      1. Alecseyyy
        11.05.2022 15:50

        А может и правда стоит ставить на дебиан. Как раз сейчас буду ставить на виртуалку


        1. disinvis
          12.05.2022 07:02

          Для Supervisor у них поддерживается только Debian и HA OS. В остальных случаях всегда будет предупреждение об неподдерживаемой ОС.


      1. lenz1986
        11.05.2022 16:13

        а цель всего это докер на докере ?
        я понимаю что часть вещей можно на докере быстро поднять ... Но по факту не очень понимаю необходимость всего этого. ОНо столько ресурсов отъедает


  1. DuD
    11.05.2022 19:58

    А зачем так привязываться к Supervisor? Что такого он делает с HA кроме подняния после падения?
    При запуске в docker/docker-compose весь функционал Supervisor выполняет демон докера.
    При запуске на голой системе примерно тоже самое можно реализовать с использованием systemd.


    1. DaemonGloom
      12.05.2022 09:13

      Суть Home Assistant Supervisor в использовании официальных аддонов, нормально интегрированных с системой, вместо ручного вмешательства каждый раз. Не путайте с обычным линуксовым supervisord, который занимается именно перезапуском.