Po co mi w ogóle jakiś homelab?

Załóżmy, że chcesz nauczyć się jakiejś technologii, systemu, aplikacji. Albo potrzebujesz wybrać i przetestować jakieś oprogramowanie potrzebne w twojej pracy. Wybierasz więc kilka pozycji z Internetu, pobierasz i instalujesz na swoim komputerze - spoko. Okazuje się, że jeden z programów jest dostępny tylko na Linuxa. Żaden problem - myślisz. Masz WSL (Windows Subsystem for Linux) i instalujesz go tam. Od ilości tych programów robi się trochę śmietnik na komputerze, ale to jeszcze żaden problem.

Po jakimś czasie okazuje się, że potrzebujesz zainstalować dwie wersje tego samego softu. Albo masz aplikację w architekturze klient - serwer i potrzebujesz mieć kilku takich klientów, żeby móc solidnie to przetestować. Nie za bardzo da się to już zrobić na tym jednym komputerze, a przecież nie będziesz ciągle pożyczał laptopa dziewczyny, bo ona w tym czasie miała akurat oglądać Netflixa. Tutaj już zaczyna wiązać się idea homelabu.

Co dalej? Czy muszę coś kupować?

Nie. Przynajmniej na razie. Możesz wykorzystać swój własny komputer, ale w nieco inny niż dotychczas sposób, czyli jako wirtualizator. Zainstaluj na nim VirtualBox, jeśli korzystasz z Windows, a jeśli masz Linuxa - czego zapewne nie muszę nawet tłumaczyć - to odpowiednie narzędzia masz już najprawdopodobniej wbudowane w system. W Ubuntu jest na przykład pod nazwą “menadżer maszyn wirtualnych”. Zresztą VirtualBoxa na Linuksie też można zainstalować.

Teraz zamiast instalować swoje aplikacje / serwery bezpośrednio na swoim komputerze, to w VrtualBoxie po prostu tworzysz maszynę wirtualną, instalujesz na niej wymagany system, w nim swoją aplikację i robisz tak dla dowolnej liczby swoich projektów, o ile oczywiście pozwalają ci na to zasoby sprzętowe. Masz teraz komputery w komputerze i nie zaśmiecasz swojego głównego systemu, dla którego te maszyny wirtualne to po prostu zwykłe pliki.

W pewnym momencie dojdziesz jednak do ściany. Kiedy liczba postawionych maszyn wirtualnych zacznie być większa, mogą zacząć ograniczać cię zasoby twojego komputera - CPU, RAM, miejsce na dysku. Musisz uruchamiać maszyny za każdym razem po włączeniu komputera - zarządzanie większa ilością zacznie być upierdliwe. Problematyczna będzie też bardziej zaawansowana konfiguracja sieciowa - a taka może być czasami konieczna (np. VLANy). Jeśli nie będziesz chciał wstrzymywać pracy swoich zasobów np. na noc, to twój komputer będzie musiał chodzić na okrągło.

Pierwszy homelab

Dlatego w pewnym momencie warto pójść dalej, czyli opracować swój pierwszy prawdziwy homelab. Moim zdaniem na początku nie warto iść od razu w zbyt rozbudowane rozwiązania - na to przyjdzie czas. Grałeś kiedyś w SimCity? Homelab to takie miasteczko - najpierw tylko kilka dróg i budynków, które potem konsekwetnie się rozwija, dodaje nowe budynki, zakłady pracy, infrastrukturę. Po jakimś czasie dochodzisz do wniosku, że niektóre miejsca twojego miasta są zatłoczone, źle zaprojektowane, wtedy to przerabiasz, a nawet burzysz i stawiasz jakąś część od nowa, już ze zdobytą wiedzą, zasobami i szerszą perspektywą. Oczywiście jeśli masz warunki i pieniądze, możesz od razu walnąć na środku potężne wieżowce, ale czy to ma sens kiedy tak na prawdę nie wiesz, jakie wyzwania przed tobą staną?

Dlatego jeśli jeszcze nie robiłeś u siebie takiego środowiska, proponuję najpierw zacząć od jednego, możliwie taniego komputera - może to być jakiś Mini PC, których jest bardzo dużo do wyboru, można tanio kupić takie nieco starszych generacji, które i tak wystarczą do większości eksperymentów. Jestem pewien, że dosłownie każdy znajdzie coś dopasowanego do swojego budżetu. Wybór na rynku jest ogoromny. Wkrótce napiszę coś o konkretnych sprzętach, których używałem, aby dać jakieś rozeznanie.

