Mój pierwszy serwer — początki self-hostingu, cz. 1: sprzęt i sieć

Własny serwer

Odkąd postanowiłem rozpocząć zabawę w selfhosting, zacząłem szukać po internetach jak zabrać się do tematu. Nie pracuję w branży IT ani pokrewnych, jestem tylko hobbystą. Jedyne doświadczenie jakie miałem do tej pory to Linuxy i distrohopping. W związku z tym niemal wszystko, za co zamierzałem się zabrać było dla mnie nowością. Początki co prawda były trudne, jednak po uruchomieniu swojego bloga wszystko już potoczyło się z górki. Obecnie wpadłem w wir selhostingu i przestałem liczyć uruchomione serwisy.

Jako że najtrudniejsze mam już za sobą, pomyślałem, że spiszę swoje zmagania i wrzucę je na bloga. Po części robię to dla siebie, w celu dokumentacji całego procesu. Przede wszystkim jednak ten wpis powstał po to, żeby ułatwić innym chętnym początki z selfhostingiem (jeśli jakimś cudem wpadną na tego bloga). W końcu to nie jest takie trudne jak się wydaje, a jak już się wejdzie na tą ścieżkę, to nie ma od niej odwrotu. Jak Frodo w drodze do Mordoru.

Wracając do tematu. Planując selfhosting postanowiłem, że serwer na którym będę trzymał swoje serwisy musi być całkiem mój, czyli odpadały jakiekolwiek opcje wykupienia VPSów u zewnętrznych dostawców. W grę wchodziła tylko opcja własnego fizycznego serwera w swoim mieszkaniu - w myśl zasady "niezależność ponad wszystko". W związku z tym pierwsze co mnie czekało to zakup odpowiedniego sprzętu.

Sprzęt

Jak znaleźć dobry i tani sprzęt, który poradzi sobie z zadaniem domowego serwera? Najlepszą opcją dla mnie są poleasingowe terminale. Można je znaleźć na portalach aukcyjnych typu alledrogo czy oeliks - jest w czym wybierać. Są też sklepy specjalizujące się w sprzedaży poleasingowego sprzętu. Jest to dobry wybór, jeśli chcielibyście dostać gwarancję za zakupiony sprzęt. Od siebie mogę polecić serwis amso.

Moimi głównymi wymaganiami dotyczącymi mojego przyszłego serwera były:

  • niewielkie zużycie energii
  • całkowita bezgłośność czyli pasywne chłodzenie (serwer ma być umiejscowiony w centralnym miejscu w mieszkaniu - tuż obok bezgłośnego routera)
  • czterordzeniowy procesor
  • 16gb ram - powinno wystarczyć uwzględniając trochę zapasu na przyszłe serwisy
  • dysk ssd 500-1000gb - nie ma sensu pchać się w mniejsze pojemności

Terminale o takich parametrach powinniśmy znaleźć już w okolicach 400zł. Uczta dla zakorzenionej we mnie cebuli.

Zdecydowanie odradzam płytki deweloperskie typu Raspberry Pi. Dostaniemy je co prawda w podobnych cenach, jednak mają kilka wad: odstają wydajnością, nie posiadają możliwości rozbudowy, zużycie energii jest niewiele niższe w porównaniu do oszczędnych terminali oraz najważniejsze - posiadają architekturę ARM. Dla nas to akurat duży problem, ponieważ szukamy sprzętu w architekturze x86-64.

Tak się akurat złożyło, że miałem w domu Fujitsu Esprimo Q920, który spełniał prawie wszystkie moje wymagania poza jednym - zdecydowanie nie był bezgłośny. Postanowiłem więc poszukać czegoś innego.

Po pobieżnym rekonesansie dowiedziałem się, że jednym z najchętniej polecanych w internetach terminali jest Dell Wyse 5070. Dałem się namówić i po krótkim poszukiwaniu trafiłem na odpowiedni (i tani) egzemplarz.

Oczywiście nie obyło się bez drobnych perypetii. Po rozpakowaniu przesyłki i pierwszym uruchomieniu nowego-używanego terminala wyglądało na to, że wszystko działa, jednak i tak już oszczędny procesor miał zdecydowanie obniżone taktowanie. Winowajcą okazał się nieoryginalny zasilacz dodany do zestawu. Akurat miałem pod ręką zasilacz od swojego laptopa (również poleasingowego Della). Po zamianie źródła zasilania procesor zaczął pracować tak jak powinien. Słowem wyjaśnienia: dołączony do terminala zasilacz był sprawny, to Dell sztucznie ogranicza wydajność procesora jeśli nie używamy oryginalnych akcesoriów. Nawet nie chce mi się tego komentować.

