Rozhodl jsem se všechny svoje drobné webíky přesunout z firemního serveru do cloudu a zbavit se tak zároveň Wordpressů, protože jsem Wordpress hater. Rozhodl jsem se migrovat do Azure, protože jsem Microsoft fanboy a to s jednou podmínkou, musí to být celé zdarma, protože jsem skrblík.
Jedná se o tento blogísek, o dokumentaci stavby našeho domku na domecek.skoula.cz a o stránky našeho vinařství vinarstvojuracek.sk.
Jasnou volbou byla služba Azure Static Web Apps, je určená pro statické stránky a je zdarma. Při zakládání stránek v Azure si spárujete GitHub účet, zvolíte framework případně generátor a do zvoleného repozitáře se vloží workflow soubor, který definuje buildění. Build probíhá na GitHubu (GitHub Actions) automaticky při pushnutí změn.
Já zvolil generátor Hugo. Nejlepší je na něm instalace. Stačí stáhnout hugo.exe a dát ho do path, nic víc, v tom exe je vše. Srovnejte to prosím s instalací Ruby a následně Jekyll. Binárka je ale potřeba jen pro lokální testování - Hugo je velmi rychlý generátor a celý tento web vybuilduje (full rebuild) za půl vteřiny. Nicméně syntaxi šablon jsem nepochopil a stejně jako celý jazyk Go je mi velmi nepříjemná.
Jsou zdarma jen pro veřejné repozitáře a podporují pouze Jekyll.
Složitejší to bylo u migrace mých dvou projektů, meteostanice pi-dashboard a topenářské stanice pi-dashboard-2. Oba projekty jsou si podobné - základem je Raspberry, které získá data (v prvním případě z Arduin, v druhém případě scrapováním lokálního dashboardu pro topení), uloží si je do MySQL a zároveň nahraje přes SSH na server, kde je zobrazuji na webové stránce (Vue).
Kam ale data uložit, zdarma a v cloudu? Azure nabízí zadarmo (s určitými omezeními) NoSQL databázi Cosmos DB. Ta má dokonce SQL rozhraní (pro selecty) a dokonce i REST API, do kterého jsem se ale za nic na světe nedokázal přihlásit. Využil jsem tedy oficiální balíček pro Python a přidal ho do cron skriptů. Obrázky z webkamery tam nahrávám taktéž, v Base64 (udržuju tam jen jeden záznam).
Data jsou v DB ale jak je vytáhnout? Webové dashboardy jsem si udělal ve Vue a ve Svelte (opět Static Web Apps) a jak jsem psal, REST API pro Cosmos DB bylo nad mé síly.
Odpovědí je App Service. Má dost omezení (žádná vlastní doména, limitovaný CPU time) a je to vlastně Python appka (konkrétně Flask, ale dá se zvolit i PHP, .NET atd), která si přes stejný balíček jako používám na Raspberry šáhne do Cosmos DB, vytáhne data a vrátí je v JSONu.
Tady jsem udělal profi diagram jak to celé funguje:
Zdrojáky jsou tentokrát neveřejné, ale výslednou migraci ukážu.
pi-dashboard -> https://ledtech.skoula.cz
pi-dashboard-2 -> haha, topení u nás doma není veřejný statek
* Platím 1$** za dvě domény v Azure DNS. Protože Static Web Apps umí vlastní doménu, ale registrátor musí umět ALIAS nebo ANAME záznam, případně CNAME na apex doménu. Co jsem se tak díval, tak to umí jen Websupport a ten má drahé domény…
** Neplatím, mám tam 200$ bonusový kredit na první rok.