Instalacja Home Assistant OS jako wirtualna maszyna na Debianie

Autor: Martin Szelcel 6 min. czytania Instalacja Home Assistant OS jako wirtualna maszyna na Debianie

Jeśli już masz istniejący serwer pracujący na Debianie to zdecydowanie najwygodniejszym sposobem na uruchomienie Home Assistanta w twoim domu  jest instalacja Home Assistant OS jako wirtualna maszyna. Dzięki temu Home Assistant będzie działał w całkowicie odizolowanym środowisku od całej reszty twojego serwera, czyli nie będzie konfliktował z innymi usługami na serwerze. Ponadto pozwoli nam to na łatwe aktualzacje całego Home Assistanta z poziomu jego interfejsu. Co najważniejsze jest to oficjalnie wspierana metoda instalacji.

Mostek sieciowy

Zacząć musimy od skonfigurowania mostka sieciowego. Home Assistant powinien mieć swój adres IP oraz musi mieć możliwość swobodnego łączenia się z innymi urządzeniami w domu. Taką funkcje umożliwi nam mostek siecowy, jak go skonfigurować znajdziesz w tym wpisie:

Konfiguracja interfejsów sieciowych na systemie Debian
Ten krótki wpis ma za zadanie pomóc ci skonfigurować interfejs sieciowy na Debianie i pochodnych systemach. Jeżeli chcesz zmienić adres IP na statyczny lub skonfigurować mostek sieciowy, to właśnie tutaj znajdziesz instrukcje jak to zrobić. W celu modyfikacji konfiguracji interfejsów sieciowych otw…

Obsługa wirtualizacji

Aby nasz serwer mógł obsługiwać wirtualne maszyny musimy włączyć wirtualizację w BIOS-ie naszego serwera. Jeśli nie wiesz jak to zrobić, poszukaj tej informacji w instrukcji obsługi twojej płyty albo szukając po jej modelu w Google.

Żeby sprawdzić czy nasz serwer obsługuje wirtualizacje możemy wpisać polecenie

egrep -c '(vmx|svm)' /proc/cpuinfo

Jeśli zwróci one liczbę 0, oznacza to, że wirtualizacja nie jest obsługiwana. Każda inna liczba oznacza że wirtualizacja powinna działać na naszym systemie.

Instalacja KVM

KVM to wydajne środowisko wirtualizacji dla systemów Linux. To dzięki niemu utworzymy wirtualną maszynę z Home Assistantem. Aby zainstalować wszystkie niezbędne zależności do uruchomienia maszyny wirtualnej wystarczy, że wpiszemy następujące polecenie:

sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients ovmf

Spowoduje to zainstalowanie następujących pakietów:

  • qemu-kvm - QEMU to emulator procesora, pakiet ten pozwala go uruchomić w trybie KVM.
  • libvirt-daemon-system - serwis systemowy zarządzający maszynami wirtualnymi.
  • libvirt-clients - pozwala na zarządzanie maszynami wirtualnymi z poziomu terminala (za pomocą polecenia virsh).
  • ovmf - wsparcie dla EFI dla maszyn wirtualnych zamiast tradycyjnego BIOS-u.

Dodatkowo warto zainstalować obsługe maszyn wirtualnych do Cockpita (jeśli go używasz), wtedy będziesz mógł nimi zarządzać z poziomu przeglądarkowego panelu.

sudo apt install cockpit-machines
Interfejs Cockpit do obsługi maszyn wirtualnych

Pobranie obrazu systemu

Najnowszy obraz Home Assistant OS możemy pobrać bezpośrednio z Githuba:

Releases · home-assistant/operating-system
:beginner: Home Assistant Operating System. Contribute to home-assistant/operating-system development by creating an account on GitHub.

Interesuje nas najnowsza wersja obrazu haos_ova-X.X.qcow2.xz, zwóć uwagę na to żeby obraz miał odpowiednie rozszerzenie.

Aby pobrać obraz bezpośrednio na serwer przejdżmy do miejsca w którym chcemy trzymać naszą wirtualną maszynę za pomocą ls, a następnie możemy skopiować link do obrazu z Githuba i pobrać go za pomocą polecenia:

wget <url_do_obrazu>

np.:

wget https://github.com/home-assistant/operating-system/releases/download/9.4/haos_ova-9.4.qcow2.xz

A następnie wypakuj pobrany plik poleceniem:

xz -d -v haos_ova-X.X.qcow2.xz

Oczywiście nazwa pliku będzie u ciebie różnić się wersją.

Utworzenie maszyny wirtualnej

