Po delším zvažování jsem se rozhodl přejít na staticky generovaný blog. Vedli mě k tomu především tyto důvody:

  • Wordpress. Wordpres mám rád, a dokonce jsem si zvykl i na nový editor článků. Bohužel i při nasazených security pluginech to ale znamená neustále kontrolovat aktualizace, logy a komentáře atd. Zabere to docela dost času, když chcete mít jistotu, že vám nikdo vaši stránku nenabourá.
  • Přechod k jinému VPS providerovi. Po roce jsem opět řešil platbu za VPS, na které mi běží mé stránky a projekty. S ohledem na cenovou politiku jsem to každý rok dělal tak, že jsem využil akci na novou VPS u Wedosu a tu starou tam zmigroval. Tento rok jsem si řekl, že když už migrovat VPS, proč ne k levnějšímu providerovi.
  • Kubernetí cluster. Tento rok jsem se s migrací VPS rozhodl přejít z docker compose infrastruktury na kubernet cluster. Bohužel s ohledem na služby, co mi na VPS běží, 4 GB RAM u stávající VPS by nestačili a 8GB varianta i po slevě na nové VPS vycházela cenově 3x dráž než u Hukot hostingu. S přechodem na kubernet cluster bych musel rovněž vyřešit běh Wordpressu v K8S a přiznám se, že se mi do toho vůbec nechtělo.
Výběr konfigurace
Migrace z Wordpress na Jekyll

Samotná migrace blogu na Jekyll byla vcelku jednoduchá i když celkem pracná. Rozhodně to není tak bezproblémové, jak popisují některé návody. Samotná migrace má v zásadě dva kroky:

  • Migrace layoutu, vytvoření šablony pro blog
  • Migrace dat, obsahu

Migrace layoutu

Na internetu najdete nepřeberné množství šablon, projektů pro založení jednoduchého blogu na Jekyllu. Stačí si vybrat a upravit dle svých preferencí a potřeb. Toto byla nakonec ta méně pracná část a i přesto, že jsem do této doby neměl moc zkušenost s Jekyllem, tak vytvoření šablony pro blog bylo celkem rychlé a zabralo jeden večer.

Při výběru vhodné šablony si především musíte rozhodnout, jestli:

  • chcete mít na stránkách komentáře
  • jakým způsobem chcete stránky plnit obsahem - články a obsah v markdown, nebo vyuřijete nějaké headless cms
  • kde chcete výsledné stránky hostovat - github pages, netlify, vlastní webový server … Pluginy, které daná šablona využívá, nemusí být na github pages whitelistovány a pak nepůjdou použít.
  • chcete mít na svém blogu archiv, tagy, kategorie - kontaktní formulář atd.

Nejvíc práce jsem měl se SEO pluginem (jekyll-seo-tag musel jsem si nakonec udělat svůj vlastní fork tohoto pluginu) , stránkováním a s jekyll-sitemap pluginem (rovněž u tohoto pluginu jsem si musel udělat svůj vlastní fork).

Komentáře

Vždy mi dělalo velkou radost, když někdo přidal svůj komentář se zkušenostmi pod článek na blogu. Bohužel jsem nikdy nenašel moc času na komentáře hned odpovídat. Jak jsem psal výše, použití komentářů taky znamenalo použití spam filtru ( v mém případě to byl Akismet Spam Protection). Spam filtr fungoval dobře, problém byl, že se občas objevovali falešně pozitivní blokace, a především ne vše je možné odhalit spam filtrem. Několikrát jsem mazal komentáře, které obsahovali rady, jejichž jediným cílem bylo poškození systému, smazání disku atd. To vše zabere docela dost času, a proto jsem se v nové verzi blogu rozhodl komentáře již nepoužít.

Jestli na svém statickém blogu chcete mít komentáře, můžete využít některou ze služeb pro komentování obsahu, jako např. Disqus. Velká část šablon pro blogy toto řešení využívá.

Obsah

Pro psaní článků a plnění blogu obsahem jsem se rozhodl použít články uložené markdown souborech. Formát je dostatečně obecný na to, aby mi to případně umožnilo v budoucnu migrovat blog pod jiný framework ( např. GatsbyJS). U dat uložených ve CMS je problém s tím, jak články přenést z dané služby někam jinam.

Hostování blogu

Blog hostuji u Netlify. Mám tam již další 3 weby a musím říct, že jsem z této služby nadšený. V bezplatné variantě nabízí dostatečnou kapacitu pro většinu malých webů (a to jak měsíční traffic, počet minut pro automatický build stránky, možnost využít privátní repozitáře u github atd.).

Z čeho jsem u Netlify nadšený je především:

  • jednoduchost nasazení CD pipeline – v podstatě stačí připojit git repositář (může být i privátní na githubu) a nastavit příkaz pro build stránky a kde bude buid statických stránek po buildu uložen. Vše, co pošlete do main/masteru se nasazuje hned na PROD, pull requesty a větve se nasazují pod preview URL (trunk base development). Jednoduché a neskutečně návykové. Na netlify hostuji jak stránky postavené na GatsbyJS frameworku, tak na Jekyllu.
  • vlastní DNS servery – pro svůj web můžete použít DNS servery Netlify. Konfigurace DNS záznamů je opravdu jednoduchá. Výhodou je, že použití DNS serverů od Netlify není podmínkou pro hostování stránky pod vlastní doménou.
  • automaticky generovaný Let’s Encrypt certifikát – stačí si jej zapnout v administračním rozhraní po nakonfigurování a ověření DNS záznamů.
  • netlify.toml – konfigurační soubor v root adresáři vašeho projektu. Není potřeba, umožní vám nastavovat HTTP hlavičky, nebo použít jinou NodeJS verzi atd. Konfigurace je opravdu jednoduchá.

A to vše v bezplatní variantě. Limity jsou nastaveny opravdu velkoryse a pro většinu služeb budou dostatečné. Jediné, co mě mrzí, že nemají plán např. za 5$ měsíčně. Je to teď docela běžné u hromady služeb, free plan, nebo pak docela drahá placená verze (v případě Netlify 19$ měsíčně). Přitom bych docela rád přispěl na provoz pár dolary měsíčně, a stačil by k tomu nějaký Hobby plan.

Tagy, kategorie

U článků po migraci mám pořád tagy a kategorie. Zatím nemám v blogu zaimplementováno jejich zobrazení, proklik na všechny články dané kategorie, tagu. S ohledem na to, že jsem měl na migraci jenom pár dní, jsem se rozhodl zatím tuto funkcionalitu neimplementovat. Po přidání kategorií a tagů popíšu své zkušenosti a řešení v některém ze svých příštích článků.

Migrace obsahu

Migrace obsahu bylo to, co mi zabralo většinu času. I když pro samotnou migraci můžete využít některý z wordpress pluginů, alespoň u mě se to neobešlo bez finálních úprav každého článku a taky obrázků. Nevím, jestli má někdo lepší zkušenosti, kdy se mu povedlo zmigrovat 100vky, 1000ce článků bez větších úprav. Já migroval cca 23 článků a pevně doufám, že už to nebudu muset nikdy dělat :-).