O czym w artykule:
Pora zainstalować oprogramowanie, które pozwoli mi realizować główne zadanie tego projektu, a mianowicie budowanie własnego inteligentnego mieszkania.
Sprawdzę trzy metody instalacji Home Assistant na systemie Linux Debian – w Dockerze, na VirtualBox i na Proxmox.
Wybrałem Home Assistant, głównie dlatego, że bardzo dynamicznie się ten system rozwija.
Dużo czytałem o nim i oglądałem filmów na YT. Spodobał mi się jego wygląd, łatwość konfiguracji i to że jest sporo dostępnej dokumentacji dla niego.
Sposobów na zainstalowanie go jest pewnie dużo. Ja wybrałem trzy metody by się trochę pobawić tym, a ostatecznie zdecyduję przy której instalacji pozostanę.
Maszyna wirtualna to dobre środowisko dla tego systemu, ale technologia kontenerowa też jest ciekawym rozwiązaniem.
Na pewno warto przy okazji poznać trochę każde z tych rozwiązań.
Docker
Docker to otwarte oprogramowanie służące do realizacji wirtualizacji na poziomie systemu operacyjnego w tak zwanych kontenerach.
Do instalacji Home Assistant w kontenerze Docker użyję specjalną wersja Home Assistant Supervised udostępnianą przez ich twórców.
Wpierw jednak muszę przygotować system i zainstalować samego Dockera.
Loguję się programem putty przez SSH na mój serwer NUC na konto root.
Na początek sprawdzę czy są jakieś aktualizacje dostępne dla pakietów systemowych i zainstaluję je.
root@nuc:~# apt-get update && apt-get upgrade
Instaluję potrzebne pakiety
root@nuc:~# apt-get install -y software-properties-common apparmor-utils apt-transport-https ca-certificates curl dbus jq network-manager
Wyłączam usługę ModemManager
root@nuc:~# systemctl disable ModemManager root@nuc:~# systemctl stop ModemManager
Instaluję kontener Docker oraz oprogramowanie Home Assistant z wykorzystaniem gotowego skryptu.
(podczas instalacji na pytanie Do you want to proceed with overwriting the /etc/network/interface file? wybieram N i Enter)
root@nuc:~# curl -fsSL get.docker.com | sh root@nuc:~# curl -sL "https://raw.githubusercontent.com/Kanga-Who/home-assistant/master/supervised-installer.sh" | bash -s -- -m intel-nuc -d /opt/hassio
Home Assistant zainstalowany.
Na końcu dostaję informację pod jakim adresem mam do niego dostęp – http://10.0.0.2:8123
Oracle VM VirtualBox
„VirtualBox to potężny produkt do wirtualizacji x86 i AMD64 / Intel64 dla przedsiębiorstw i użytku domowego. VirtualBox jest nie tylko niezwykle bogatym w funkcje i wydajnym produktem dla klientów korporacyjnych, ale także jedynym profesjonalnym rozwiązaniem, które jest dostępne bezpłatnie jako oprogramowanie.” – https://www.virtualbox.org
Obsługa środowiska wirtualnego VirtualBox kojarzy się pewnie z graficznym interfejsem.
Natomiast ja zainstaluję i będę obsługiwał je w trybie tekstowym.
Loguję się programem putty przez SSH na mój serwer NUC na konto root.
Na początek sprawdzę czy są jakieś aktualizacje dostępne dla pakietów systemowych i zainstaluję je.
root@nuc:~# apt-get update && apt-get upgrade
Instaluje pakiety gnupg2 i wget oraz pobieram potrzebne klucze GPG do podpisania pakietów.
root@nuc:~# apt -y install gnupg2 wget root@nuc:~# wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | apt-key add - root@nuc:~# wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | apt-key add -
Dodaje repozytorium VirtualBox do lokalnej listy.
root@nuc:~# echo "deb [arch=amd64] http://download.virtualbox.org/virtualbox/debian buster contrib" | tee /etc/apt/sources.list.d/virtualbox.list
Instaluję oprogramowanie VirtualBox.
Do zmiennej $vboxversion pobieram aktualną wersję VirtualBoxa, Na ten moment (03/2021) jest to wersja virtualbox-6.1.
root@nuc:~# apt update
root@nuc:~# apt install linux-headers-$(uname -r) dkms
root@nuc:~# vboxversion=$(apt-get install virtualbox -q | grep -m1 box- | awk '{print $1}')
root@nuc:~# apt install $vboxversion -y
Instaluję pakiet rozszerzeń. Do zmiennej $vboxversion pobieram aktualną wersje pakietu rozszerzeń. Na ten moment (03/2021) jest to wersja 6.1.18.
Podczas instalacji pakietu potwierdzam licencję.
root@nuc:~# cd /root
root@nuc:~# vboxversion=$(wget -qO - https://download.virtualbox.org/virtualbox/LATEST.TXT)
root@nuc:~# wget https://download.virtualbox.org/virtualbox/${vboxversion}/Oracle_VM_VirtualBox_Extension_Pack-${vboxversion}.vbox-extpack
root@nuc:~# VBoxManage extpack install --replace Oracle_VM_VirtualBox_Extension_Pack-${vboxversion}.vbox-extpack
root@nuc:~# rm Oracle_VM_VirtualBox_Extension_Pack-${vboxversion}.vbox-extpack
VirtualBox mam już zainstalowany.
Teraz utworzę wirtualną maszynę na nim z oprogramowaniem Home Assistant.
Przygotowuje miejsce dla maszyny wirtualnej w katalogu /opt/hassos oraz pobieram obraz z Home Assistant i rozpakowuję go.
Do zmiennej $haversion pobieram aktualną wersję obrazu z Home Assistant do wirtualizacji. Na ten moment ma ona numer 5.12.
root@nuc:~# mkdir /opt/hassos
root@nuc:~# cd /opt/hassos
root@nuc:~# haversion=$(wget -qO - https://github.com/home-assistant/operating-system/releases | grep -m1 system/tree/ | grep -o -P '(?<=e=").*(?=")')
root@nuc:~# wget https://github.com/home-assistant/operating-system/releases/download/${haversion}/hassos_ova-${haversion}.vdi.xz
root@nuc:~# apt install xz-utils -y
root@nuc:~# unxz hassos_ova-${haversion}.vdi.xz
Konfiguruję teraz wirtualną maszynę. Przyjmuję dla niej identyfikator HA, przydzielam 2GB pamięci RAM i montuje obraz z Home Assistant.
Interfejs sieciowy konfiguruje w trybie bridge by maszyna wirtualna była widziana w mojej sieci.
root@nuc:~# VBoxManage createvm --basefolder /opt/hassos/ --name HA --ostype "Linux_64" --register
root@nuc:~# VBoxManage modifyvm HA --memory 2048 --vram 128
root@nuc:~# VBoxManage storagectl HA --name "SATA Controller" --add sata --controller IntelAHCI --portcount 1 --bootable on
root@nuc:~# VBoxManage storageattach HA --storagectl "SATA Controller" --device 0 --port 0 --type hdd --medium /opt/hassos/hassos_ova-${haversion}.vdi
root@nuc:~# VBoxManage modifyvm HA --ioapic on
root@nuc:~# VBoxManage modifyvm HA --firmware efi
root@nuc:~# VBoxManage modifyvm HA --nic1 bridged --bridgeadapter1 $(ip -o -4 route show to default | awk '{print $5}')
Pozostało ustawić automatyczny start maszyny wirtualnej podczas uruchamiania systemu Debian.
root@nuc:~# echo -e "VBOXAUTOSTART_DB=/etc/vbox\nVBOXAUTOSTART_CONFIG=/etc/vbox/autostartvm.cfg" | sudo tee /etc/default/virtualbox
root@nuc:~# echo -e "default_policy = deny\nroot = {\nallow = true\n}" | sudo tee /etc/vbox/autostartvm.cfg
root@nuc:~# chgrp vboxusers /etc/vbox
root@nuc:~# chmod 1775 /etc/vbox/
root@nuc:~# VBoxManage setproperty autostartdbpath /etc/vbox
root@nuc:~# VBoxManage modifyvm HA --autostart-enabled on --autostop-type acpishutdown
root@nuc:~# systemctl restart vboxautostart-service
Maszyna wirtualna z Home Assistant już działa.
Router Mikrotik wykrywa mi tą maszynę wirtualną pod nowym adresem IP.Zamieniam go na statyczny adres i nadaje stały numer by łatwo móc się logować później do Home Assistant wiedząc pod jakim IP on jest – INSTRUKCJA
Udostępniam też Internet dla tego adresu IP dopisując go do listy internet_on na routerze Mikrotik – INSTRUKCJA
Dostęp do Home Assistant mam pod adresem http://ADRES_IP_MASZYNY_WIRTUALNEJ:8123
Jeżeli będę chciał wyłączyć i zatrzymać automatyczne uruchamianie tej wirtualnej maszyny to wystarczy że wydam polecenia:
root@nuc:~# systemctl stop vboxautostart-service root@nuc:~# VBoxManage modifyvm HA --autostart-enabled off
Proxmox VE
Zdaję sobie sprawę że Proxmox ma gotową wersję instalacyjną ISO, którą wystarczy zainstalować na komputerze.
Ja jednak będę instalował go ma serwerze gdzie już mam zainstalowany system Debian. Chcę sam kontrolować system, no i mam własny układ partycjonowania dysku na nim. W efekcie końcowym mój serwer stanie się i tak serwerem gotowym do wirtualizacji.
Twórcy Home Assistant udostępniają gotowe obrazy dysków do wirtualizacji z ich programem.
Taki obraz zamontuję później na przygotowanej maszynie wirtualnej.
Ale wpierw zainstaluję Proxmox.
Loguję się programem putty przez SSH na mój serwer NUC na konto root.
Na początek sprawdzę czy są jakieś aktualizacje dostępne dla pakietów systemowych i zainstaluję je.
root@nuc:~# apt-get update && apt-get upgrade
Dodaje repozytorium Proxmox do lokalnej listy.
root@nuc:~# echo "deb [arch=amd64] http://download.proxmox.com/debian/pve buster pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
Instaluje pakiety gnupg2 i wget oraz pobieram potrzebne klucze GPG do podpisania pakietów.
root@nuc:~# apt install -y gnupg2 wget root@nuc:~# wget http://download.proxmox.com/debian/proxmox-ve-release-6.x.gpg -O /etc/apt/trusted.gpg.d/proxmox-ve-release-6.x.gpg root@nuc:~# chmod +r /etc/apt/trusted.gpg.d/proxmox-ve-release-6.x.gpg
Instaluje oprogramowanie Proxmox.
root@nuc:~# apt update root@nuc:~# apt install -y proxmox-ve postfix open-iscsi
Podczas instalacji w oknie Serwer i narzędzia Samba wybieram Nie.