Gdy mamy już obraz pozostało nam utworzyć maszynę wirtualną. Możemy to zrobić za pomocą poniższego polecenia (pamiętaj aby zmienić nazwę pliku na odpowiednią, dodatkowo możesz tutaj zmienić ilośc pamięci RAM z 4096MB, oraz liczbę rdzeni procesora, które chcemy przydzielić tej maszynie, aktualnie są to dwa rdzenie):

sudo virt-install --import --name homeassistant \
--memory 4096 --vcpus 2 --cpu host \
--disk haos_ova-X.X.qcow2,format=qcow2,bus=virtio \
--network bridge=br0,model=virtio \
--graphics none \
--noautoconsole \
--boot uefi

Po wykonaniu tego polecenia nasza maszyna wirtualna Home Assistant'a powinna zostać utworzona i uruchomiona.

Aby maszyna uruchomiała się automatycznie po każdym restarcie serwera wystarczy że wpiszemy polecenie:

sudo virsh autostart homeassistant

Gotowe! Teraz nasza maszyna powinna być widoczna w Cockpicie:

Aby się z nią połączyć musimy poznać jej adres IP. W tym celu możemy skorzystać z konsoli maszyny, znajdziemy ją w Cockpicie po kliknięciu na maszynę.

Maszyna wirtualna i jej konsola widoczna w Cockpicie

Albo jeśli nie używasz albo nie masz dostępu do Cockpita możesz użyć następującego polecenia aby połączyć się z konsolą naszej maszyny wirtualnej:

sudo virsh console homeassistant

Po połączneniu musimy nacisnąć ENTER po czym zostaniemy poproszeni o login, wpisujemy root i powinniśmy zostać wpuszczeni do systemu bez hasła. Aby sprawdzić jaki adres IP ma ta maszyna wpisujemy polecenie:

ip a

Jeden z interfejsów (prawdopodobnie drugi na liście) będzie miał nazwę enp02s lub podobną. Znajdziemy przy nim adres IP tej maszyny w naszej sieci.

Pozostało tylko przejść w przeglądarce na ten adres wraz z portem :8123, aby skonfigurować naszą nową instalację Home Assistanta!

Podłączanie urządzeń USB

Jeśli korzystasz z Zigbee czy Z-Wave pewnie interesuje cię jak podłączyć koordynatora czy inne urządzenie USB do tej maszyny. Jak to zrobić przedstawie w tej sekcji, jeśli jednak nie potrzebujesz podłączać żadnych dodatkowych urządzeń do maszyny możesz śmiało pominąć tą sekcje.

Na naszym hoscie (głównym serwerze) musimy poszukać ID danego urządzenia podłączonego do portu USB. Wpisujemy polecenie:

lsusb -v

Teraz musimy odnaleźć nasze urządzenie. W moim przypadku chcę dodać do mojej maszyny koordynatora Zigbee. Po odnalezieniu go w wyniku polecenia wygląda on tak:

To co nas interesuje to pola idVendor oraz idProduct, musimy je sobie zapisać i użyjemy ich za moment.

Przechodzimy najlepiej do katalogu gdzie trzymamy pobrany plik naszej maszyny wirtualnej i w wybranym edytorze tekstu tworzymy nowy plik. Nazwa jest tutaj dowolna, ja nazwę go homeassistant_usb.xml

nano homeassistant_usb.xml

Jego zawartość musi być następująca:

  <hostdev mode='subsystem' type='usb' managed='yes'>
    <source>
      <vendor id='<vendorID>'/>
      <product id='<productID>'/>
    </source>
  </hostdev>

Pamiętaj aby wpisać tam poprawne wartości dla vendorId oraz productId, tak wygląda to w moim przypadku:

  <hostdev mode='subsystem' type='usb' managed='yes'>
    <source>
      <vendor id='0x1a86'/>
      <product id='0x7523'/>
    </source>
  </hostdev>

Zapisujemy i wychodzimy z pliku, a następnie wpinamy urządzenie do naszej maszyny wirtualnej wpisując polecenie:

sudo virsh attach-device homeassistant --file homeassistant_usb.xml --persistent

Teraz nasze urządzenie USB powinno być już podłączone do wirtualnej maszyny.

Podsumowanie

To już wszystko! Teraz Home Assistant powinien śmigać jako maszyna wirtualna na twoim serwerze. Mam nadzieje że ten poradnik okazał się przydatny i pozwoli ci zacząć nową przygodę z Home Assistantem. Powodzenia!

Jeśli napotkałeś jakieś problemy podczas instalacji koniecznie zostaw komentarz poniżej, okaże się on przydatny dla innych osób, które również natkną się na taki sam problem.