Jednak takim sprzętem może być również twój stary PC, NAS, laptop czy nawet Raspberry Pi. Na przykład u mnie był to laptop z uszkodzonym ekranem. Klapy z matrycą pozbyłem się całkowicie i taki potwór przez dłuższy czas służył np. jako Smart TV podpięty do telewizora z systemem Kodi. Na marginesie laptop to w ogóle jest niezły pomysł, po pobiera mało prądu, ma wbudowany UPS (baterię) i jest cichy. Ale na razie mniejsza o konkrenty sprzęt.

Ten komputer będzie służył jako host do wirtualizacji lub konteneryzacji. Systemem operacyjnym może być praktycznie jakakolwiek dystrybucja Linuxa, na której doinstalujesz obsługę KVM lub Dockera. Jeśli przeraża cię używanie terminala, można też dodać usługę Cockpit i wtedy wszystkim - łącznie z maszynami wirtualnymi - będziesz mógł zarządzać z przyjaznego interfejsu webowego. Osobiście zachęcam jednak do instalacji Proxmoxa, ponieważ jest to świetny, już dojrzały system wirtualizacji bazujący na Debianie. Możesz tam stawiać maszyny wirtualne, ale również kontenery LXC. Moim zdaniem jego największą zaletą jest to, że sprawdza się zarówno wśród domowych entuzjastów, jak i w firmach, nawet tych dużych. Wiedza, którą zyskasz eksperymentując z Proxmoxem, jest przydatna na wielu płaszczyznach - to nadal Linux, ale możesz na nim robić klastry, backupy, replikacje, poznać różne systemy przechowywania plików i wiele, wiele innych.

Chciałbym jeszcze dodać, że wprawdzie skupiam się w tym wpisie praktycznie tylko na wirtualizacji, ale homelab to nie tylko wirtualizacja. To również może być sieć, przechowywanie (np. NAS - Network Attached Storage) czy jakieś środowiska obliczeniowe.

Założenia

Zastanów się, do czego będzie ci potrzebne to środowisko. Czy będzie to wyłącznie “plac zabaw” do nauki nowych systemów? A może będziesz chciał też uruchomić na nim jakieś usługi, z których korzystał będziesz na codzień? W moim przypadku miałem takie cele:

  • środowisko możliwie najbliżej odwzorujące standardy “enterprise” pod względem architektury, oczywiście w odpowiednio mniejszej skali,
  • możliwość łatwego i szybkiego stawiania nowych maszyn wirtualnych do celów testowych,
  • miejsce, gdzie mogę przechowywać niektóre swoje dane i kopie zapasowe,
  • hostowanie pewnych systemów, których używam “produkcyjnie w domu”, takich jak Home Assistant.

Powody, dla których chcemy utworzyć homelaba, mogą być kluczowe dla jego koncepcji. Weźmy trzech przykładowych pracowników: web developera, administratora infrastruktury i bezpiecznika.

Dla web developera homelab nie będzie celem samym w sobie, a jedynie narzędziem do ułatwienia sobie pracy. Nie będzie go więc interesować rozbudowane środowisko i “backend” homelaba, ponieważ w jego pracy za stawianie środowisk, z których on korzysta odpowiedzialne są inne osoby. Dlatego najprawdobniej wystarczy mu jeden komputer z Dockerem lub KVM i maksymalnie prosta konfiguracja, aby nie musiał spędzać zbyt dużo czasu i uwagi na zbędne dla siebie kwestie.

Admin będzie miał całkowicie odmienne spojrzenie. Dla niego czasem nawet mniej się liczy to, co będzie później stawiał na maszynach wirtualnych, bo bardziej istotne będą kwestię z samym środowiskiem - np. co się stanie, jeśli jeden z trzech komputerów, z których utworzył klaster ulegnie awarii? Jak zachowa się system, jeśli odepnie jeden dysk z puli? Ile będzie trwać migracja maszyny wirtualnej na inny host? Pytań może być wiele, a najlepsze odpowiedzi można uzyskać po prostu sprawdzając to na prawdziwym środowisku. Pomyliłeś się i padło całe twoje środowisko? Żaden problem, nic nie tracisz (bo zakładamy, że nie masz tam ważnych danych), stawiasz klaster od nowa, za to jesteś już bogatszy o kolejną porcję wiedzy i doświadczenia.

Dla bezpiecznika ważna może być możliwośc postawienia systemu, na którym będzie mógł badać podatności i robić ataki w kontrolowanym środowisku. Innym pomysłem jest skonfigurowanie tak odseparowanego sieciowo i logicznie środowiska, w którym będzie można testować próbki malware. Dla osoby z Security, podobnie jak dla web developera sam homelab może również nie być celem samym w sobie, jednak sposób konfiguracji jest nieporównywalnie bardziej istotny.

