Házi szerver kiválasztása, avagy a Raspberry Pi-on túl

Szeretjük a Raspberry Pi mini számítógépeket, hiszen sokoldalú kütyük, amik bírják a strapát. Rengeteg projekt épül erre a platformra, azonban megvannak a korlátai. De merre tovább, ha úgy érezzük kicsit több kell?

Nálam a málna az okosotthon vezérlő szerepét töltötte be Home Assistant segítségével, de hogy pontosabb legyek a népszerű Hass.io verzió futott rajta. Ez a verzió sok hasznos dolgot hoz, mint például az egy kattintásos frissítés, illetve az addonok támogatása. Az egész rendszer egy dockerizált megoldás, ami hasonló mint amiről korábban már írtunk. Ez amúgy nagyon szuperül működik is, viszont vannak hátulütői is. A Home Assistant rengeteg adatot ír ki magának, hiszen alapból szinte mindent loggol. Ezt a legtöbb memóriakártya nem szereti, ezért körültekintően válasszuk ki a megfelelőt, olyat vegyünk, ami bírja a folyamatos írás/olvasás műveleteket (mint például a Sandisc A2 sorozat). Másik hasznos és olcsó, de élettartam növelő megoldás, ha passzív és aktív hűtőt is teszünk a málnára, hiszen 0-24 órában menni fog.

De még ezek után is előfordulhat hogy meghal a memóriakártya, amit először a rengeteg hibaüzenet jelez (nem tud menteni, nem tud írni), majd képtelen a rendszer újraindulni. (FONTOS! Már az első ilyen jeleknél mentsük el a beállításainkat, mert visszaállítani nem mindig lesz módunk!) Ha Rpi 3B+ verzióval rendelkezünk, akkor van egy alternatív megoldás is a memóriakártya problémák elkerülésére: cseréljük SSD-re. Igen ebben a változatban már elvileg támogatja a málna az SSD-ről üzemelést. Ez lehet egy kiegészítő lappal (shield) vagy USB-s külső megoldás. Egyedüli hátulütője, hogy minden esetben az USB vezérlőt terheljük, hiszen az rpi-ben a legtöbb periféria ezen csücsül. Ilyen a memóriakártya és a hálókártya is. Örömteli hír, hogy az újonnan megjelent Rpi 4-ben sokat gyorsítottak az USB vezérlőn is, így már sokkal inkább alkalmasabb okosotthon központnak.

Én többszöri újratelepítgetés után döntöttem úgy, hogy már nem képes ez a pici gép kiszolgálni az igényeimet. Ezért elkezdtem nézegetni alternatívákat. A Home Assistant oldala szerint a Hass.io már nem csak az Rpi-ket támogatja, hanem több más mellett az Intel NUC gépeit is. De mik is ezek a NUC-ok? Az Intel már régebb óta a piacon lévő mini PC megoldásai. Ezek nagyon kis méretű ám teljes értékű asztali számítógépek (USDT). Persze nem erőgépekre kell gondolni – bár van olyan kiadás ami játékokhoz lett tervezve, a legtöbb inkább irodai munkára alkalmas –, mégis korrekt hardveres paraméterekkel rendelkeznek: elérhetőek akár 8. generációs i7-es processzorral (laptop verzió), ami mellé akár 32 GB RAM is kérhető. Nagy erősségük még, hogy M2-es SSD fogadására képesek, amik a szokásos SATA változatnál jelentősen gyorsabbak. Portok terén sem kell kompromisszumot kötni, kb minden elérhető (még Thunderbolt 3 is), illetve vezeték nélküli megoldások terén sincs ok panaszra; még Bluetooth 5.0 is van az AC-s wifi mellett. Ezeknek a kis gépeknek egyedüli negatívuma a videó teljesítmény, mivel az (egy-két kivételtől eltekintve) a processzorba épített videóchipben kimerül. Szerencsére okosotthon szerver célra ez bőven elegendő, sőt még sok is.

Szóval a NUC-ok népszerű gépek, nagyon jó ár/érték aránnyal. Mini PC fronton a legfrissebb processzorok mindig ezekbe a gépekbe kerülnek, köszönhetően annak, hogy az Intel gyártja. Persze vannak más alternatívák is, például a Gigabyte Brix, Asus VivoMini vagy a Dell OptiPlex Micro. Aki nem akar ennyit rászánni, annak érdemes körülnézni a használt piacon, kifoghat éppenséggel egy jó NUC-ot, vagy egy Lenovo Thinkcentre Tiny-t 30-40 ezer forint környékén. Utóbbi azért is lehet jó vétel, mivel üzleti használatra lett tervezve, így jól bírja a folyamatos üzemet és valószínűleg nincsen túlhajtva. Én utóbbit választottam, azaz egy Lenovo Thinkcentre M92P-t 8GB RAM-mal, kétmagos i5 3470T processzorral. Ehhez már csak egy SSD kellett, amiből bőven elég egy manapság elég jó áron beszerezhető 120 GB-s változat.

