Как стать автором
Обновить

Установка Home Assistant на PC

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров17K

Несмотря на огромное количество текстов по установке Home Assistant, решил написать свой.

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

Home Assistant развивается, часть мануалов устарела, часть содержит ошибки, часть написана Очень Умными Парнями, живущими в Линуксе и которые пишут что-то вроде: "сделай три раздела, два для систем и один для хомяка, и при установке систем подключай раздел с хомяком к каждой, только не форматируй его постояннo" (с). Это подлинная цитата, причём одна из самых понятных.

Мой текст написан виндузятником для себя и для людей, которые видят командную строку максимум раз в пару дней и не обязаны помнить все ключи команд линкуса. Описан весь процесс, собранный по многим мануалам. На часть мануалов приведена ссылка.

Итак.

В качестве подопытного был выбран ноутбук Acer Aspire E15. Тупо был. Был куплен бэушным семь лет назад за 10 тыс. рублей для разъездного менеджера по принципу: если потеряет – чтобы было не жалко. То есть, он был изрядно устаревшим уже тогда. Потом лежал на антресолях, всеми забытый. Думаю, в каждой мало-мальской приличной фирме такого хлама найдется с десяток штук и вам его подарят за пару пива знакомому сисадмину. Если нет знакомого сисадмина, то авито в помощь. Все равно в итоге получится в те же деньги или чуть дешевле и лучше, чем приличный одноплатник.  Плюсом вы получите нормальный процессор, жесткий диск вместо вечно умирающей флешки и, если повезёт, не совсем дохлую батарею вместо источника бесперебойного питания.

На моём ноуте был проводной Ethernet, кто-то (возможно даже я) уже позаботился дорастить память до 8Gb вместо 4 и воткнуть древний SATA SSD диск на 256 Gb. Для работы с Windows  так себе, но для моих целей – за глаза.

Способ установки - виртуальная машина на Debian. Попробую объяснить, почему.

1. Немного пояснений

1.1. Почему всё-таки, хоть плохонький, но PC, я объяснил выше. Основное – это желание иметь полноценный жесткий диск. Наличие у ноута своего экрана и клавиатуры – тоже плюс в тех редких случаях, когда удалённый доступ почему-либо невозможен.

1.2. С другой стороны, для одного HA, такой машины, всё таки, жирновато, поэтому хочется, если уж затевать такую пьянку, повесить на него функции домашнего NAS на внешнем диске и DLNA сервера, чтобы смотреть скачанные с торрентов купленные на официальных сервисах кино долгими зимними вечерами. Чуть позже добавится маленький Apache и VPN сервер.

1.3. Можно тупо поставить HASSOS, как операционную систему. Тогда DLNA и NAS можно запустить, как плагины. Я попробовал - мне не понравилось. Во-первых очень заморочная установка, во-вторых нужные мне плагины показались мне довольно кривыми.  В третьих, сама операционка и мои права в ней усечены до крайности.  Для Raspberry пойдет, для полноценного ноута – так себе.

1.4. Можно поставить как контейнер в докере. В таком случае вы автоматически лишаетесь плагинов. Среди них есть очень даже полезные. Можно, конечно, каждый из них ставить отдельными контейнерами. По мне – тот еще гемор.

1.5. Более продвинутый вариант – тот же докер в режиме Supervised. Моя предыдущая установка была именно такая. Плагины работают. Не все, правда, но почти все. Но с какого-то обновления пошли необъяснимые проблемы с совместимостью, перестал обновляться супервизор. Стал рыться – проблема не у меня одного. Возникает спорадически у разных людей. Лечение – полная переустановка. Или «Обновитесь до последней версии». А у меня какая??? Я тебя ставил 10 минут назад. Бесит, короче.

1.6. Ну и чисто эстетически мне перестал нравится docker. Постоянная борьба с логами, которые он пишет в самые затейливые места и тихо засирает диск, проблемы с совместимостью пакетов. Нельзя, как в Windows, поставить пакет, а потом его просто удалить. Обязательно либо остаются хвосты по всему диску, либо удаляемый пакет забирает с собой что-то важное. То есть – штука одноразовая. Короче, после очередного раунда безуспешной борьбы, я решил, что у меня есть более важные занятия в жизни, чем разбираться в докере и его причудах. Память позволяет, диск позволяет, процессор позволяет. Итак: виртуальная машина с HASSOS живёт, никому не мешает и ей никто не мешает. В остальной памяти делаю, что хочу.     

2. Предварительные ласки

2.1. Загружаем образ Debian с официального сайта. Можно любой другой дистрибутив Linux. Лично мне нравится Debian своей незамутненностью. Он не пытается быть похожим на винду, как многие, ибо все равно получается плохо. Такой чистый брутал. Стабильный. Ну и много литературы по нему, конечно. Внимание. Некоторые команды отличаются в разных дистрибутивах. Всё, что написано далее – написано про Debian 12.

2.2. Скачиваем с официального сайта последнюю версию Rufus. Вставляем флешку, все настройки по умолчанию, выбираем только что скачанный образ — делаем загрузочную флешку.