Dla mnie, jako osoby zajmującej się m.in. systemami backupu, homelab czasem bardzo ułatwia pracę. Jeśli klient chciałby zrobić testy kilku systemów, postawienie ich w jego infrastrukturze wiąże się z tym, że trzeba czasem długo czekać na utworzenie maszyn przez jeden zespół, potem konfigurację sieci przez kolejny, a na końcu może się okazać, że i tak czegoś brakuje… więc znowu trzeba czekać. Poza tym może być np. częściowo zablokowany ruch sieciowy, mogę nie mieć jakichś uprawnień - to wszystko utrudnia testowanie czy debugowanie. W swoim homelabie nie muszę nikogo o nic prosić - wszystko zrobię sam.

Rozwój homelaba

Architektura i serwery

Jeśli zacznie ci brakować zasobów, możesz teraz zmodernizować swój sprzęt, np. dodać RAM, zmienić CPU. Jeśli nie masz takiej możliwości albo interesuje cię temat klastrów, możesz teraz kupić kolejny serwer / komputer. Jesteś już bogatszy o wiedzę z pierwszego homelaba. Może masz już w głowie plan na kompletny i docelowy homelab, zaplanowałeś już architekturę w każdym szczególe, wiesz, że będzie super. Muszę Cię w tej chwili zatrzymać.

Nie myśl, że twój “ostateczny” plan na homelaba rzeczywiście nim będzie. Gwarantuję Ci, że po jakimś czasie znowu zmieni ci się koncepcja, stwierdzisz, że mogłeś jednak zrobić to inaczej. I bardzo dobrze! Taka jest właśnie idea homelaba: ciągły rozwój, eksperymenty i zdobywanie doświadczenia. Wiem po swoim przykładzie, że już chyba dwukrotnie mój homelab miał być tą ostateczną wersją, a ja tylko będę z niego korzystał. Nic bardziej mylnego. Nie raz i nie dwa wszystko “zaorałem” 😉. Jednak oczywiście z czasem koncepcja będzie się klarować i szczególnie jeśli twój homelab nie będzie już tylko “labem”, ale też środowiskiem “produkcyjnym”, na którym będziesz trzymał swoje dane czy korzystał na codzień z jakichś usług, to przyjdzie moment na stabilizację pomysłu.

Sieć

Infrastruktura w firmach to nie tylko serwery. Trzeba też zadbać o sieć. Dopóki środowisko jest małe i działasz wyłącznie w sieci lokalnej, ta kwestia nie jest aż tak ważna. W dalszym etapie rozwoju stanie się jednak koniecznością. Jeśli zamierzasz wystawiać jakieś usługi ze swojej lokalnej sieci na zewnątrz, konieczna będzie odpowiednia konfiguracja, która może być skomplikowana, być może nie będziesz w stanie zrobić wszystkiego korzystając wyłącznie z routera dostawcy. Jeśli korzystasz z NASa (np. Synology) i będziesz chciał wykorzystać go jako przestrzeń dyskową pod swoje maszyny wirtualne na innych hostach, zapewne sieć 1 Gbps będzie za wolna. Obecnie złotym środkiem dla homelabów wydaje mi się 2,5Gbps. Najprawdopoboniej będziesz musiał kupić zarządzalne switche, szybsze karty sieciowe, a do twoich hostów z Proxmoxem przyda się ich kilka, aby odseparować lub przyspieszyć różne rodzaje ruchu.

Bezpieczeństwo

Ten podpunkt jest szczególnie ważny, jeśli zamierzasz wystawiać jakieś usługi ze swojej sieci lokalnej. Dobrze sprawdź, jakie są najlepsze praktyki i czy warto to robić. Jednak nawet jeśli niczego nie wystawiasz, to nie znaczy, że możesz się kwestią bezpieczeństwa w ogóle nie przejmować. Warto dbać od razu o pewien standard bezpieczeństwa (dobre hasła, używanie kluczy, odpowiednia konfiguracja serwerów, weryfikacja podatności itp.). Bardzo ważna jest tutaj wspomniana wcześniej konfiguracja sieci. Możesz zrobić taki VLAN, który np. w ogóle nie będzie miał łączności z innymi podsieciami czy Internetem i tam realizować bardziej ryzykowne tematy. Kolejną kwestią jest backup - warto od razu rozważyć implementację jakiegoś profesjonalnego rozwiązania, np. Proxmox Backup System, Veeam (do 10 obiektów darmowy) czy polski Storware Backup (również ograniczenie do 10 obiektów). Sama architektura backupu to temat na oddzielny wpis, chciałbym tylko, abyś zwrócił uwagę na pewne kwestie.

Dokumentacja

