Installera Hass.io på Intel NUC

Home Assistant
En komplett guide för att installera Ubuntu, Docker och Hass.io på din Intel NUC (Guiden går givetvis även att använda för andra datorer än just NUC).

Visningar:

3 933

Betyg:

4.1
(7)

Svårighetsgrad:

Jag är helt ny på Unix men klarade det

Tidsåtgång:

30-45min

För den här guiden behöver du

  • Dator att utföra förberedelserna på
  • Intel NUC
  • Skärm
  • Tangentbord
  • Nätverksanslutning (kabel eller WiFi)
  • USB-minne (8-64GB)


Uppdatering 2019-03-09:
– Förtydligat vissa saker, bland annat hur man skapar SSH-nyckel.
– Lagt notering om att SSH-nyckeln BÖR skapas ifrån arbetsdatorn, via PuTTY.
– Åtgärdat uppdateringskommandot i steget ”Uppdatera Ubuntu” (lagt till sudo).

Inledning

För några månader sedan installerade jag Hass.io på min Raspberry Pi 2, och trots att den blev fullt konfigurerad så kom jag aldrig riktigt igång med att använda den, utan den stod i ett par månader och bara loggade mina enheters status. Tids nog föll den i glömska och jag behövde strömadaptern till annat så ”pajen” fick ligga strömlös i någon månad.
Sen kom hösten och suget efter kvällspyssel kom krypandes, dags att koppla in ”pajen” igen! Tyvärr visade det sig att den korta tid Home Assistant var igång räckte för att skriva sönder SD-kortet, trots att det var ett lite dyrare kvalitetskort. Trots flera återupplivningsförsök stannade installationen på ungefär samma ställe varje gång och en sektorskanning visade att fyra sektorer var såpass skadade att de inte gick att rädda.
Jag började snegla emot min NUC som tjänstgjorde som TV-dator. Eftersom den använts vid 4-5 tillfällen det senaste året så fick den jobbet, den skulle få ersätta Raspberryn!

Efter att ha läst ett tiotal guider och testat flera av dem tröttnade jag på att alla guider saknade något, gick i fel riktning eller helt enkelt inte fungerade. Jag började fundera ut min drömlösning och sedan plockade jag väl valda delar ur guiderna för att hitta min egna väg.
Jag landade i att köra Ubuntu som operativsystem med Hass.io installerat i en Docker-container.

Installera på andra datorer än NUC

Ifall du vill använda guiden för andra datorer än Intel NUC så ska det fungera alldeles utmärkt. Det enda steget i guiden som egentligen är specifikt för Intel NUC är ”Uppdatera och justera BIOS”, gör du motsvarande på din dator enligt tillverkarens instruktioner är det bara att tuta och köra med resten sen!

Uppdatera och justera BIOS

Hoppa inte över detta steg, en uppdaterad BIOS behövs både för Ubuntu och Docker.

  • Ladda hem senaste BIOS ifrån https://downloadcenter.intel.com och placera filen (*.bio) på USB-minnet
  • Anslut USB-minet till din NUC och starta om den. (Under uppstart trycker du på F7-tangenten för att starta läget BIOS Updater)
  • Välj .bio-filen och kör igång uppdateringen
  • När uppdateringen är färdig startar du om datorn till BIOS genom att trycka på F2-tangenten under uppstart
  • I BIOS, avmarkera ”UEFI Boot” under ”Boot order”
  • Tryck Esc för att avsluta BIOS, välj Yes för att spara inställningarna

Ladda hem Ubuntu och flasha till USB

  • Ladda hem Ubuntu Server ifrån https://www.ubuntu.com/download/server (senaste versionen som i dagsläget stöds av Docker är 18.04.1 LTS)
  • Ladda hem och installera Etcher ifrån https://etcher.io
  • Starta Etcher och välj din Ubuntu-image
  • Etcher kommer automatiskt att välja ditt USB-minne, men skulle den välja fel rättar du till det innan du ”flashar” USB-minnet (Att flasha USB-minnet innebär att allt ifrån imagefilen kopieras till USB-minnet och det blir ”bootbart” – alltså att datorn kan starta ifrån det)

