IOTstack – co je to vůbec zač?

Je obsahem místních článků a návodů od začátku běhu tohoto webu, ale zatím stále nepadlo základní vysvětlení pro úplné začátečníky, co je to vůbec zač a proč je vhodné a výhodné jej používat. Tento článek snad pomůže vnést více světla do problematiky okolo IOTstacku.


Zaznamenal jsem, že se různě po skupinách věnujících smarthome průběžně a nepravidelně šíří různé informace či obavy, které nemají opodstatněný základ a spíše mají příčinu v neznalosti problematiky či nedostatku času věnovanému na pochopení fungování IOTstacku. Právě proto jsem si řekl, že by bylo vhodné celou věc vzít od začátku, pro snažší představení a pochopení fungování. Pojďme tedy na to.


Standardní režim fungování

Pokud používáte Raspberry Pi (dále jen RPi) v kombinaci s operačním systémem Raspbian (ono to funguje i na jiných systémech, ale pro zjednodušení uvažujme tento), tak nejspíše jste zvyklí fungovat tak, že se přes SSH připojíte do příkazové řádky a nainstalujete požadovanou aplikaci klasickou cestou přímo do systému. Takto pokračujete s dalšími aplikacemi.

Když tedy chcete rozchodit třeba HomeBridge, Node-RED, influxDB či Grafanu, tak musíte postupně ručně instalovat každý program zvlášť, řešit závislosti, specifika daného programu, nastavovat jim například běh jako služby, atd.

Toto v důsledku zabere dost času, člověk navíc riskuje, že se něco mezi sebou nepohodne, případně, že se v nějaké z následujících aktualizacích něco pokazí a díky tomu může být nefunkční jedna či více služeb/aplikací.

Stejně tak samotné aktualizace jednotlivých služeb/aplikací je potřeba provádět ručně. Jedná se o invazivní záležitost, protože se přepisují soubory a sem tam se může stát, že se něco nepovede.

Nakonec snad ještě zmíním zálohování, protože pokud provozujete více služeb naráz, tak je vhodné mít vyřešené zálohování, abyste minimálně nepřišli o svá uživatelská data (která v tomto případě mohou být naprogramované flows v Node-RED až po třeba metriky uložené v databázi).

Upřímně si řekněme, že málokdo to má celkově promyšlené a opravdu dodržuje například zálohování (ideálně v režimu 3-2-1).


Fungování s Dockerem

A teď si představte, že bych vám řekl o možnosti, která se chová následovně:

  • instalace, respektive zprovoznění, jakékoliv aplikace/služby v řádu jednotek, maximálně desítek sekund.

  • bezpečná aktualizace, opětovně v řádu sekund. Navíc do posledního okamžiku jede původní verze, nová verze následně přejde s výpadkem (je třeba si uvědomit, že někteří z nás logují metriky své domácnosti pořád) v jednotkách sekund. Nespornou výhodou je i to, že pokud se vám jakkoliv nezdá nová verze, tak se můžete vrátit na libovolnou jinou verzi opětovně bez problémů.

  • oddělené všechny služby/aplikace navzájem od sebe i hlavního systému.

  • automatické zálohování, třeba i několikrát denně (lokální NAS, DropBox, OneDrive nebo asi 40 dalších služeb).

  • v případě havárie samotného HW (RPi, SD karta, SSD,…) plná obnova do stavu 1:1 k poslední provedené záloze do cca půl hodiny.

Teď si říkáte, že to zní tak skvěle, že v tom musí být určitě nějaký háček nebo velké ale. Určitě vám blikají červené majáky v hlavě a padají otázky na to, že se jedná určitě o proprietární řešení, které je závislé na jednom autorovi, kterého když cestou z práce na přechodu srazí auto, tak jako mávnutím kouzelného proutku vše přestane fungovat nebo už nikdo nikdy nebude danou věc schopen rozchodit.

Tedy pojďme si postupně probrat i tuto problematiku. IOTstack jako takový není žádný zázrak nebo zapouzdřený black-box, ale fakticky vzato pouze souhrn předpřipravených konfiguračních šablon pro Docker (virtualizace s použitím kontejnerů, více k problematice zde).

Ano, celý IOTstack využívá pouze následující programy, které se můžete klidně nainstalovat ručně a nemusíte ani spoléhat na skripty PiBuilderu, které pouze usnadňují práci a zrychlují případné zavedení IOTstacku či jeho obnovu v případě obnovy ze zálohy:

  • docker
  • docker-compose
  • rclone