Router

Niezbędny element naszej sieci domowej. Co do zasady większość routerów będzie ok włącznie ze sprzętem dostarczonym od operatora internetu. Warunkiem niezbędnym jest dostęp do panelu administratora żeby móc skonfigurować przekierowanie portów, Dynamiczny DNS oraz opcjonalnie DHCP.

Nie wszystkie urządzenia od naszego dostawcy internetu dają nam dostęp do wspomnianego panelu. Jeśli i my należymy do tego nieszczęsnego grona, to mamy dwie opcje: pierwsza to rozważenie poproszenia (wymuszenia) na operatorze udostępnienie loginu i hasła konta administratora. Druga opcja to kupienie swojego routera, który podłączymy do routera od dostawcy. W tym przypadku urządzenie od operatora będzie nam służyło tylko za modem, wiec przełączamy go w tryb bridge, czyli po prostu wyłączamy w nim sieć wifi aby nie dublować sieci domowych.

Osobiście polecam tą drugą opcję, szczególnie że możemy kupić dobry używany router za niewielkie pieniądze i zainstalować na nim OpenWRT. Nie będę się ponownie rozpisywał w temacie wyboru sprzętu, ponieważ już popełniłem wpis na ten temat. Zainteresowanych odsyłam do lektury na wolnoscwkieszeni.pl. W dalszej części wpisu w kontekście routera będę się odnosił do OpenWRT.

Internet

Chyba nie będzie zaskoczeniem jeśli napiszę, że będziemy potrzebować internetu po światłowodzie. Można oczywiście użyć łączności LTE/5G, jednak jest to nieco problematyczne oraz ma ograniczoną przepustowość, szczególnie jeśli chcemy uruchomić np. bloga czy inne strony internetowe. We wpisie skupię się wyłącznie na łączności po kablu.

Publiczny adres IP - musimy posiadać adres IP wystawiony na świat. Innymi słowy nie możemy znajdować się za NATem. Jak to sprawdzić? Na 99,9% jesteście za NATem ;) a jeśli chcecie się upewnić, to wystarczy zalogować się do routera i sprawdzić czy wyświetlany w panelu adres IP pokrywa się z tym, który znajdziemy w wyszukiwarce wpisując frazę "mój ip". spoiler: nie będzie się pokrywał.

Drobna uwaga - nie mylimy stałego publicznego adresu IP ze zmiennym publicznym. Oczywiście dobrze jest mieć stały, jednak nie będzie nam niezbędny. Zmienny adres IP jest tańszy albo nawet bezpłatny.

Dostawca internetu - ze swojego doświadczenia mogę polecić Vectrę/Multimedię. Nie żeby ich sponsorował, w żadnym wypadku. Polecam z tego względu, że nie pobierają żadnej opłaty za wystawienie naszego IP na świat. Mówimy tutaj o zmiennym IP, stały jest już płatny. Jedynym mankamentem przy włączaniu publicznego IP jest łączenie się od konsultanta do konsultanta. W moim przypadku dopiero po trzecim przełączeniu trafiłem na kompetentną osobę, która rozróżniała adres stały od zmiennego. po 10 minutach od zakończenia rozmowy dostałem swój własny-prywatny-osobisty-zmienny adres IP.

W mojej lokalizacji mam także dostęp do światłowodu od T-mobile. Tutaj już musimy zapłacić za publiczny zmienny adres IP 5zł/mc, a za stały IP - 15zł/mc. W moim przypadku 0zł jest lepsze niż 5zł, dlatego wybrałem Vectrę.

Domena

Jeśli chcemy uruchomić swojego bloga czy inną stronę internetową, to będziemy potrzebowali swoją domenę.

Możemy użyć bezpłatnych subdomen, np. takich od dostawcy dynamicznego DNS. Jeśli wybierzemy freedns.afraid.org, możemy sobie wybrać subdomenę np. chickenkiller.com. Co prawda brzmi zabawnie, ale mało profesjonalnie. Jeśli odpalimy bloga janek.chickenkiller.com, to odwiedzający pomyślą, że Janek nie pała zbytnią miłością kurczaków.

Jeśli nie chcemy być posądzani o zabijanie biednych kurcząt to najlepszym wyjściem będzie wykupienie swojej domeny. Koszt 22zł w skali roku za domenę z rozszerzeniem .eu jest pomijalny, więc nie ma się za bardzo nad czym zastanawiać. Poza tym janek.eu brzmi całkiem europejsko i profesjonalnie.