3. Установка

3.1. На ноуте, нажинаем F2 при загрузке, проверяем настройки загрузки. В параметрах должно стоять UEFI, флешка первой в порядке загрузки. Корректируем при необходимости.

3.2. Для некоторых дистрибутивов  (например для HASSOS) требуется отключить безопасную загрузку, но соответствующий пункт меню подсвечен серым и не выбирается. Для того, чтобы его активировать, нужно установить пароль супервизора. После этого выбор режима безопасной загрузки становится активным. К счастью, Debian 12 такого не требует. Оставляем, как есть. Если безопасный режим всё-таки выключен, то ИМХО лучше включить.

3.3. Запускается загрузка. Выбираем установку в графическом режиме. Красноглазые поборники расовой чистоты пингвинов конечно фыркнут, но графический режим чисто визуально приятнее. 

3.4. Выбор языка. Выбираем русский, страну, раскладку клавиатуры, часовой пояс. Далее пароли администратора, имя и пароли пользователя и т.п.

3.5. Сетевые карты установились автоматически, но иногда приходится бежать за драйвером. На этот случай полезно иметь под рукой второй компьютер и еще одну флешку.

3.6. Спрашивает про разметку диска. Я весь диск отдал целиком, с разделами по умолчанию. Переспросила - уверен ли я. Уверен. Все данные на диске уничтожены. Плакать поздно.

3.7. Выбор софта. Я оставляю выбор по умолчанию, оболочку Gnome по причинам, указанным в п.1.1, добавляю к умолчанием еще SSH сервер. После этого можно идти пить чай. Что-то устанавливается сразу, что-то подкачивается из интернета и тоже устанавливается. Процесс небыстрый.

3.8. Перезагрузка. Вынимаем флешку. После перезагрузки нелишне проверить в биосе порядок загрузки.  Правим при необходимости.

4. Настраиваем вход через терминал

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

4.2. Теперь можно заходить на него со своего рабочего компьютера по SSH через PuTTY или что-у-вас-там-вместо-телнета.

4.3. Свой логин и пароль, введенные ранее в п.2.4., надеюсь, помним?

5. Включаем себя в группу sudo

5.1. Заходим под рутом. Другой вариант – заходить под своим логином , далее уходить в root командой su –

usermod  -aG sudo ИмяПользователя

5.2. Возвращаемся обратно

su –  "Имя пользователя"

4.3. Проверяем. Например:

sudo ls -la /root

6. Лично мне иногда удобно пользоваться графическим удаленным рабочим столом. Настраиваем его. Опционально.

5.1. Включаем

sudo apt install xrdp

5.2. В Windows набираем «Подключение к удаленному рабочему столу». Получаем примерно это.

5.3. Вводим адрес из п. 3.1. Подключаемся.

Видим что-то вроде этого
Видим что-то вроде этого

7. Убираем засыпание Debian

7.1. Убираем общие засыпания.

sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

7.2. Поскольку у нас ноутбук, нам надо убирать засыпание при закрытии крышки

sudo nano /etc/systemd/logind.conf

7.3. В секции [Login] Находим строчки HandleLidSwitch=  и HandleLidSwitchDocked=

7.4. Ставим ignore

HandleLidSwitch=ignore

HandleLidSwitchDocked=ignore

7.5. Не забываем раскомментировать.

7.6. Сохраняем, выходим,

7.7. Рестарт службы

sudo systemctl restart systemd-logind.service

8. Полезности

8.1 Файл менеджер mc. Опционально. Иногда удобно.

sudo apt install mc

8.2. Пакет управления сетью. Потребуется для следующих шагов.

sudo apt install ethtool

9. Если несмотря на ИБП питание выключилось, а с ним выключился компьютер, полезно иметь возможность разбудить компьютер по сети

9.1. При загрузке, заходим в BIOS. Проверяем в биосе, что WOL включен. Если не включен – включаем.

9.2. Смотрим список сетевых интерфейсов

ip a

9.3. Находим название проводного интерфейса. Обычно это eth0, но бывают варианты. У меня enp3s0

9.4. Делаем временный WOL

sudo ethtool --change enp3s0 wol g

9.5. Проверяем

sudo ethtool enp3s0

9.6. Смотрим вывод. Ищем строчку wake-on: g. Если есть, то всё в порядке.

9.7. Запихиваем это в автозагрузку. Для этого:

9.8. Узнаем путь к ethtool

which ethtool

9.9. Смотрим вывод. У меня оно хранится в /usr/sbin/ethtool

9.10. Создаём файл wol.service в  /etc/systemd/system

sudo nano /etc/systemd/system/wol.service

9.11. В него вписываем:

[Unit]

Description=Enable Wake On Lan

[Service]

Type=oneshot

ExecStart = /usr/sbin/ethtool --change enp3s0 wol g

[Install]

WantedBy=basic.target

9.12. Запускаем службу

sudo systemctl daemon-reload

sudo systemctl enable wol.service

9.13. Проверяем

sudo shutdown

9.14. Будим машину удобным для вас способом. В интерфейсе кинетике для есть специальная кнопочка.