Installera Ubuntu

(För att flytta markören under installationen, använd tabb-tangenten)

  • Anslut USB-minnet till din NUC och starta den
  • Ubuntus installationsprogram bör starta, annars startar du om datorn, trycker på F10-tangenten under uppstart för att komma till ”Boot Menu” och väljer USB-minnet
  • Välj språk och tryck Enter
  • Välj tangentbordslayout, ställ sedan markören på ”Done” och tryck Enter
  • Välj ”Install Ubuntu” och tryck Enter
  • Ifall du vill att din NUC ska ha fast IP anger du det nu
    • Välj aktuellt nätverkskort och tryck Enter
    • Välj Edit IPv4 och tryck Enter
    • Tryck Enter, välj Manual och tryck sedan Enter igen
    • På ”Subnet” anger du vilket nätverk datorn befinner sig på (Ifall IP-adressen är 192.168.0.101 och nätmasken är 255.255.255.0 blir ditt subnät 192.168.0.0/24, är du osäker kan du kolla på denna länk)
    • På ”Address” anger du IP-adressen
    • På ”Gateway” anger du nätverkets gateway-adress (oftast routerns IP-adress)
    • På ”Name servers” anger du nätverkets DNS-adress (oftast routerns IP-adress). Jag angav routerns IP och Googles DNS, Ex. 192.168.0.1,8.8.8.8,8.8.4,4
    • Flytta markören till ”Save” och tryck Enter
  • Flytta markören till ”Done” och tryck Enter
  • Ifall ditt nätverk inte använder en proxy, eller om du inte vet vad en proxy är, kan du trycka Enter
  • Mirror address behöver du inte ändra, tryck Enter
  • Nu är det dags att välja var på hårddisken Ubuntu ska installeras. Ifall du är erfaren på Unix har du säkert dina egna åsikter om detta, men jag valde alternativet ”Use An Entire Disk” (Alltså INTE LVM), tryck Enter för att gå vidare
  • Välj vilken hårddisk du vill installera Ubuntu på och tryck Enter
  • Nu ser du en förteckning över de partitioner som kommer att skapas, tryck Enter
  • Välj ”Continue” och tryck Enter
  • Ange ditt namn, nätverksnamn, användarnamn och lösenord, välj sedan ”Done” och tryck Enter
  • Här får du välja eventuella tillvalsprogram, jag hoppade över dessa (”Done” och Enter)
  • Nu visas installationsförloppet, ganska snart får du välja ”Reboot Now” och trycka Enter
  • Omstart påbörjas, efter ca 10s ber den dig att ta ur USB-minnet och trycka Enter

Klart, nu har du installerat Ubuntu server på din NUC, lättare än du trodde va?

Uppdatera Ubuntu

Är du ovan att arbeta i Unixbaserade operativsystem kan det vara klokt att läsa igenom wikiartikeln ”Några enkla grunder i Unix” nu!

Nu är det dags att logga in i din Ubuntuserver, detta kan du antingen göra lokalt eller ifrån en dator på samma nätverk med SSH-programmet PuTTY. Jag föredrar att göra resterande steg ifrån min vanliga arbetsdator via PuTTY, observera att du måste veta NUC’ens IP för detta.

Starta PuTTY på din arbetsdator, ange ubuntumaskinens IP-nummer i rutan ”Host Name (or IP address) och klicka på Open.

Logga in genom att ange användarnamnet och lösenordet du valde under installationen

host login: user
Password:

Ladda hem de senaste uppdateringarna genom att ange följande kommando

user@host:/$ sudo apt-get update && sudo apt-get full-upgrade -y

Skapa en SSHnyckel för att ansluta emot din Ubuntuserver med PuTTY