W oknie Postfix Configuration zaznaczam brak konfiguracji i OK.

W oknie Konfiguracja pakietu grub-pc zaznaczam keep the local version currently installed i OK

Po zainstalowaniu Proxmox usuwam jeszcze pakiet os-prober by nie tworzył wpisów GRUB o podwójnym rozruchu na partycjach dysku. Proxmox mam zainstalowany na Debianie.
root@nuc:~# apt remove -y os-prober
Usuwam też stare jądro systemu gdyż Proxmox zainstalował własne.
root@nuc:~# apt remove linux-image-amd64 'linux-image-4.19*' root@nuc:~# update-grub
Podczas instalacji dodała się też lista repozytorium dla wersji Enterprise. Usuwam ją gdyż nie posiadam subskrypcji.
root@nuc:~# rm /etc/apt/sources.list.d/pve-enterprise.list
Na koniec restartuje mój serwer.
root@nuc:~# reboot
Proxmox już działa na moim systemie Debian.
Łączę się z nim z przez przeglądarkę WWW wpisując adres serwera na porcie 8006 – https://10.0.0.2:8006
Na oknie logowania ustawiam język na Polish, nazwę użytkownika wpisuje root, hasło takie samo jak na serwer Debian, a autoryzację ustawiam na Linux PAM standard authentication i loguję się.

