Ktoś już to dla ciebie zrobił
To było tak: na którejś zdzwonce ICD (kto wie, ten wie), jak zwykle narzekaliśmy na stan internetu. Któryś z rozmówców napomknął, jakim to ogromnym rozczarowaniem w jednym specyficznym aspekcie była dla niego książka Bóg techy. Mianowicie fatalnie opisywała (jeśli w ogóle? - nie wiem, nie czytałem) uniwersum (fediwersum hehe) dostępnych alternatywnych rozwiązań technologicznych. Fediwersum to jedno, ale do dyspozycji są też rozproszone komunikatory, szyfrowana poczta, RSSy, blogi (czyli RSSy), podkasty (czyli RSSy), otwartoźródłowe przeglądarki i inne aplikacje, wtyczki do usuwania reklam i odśmiecania internetu, skryptonakładki™... dosłownie cały wszechświat możliwości odzyskania sprawczości. Po których, jak rozumiem, książka się ledwo ślizgnęła.
Nie minął tydzień (dobra, minął DOKŁADNIE tydzień), a Sylwia Czubkowska, autorka ww. książki, napisała na (o dziwo! kto wie, ten wie!) Mastodonie, że chyba czas założyć blogaska i że szuka jakiegoś niskowysiłkowego rozwiązania. Czas to był w 2008, ale drugi najlepszy coś tam tej. Mimowolnie zacząłem myśleć o tym, o jak bardzo niski wysiłek może chodzić - w końcu mój oryginalny blog to jest przecież łatwizna: statyczny generator strony z plików Markdown, z własnoręcznie napisanymi szablonami i stylami CSS, prosty Makefile do oskryptowania najważniejszych akcji, lokalne repo Git, coby śledzić zmiany, współdzielony hosting Cytrus w infrastrukturze Mikrusa UWAGA LINK AFILIJACYJNY, wszystko podpięte pod własną domenę w OVH i synchronizowane za pomocą rsynca... Dziękuję, będę tu cały wieczor.
Nie ma co ukrywać, że mój "setap" jest koszmarnie skomplikowany dla kogoś, kto po prostu chce publikować. I w tym między innymi upatruję spektakularny sukces fejsbuków tego świata - po prostu otwierasz, piszesz, i jest.
No i przyszedł mi do głowy eksperyment: sprawdzić, jak bardzo dałoby się uprościć tworzenie takiej niezależnej strony, korzystając nadal z tych wszystkich skomplikowanych technologii pod spodem, ale tak, żeby to było w miarę bezbolesne dla użytkownika. Stos technologiczny, który sobie wymyśliłem to Codeberg Pages + Forgejo Actions + Zola + Markdown. Wynikiem tego eksperymentu miałby być szablon gotowy do użycia, który będzie wymagał minimalnego uzupełnienia danych, żeby następnie móc publikować pełnoprawne artykuły na własnej stronie internetowej. Jak publikować? Wrzucając za pomocą przeglądarkowego edytora plików w repozytorium Codeberg prostego pliku w formacie Markdown. Może nawet, jeśli eksperyment poniesie spektakularny sukces, sam się przerzucę.
Codeberg Pages
Pierwszy krok to sprawdzenie, czy Codeberg Pages w ogóle nadaje się do czegokolwiek. Założyłem sobie repozytorium o nazwie pages, dodałem "webhooka" (szukam polskiego słowa), a następnie stworzyłem plik artykul.md i wpisałem do niego jakiś losowy nagłówek oraz tekst. Zatwierdziłem zmiany, i webhook się wywalił, a pod domyślnym adresem strony pojawił się komunikat "Not found". Okazało się, że nie można sobie ot tak stworzyć pliku Markdown i oczekiwać, że wydarzy się magia ☹️. No dobra, zrobiłem więc kolejny plik index.html, wpisałem w nim <b>test</b>, i ku mojemu żadnemu zdziwieniu, zobaczyłem na stronie piękny napis: test.
Ok, pierwszy etap za nami.
Forgejo Actions
W kolejnym korku będę sprawdzał, czy da się automagicznie tworzyć te nieszczęsne pliki HTML. Moje osobiste zdanie jest tak, że składnia Markdown jest całkowicie wystarczająca do tworzenia prostych stron internetowych (a jeśli potrzebujesz zrobić takiego jak robi Bartosz Ciechanowski, to ten wpis nie jest dla Ciebie). Automatyzacja, po wykryciu zmian w repozytorium, powinna się odpalać, tworzyć pliki HTML i wrzucać je, gdzie trzeba. Normalnie jak na fejsie.
Na całe szczęście Codeberg oferuje serwowaną przez nich platformę do uruchamiania automatyzacji Forgejo Actions. Piszę prostą instrukcję w formacie yaml, która uruchamia się sama po wykryciu zmian w plikach, pobiera te zmiany, instaluje Zolę, uruchamia komendę zola build generującą HTML, a na koniec wgruwa wszystko w odpowiednie miejsce. Ponieważ nie istnieje w akcja specjalnie do uruchamiania Zoli, używam kontenera Alpine. Po kilku eksperymentach okazuje się, że potrzebuję kontenera z zainstalowanym Node, potem idzie jak z płatka. Do zbudowania strony, Zola potrzebuje pliku konfiguracyjnego toml. Jedyna wymagana wartość w tym pliku to base_url i wskazuje ona po prostu na główny adres strony.
Działa!
Zola
Zola pozwala na używanie motywów, więc zabieram się za to. Motywy często wprowadzają ciekawe dodatki do strony, jak na przykład obsługa komentarzy. Na potrzeby moich zabaw wybrałem styl Anpu. Największy sens ma dodanie tego motywu jako podmoduł Gita. Jeszcze tylko ręczna instalacja Gita w Alpine, bo z jakiegoś powodu akcja do pobierania zmian z Gita nie instaluje sobie sama Gita (ani nawet Node'a, którego też wymaga) - i mamy piękną, pustą stronę!
Wypełnianie treścią
Dobra, słuchajcie! Mam taki pomysł, że wrzucę ten właśnie tekst, który w tym momencie piszę, do tego projektu, o którym piszę. Incepcja!
Eksperyment zakończony pełnym sukcesem. A przynajmniej jego pierwszy krok. Bo to nawet nie jest żaden szablon czy instrukcja, tylko jakiś strumień świadomości. Nieważne. Repo tej pięknej strony wraz z chaotyczną listą zmian w historii pod adresem codeberg.org/mtsz/pages.
Potencjał na rozwój monnumentalny 🗻.
Liczba bóg techów biorących udział w eksperymencie: 0️⃣.
Poziom zadowolenia z wyniku: 💯.
RSSy: nie włączyłem ☠️.