Ha megvan a gép a kiválasztott gép, akkor javasolt a BIOS frissítése. Én ugyanis belefutottam abba az esetbe, hogy a Linux nem volt képes boot-olni SSD-ről, csak a Windows. Ennek oka az is lehet, hogy az én gépem gyárilag Windows-zal került forgalomba. Windows alól egyébként a 2012-es évjáratú BIOS-t könnyen és gyorsan fel lehetett frissíteni 2018-as változatra, amivel a probléma meg is szűnt (FONTOS! Körültekintően járjunk el, mert elrontott BIOS frissítéssel könnyen használhatatlanná válhat a gép!). De ha már a BIOS-nál tartunk, érdemes egy két dolgot beállítani; ilyen például hogy billentyűzet nélkül is képes legyen a gép elindulni. Hasznos lehet még az áramszünet utáni állapotba visszaállás, vagy a gyors boot. Ha virtualizálunk, akkor annak támogatását is érdemes bekapcsolni. De ami a legfontosabb: ne felejtsük el a boot sorrendet ellenőrizni, hogy USB pendrive-ról tudjon a gép indulni. Ez a telepítés miatt szükséges lesz, ahogy az internet elérés is.

Ha megvagyunk az alapokkal, akkor jöhet a fő operációs rendszer kiválasztása. Itt mindenki választhat kedve szerint, ám javaslom, hogy valami Linux rendszer legyen az, mondjuk az Ubuntu. Abból is többféle kiadás létezik, választhatjuk a legújabbat vagy az egyel réggebbi, ám LTS (hosszú lejáratú támogatottság) változatot. Grafikus felületre nem lesz szükségünk, az amúgy is csak feleslegesen lassítaná a gépet, azaz a szerver változat a javasolt. Ha Ubuntu mellett döntöttünk, akkor a telepítés során elég csak az SSH-t választanunk a felkinált lehetőségek közül, a dockert később manuálisan telepítjük. Pár alap adat megadása után hamar fel is épül az alap szerverünk. Ezen a ponton akár a helyére is költöztethetjük, mert innentől nem lesz szükség se monitorra se billentyűzetre a gépen, hiszen akár távolról SSH-n keresztül is meg tudjuk tenni a beállítást.

Telepítéshez én a dockerizált Hass.io változatot választottam, de mi magunk is összerakhatjuk a saját változatunkat. Erről Meki írt egy cikket korábban. Egyéb telepítési módokról itt lehet olvasni.

Első lépésben telepíthetünk pár extra alkalmazást, mint a Midnight Commander, a HTOP vagy éppen a Vim. Utána rakjuk fel a Docker CE változatot:

https://docs.docker.com/install/linux/docker-ce/ubuntu/

Majd az alábbi plusz könyvtárakat:

sudo apt-get install bash jq curl avahi-daemon dbus software-properties-common apparmor-utils

Ha ezzel megvagyunk mehet is fel a Hass.io. A Hass.io nagy előnye a natív telepítéshez képest, hogy ez egy dockerizált környezet, amivel képes önmagát vezérelni. Azaz módunk van az egy kattintásos frissítésre és elérhetővé válnak az addonok. Ezekre később még visszatérek. A Hass.io telepítése így néz ki:

sudo su
curl -sL https://raw.githubusercontent.com/home-assistant/hassio-installer/master/hassio_install.sh | bash -s -- -m intel-nuc -d /home/user/docker/hassio

Két paraméter van amit meg kell említeni. Az egyik a ‘-m’, amivel a gépünk típusát mondhatjuk meg, illetve a ‘-d’ amivel a telepítés helyét. Ezek közül a gép típusa a fontos nekünk, mivel pár változatra optimalizálták a Hass.io build-jét. A részletes leírás és lista a https://github.com/home-assistant/hassio-installer oldalon érhető el. Én ezt a paramétert kihagytam, mivel a gépem nem volt a listában. A parancs sikeres lefutása után elvileg már rendelkezésre áll a HomeAssistant-unk, csak gépeljük be a böngészőnkbe a gép címét a HA portjával: http://GÉP_CÍME:8123/ és fejezzük be a telepítést a felületen. Bővebben a telepítésről itt lehet olvasni.