Po zalogowaniu system informuje mnie ze nie mam subskrypcji. Nie jest mi ona potrzebna gdyż dla użytku domowego program jest darmowy. Potwierdzam to.

Jako pierwsze ustawiam sieć. Wybieram z lewego menu widoków mój serwer nuc i dalej w sekcji System wybieram Sieć.
Na liście widzę koją kartę sieciową. Zaznaczam ją i u góry klikam przycisk Usuń, co powoduje wyczyszczenie adresów na niej.
Wybieram przycisk Utwórz -> Linux Bridge.
W oknie w polu IPv4/CIDR wpisuję adres IP serwera jaki był na karcie sieciowej, czyli 10.0.0.2/8, a polu Brama (IPv4) wpisuję 10.0.0.1, a polu Porty wpisuję nazwę mojej karty sieciowej jaka widnieje na liście (eno1 albo enp1s0). Wciskam przycisk Utwórz.

Wybieram przycisk Zastosuj zmiany i potwierdzam.
Proxmox jest gotowy by utworzyć na nim maszynę wirtualną z Home Assistant.
| Wybieram przycisk w prawym górnym rogu Utwórz VM.
Na zakładce Główne w polu Nazwa wpisuję home-assistant Wybieram Dalej. |
![]() |
| Na zakładce System operacyjny zaznaczam Nie używaj żadnego nośnika.
Wybieram Dalej. |
![]() |
| Na zakładce System w polu BIOS wybieram OVMF (UEFI), a w polu Magazyn danych wybieram dostępny dysk local.
Wybieram Dalej. |
![]() |
| Na zakładce Dysk w polu Rozmiar dysku wpisuję 2.
Wielkość dysku nie ma tu znaczenia gdyż podmienię go później gotowym obrazem dysku Home Assistant. Wybieram Dalej. |
![]() |
| Na zakładce CPU w polu Rdzenie wpisuję 2.
Wybieram Dalej. |
![]() |
| Na zakładce Pamięć w polu Pamięć wpisuję 4096.
Mój serwer ma 8GB RAMu, dla Home Assistant przydzielam 4GB. Wybieram Dalej. |
![]() |
| Na zakładce Sieć nic nie zmieniam.
Wybieram Dalej. |
![]() |
| Na zakładce Potwierdź upewniam się że nie jest zaznaczone Uruchom po utworzeniu.
Uruchomię ją później po podmianie obrazu dysku na ten z Home Assistant. Wybieram Koniec. |
![]() |
Pobiorę teraz obraz dysku z Home Assistant OS.
Loguję się programem putty przez SSH na mój serwer NUC na konto root.
Przygotowuje miejsce na obraz oraz pobieram obraz z Home Assistant i rozpakowuję go.
Do zmiennej $haversion pobieram aktualną wersję obrazu z Home Assistant OS. Na ten moment ma ona numer 5.12.
root@nuc:~# mkdir /opt/hassos-pvm
root@nuc:~# cd /opt/hassos-pvm
root@nuc:~# haversion=$(wget -qO - https://github.com/home-assistant/operating-system/releases | grep -m1 system/tree/ | grep -o -P '(?<=e=").*(?=")')
root@nuc:~# wget https://github.com/home-assistant/operating-system/releases/download/${haversion}/hassos_ova-${haversion}.qcow2.xz
root@nuc:~# apt install -y xz-utils
root@nuc:~# unxz hassos_ova-${haversion}.qcow2.xz
Linkuję teraz pobrany obraz Home Assistant OS z utworzoną maszyną wirtualną na Poxmox.
root@nuc:~# qm importdisk 100 hassos_ova-${haversion}.qcow2 local --format qcow2
Wracam do panelu Proxmox VE na przeglądarce WWW.
| Z lewej we Widoku serwerów rozwijam mój serwer nuc i zaznaczam maszynę wirtualną 100 (home-assistant).
Wybieram sekcję Sprzęt, zaznaczam na liście Dysk (scsi0) i wybieram przycisk Odłącz i potwierdzam. Klikam dwa razy na liście na Niewykorzystany dysk 0 i w otwartym nowym okienku wybieram przycisk Dodaj. Wybieram na liście Niewykorzystany dysk 1 i wybieram u góry przycisk Usuń i potwierdzam. |
![]() |
| Wybieram sekcję Opcje.
Klikam dwa razy na liście na QEMU Guest Agent i w okienku zaznaczam pole Użyj QEMU Guest Agent. Zatwierdzam OK.
Klikam dwa razy na liście na Kolejność uruchamiania i w okienku wyłączam urządzenia ide2 oraz net0, a włączam urządzenie scsi0. Zatwierdzam OK.
|
![]() |
Mogę już uruchomić maszynę wirtualną.
Wybieram przycisk Uruchom w górnej prawej części ekranu.
W sekcji Podsumowanie mam informację o uruchomionej maszynie z Home Assistant.
Maszyna wirtualna z Home Assistant już działa.
Router Mikrotik wykrywa mi tą maszynę wirtualną pod nowym adresem IP.Zamieniam go na statyczny adres i nadaje stały numer by łatwo móc się logować później do Home Assistant wiedząc pod jakim IP on jest – INSTRUKCJA
Udostępniam też Internet dla tego adresu IP dopisując go do listy internet_on na routerze Mikrotik – INSTRUKCJA
Dostęp do Home Assistant mam pod adresem http://ADRES_IP_MASZYNY_WIRTUALNEJ:8123
Podsumowanie
Każde z tych rozwiązań ma swoje wady i zalety.
Ja ostatecznie zdecydowałem się na swoim serwerze z Linux Debian zainstalować i używać Home Assistant w wersji Supervised w kontenerze Docker.
Wiem że twórcy Home Assistant próbowali już raz zaprzestać wspierania tej wersji. Jednak pod naciskiem użytkowników wycofali się z tego.
Możliwe że kiedyś jednak zaprzestaną go rozwijać ostatecznie. Wtedy z pewnością przejdę na wirtualizację z wykorzystaniem platformy Proxmox.
VirtualBox jest też ciekawym rozwiązaniem. Można na nim w łatwy sposób uruchamiać maszyny wirtualne i zawsze szybko móc wyłączyć go, aby nie obciążał zasobów sprzętowych serwera, gdy już nie będzie potrzebny.
Wybór więc już padł na Dockera. Home Assistant mam zainstalowany. Kolejnym etapem projektu będzie pierwsze uruchomienie go i już praca głównie na nim podczas dalszego budowania własnego inteligentnego mieszkania.