Nu kommer vi till något som brukar få de flesta att skruva på sig – säkerhet. Om du aldrig kommer att ansluta till din Ubuntuserver med PuTTY (eller annan SSH-klient) och aldrig kommer ha den exponerad emot internet kan du hoppa över detta steg och gå direkt till ”Förbereda för Docker”

OBS! Det här steget BÖR du göra ifrån din vanliga arbetsdator via PuTTY, annars har du ca 3400 slumpade tecken att skriva av, som MÅSTE vara exakt rätt! Om du inte redan kör via PuTTY och inte vet hur du gör det så gå tillbaka till föregående steg och läs där.

Skapa en dold katalog och navigera till den

user@host:/$ mkdir .ssh && cd .ssh

Skapa en SSH-nyckeln med följande kommando

user@host:/$ ssh-keygen -t rsa -b 4096 -C USER2nuc

Spara filen med namnet USER2nuc (eller vad du väljer att kalla den)
Du kommer att bli ombedd att ange en ”passphrase”, detta kommer vara det lösenord du anger för att logga in via SSH (med t.ex. PuTTY). Du kan välja att lämna din passphrase blank, men jag rekommenderar att du väljer ett lösenord (som du ser till att komma ihåg eller noterar på ett säkert ställe).

Nu ska du göra din nyckelfil godkänd med följande kommando

user@host:/$ cat USER2nuc.pub >> authorized_keys

Nu är det dags att spara din nyckelfil till din arbetsdator, ange följande kommando

user@host:/$ cat USER2nuc

Kopiera innehållet (från ”—–BEGIN RSA PRIVATE KEY—–” till ”—–END RSA PRIVATE KEY—–”) ifrån nyckelfilen och klistra in det i Anteckningar, spara det sen i en fil på din arbetsdator (t.ex. c:\nucssh.ppk).

Starta PuTTYgen på din arbetsdator, välj ”File” > ”Load private key” och peka ut din nyckelfil som du nyss sparat. Klicka på ”Save private key” och ersätt den gamla filen med den nya.

Om du är ovan att arbeta i unixbaserade operativsystem kan det vara bra att läsa wikiartikeln ”Några enkla grunder i Unix” innan du kör vidare!

På din NUC (alltså, lokalt eller via PuTTY), kör följande kommandon

user@host:/$ sudo -s
[sudo] password for user:
root@host:~# vim /etc/ssh/sshd_config

Ändra port för SSH genom att leta upp raden ”#Port 22” och ändra till ”Port 2222” (observera att # ska raderas) (detta kommer att byta din SSH-port från 22 till 2222 vilket är en säkerhetsåtgärd för att minska risken att bot’ar hittar din SSH-port. Ifall du inte ska exponera din NUC emot internet kan du kan du hoppa över detta)

Leta upp rubriken ”# Authentication:”
Ändra raden ”#PermitRootLogin” till ”PermitRootLogin no” (observera att # ska raderas).
Ändra raden ”#StrictModes” till ”StrictModes yes” (observera att # ska raderas).
Ändra raden ”#MaxAuthTries 6” till ”MaxAuthTries 6” (observera att # ska raderas)

Om du vill tillföra extra säkerhet kan du även lägga till raden ”PasswordAuthentication no” nedanför raden ”MaxAuthTries 6”. Detta gör isåfall så att det inte längre går att logga in med bara användarnamn och lösenord, observera att du isåfall kommer bli utelåst ifall du tappar bort din SSHnyckel!

Spara filen och avsluta VIM.
Starta om SSH-tjänsten med följande kommando

root@host:~# /etc/init.d/ssh restart

Starta en ny session av PuTTY.

  • Ange IP-adressen till din NUC och porten du valt tidigare (2222 ifall du följt mitt exempel).
  • Gå till ”Connection > Data” i vänstra menyn och ange ditt Ubuntuanvändarnamn på ”Auto-login username”.
  • Gå till ”Connection > SSH > Auth” i vänstra menyn och peka ut din SSHnyckelfil.
  • Gå tillbaka till ”Session” i vänstra menyn, ange ett sessionsnamn ”NUC” i textfältet under ”Saved Sessions” och tryck på ”Save”.

Nu kan du ansluta till din Ubuntuserver med PuTTY genom att dubbelklicka på ”NUC” i sessionslistan.

Förbereda för Docker

Docker låter dig köra program i en slags virtuella servrar inuti din server, men till skillnad ifrån andra ”virtualiseringssystem” så kör inte Docker ett helt operativsystem inuti den virtuella servern utan endast den aktuella programvaran och dess beroenden – kort sagt, det blir som en virtuell server fast med mycket mindre prestandaförlust!

Börja med att aktivera rootläget

user@host:/$ sudo -s
[sudo] password for user:
root@host:~# 

Ladda hem de senaste paketlistorna med följande kommando

root@host:~# apt-get update

Nu är det dags att installera alla beroenden, det gör du med följande kommandon:

root@host:~# apt-get install apt-transport-https
root@host:~# apt-get install ca-certificates
root@host:~# apt-get install curl
root@host:~# apt-get install software-properties-common

Lägg till Docker’s officiella GPGnyckel genom att ange detta kommando:

root@host:~# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -

För att kunna ladda hem Docker måste du ange varifrån det ska hämtas, det gör du med detta kommando:

root@host:~# add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

Nu behöver du återigen uppdatera paketlistorna med följande kommando:

root@host:~# apt-get update

Installera Docker

Starta installationen av Docker

root@host:~# apt-get install docker-ce

Verifiera att Docker installerats korrekt genom att köra igång test-containern ”hello-world”, detta gör du med följande kommando

root@host:~# docker run hello-world

Det som händer är att containern laddas hem och startas. Så snart den startats visas ett meddelande och sen stängs containern ner igen

Starta Docker automatiskt

Ange att Docker ska starta automatiskt när datorn startar genom att skriva följande kommando

root@host:~# systemctl enable docker

Ifall du vill inaktivera autostart igen använder du detta kommando

root@host:~# systemctl disable docker

Kontrollera att DNS-uppslag fungerar

Docker kan få problem att komma åt DNS-inställningarna på vissa installationer och därför kan det vara bra att testa så att detta fungerar.

Börja med detta kommando för att se så att Docker kan ansluta till internet:

root@host:~# docker run busybox ping -c 1 192.203.230.10

Ifall allt fungerar bör svaret se ut ungefär såhär:

PING 192.203.230.10 (192.203.230.10): 56 data bytes
64 bytes from 192.203.230.10: seq=0 ttl=53 time=5.418 ms

--- 192.203.230.10 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 5.418/5.418/5.418 ms

Testa DNS genom följande kommando:

root@host:~# docker run busybox nslookup google.com

OBS! I svaret kommer det förmodligen stå att den inte fick något svar ifrån google.com (*** Can’t find google.com: No answer), men den delen av svaret du ska titta efter är denna:

Non-authoritative answer:
Name:   google.com
Address: 172.217.20.46

Ifall DNS-uppslaget inte kan göras behöver du redigera en configfil, detta gör du med följande kommando:

root@host:~# vim etc/docker/daemon.json

Filen ska innehålla följande (byt ut värdena emot din primära och sekundära DNS-server):

	{
	    "dns": ["192.168.0.1", "8.8.8.8"]
	}

Spara och stäng filen. Starta sedan om Docker:

root@host:~# service docker restart

Testa nu igen ifall du kan slå upp google.com:

root@host:~# docker run busybox nslookup google.com

Installera Hass.io

Ifall du inte är i rootläge, starta det

user@host:/$ sudo -s

Börja med att installera nödvändiga paket med följande kommandon

root@host:~# add-apt-repository universe
root@host:~# apt-get update
root@host:~# apt-get install apparmor-utils
root@host:~# apt-get install apt-transport-https
root@host:~# apt-get install avahi-daemon
root@host:~# apt-get install ca-certificates
root@host:~# apt-get install curl
root@host:~# apt-get install dbus
root@host:~# apt-get install jq
root@host:~# apt-get install network-manager
root@host:~# apt-get install socat
root@host:~# apt-get install software-properties-common

Vissa av dessa installerades redan vid Dockerinstallationen, men jag väljer att ta med dem ändå eftersom möjligheten finns att någon bara läser delen om att installera Hass.io

Installera Hass.io med ett av följande kommandon (det första är det jag använt och det andra kom in som tips ifrån en användare som upptäckt att det kommandot fungerade bättre, jag har själv inte hunnit testa det)

root@host:~# curl -sL https://raw.githubusercontent.com/home-assistant/hassio-build/master/install/hassio_install | bash -s
root@host:~# curl -sL "https://raw.githubusercontent.com/home-assistant/hassio-installer/master/hassio_install.sh" | bash -s

Du har nu tagit dig igenom hela installationen av Ubuntu, Docker och Hass.io – det var inte så svårt som du trodde va?

Oh, jag höll på att glömma – nu bör du komma åt Hass.io genom att surfa till http://[IP-ADRESS]:8123 (byt ut [IP-ADRESS] emot IP-adressen för din NUC)

Portainer.io

Du vet förmodligen inte om det än, men du vill även installera Portainer.io. Det är ett grafiskt skal till Docker där du enkelt kan hantera dina Dockercontaintrar (installerade program) – helt enkelt grymt!

Skapa först en volym

root@host:~# docker volume create portainer_data

Dags att ladda hem Portainer.io

root@host:~# docker create --name=portainer --restart=always -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

För att starta Portainer.io anger du detta kommando

root@host:~# docker start portainer

Nu ska du kunna surfa till http://[IP-ADRESS]:9000 (byt ut [IP-ADRESS] emot IP-adressen för din NUC). Det första du ska göra är att skapa ett konto. När du får frågan om local eller external, välj local.

Hur bra var den här guiden?

Klicka på en stjärna för att betygsätta

Betyg 4.1 / 5. Antal röster 7

Bli först med att betygsätta denna guide!

Eftersom du tyckte den här guiden var bra...

Följ oss på sociala medier, så missar du inte nästa guide!

Jag beklagar att du inte var nöjd med guiden!

Hjälp mig att göra bättre guider i framtiden.

Vad saknades / vad var fel?

6 kommentarer till “Installera Hass.io på Intel NUC”

  1. Tack för guiden, bra!
    Förslag till korrigering dock för installationen av Hass.io, detta fungerar bättre upptäckte jag:
    root@host:/# curl -sL ”https://raw.githubusercontent.com/home-assistant/hassio-installer/master/hassio_install.sh” | bash -s

  2. Tusen tack för guiden!! Precis vad jag söker nu när trådfri inte fungerar så bra med Google assistant.
    Har en NUC med 32GB SSD går det lika bra att använda den eller skrivs den sönder?

    1. Ledsen för sent svar, det har varit mycket annat än hemautomation för min del på senaste tiden.
      Du har förmodligen redan testat själv, men för andra som befinner sig i samma sits – det bör fungera jättebra!

  3. Tack för en bra guide, alla steg gick bra förutom det med SSH. Jag gjorde inte det steget direkt utan gjorde det några dagar senare.

    Det gick bra att följa stegen i SSH-avsnittet till slutet, men när jag kommer till sista steget att starta om ssh med kommandot ”/etc/init.d/ssh restart” så får jag ett felmeddelande. Tyvärr så startade jag om hela servern efter detta och nu kan jag inte längre logga in. Vad har jag för alternativ för att lösa det?

    1. Lade du till PasswordAuthentication no i /etc/ssh/sshd_config? Isåfall behöver du använda nyckelfilen när du ansluter.
      Jag kan yra i nattmössan nu (ligger redan i sängen) men du bör kunna logga in lokalt precis som tidigare, och återställa ändringarna den vägen.

Lämna ett svar