Вступление
Обновлен мануал по установке 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 controlsudo 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)
DuD
11.05.2022 19:58А зачем так привязываться к Supervisor? Что такого он делает с HA кроме подняния после падения?
При запуске в docker/docker-compose весь функционал Supervisor выполняет демон докера.
При запуске на голой системе примерно тоже самое можно реализовать с использованием systemd.DaemonGloom
12.05.2022 09:13Суть Home Assistant Supervisor в использовании официальных аддонов, нормально интегрированных с системой, вместо ручного вмешательства каждый раз. Не путайте с обычным линуксовым supervisord, который занимается именно перезапуском.
lenz1986
А может кто-то обьяснить что такое супервайзер и с чем его едят ? просто куда ни гляну все ставят супервайзед версию...
IRT
Набор плагинов, которые на самом деле являются Docker контейнерами, запущенными параллельно с HA, который запущен тоже в Docker контейнере. Supervisor просто управляет этими контейнерами.
Я бы поставил на Raspberry Pi вместо Ubuntu обычный Debian https://raspi.debian.net/daily-images/, там мусора меньше. И HA в Docker, для обновления контейнера из хостового Debian вызывать скрипт:
Alecseyyy
А может и правда стоит ставить на дебиан. Как раз сейчас буду ставить на виртуалку
disinvis
Для Supervisor у них поддерживается только Debian и HA OS. В остальных случаях всегда будет предупреждение об неподдерживаемой ОС.
lenz1986
а цель всего это докер на докере ?
я понимаю что часть вещей можно на докере быстро поднять ... Но по факту не очень понимаю необходимость всего этого. ОНо столько ресурсов отъедает