Ha készen vagyunk a telepítéssel a HA felajánl pár integrációt, hiszen van amit felismer a hálózaton. Ezeket be is állíthatjuk, majd menjünk a Hass.io menün belül az Add-on store-ba. Javaslom a MariaDB feltelepítését, amivel az alapértelmezett SQLite-ot tudjuk lecserélni. Egyszerűen csak megadjuk mint új recorder. Hogy ezt felületről is meg tudjuk tenni, rakjuk fel a Configurator addont. Hogy lássuk a dockerizált környezetünket hasznos lehez még a Portainer feltelepítése. Ennek működéséhez viszont a Protection mode-ot kapcsoljuk ki.

Belső hálózaton nem feltétlenül érdemes a HTTPS kapcsolat beállításával foglalkozni, csak feleslegesen bonyolítjuk vele az életünket. Ha szeretnénk kívülről elérhetővé tenni a Home Assistant-unkat, akkor már van értelme, de ebben az esetben inkább ajánlom a Home Assistant Cloud szolgáltatást havi 5 dollárért. A szolgáltatást a Nabu Casa Ltd biztosítja, ami viszont a Home Assistant kitalálójáé, azaz ezzel támogathatjuk az egész rendszer fejlesztését. Nem mellesleg így könnyen integrálhatjuk Amazon Alexa vagy Google Home asszisztensünket is a Home Assistant-tal.

Ha a fentit választottuk, akkot minden helyen ahol ssl-t kér, nyugodtan állítsuk false-ra az értéket.

Ha egyedi beállítást szeretnénk eszközölni, vagy csak nem tetszik az online editor, akkor felrakhatjuk a Samba Share vagy az FTP addont, ami használatával a hálózaton elérhetővé tehetjük a Home Assistant fájlrendszerét. Ez jó szolgálatot tehet ha külső fájlokat szereténk használni, például Floorplan-hez.

Bár a Home Assistant már alapból tartalmaz MQTT brókert, én lecseréltem az addonként elérhető Mqtt server és Web client medolgásra, amit így könnyebben kezelhetek.

Ha olyan eszközeink vannak, amiken Tasmota firmware fut, akkor nagy segítség lehet a TasmoAdmin addon, amivel egy felületen látjuk és kezelhetjük ezeket az eszközöket. Firmware frissítésre is alkalmas.

Automatizációra sokszor csak nagyon korlátozottan lehet használni a Home Assistant beépített megoldását, ezért sokan kezdték el használni a Node-RED-et. Ezért ez is az ajánlott addonok között van.

Aki szeretné tabletről vezérelni az okosotthonát annak többféle megoldás áll ma már rendelkezésére. Alapvetően a Home Assistant új Lovelace felülete is eléggé rugalmas, hogy ellássa ezt a funkciót, de használhatunk erre appot vagy telepíthetjük a Home Panel-t.

Jó tanácsként javaslom mindenképpen mentsük el a beállításainkat, mert ha valami elromlik, sokat segíthet az újjáépítésben. Másik fontos javaslat a beállítások szeparálása: a jelszavakat mindenképpen a secrets.yaml fájlba szervezzük ki, amire a Home Assistant dokumentációja is kitér. Ezen felül is, ha sok egyforma eszközünk van, akkor érdemes azokat külön fájlokba csoportosítani és úgy hivatkoyni a configuration.yaml fájlban.

Van lehetőségünk egyedi színpaletát használni, amit a customize.yaml-be rakjunk bele. Itt is elérhető sok jó összeállítás, illetve rengeteg egyedi Lovelace kiegészítő.

Otthoni média központ

Mindenki belefutott már abba a problémába, hogy miképp kezelje legjobban média tartalmait legyen az a családi nyaralás képe, vagy éppen kedvenc sorozatainak gyűjteménye. Legegyszerűbb esetben ezt saját gépünk merevlemezén, esetleg külső adathordozón tároljuk. Ekkor azonban mindig csak egy eszköz fér ezekhez hozzá, valljuk be nem kényelmes. Főleg az utóbbi időben, amikor már nem csak a TV, hanem a tablet és a mobilunk kijelzőjén is előszeretettel fogyasztunk ilyen tartalmakat. Ha nincs igényünk saját tartalmak rendszerezett kezelésére, akkor elég lehet nekünk egy jó Netflix, HBO GO vagy egyéb online streaming előfizetés. De mi a helyzet azokkal a tartalmakkal, amik ezeken nem elérhetőek?

Két irány van ezen fájlok kiszolgálására. Az első esetben egyszerű fájl megosztásról beszélhetünk, amikor hálózati meghajtón tesszük elérhetővé ezeket. Erre vehetünk céleszközt, azaz NAS-t, ami egy alacsony fogyasztással rendelkező fájlszerver sok egyéb hasznos szolgáltatással. Előnye hogy folyamatos üzemre tervezték, hátránya, hogy nem éppen olcsó. Alternatívaként építhetünk is magunknak bármilyen PC-ből, csak legyen hely több SSD vagy HDD fogadására. Ha elég erős gépet vettünk a Home Assistant alá, akkor akár arra is felrakhatunk NAS szoftvert dockerizálva. Több ilyen rendszerből választhatunk:

  1. FreeNAS
  2. NAS4Free / XigmaNAS
  3. OpenMediaVault (OMV)
  4. Openfiler
  5. Rockstor
  6. Nexenta Community Edition
  7. Amahi
  8. CryptoNAS