9.15. Если все работает, настраиваем автозапуск будилки на роутере или на другом внешнем устройстве гарантированно запасающемся по сбою питанию. На Keenetic это делается через opkg

10. Устанавливаем виртуальную машину.

(сперта https://g-soft.info/linux/10968/kak-ustanovit-virtualbox-7-0-v-debian/)

10.1. Проверяем зависимости, большая часть уже на месте, те, которых не хватает, устанавливаем.

sudo apt install dirmngr ca-certificates software-properties-common apt-transport-https curl -y

10.2. Необходимо импортировать ключ GPG (GNU Privacy Guard). Ключ GPG является частью системы криптографии с открытым ключом, которая позволяет убедиться в том, что устанавливаемые пакеты являются подлинными и получены из официального репозитория VirtualBox

curl -fSsL https://www.virtualbox.org/download/oracle_vbox_2016.asc | gpg --dearmor | sudo tee /usr/share/keyrings/virtualbox.gpg > /dev/null

10.3. Добавляем репозиторий Virtialbox

echo "deb [arch=$( dpkg --print-architecture ) signed-by=/usr/share/keyrings/virtualbox.gpg] http://download.virtualbox.org/virtualbox/debian $(lsb_release -cs) contrib" | sudo tee /etc/apt/sources.list.d/virtualbox-7.list

10.4. Обновляем список репозиториев

sudo apt update

10.5. Установка Virtual Box

sudo apt install virtualbox-7.0 linux-headers-$(uname -r) -y

10.6. Добавляем пользователя в группу

sudo usermod -aG vboxusers alexl

10.7. Находим значок VirtialBox. Запускаем, проверяем

11. Установка Home assistant.

подсмотрено здесь: https://ivan.bessarabov.ru/blog/how-to-install-home-assistant-in-virtualbox)

11.1. Скачиваем vdi образ с официального сайта https://www.home‑assistant.io/installation/alternative

11.2. Разархивируем

11.3. Открываем виртуальную машину

11.4. На правой панели жмём Создать

11.5. Пишем название (лучше без пробелов)

11.6. Образ ISO оставляем пустым

11.7. Тип: Linux

11.8. Версия: Linux 2.6 / 3.x / 4.x (64-bit).

11.9. Вкладка Оборудование: сколько не жалко, но не менее 2 процессоров и не менее 2GB RAM

11.10. Ставим галку EFI

11.11. Вкладка Жесткий диск: ставим использовать существующий виртуальный диск. Выбираем наш скачанный образ

11.12. Создать машину

11.13. Идем в опции сети. Меняем NAT на bridge

11.14. Запускаем

12. Настройка доступа из сети

12.1. Идем в роутер, видим новое устройство. Это виртуальная машина. Прописываем ей статический адрес

12.2. В настройках роутера прописываем доменное имя на этот адрес и порт 8123

13. Прописываем автозапуск виртуальной машины при перезагрузке.

(https://redos.red-soft.ru/base/arm/os-virtual/virtualbox/virtualbox-autostart/)

13.1. Создаем новую службу

sudo nano /etc/systemd/system/vbox@.service

13.2. Прописываем туда

Description=Virtual Box Guest %I

After=network.target vboxdrv.service

Before=runlevel2.target shutdown.target

[Service]

User=свой юзернайм

Group=vboxusers

Type=forking

Restart=no

TimeoutSec=5min

IgnoreSIGPIPE=no

KillMode=process

GuessMainPID=no

RemainAfterExit=yes

ExecStart=/usr/bin/VBoxManage startvm %i --type headless

ExecStop=/usr/bin/VBoxManage controlvm %i acpipowerbutton

[Install]

WantedBy=multi-user.target

13.3. Реинициализируем службы.

systemctl daemon-reload

13.4. %1 в первой строке – это параметр, куда вставляется имя или идентификатор вашей виртуальной машины. Имя вы знаете из п. 10.5, но идентификатор использовать правильнее. Узнаем его

VBoxManage list vms

13.5. Находим нужную машину, копируем идентификатор, вставляем в следующую команду

sudo systemctl status vbox@идентификатор

13.6. Что‑то вроде:

sudo systemctl status vbox@cea2060b-61a1-44a1-b5df-f9a6b0b82f43

13.7. Если ошибки нет, смотрим статус. После @будет ваш идентификатор.

sudo systemctl status vbox@cea2060b-61a1-44a1-b5df-f9a6b0b82f43

13.8. Если все норм, добавляем в автозагрузку. (идентификатор меняем на свой)

sudo systemctl enable vbox@cea2060b-61a1-44a1-b5df-f9a6b0b82f43

14. Финальная настройка

14.1. Заходим по вашему адресу, например:

http://192.168.0.15:8123

14.2. Или, как у меня

https://Hassio.mydomen.keenetic.pro

14.3. Вводим пароль, логин

14.4. Ждём

14.5. Настраиваем параметры места.

14.6. Пользуемся!

Теги:
Хабы:
Всего голосов 12: ↑7 и ↓5+2
Комментарии31

Публикации

Истории

Ближайшие события

Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург