Nowe szaty bloga
Stało się. Pożegnałam się z Wordpressem i usługami Home.pl. Na pohybel.
Serio, siedzę w branży IT od lat, ale czasami zachowuję się jakbym pierwszy raz zajrzała do internetu. Swojego bloga Devwhisperer.pl postawiłam w lipcu 2024 na usługach Home.pl. Skusili mnie mnie niską ceną za domenę (SSL w pakiecie) i klawą opcją hostingu. Zapłaciłam za te opcje - uwaga - 16,76 PLN za rok. Mówię o PLN-ach, a nie jakichś tam dolarach czy hinduskich kopiejkach. Screen z FV:
W ramach hostingu Home.pl korzystałam z opcji reklamowanej jako “dla biznesu”, z serwerem pocztowym, bazami MySQL i PostreSQL oraz serwerem www, na którym zainstalowałam Wordpressa. Zainstalowałam to chyba zbyt monce słowo, bo to był klasyczny ClickOps. Skorzystałam z plugina Wordpress, założyłam na nim konto i podpięłam domenę Devwhisperer w panelu administracyjnym Home.pl. Tym samym nie musiałam się w ogóle pierdolić z konfiguracją CMS-a i bazy danych. W zasadzie w tym mało wyrafinowanym procesie moja rola sprowadzała się tylko do wybrania templatki do bloga i kosmetycznych zmian w stylu strony. Wszystko odbyło się prosto, łatwo i przyjemnie, a także - jak się miało okazać po roku - w opór DROGO, ale wtedy o tym nie myślałam.
Jakież było moje zdziwienie, gdy po blisko roku przyjaznej współpracy dostałam od Home.pl maila z propozycją przedłużenia oferowanych usług na kolejny rok, ale już znacznie wyższej cenie. W sumie:
- 207,87 PLN za odnowienie SSL-a
- 612,54 PLN za hosting “dla biznesu”
- 207,87 PLN za przedłużenie ważności domeny Devwhisperer.pl
W sumie przeszło 1k za te same usługi! Spodziewałam się podwyżki, ale nie o jebane 6000%, jeśli dobrze liczę.
Wniosek: chyba ktoś tu nie srał. Owszem, rzuciłam się na ofertę od Home.pl jak szczerbaty na suchary, ale jak przeglądam teraz wszystkie 8 (!!!) dokumentów i regulaminów, które mi wysłali na “dzień dobry”, to ni chuja nie widzę żadnej wzmianki o tym, że po roku użytkowania Home.pl chce zwiększyć cenę subskrypcji przeszło 60 razy. Słabo.
Z zapałem neofity zabrałam się więc za poszukiwanie alternatywnych opcji hostingu, bardziej zrównoważonych cenowo niż Home.pl.
GitHub pages
W pierwszym rzucie pomyślałam o statycznych stronach Github pages w oparciu o wspieranego przez nie generatora stron statycznych Jekyll. Przemawiało za tym rozwiązaniem:
- darmowy hosting
- duże community
Wadą było to, że musiałabym bloga spiąć ze swoim profilem na GitHubie, a samą stronę opublikować w publicznym repozytorium. Dla profili freemium takie jest niestety wymaganie narzucone przez GitHuba.
Nie chciało mi się w tym grzebać, tym bardziej, że mój profil na GitHubie zdradza moją tożsamość. Nie chciało mi się zakładać nowego konta tylko pod bloga. Odłożyłam więc opcję strony na GitHub pages z myślą, że wrócę do niej, jeśli nic lepszego nie znajdę.
Hosting na Google Cloud - nie dla biedaków
Od razu skreśliłam opcję hostowania bloga na Google Cloud. Powód?
Google charguje za każde pierdnięcie w jego chmurze. Jeśli decydujesz się na ich usługi, to płacisz osobno za np.
- networking
- statyczny adres IP
- traffic
- computing itp.
Odszukanie tych wszystkich pozycji w billingu nie jest trywialne, a 90-dniowy trial period z 300 dolarów do wydania na Google Cloud znika jak sen jaki złoty. Koniec jest taki, że 3 miesiącach grace period płacisz jak za zboże i to dosłownie za wszystko.
I’ve been there, done that.
Sama jeszcze do niedawna korzystałam z maszyny wirtualnej na Google Cloud w ramach jednego z pet projectów. Wytaniłam na maksa usługę computingu, wybierając Spot VM zamiast standardowej maszyny, bo akurat na moje potrzeby było to rozwiązanie akceptowalne.
Spot VMs w Compute Engine mają taką zaletę, że są tańsze od standardowych VM-ek od Google. Mają też zasadniczą wadę - maszyny mogą zostać wyłączone w dowolnym momencie przez providera, co automatycznie wyklucza je jako potencjalnego kandydata na serwer www. A za standardowe maszyny Google się płaci i to niemało.
Nie hejtuję clouda od Google czy innych hiperskalerów. Oferują oni świetne rozwiązania, doskonale udokumentowane, granularne i elastyczne. Na moje skromne potrzeby to jednak byłby overkill technologiczny i finansowy.
And the winner is…
Zdecydowałam się na postawienie bloga u Niemca - na Hetzner Cloud. Interfejs tego providera jest prosty jak budowa cepa i założenie serwera zajmuje chwilę. Wersja VM z 2 vCPU, 4 GB RAM, 40 GB space’u na dysku i 20TB wychodzącego trafficu kosztuje 4,05 Euro na miesiąc, czyli po obecnym kursie niecałe 20 zł. Dla porównania: podobna VM na Google, chodząca 24h na dobę kosztowałaby ponad 40 dolarów miesięcznie i to bez uwzględnienia trafficu oraz statycznego adresu IP. Tak to wygląda na kalkulatorze Google. Screen dla potomności:
Nieco słabsza, ale standardowa maszyna z 1 vCPU wyniosłaby 24 dolary, ale to wciąż jest 4 razy większa kwota niż w Hetznerze. Tak to wygląda:
A więc Hetzner Cloud, a na nim:
- Nginx jako serwer www
- Jekyll jako generator stron statycznych, bo uznałam, że nie chce mi się bawić w bazy danych i inne figle po stronie servera. Jak ktoś chce mi pocisnąć, to może to zrobić na stronie na Facebooku i Linkedinie. Tam też może mi wysłać wiadomość, bo nie tworzyłam żadnego serwera pocztowego na chmurze Hetznera
- certyfikat SSL Let’s Encrypt za free. Jest on ważny przez 90 dni, ale na Nginxie zainstalowałam też Certbota, który odświeża go automatycznie i przekierowuje traffic z HTTP na HTTPS.
Usługa, za którą Home.pl chciał mnie chargować przeszło 2 stówki rocznie, aktywowałam sobie zupełnie za darmo tymi dwoma poleceniami:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d nazwadomeny.com -d www.nazwadomeny.com
##Dr Jekyll and Mr Ruby
Jekyll jest napisany w Ruby, więc musiałam go też zainstalować. Nie miałam wcześniej doświadczenia z tym językiem, jednak wystarczy naprawdę minimum wiedzy programistycznej, żeby obsłużyć Jekylla. Treści tworzy się w bardzo prostych w obsłudze plikach markdown (roszerzenie .md), z których Jekyll generuje HTML oraz style na bazie wybranego templatu. Na swojego bloga wybrałam szablon Hacker Blog. Nanosiłam na niego kosmetyczne zmiany, głównie z stylowaniu, co okazało się bardzo proste.
Pro tip: Swój szablon sklonowałam z Githuba, ale
bundle exec jekyll build
wywalał mi błąd. Okazało się, że brakuje mi paru gemów (pakietów), które dodałam z palca do pliku Gemfile. I dalej jakoś poszło - strony bez zaczęły się budować.
Kiedy buildy zaczęły działać, to okazało się, że defaultowy szablon Jekylla nadpisywał mi niektóre strony, np. sekcję About. Rozwiązaniem było usunięcie odpowiadających im plików z defaultowego template’u.
Fajną opcją Jekylla jest to, że można sobie taką statyczną stronę postawić na lokalnej maszynie i podejrzeć na localhoście. Ja swój projekt trzymam na WSL-u, a do edycji szablonu i tworzenia contentu używam zintegrowanego z nim Visual Studio Code. Dla mnie to optymalne rozwiązanie, ale wiadomo - co dev, to obyczaj. Nowy post kopiuje sobie scp-em na chmurę Hetznera i stamtąd jest on wam serwowany.
Nie wiem, czy to rozwiązanie na dłuższą metę się sprawdzi, ale nie w tym rzecz. Zabawa z chmurą i Jekyllem była dla mnie rozrywką, w dodatku nie kosztowała mnie dużo czasu ani pieniędzy. Dla porównania - tak wyglądał mój blog na Wordpressie:
Czy teraz wygląda lepiej? Kwestia gustu.
Domena
Z tym było trochę zabawy. Wybór operatora domeny był w dużej mierze przypadkowy. Wybrałam SEOHost, bo czytałam na ich temat dobre opinie w komentarzach na jednym w portali społecznościowych. Skorzystałam z opcji sama domena, bez żadnego hostingu. Transfer domeny odbył się bezproblemowo. Home.pl stanął na wysokości zadania: wygenerowanie kodu Authinfo potrzebnego do przeniesienia domeny było bardzo proste i niemal błyskawiczne. Jazda zaczęła się w konfiguracji DNS-a u obu operatorów. Po zmapowaniu rekordu A mojej domeny na IP serwera na Hetzner Cloudzie strona bloga nie działała. Niestety, okazało się, że problem był w module znajdującym się pomiędzy klawiaturą a fotelem. Zaznaczam, że pierwszy raz przechodziłam procedurę transferu domeny. Z obecną wiedzą rozegrałabym to lepiej. Poniżej błędy, jakie popełniłam przy konfiguracji DNS-a.
- Żeby sfinalizować transfer należało odpiąć domenę w panelu Home.pl, czego na początku nie zrobiłam. Nie wiem dlaczego myślałam, że komunikat od SEOHost o udanym transferze domeny wystarczy, żeby uznać proces za zakończony. Efekt był taki, że straciłam całą dobę, bo myślałam, że SEOHost z opóźnieniem zacznie rozgłaszać domenę devwhisperer.pl. Dig-ałam, digałam i się nie doczekałam.
- Po odpięciu domeny z Home.pl nastąpiła zmiana - wejście na stronę devwhisperer.pl objawiało piękną stronę 404. Dobrym znakiem jednak było to, że 404 była generowana przez SEOHost. Wciąż jedak blog nie był dostępny. Problem był trywialny - w panelu SEOHost był ustawiony niepoprawny rekord NS (Name Server). W DNS określa on, które serwery są odpowiedzialne za tłumaczenie nazwy domeny na adres IP. Po transferze domeny rekordy NS dalej pointowały na serwery Home.pl zamiast na ich odpowiedniki na SEOHost. Zmyliła mnie trochę dokumentacja mojego obecnego dostawcy. Na tej stronie jest napisane, żeby pointować rekordy NS na ns1.seohost.pl i ns2.seohost.pl. Zdaje się, że to działa, ale tylko dla opcji z hostingiem, który ja mam przecież na germańskiej chmurze. Dla “łysej domeny” w SEOHost odpowiednie serwery to dns1.microhost.pl i dns2.microhost.pl. Po tej małej zmianie wszystko zaczęło banglać :)
Jeszcze trochę kosmetyki
Ostatnią rzeczą, którą zrobiłam były nazwy postów. Jekyll wymusza nazwenictwo plików .md postów, które składają się z daty w formacie YYYY-MM-DD oraz nazwy, pod którą strona będzie dostępną jako URL. Na przykład post na temat wykładu Grace Hopper zmigrowałam jako plik: 2024-09-15-Grace-Hopper-Wykład-Dla-NSA-Część-1.md. Wygenerował on następujący URL: https://devwhisperer.pl/Grace-Hopper-Wykład-Dla-NSA-Część-1/. Źle to wyglądało i oczywiście nie działało, bo przecież większość web serwerów jest case-sensitive, o polskich znakach już nie wspominając. Linki, które wrzucałam przez ostatni rok na profile na Facebooku i Linkedinie z tego powodu też przestły działać. Rozwiązaniem było doprowadzenie nazw plików do postaci, które generowały URL-e takie same jak Wordpress, czyli www.devwhisperer.pl/tytul-posta-bez-polskich-znakow. Coś takiego:
Pewnie jeszcze będę pracować na stylistyką strony, ale z finalnego efektu jestem zadowolona. Nie zajęło mi to dużo czasu, obsługa tych markdownów jest banalna, podobnie jak budowanie strony na własnym hostingu. Finansowo to fistaszki w porównaniu do oferty Home.pl, a sama migracja była atrakcyjnym poznawczo procesem. Polecam :)