Na prawdę zachęcam do tworzenia rysunków i dokumentacji, nawet w homelabie. Po pierwsze, fajnie to wygląda 😉 - zachęcam do wejścia na reddita w r/homelab aby poszukać inspiracji. Po drugie, jest po prostu przydatne. Pamięć jest zawodna, po jakimś czasie trudno przypomnieć sobie, jaki mieliśmy tok rozumowania konfigurując coś tak, a nie inaczej.

Wybór sprzętu

Chciałbym jeszcze dodać kilka słów o samym sprzęcie. Kiedyś wrócę do tematu z większymi konkretami, teraz tylko chcę przekazać, na co warto zwracać uwagę.

Możliwości rozbudowy

Laptop jest fajny, bo jest cichy i energooszczędny. Ale na dłuższą metę jest problematyczny - ma ograniczone możliwości rozbudowy, a jak będziesz wykorzystywał go bardzo mocno, to zaleta małego hałasu również zniknie, kiedy wentylatory będą kręcić się na maksa. Warto rozważyć komputery klasy Micro/Mini PC.

Najmniejsze z nich zasilanie są zasilaczami podobnymi do tych w laptopach. Są małe, ciche i mają pewien potencjał rozbudowy. Np. Dell Optiplex 3060, mimo małych rozmiarów ma dwa sloty RAM i miejsce na 2 dyski (2,5 cala SATA i NVME). Nieźle jak na takiego maluszka. Jeśli jednak potrzebujesz więcej, to bardzo dobrym kompromisem między rozmiarem, ceną i możlwościami są komputery w formacie SFF (Small Form Factor). Są one nadal bardzo kompaktowe, ale zyskujesz w nich np. 4 sloty RAM i miejsce na kilka dysków (np. HP 800 G3 ma łącznie aż 5 slotów na dyski! 2x3,5 cala, 1x2x5 cala i 2xNVME). Jeśli masz miejsce, to oczywiście możesz w ogóle się nie ograniczać, tylko pójść np. w ATX lub inne większe obudowy niestandardowych rozmiarów. Oczywiście są również tacy, którzy stawiają prawdziwe szafy rack i normalne, profesjonalne serwery, ale to już wyższa szkoła jazdy 😅. Trzeba mieć na to na prawdę szczególne warunki i potrzeby.

Pobór prądu i hałas

Przy małych lub sporadycznie używanych homelabach może to nie będzie miało aż takiego znaczenia, jednak w pewnym momencie zużycie prądu zaczyna być ważną kwestią. Jeśli działasz na homelabie przez dłuższy czas, lub używasz go (lub jego części) jako domowej “selfhosted” serwerowni, gdzie urządzenia pracują 24h na dobę, należy zadać sobie pytanie, ile prądu pobiera całość mojego homelabu.

Nie zapomnij, że to mogą być nie tylko komputery/serwery, ale też routery czy switche, nawet jeśli ich wpływ będzie dużo mniejszy. W celu sprawdzenia poboru prądu polecam wykorzystać smart gniazdka. Może okazać się, że warto jednak wyłączać część sprzętu, jeśli nie korzystasz z niego cały czas. Jeśli hostujesz sobie jakieś usługi “produkcyjnie”, np. masz Nextclouda, to warto przeliczyć, ile kosztuje prąd i porównać to z wykupieniem jakiejś chmurowej usługi typu One Drive, aby przemyśleć opłacalność rozwiązania. Jeśli chodzi o hałas, tu dużo zależy od samego sprzętu ale również miejsca, w którym się znajduje - im gorsza wentylacja i wyższa temperatura, tym bardziej sprzęt będzie się grzał i w konsekwencji będzie głośniej. Niektóre dyski HDD mogą również mocno hałasować - różnice między niektórymi modelami potrafią być kolosalne. Dlatego sypialnia nie jest najlepszym miejscem na homelaba, warto to wziąć pod uwagę.

Podsumowanie

Ten wpis jest jedynie bardzo ogólnym wprowadzeniem do tematu. Motywacje do stworzenia takiego domowego środowiska testowego mogą być różne, ale jedno jest pewne - jest to bardzo rozwijające i po prostu wciągające zajęcie. Jeśli szukasz inspiracji, to polecam odwiedzić reddita r/homelab i r/selfhosted oraz grupę Home Server Setups na facebooku. Zobaczysz, jak wiele jest różnych spojrzeń i pomysłów na tą kwestię. Uważam, że zrobienie i udokumentowanie dobrego homelaba jest świetnym pomysłem dla młodych ludzi, którzy wiążą swoją przyszłośc z administracją IT, chcą być bezpiecznikami czy programistami. Możliwości nauki są praktycznie nieskończone i spokojnie można chwalić się takim projektem w CV, bo w wielu aspektach to co robi się w homelabie, to taka sama praca jak w firmie i takie samo realne doświadczenie, tylko w mniejszej skali.

Powodzenia w ekserymentach!