Jeśli tutaj trafiłeś najprawdopodobniej zastanawiasz się do czego może nadawać się Raspberry Pi. W wielu miejscach można przeczytać o wszechstronności Raspberry Pi i o tym, że daje wiele możliwości, tylko co to tak właściwie znaczy?
Trochę teorii o Raspberry Pi
Wspominane wpisy o wszechstronności Raspberry nie biorą się znikąd, wszystko dzięki obsłudze zaawansowanych systemów operacyjnych. Podstawowym systemem operacyjnym jest Raspberry Pi OS, bazująca na Debianie dystrybucja Linuxa.
Tak, to jest pełnoprawny Linux, który jak wiadomo często jest używany w profesjonalnych zastosowaniach. Wiele usług w internecie zainstalowanych jest właśnie na serwerach linuxowych, ten blog również. Dzięki temu mamy duży wachlarz dostępnego oprogramowania które możemy skonfigurować na naszym Pi.
Także jest to bardzo ekonomiczne rozwiązanie, pomijając relatywnie niską cenę urządzenia, zużycie prądu na przykładzie mojego serwera nie przekraczało 7 kWh miesięcznie.
Przy decyzji wyboru Raspberry Pi dla siebie, należy wziąć pod uwagę swoje wymagania i dopasować je do odpowiedniej wersji Pi. Do prostych zastosowań wystarczy Raspberry Pi Zero 2, z kolei największe możliwości mamy w przypadku wyboru Raspberry Pi 4 i 5. Na początek przygody z Raspberry polecam wybór płytek obsługujących systemy 64 bitowe, czyli np. Raspberry Pi 4, 5 oraz Zero 2. Nie oznacza to że starsze płytki są już bezużyteczne, wręcz przeciwnie, to dalej wspaniały sprzęt na którym znaczna część oprogramowania dalej działa. Niestety trochę starsza architektura i mniejsza moc obliczeniowa może nie wystarczać z perspektywy dzisiejszych standardów oraz wymagać dodatkowych nakładów pracy przy konfiguracji.
Architektura ARM
Ważnym aspektem o którym trzeba wiedzieć jest architektura procesorów pracujących na płytkach Raspberry Pi. Wszystkie Pi bazują na procesorach ARM, czyli architekturze zyskującej coraz większą popularność, ale są zdecydowanie mniej popularne niż procesory x86. Z tego względu może się okazać że oprogramowanie które będziemy chcieli zainstalować na naszym mini serwerze nie będzie skompilowane na ARM, przez co sami będziemy musieli je skompilować, oczywiście jeśli kod źródłowy będzie dostępny. Fakt ten niestety może okazać się trudnością dla początkujących adminów, także nawet bardziej doświadczonym użytkownikom może sprawić wiele problemów przez brak dostosowania do specyfiki ARM. W gorszej sytuacji gdy kod źródłowy nie będzie dostępny, będzie trzeba spróbować skonfigurować emulację środowiska x86, co również jest trochę bardziej skomplikowanym procesem oraz wiąże się z spadkiem wydajności programu. To podejście również może skutkować niepowodzeniem podczas uruchamiania naszej usługi. Na szczęście Raspberry Pi oraz architektura ARM na rynku jest już trochę czasu, z tego względu duża część oprogramowania została już dostosowana do pracy na ARM.
Wymagania infrastruktury sieciowej
Wszystkie rzeczy opisane w tym poście opierają się na sieci. Jeśli chodzi o sieć lokalną, wszystkie przykłady na pewno będą działały. Niestety sprawa się komplikuje gdy chcemy mieć dostęp do naszych zasobów z każdego miejsca na ziemi. Podstawową kwestią jest publiczny adres IP. Należy ustalić czy nasz dostawca internetu przypisuje nam indywidualny adres IP, widoczny w internecie oraz czy zezwala nam na komunikację z zewnątrz. Najprościej znaleźć tą informację na stronie dostawcy lub bezpośrednio się z nimi skontaktować. Drugim aspektem na który trzeba uważać jest dynamiczny adres IP. Jest to sytuacja w której pomimo posiadania zewnętrznego adresu IP, ten cyklicznie się zmienia. Na szczęście istnieją usługi Dynamic DNS które na bieżąco monitorują nasz adres IP i w przypadku jego zmiany aktualizują tą informacje w domenie którą otrzymaliśmy z usługi DDNS. W przypadku własnego serwera warto również zaopatrzyć się w własną domenę, aby nie musieć uczyć się na pamięć mało atrakcyjnego adresu IP, domena będzie łatwa do zapamiętania. I od razu podpowiem, własne domeny można łączyć z usługami DDNS, więc nie trzeba korzystać z domeny dostarczonej przez usługodawcę.
Praktyka, czyli faktyczne użycie Raspberry Pi
NextCloud
NextCloud jest darmowym oprogramowaniem do transferu i przechowywania plików. Jest to prywatna alternatywa do rozwiązań takich jak DropBox lub Google Drive. NextCloud jest kompatybilny z Raspberry Pi, i do tego celu najbardziej polecam Pi w wersji 4 lub 5. Nasze pliki możemy wgrywać za pomocą interfejsu w przeglądarce, aplikacji mobilnej oraz klienta dla systemów Windows, macOS i Linux. Dużym plusem NextClouda jest aplikacja dodająca wsparcie dla kluczy U2F. Warto zainteresować się tym oprogramowaniem aby zagwarantować sobie i rodzinie przestrzeń na dane bez opłacania dodatkowych abonamentów.
WireGuard
WireGuard jest darmowym serwerem VPN. Jest to przydatne narzędzie którym w bezpieczny sposób jesteśmy w stanie połączyć się z naszą siecią lokalną, przykładowo w celu dostępu do jakiegoś urządzenia które nie może być dostępne z poziomu internetu. Innym zastosowaniem VPN'a jest zmiana naszej lokalizacji widzianej przez inne serwery. Może się to przydać na zagranicznych wyjazdach, gdzie niektóre usługi mogą być niedostępne poza granicami kraju w którym się mieszka. Będąc np. w Stanach Zjednoczonych, dzięki VPN'owi zlokalizowanemu np. w Polsce, usługi internetowe będą widziały że nasze połączenie jest wykonywane z Polski.
Serwer WWW
Własny serwer to idealne miejsce na własną stronę internetową. Jeśli chcesz mieć swoje miejsce w sieci, dzielić się swoją pajsą, posiadać swoją wizytówkę lub masz jakikolwiek inny pomysł, dzięki Raspberry Pi możesz go zrealizować. Do dyspozycji jest wiele rozwiązań, integracja z PHP, Pythonem lub Javą nie stanowi żadnego problemu. Gdy potrzebujesz bazę danych, również można ją zainstalować.
Samba
Samba jest kolejnym darmowym serwerem, tym razem służy on do tworzenia dysków sieciowych. W przeciwieństwie do NextClouda który wymaga klienta synchronizacji, Samba tworzy udział w sieci lokalnej, który możemy podłączyć jako dysk do naszego komputera bez żadnego dodatkowego programu. Może to być szczególnie przydatne gdy chcemy przesyłać dużą ilość danych, a nie zależy nam, albo nawet nie chcemy, aby te dane były dostępne przez internet.
MineCraft
Jeśli lubisz grać w Minecrafta, ta wiadomość może Cię ucieszyć. Na Raspberry Pi możliwe jest uruchomienie serwera Minecraft. Malnika co prawda jest za słaba aby grać w kilkaset osób, aczkolwiek spisuje się idealnie do małego serwera dla znajomych. Jest to jedno z bardziej wymagających zadań dla Pi, dlatego najlepszym wyborem będzie najnowsze Raspberry Pi 5.
GitLab
Propozycja głównie skierowana do programistów, i nie jest to żart. Naprawdę na tak małej płytce jakim jest Raspberry Pi można uruchomić instancję GitLaba. Dla niewtajemniczonych GitLab jest oprogramowaniem którym głównym założeniem jest przechowywanie kodów źródłowych pisanych projektów. Jest to bardzo przydatne narzędzie dające duży zakres kontroli nad projektami. Z powodzeniem w GitLabie można uruchomić rejestry kontenerów, w których możemy trzymać nasze obrazy Dockerowe.
Inne propozycje
Raspberry Pi oferuje dużo oprogramowania czekającego do instalacji. Wymienione wyżej przykłady to jedynie mały wycinek tego co możemy sobie skonfigurować. Usług jest wiele, centra sterujące SmartHome, narzędzia dla programistów, serwery sieciowych drukarek i skanerów. Jeśli potrzebujesz w życiu codziennym jakiegoś rozwiązania, z dużym prawdopodobieństwem takie narzędzie jest już gotowe. Na blogu niedługo pojawią się szczegółowe opisy konfiguracji poszczególnych usług, dlatego zapraszam wkrótce!
Czy koniecznie jest wymagane Raspberry Pi?
Oczywiście że nie. Powyższe przykłady opisuję na bazie Raspberry Pi ponieważ jest to cudowne urządzenie do nauki zagadnień sieciowych, programowania i elektroniki. Powyższe usługi bez problemu powinny dać się uruchomić na innych komputerach jednopłytkowych, serwerach lub terminalach działających pod kontrolą systemu linux. Oczywiście trzeba wziąć pod uwagę moc obliczeniową konkretnych urządzeń. Opisane usługi z artykułu z powodzeniem uruchomiłem i używałem na Raspberry Pi, stąd moja rekomendacja co do tej platformy.