Cesta k webovkám
Cyril Šebek • 6. 7. 2024 9:34:25
Vysvětlení toho jak jsem sem vlastně dostal: mít vlastní webovou stránku a psát si blog, skoro aŽ předstírat že to někdo někdy bude číst.
You need a website RIGHT NOW
V překladu “Potřebuješ webovou stránku PRÁVĚ TEĎ”. To byl titulek videa, které vyšlo na kanále NetworkChuck před třemi lety. Ve videu autor podepírá své tvrzení třemi důvody:
- Vyniknout
- Udělat rozdíl
- Vytváření příležitostí
Pokud by vás to zajímalo víc tak si dané video pusťte, ale já osobně bych to rozšířil ještě o jeden důvod:
- Získání zkušeností
V jeho videu následně ukazuje, jak je možné si založit jednoduchou webovou stránku zdarma a bez nutnosti umět programovat, a i tím se může člověk něco naučit, ale když se rozhodne udělat o krok víc a investovat necelých 200 korun ročně a koupit si doménu tak se může naučit víc, třeba o tom jak se taková doména spravuje, a jak se řeší DNS. Ještě větším krokem by pak bylo zařídit si lepší hosting s více možnostmi. A nebo možná být správný “linux user” a mít potřebu pohrdat vším, co nebylo naprogramované pouze v příkazové řádce a napsat si celé stránky bez použití nástrojů jako wordpress. Každý tento krok je součástí cesty k pochopení toho jak web funguje a získání užitečných zkušeností v tomto oboru. A možná že první verze stránky nebude zrovna nejhezčí, ale vylepšit později se dá pokaždé. Upřímně, tohle je nejmíň 6. verze mých stránek.
Cesta uživatele linuxu
Vzhledem k tomu že používám Linux tak jsem si musel zvolit složitější cestu, možná ne úplně tu nejsložitější, vlastní systém jenom pro moje stránky jsem si nenaprogramoval… ale rozhodl jsem se že používat nástroje jako wordpress není pro mě. Protože jsem si již tenkrát hrál s mikropočítači jako je Raspberry Pi, začal jsem přemýšlet jestli by se to nedalo využít, no a samozřejmě že dalo. Tak jsem si z jednoho Raspberry Pi začal dělat pomalu takový malý domácí server.
Při hledání různých možností a postpů jsem objevil nepřeberné množství aplikací, které bych si mohl selfhostovat. A tak nějak jsem se dostal do bodu kdy jsem měl pocit že jsem snad už musel vyzkoušet selfhostovat všechno co se dalo - Unbound DNS, Pi-Hole, Jellyfin, Nextcloud… a v ten moment to začínalo vypadat že jedno Raspberry Pi nebude mít dost výkonu na to všechno. Nejsnazší řešení ? více Raspberry Pi počítačů! Než jsem se nadál byli 4 a běželi v organizovaném K3s clusteru.
DRAG0N_PI, tedy ten můj malý Raspberry Pi cluster byl skvělý, a rozhodně úžasný co se vzdělávání se týče, začínal mít své liimtace - převážně kvůli limitům jednotlivých Raspberry Pi počítačů. Slabší hardwarové kódování videí, limity v úložišti, nedostatek jednovláknového výkonu, limitace 4GB RAM na počítač atd. Další upgrade, jediná rozumná cesta, byl na starý počítač. Intel i7 procesor 4. generace, 16GB RAM, dedikovaná grafická karta AMD RX 580 a dva 4TB HDD disky. Velké zlepšení oproti 4 mikropočítačům. Bohužel i tato konfigurace měla své problémy, největším z nich neschopnost automaticky se zapnout po výpadku proudu a neexistence funkce vzdáleného zapnutí.
Naštěstí se problém brzy vyřešil, kamarád našel na bazaru starý IBM x3550 M3 server. Ještě než jsem ho stihl nastavit podařilo se mi sehnat další dva, o generaci novější, IBM x3550 M4 servery. K tomu 24 portový managed switch a IBM StorWize V3700 s rozšířením včetně 42 disků s celkovou kapacitou kolem 25TiB. Každého teď možná napadá, že to zní jako hodně peněz. Mě samotného výsledná cena překvapila - asi 6500 korun. Neříkám, že to není málo, ale rozhodně to není tak moc.
To bylo někdy na podzim 2023. Do Vánoc jsem všechno nastavil a přesunul všechno, co běželo na předchozím serveru. Výkonu na to bylo víc než dost - jádra procesorů ? každý server má 2 procesory a každý procesor je v konfiguraci 6c/12t (tedy 6 jader, 12 vláken), což dohromady dá 48 jader. Starší DDR3 ECC RAM moduly jsou naštěsí celkem levné, a tak se mi podařílo celkem levně osadit servery dohromady 142GB paměti. A úložistě víc než dost. No a jak se spravují takové servery ? No snad bych na to prostě nenainstaloval Ubuntu server, i když debian tam je - Proxmox. Proxmox je operační systém/software pro správu serverů až datových center, je používaný i na profesionální úrovni, ale není problém ho využívat zdarma na domácích serverech. Osobně bych ho doporučil všem, kteří nějakým způsobem o domácím serveru přemýšlejí.
Takže konečně webovky ?
No a teď, je to skoro rok co jsem si začal platit doménu a začal se více věnovat selfhostování. Moje webová stránka v průběhu tohoto období samozřejmě existovala, v různých variantách, ale ve všech případech to bylo něco základního.
A tak jsem udělal tu nejvíc smysluplnou věc - vsadil jsem se s kamarádem (který má také své webové stránky, ale postavené pomocí nástrojů jako webnode) o to, kdo bude mít na konci prázdnin 2023 lepší stránky. A to byli moje webové stránky hostované na clusteru z Raspberry Pi a postupně stěhovány na starý počítač. No nevyhrál jsem, protože jsem je nikdy pořádně nedodělal. Zato jsem však dozvěděl něco nového a užitečného - jak moc nesnáším next.js.
Věřte tomu nebo ne, ale tahle verze mých stránek nevypadal zas tak špatně, ale nikdy pořádně nefungovala. Jako software pro správu obsahu jsem používal Strapi CMS a nikdy mi pořádně nefungovalo a přidávání nového obsahu trvalo zbytečně dlouho. A tak jsem začal o Vánocích 2023 pracovat na nové verzi… a nedokončil jí. Během jara jsem pak zkoušel různé zajímavé blbosti - jako napsat si vlastní webový server v C. Nevím proč jsem si myslel, že by to mohl být dobrý nápad, ale úplně nebyl.
Záchrana YouTube algoritmem
Jednoho dne mě zachránil YouTube algoritmus - náhodou mi doporučil jedno video o webovém frameworku Astro.js.
A pro ty, kteří nevíco je astro - je to webový framework, který umožňuje snadné kombinování jednoduchosti čistého HTML a funkcionality pokročilých webových frameworků jako React. Následně se pokusí postavit celé stránky s co největším množstvím čistého HTML a nejmenším množstvím JS, ve snaze snížit výslednou velikost stránek a tedy zrychlení jejich načítání. A pro interaktivní prvky využívá tzv. “islands”, tedy ostrůvky, a ty mohou být prakticky v jakémkoliv webovém frameworku. Takže ano, i moje stránky využívají pro interaktivní prvky React. Hlavně díky shadcn/ui knihovně prvků pro webové stránky. Ale co jde tak je napsané v co nejčisštím HTML a CSS. No, CSS moc ne, protože proč se vztekat s CSS, když existuje TailwindCSS.
O 4 měsíce později jsem tady. Zní to jako dost času na takovéhle stránky, ale pořád jsem student a mám dost jiných povinností. Navíc jsem s astro.js předtím nikdy nepracoval, tak jsem věnoval první měsíc různým experimentům. A pak jsem začal, kousek po kousku, stavět tyto stránky. Úžasná věc na většině webových frameworků je snadné znovu použití stejných prvků, komponent. Takže jsem postupně začal stavět jednotlivé komponenty a z nich stránky - domovská stránka, blog… a přidával jsem různé funkcionality - responsivní design, RSS feed pro blog, i18n (internationalization - překlady), tmavý a světlý režim… netvrdím, že teď jsou tyto stránky bezchybné, ale alespoň už se neděje, že by náhodně spadli kvůli překlepu v URL adrese.
Konečně jednou taky nepíšu kód, ale text v nějakém lidském jazyce.
Závěr
Celkově musím říct, že jsem se v průběho poslední dvou nebo tří let naučil hromadu věcí o tom jak funguje web, jak se starat o servery a jaké jsou možnosti moderního vývoje webových stránek. Rozhodně bych to doporučil jako projekt komukoliv, kdo se zajímá o počítače, a je úplně jedno co přesně dělá, jestli vývoj her nebo programování robotů, tak jako tak věřím že je v tom hodně věcí, co se člověk naučí.
To je vlastně asi nejlepší věc na počítačích - jak rychle se všechno vyvíjí a mění, a to nutí člověka se pořád rozhlížet a učit se nové věci. Jenom správa serveru je nějaké množství práce pokaždé, když vyjde nový update. Nainstalovat, zkontrolova ,že všechno funguje, opravit co nefunguje… a pak opravování všech náhodných problémů - někde došlo místo na disku, něco z nějakého důvodu spadlo, databáze PostgreSQL pro synapse matrix server zabírá 80GB (jsem si jistý že o tom taky napíšu něco víc)…
Takže měl Chuck z kanálu NetworkChuck vlastně docela pravdu - všichni potřebujeme webové stránky.