Nic víc není potřeba a až tak je to jednoduché, opravdu. IOTstack je výsledkem práce několika šikovných lidí, kteří jediné co udělali je to, že vyzkoušeli předem různé kombinace aplikací/služeb, zjistili jejich případné vzájemné interakce a pro tyto konfigurační šablony udělali menu, kde si může každý šipkami a mezerníkem vybrat, co chce a co ne. Následně skript pouze projde označené položky a do souboru docker-compose.yml doslova vykopíruje předpřipravené šablony jednotlivých služeb/aplikací.

A to je prosím vše. Žádná magie, žádná závislost na nikom dalším ani v přítomnosti, ani v budoucnosti. Vše klidně můžete dělat ručně. A vzhledem k tomu, že IOTstack obsahuje jen nějaký vybraný vzorek aplikací/služeb, tak dříve či později stejně budete vkládat své konfigurace do tohoto souboru nejspíše i vy sami ručně.

Například já sám již mám docker-compose.yml rozšířený možná násobně (ostatně i zde na webu jsou návody, jak si přidat třeba další dockerizované služby – Octoprint, UniFi Controller, Oscam, PLCComs, Homer). Teoreticky (a vlastně i prakticky) můžete přidat cokoliv, co naleznete na Docker Hubu, možnosti jsou opravdu velmi široké. Sám jsem pro příklad řešil potřebu stahování videí z YouTube a vyřešil jsem si ji přidáním programu YT-DL (YouTube Dowloader) do IOTstacku (respektive přesněji řečeno do Dockeru).

Vše začíná a končí pouze u jediného textového souboru docker-compose.yml. Vše je definované v něm a jeho obsah je to, co je výsledkem prvotního sestavení IOTstacku či vaší následné činností. Paradoxně při prvním spuštěním IOTstacku (respektive skriptu menu.sh) tento sestaví uvedený soubor a tím jeho činnost úplně končí a již jej nebudete nikdy znovu spouštět.

Toto ostatně potvrzuje i to, když se podíváte, co je obsahem záloh – je to právě pouze záloha všech šablon (složka /services, kde můžete mít třeba vlastní úpravy, ale pro samotnou zálohy je tento adresář nedůležitý), vašich uživatelských dat (složka /volumes) a právě souboru docker-compose.yml, ve kterém jsou uloženy za sebou v sekcích šablony, které používáte. Nic víc totiž není potřeba, jak se můžete sami přesvědčit na obrázku obsahu zálohy níže.

Dockeru (respektive docker-compose) totiž pro plnohodnotné obnovení stačí pouze jediný YML soubor a případně vaše uživatelská data, která k nim automaticky připojí, díky definici v šabloně. V naprosté jednoduchosti je celé kouzlo.


Zálohování přes Rclone

A nakonec se ještě vrátím k zálohování. Toto je řešeno využitím programu Rclone, který v zadaný čas automaticky vše zabalí do zipu a tento nahraje na předem definované úložiště. Tím může být lokální sdílená síťová složka, DropBox, Google Drive, OneDrive, respektive nějakých dalších 40 služeb (doporučuji se podívat na jejich web, je to opravdu úctyhodný seznam).

Opětovně se nejedná o nic neznámého, Rclone je používán dlouhodobě a jedná se o spolehlivé a prověřené řešení, které si můžete nasadit i sami pro vlastní řešení.


Jdete do toho taky? Prostě jen vyzkoušejte!

Veškeré skripty tedy neobsahují nic tajného (ostatně, jsou plně k dispozici na GitHubu, takže si je můžete projít s přesvědčit se sami) a ani nic magického. Pouze jsou stvořeny proto, aby i začátečník mohl využívat výhod popsaných výše a nemusel se zdržovat důslednějším nastudováním problematiky a vymýšlením řešení. Berme to tak, že kolo již je vymyšleno, tedy stačí pouze nasednout a vyjet.


Věřím, že tento základní náhled fungování IOTstacku (respektive PiBuilderu) vám byl nápomocen a případné požadavky na upřesnění nejasností klidně neváhejte napsat dole do diskuse pod článkem. Pokusím se odpovědět či rozšířit tento článek.

Pokud jej chcete vyzkoušet, či si jej rovnou nasadit, tak doporučuji jít rovnou cestou PiBuilderu.

Zanechat komentář