Ennél a megoldásnál azonban csak mappák és fájlok láthatóak. A lejátszó feladata ebből a hasznos információ kigyűjtése. Erre a célra a Kodi a legalkalmasabb, azonban minden induláskor elkezdi ezeket átvizsgálni, ami nagyon lassú, ráadásul ezt minden lejátszó meg fogja tenni.

Másik megoldás, hogy mi magunk üzemeltetünk egy streaming szervert. Ez nagyjából úgy nézne ki mint a Netflix vagy a HBO GO. Erre legjobb alkalmazás a Plex, mely nagy népszerűségének hála szinte mindenre elérhető. Van fizetős változata is, de arra csak akkor van szükségünk, ha távoli elérést szeretnénk. Több népszerű NAS-ra is telepíthető, azonban csak nagy korlátokkal. Ennek az az oka, hogy a streaming-hez nagyobb erőforrás szükséges, főleg ha transzkódolni is kell a lejátszandó fájlt. Ha van egy elég erős gépünk, ahogy NAS-t, úgy Plex szervert is telepíthetünk magunknak, de használhatjuk amúgy Windows-os asztali gépünkről is, viszont akkor a lejátszás végéig mennie kell a háttérben.

Nálam egy érdekes hibrid megoldás van erre kitalálva. Már évek óta megy egy Zyxel NSA320 típusú NAS, ami tökéletesen ellátja a hálózati fájlmegosztás feladatát, azonban ahhoz már gyenge, hogy mást is futtasson. Erre viszont alkalmas a Home Assistant-ot kiszolgáló Lenovo mini gép (hívjuk Szerverkének), mivel sokkal erősebb hardverrel rendelkezik, mint a legtöbb NAS. A Plex Media Server beüzemelése egyszerű volt, mivel a Hass.io alapból felkinálja addon-ként. Egyedüli nehézség abban volt, hogy elérje a fájlokat, mivel a felületen a beállításkor hálózati megosztáshoz nem lehet csatlakoztatni. A dokumentáció itt kicsit nem egyértelmű, mivel hivatkozik egy /share mappára, ami elvileg elérhető a Plex alatti fájlrendszeren, de az nem volt leírva, hogy a host gépen (a Hass.io-t futtató Szerverke) ez hol is van. Végül azonban sikerült megtalálni, hogy ez a /opt/hassio/share mappára mutat. Ha raktam ide valamit, akkor az a Plex-ben is látszódott egy könyvtár frissítés után.

Mivel Szerverke csak 120-as SSD-t kapott és a média tartalmak amúgy is a NAS-on vannak, ezért az a megoldás született, hogy Szerverkére is felcsatolom, mint hálózati meghajtót a NAS fájlrendszerét, abba a mappába, amit a Plex is lát. Először létrehoztam egy mappát a /opt/hassio/share mappán belül Video néven, majd Szerverkén a /etc/fstab fájlba beleírtam a következő sort:

//[NAS_IP]/video /opt/hassio/share/Video cifs username=[NAS_USER],password=[NAS_PASSWORD],workgroup=WORKGROUP,vers=1.0,users,auto,sec=ntlm,user_xattr 0 0

Természetesen a NAS_IP, NAS_USER, NAS_PASSWORD részeket cseréljétek a nálatok beállítottra.

Ez után már csak a mount -a parancsot kellett kiadni és ha nem volt hiba, a Plex alatt megjelentek a NAS-on tárolt tartalmak. Változás esetén mindig frissíteni kell a könyvtárlistát, de ettől függetlenül kitűnően működik a megoldás. Ha nincs szükség transzkódolásra, akkor a Szerverkét alig terheli a Plex, gyorsan indulnak a videók. Azonban ha transzkódolni kell, akkor képes kipörgetni a processzort, pontosabban kihasználja a teljes erőforrást, legyen az akárhány mag. Szerencsére a Xiaomi Mi Box a nappaliban sokmindent lejátszik, így megbírkózik az eredeti kódolással is.

 

Hasznos linkek

Awesome Home Assistant »

, , , , , , , , ,

About Virág Zoltán

Meetup szervező, előadó és okosotthon blogger. Szabadidőben otthonát és kertjét automatizálja, ezen felül kütyümániás alkalmazás fejlesztő.
View all posts by Virág Zoltán →