Osobiście posiadam domenę w Hostido, jednak na naszym rynku jest wielu innych dobrych dostawców. Jedna uwaga - zwracajmy uwagę na koszt odnowienia domeny. Często pierwszy rok jest tani a kolejne już zdecydowanie droższe.

Dostawca dynamicznego DNS

Jeśli macie już stały publiczny adres IP, to możecie pominąć wszystkie akapity z DDNS w tytule. Jeśli jednak przycebuliliście tak jak ja i dostawca internetu dał Wam łaskawie zmienny IP za darmo, to będziecie potrzebować dostawcy dynamicznego DNS (dalej DDNS).

W moim przypadku wybór padł na freedns.afraid.org. Dość dawno temu szukałem swojego dostawcy DDNS. Pamiętam, że kilku innych dostawców było dla mnie problematycznych, a z freedns.afraid.org nie miałem żadnych zacięć. Być może popełniałem jakieś błędy nowicjusza, w każdym razie tutaj wszystko udało mi się skonfigurować poprawnie. W kolejnych akapitach będę się odnosił do freedns.afraid.org w kontekście DDNS.

Konfiguracja dostawcy DDNS i domeny

Jeśli już mamy wykupioną domenę i utworzyliśmy konto u dostawcy DDNS to zabieramy się za skonfigurowanie obu. Logujemy się w pierwszej kolejności do dostawcy DDNS, wchodzimy w Domains, klikamy Add Domain po czym wpisujemy adres naszej wykupionej domeny. Pod oknem wpisywania domeny mamy wyświetlone nasze adresy DNS. W moim przypadku są to:

NS1.AFRAID.ORG
NS2.AFRAID.ORG
NS3.AFRAID.ORG
NS4.AFRAID.ORG

Zapisujemy sobie powyższe adresy. Następnie otwieramy menu Subdomain i klikamy na naszą domenę, np. janek.eu. Wyświetli nam się okno Editing janek.eu. Pole subdomain pozostawiamy puste a w polu Destination wpisujemy nasz aktualny adres IP i zapisujemy konfigurację.

Następnie logujemy się do panelu konfiguracji dostawcy domeny. Przy naszej domenie klikamy opcje -> zarządzaj i wpisujemy wszystkie cztery adresy DNS wyświetlone wcześniej u dostawcy DDNS.

Ważne! Ze względów bezpieczeństwa robimy to dokładnie w takiej kolejności: najpierw konfiguracja DDNS, dopiero następnie przechodzimy do wpisania podanych adresów u dostawcy domeny. W przeciwnym wypadku istnieje ryzyko, że ktoś przejmie naszą domenę. 

Jeżeli wszystko poprawnie skonfigurowaliśmy, pozostaje poczekać na rozpropagowanie DNS. Zazwyczaj trwa to nie dłużej niż 15 minut, jednak może się zdążyć, że będziemy musieli poczekać kilka godzin.

Konfiguracja DDNS  w routerze

Pozostało nam jeszcze skonfigurowanie DDNS w naszym routerze. W przypadku OpenWRT wchodzimy w Usługi -> Dynamiczny DNS (ścieżka i nazwy opcji mogą się różnić w zależności od producenta routera i oprogramowania). Klikamy Dodaj nowe usługi i w polu nazwa wpisujemy swoją nazwę dla naszego bloga. W polu Dostawca usług DNS w naszym przypadku wybieramy afraid.org-basicauth i klikamy Utwórz usługę. Pola które nam się wyświetliły uzupełniamy następująco:

Nazwa hosta wyszukiwania: naszadomena.pl
Domena: naszadomena.pl
Nazwa użytkownika: login_z_afraid
Hasło: hasło_z_afraid

Resztę parametrów zostawiamy domyślne i klikamy zapisz. Możemy jeszcze kliknąć Przeładuj aby wymusić uruchomienie usługi.

Co dalej?

Dobrnęliśmy do końca przygotowań pod uruchomienie naszego pierwszego serwera. Tym samym mamy już niemal wszystko skonfigurowane, brakuje nam już "tylko" najważniejszego - pierwszego serwisu, bloga czy czegokolwiek innego co tylko nam wpadnie do głowy.

Do tego akurat użyłem Proxmoxa, czyli narzędzia do wirtualizacji, które pozwoli nam w łatwy sposób stawiać obok siebie wiele serwisów. To już jednak materiał na następny wpis - ten wyszedł wystarczająco obszerny.

Widzimy się za jakiś czas!

Jest dyskusja na mastodonie