Czym jest własny serwer NAS i do czego służy ?
Własny NAS, czyli Network Attached Storage jest scentralizowanym dyskiem sieciowym służącym do przechowywania różnych plików jak np. multimedia, zdjęcia, dokumenty firmowe itp.
Od strony technicznej, najczęściej jest to niewielki komputer z pojemnym dyskiem twardym i oprogramowaniem umożliwiającym nam szybki i bezproblemowy dostęp do plików.
Stawiając własny Serwer internetowy na Raspberry Pi5, zastanawiałeś się być może, czy istnieje także możliwość uruchomienia na nim takiego własnego serwera NAS ?. Pytanie to jest tym bardziej zasadne, że dysk Nvme, na którym uruchomiłeś swój serwer, prawdopodobnie posiada dużo niewykorzystanego miejsca.
Montując dysk większej pojemności, np. 128gb, 256gb, 512gb czy 1tb i więcej, w swoim serwerze na Raspberry Pi stworzyłeś mu idealne warunki, aby uruchomić na nim własny NAS. Ile więc miejsca na taki serwer NAS mógłbyś przeznaczyć?
O ile twój serwer internetowy nie posiada uruchomionego serwera poczty to, na sam system operacyjny (linuks), logi systemowe, pliki stron internetowych, bazy danych itp. wystarczy około 50gb miejsca i to często w nadmiarze. Jeśli masz uruchomione dodatkowe serwery poczty (wychodzącej i przychodzącej) to, prawdopodobnie będziesz musiał na nie przeznaczyć dodatkowe 50gb-100gb na dane (emaile).
Co prawda posiadając 128gb dysk twardy, rozpatrując drugi przypadek, za bardzo nie poszalejesz ale posiadając pojemniejszy dysk lub/i gdy nie posiadasz uruchomionych serwerów pocztowych, pozostałe miejsce możesz przeznaczyć na własny NAS.
Jakie rozwiązanie dla własnego serwera NAS będzie dla mnie odpowiednie ?
W internecie można spotkać wiele artykułów o tym, jak taki własny NAS na Raspberry Pi5 postawić. Pewnym problemem może okazać się to, że praktycznie wszystkie artykuły bazują na tym samym rozwiązaniu, jakim jest serwer SMB (Samba). Można znaleźć oczywiście artykuły omawiające OpenMediaVault np, ale nie do końca one sprawdzą się w omawianej przeze mnie konfiguracji. FreeNAS natomiast jest samoistną dystrybucją linuksa i na procesory ARM nie występuje.
Stawiając własny NAS jako serwer współistniejący z innymi serwerami (www, poczty, mysql itp.), powinniśmy zwrócić uwagę na to, aby jak najmniej obciążał nam dodatkowo system. Wspomniana Samba nie jest złym rozwiązaniem, nie zawsze jednak najlepszym. My jako użytkownicy Raspberry Pi5. którzy najczęściej nie chcemy wydawać dodatkowych pieniędzy na komercyjne rozwiązania do wyboru mamy trzy możliwości.
- Protokół SMB (Serwer Samby)
- Protokół NFS (Serwer NFS)
- Własną chmurę opartą na oprogramowaniu OwnCloud lub NextCloud
Serwer Samby
Jeśli nie zamierzasz udostępniać swoich zasobów poza sieć wewnętrzną (np. do internetu) to jest to rozwiązanie dla ciebie, które sprawdzi się w większości przypadków.
Instalacja serwera Samby pod własny NAS, na Raspberry Pi5
Najprostszym sposobem na zainstalowanie serwera Samby jest użycie gotowych pakietów z naszego repozytorium linuksa (Raspberry Os, Debiana lub Ubuntu). Wydajmy więc w konsoli naszego Raspberry następujące polecenie:
$ sudo apt install samba samba-common-bin
Konfiguracja serwera Samby
Utwórz katalog, w którym będą przechowywane udostępniane zasoby. Proponuję utworzyć nowego użytkownika nas. Wpisz w konsoli
$ sudo adduser nas /home/nas/
Nadaj mu prawa użytkownika samby
$ sudo smbpasswd -a nas
Zmień prawa dostępu do katalogu poprzez wpisanie w konsoli
$ sudo chmod -R 777 /home/nas
do tego celu możesz wykorzystać także wspomniany we wcześniejszych częściach serii artykułów, Midnight Commander.
Wyedytuj plik /etc/samba/smb.conf i dodaj do niego na samym końcu wpisów poniższą treść
[nas]
path=/home/nas
public=no
guest ok=no
create mask=0777
directory mask=0777
writeable=yes
Zapisz go, a następnie przeładuj serwer Samby
$ sudo systemctl restart smbd
W kolejnym kroku ustaw limity dla użytkownika. Jest to ważne, abyś miał jakąkolwiek kontrolę nad zajętością dysku twardego serwera.
w konsoli wpisz
$ edquota -u nas
Ustaw limity dla soft oraz hard według poniższego przykładu. Poniższy przykład wskazuje na 250gb miejsca na dane dla limitu soft i 300gb limitu dla hard. Zmodyfikuj te wartości według swoich potrzeb (wartości te podane są w bajtach).
Filesystem blocks soft hard inodes soft hard
/dev/nvme0n1p2 14553556 262144000 314572800 802 0 0
Filesystem – jest to katalog twojego dysku, tego nie ruszaj (jego nazwa u ciebie może być inna)
blocks – jest to ilość bloków na twoim dysku, tego też nie ruszaj
soft – jest to miękki limit quota. Ten limit może zostać przekroczony, do wartości limitu hard. Przy czym nie jest to stałe, i jeżeli limit zostanie przekroczony to, będziesz musiał te nadmiarowe dane usunąć np. w przeciągu 7 dni. Zmodyfikuj go według uznania.
hard – jest to twardy limit, po przekroczeniu którego nie będziesz mógł nic na dysku zapisać, nawet tymczasowo. Zmodyfikuj go według uznania.
inodes – jest to ilość węzłów, tego nie ruszaj
kolejne wartości soft i hard to miękki i twardy limit dla ilości plików. Wartości 0 (zero) oznaczają bez ograniczeń.
Zapisz zmiany poprzez ctr-x, potwierdź zmiany wpisując y i wciśnij enter.
Jak można zauważyć, został tu zastosowany pewien trik, aby ograniczyć ilość przydziału miejsca w udostępnianym katalogu. Zastosowanie nazwy użytkownika systemu linuks, który posiada prawa dostępu do katalogu /home/nas i umieszczenie zasobów w tym samym katalogu, wymusza ograniczenie użycia zasobów tego użytkownika, wyłącznie do tego katalogu. Trochę zamotałem ale powinieneś zrozumieć o co mi chodzi.
Otwórz porty dla samby na firewallu na serwerze Raspberry Pi
dla tcp: 445
dla udp: 445
Udostępnianie zasobów serwera Samby
Linuks
Dopisz na samym końcu pliku /etc/fstab następujące polecenie (polecenie musi być w jednej linii)
//192.168.0.200/nas/ /home/username/nas(smb) cifs username=nas,password=yourpass,rw,file_mode=0777,dir_mode=0777 0 0
//192.168.0.200/nas/ – adres ip serwera, zamień na swój, /nas/ to udostępniany katalog nas znajdujący się w katalogu domowym /home na serwerze (ten pozostaw bez zmian jeśli utworzyłeś katalog i hasło według mojej sugestii) .
/home/username/nas(smb) – ścieżka do katalogu montowania zasobów nas na komputerze klienckim. username to, twoja nazwa użytkownika na komputerze klienckim, zmień ją na swoją.
password=yourpass – yourpass zamień na swoje hasło do samby
Zapisz plik i zrestartuj komputer
Windows
Otwórz Eksplorator Windows i kliknij w ikonkę Ten komputer. Następnie prawym przyciskiem myszy kliknij gdziekolwiek w otwartej karcie i wybierz Dodaj lokalizację sieciową.
Adres internetowy lub sieciowy: \\192.168.0.200\nas
podany adres ip zamień na swój i przejdź dalej, uzupełnij pozostałe pola i zatwierdź zmiany. Powinieneś teraz móc przeglądać swoje zasoby serwera nas.
Android
- Ściągnij i zainstaluj aplikację AndSMB (samba client) i uruchom ją
- Kliknij + na górze aby dodać nowe połączenie
- Wypełnij wszystkie wymagane pola jak ip serwera, login, hasło, katalog z zasobem nas i kliknij save.
- Kliknij w niebieski folder co powinno nawiązać połączenie z twoim serwerem nas i udostępnić zasoby.
Mac Os
- Na pulpicie naciśnij Command+K . Wpisz smb://twoj-ip-serwera i naciśnij klawisz Enter . twoj-ip-serwera to, wewnętrzny adres ip. twojego serwera np. 192.168.0.200
- Wprowadź nazwę użytkownika i hasło
- Zatwierdź wprowadzone zmiany
Od tej chwili udostępnione zasoby serwera NAS powinny być już dostępne.
iOS
- Otwórz aplikację Pliki, przejdź do widoku Przeglądaj i wybierz ikonę z trzema kropkami w prawym górnym rogu ekranu
- Powinieneś zobaczyć opcję Połącz z serwerem. Kliknij w nią
- W obszarze Połącz jako, wybierz opcję Zarejestrowany użytkownik . Wprowadź nazwę użytkownika i hasło wybrane w kroku oraz zatwierdź wprowadzone zmiany.
- Kliknij Dalej w prawym górnym rogu, aby się połączyć.
Serwer NFS
Protokół NFS i oparty na nim serwer NFS to, rozwiązanie wywodzące się z systemów Uniksowych, w tym też linuksa. Jeżeli komputery w twojej sieci, to urządzenia działające głównie na tym systemie operacyjnym, możesz postawić swój własny NAS, także w oparciu o serwer NFS. W porównaniu do Samby, wadą tego rozwiązania jest brak możliwości limitowania miejsca na dysku, gdyż NFS nie obsługuje uwierzytelniania. Wielką zaletą jego jest natomiast szybkość.
Jak utworzyć katalog dla udostępnianych zasobów, opisałem w powyższym opisie serwera samby. Zapoznaj się więc z tym opisem i utwórz odpowiedni katalog oraz użytkownika, jeśli jeszcze tego nie zrobiłeś.
Instalacja serwera NFS pod własny NAS
Żeby zainstalować serwer NFS na swoim Raspberry Pi5, wpisz w konsoli
$ sudo apt install nfs-kernel-server portmap
Konfiguracja serwera NFS
Wyedytuj plik /etc/exports i na samym końcu, dodaj do niego następujący wpis
/home/nas 192.168.0.0/255.255.255.0(rw)
gdzie,
/home/nas to katalog z udostępnianymi zasobami
192.168.0.0/255.255.255.0 to cała sieć jaka będzie miała dostęp do dysku sieciowego. W tym wypadku wszystkie ip z zakresu 192.168.0.1-192.168.0.255
(rw) zezwolenie na odczytywanie i pisanie w katalogu.
Otwórz odpowiednie porty na firewallu na swoim Raspberry Pi
dla tcp: 111,2049,4045
dla udp: 111,2049,1110,4045
Zrestartuj serwer nfs wpisując w konsoli
$ sudo systemctl restart nfs-kernel-server
oraz
$ sudo systemctl restart portmap
Udostępnianie zasobów serwera NFS
Linuks
Na urządzeniach klienckich z linuksem, zainstaluj
$ sudo apt install nfs-common
Następnie zasoby dyskowe możesz udostępniać poleceniem
$ mount -t nfs 192.168.0.200:/home/nas/ /home/username/nas(nfs)
gdzie,
192.168.0.200 to adres ip serwera na raspberry pi (ten na jakim uruchomiłeś serwer nfs)
pierwszy katalog po : /home/nas/ to katalog z udostępnianymi zasobami nas
drugi katalog /home/username/nas(nfs) to katalog na komputerze klienckim, gdzie zasoby mają być podmontowane i tym samym udostępnione.
Oczywiście, możesz montować zasoby ręcznie za każdym razem, gdy zrestartujesz komputer i gdy będą one potrzebne, ale możesz także zautomatyzować ten proces.
Tu nasuwa się jednak pewien problem, jako że zasób udostępniany poprzez NFS, powinien być montowany dopiero po uruchomieniu się sieci. Jeśli to nastąpi wcześniej, wywali błąd i dostępu do zasobu dyskowego nie uzyskasz :]
Wymusza to na nas, zastosowanie drobnego triku, który opóźniał by montowanie zasobów dyskowych serwera nas. Żeby uniknąć problemów z jakimi ja się spotkałem udostępniając zasoby na komputerze z linuksem, dodaj od razu poniższy wpis na końcu w pliku /etc/fstab
192.168.0.200:/home/nas/ /home/username/nas(nfs) nfs rsize=8192,wsize=8192,timeo=14,_netdev 0 0
Zmień adres ip oraz katalog na swoje własne i zapisz plik.
Uwaga: Powyższy wpis musi się znaleźć w jednej linii w pliku fstab.
Zrestartuj komputer z linuksem. Po ponownym uruchomieniu, twój dysk nas powinien podmontować się automatycznie i powinieneś móc korzystać z zasobów w nim zawartych.
Własny nas Serwer NFS vs SMB
Nie mam zamiaru wywoływać kolejnej świętej wojny, który serwer pod własny NAS jest lepszy. Każdy ma swoje wady i zalety.
Zaletą serwera NFS jest to, że jest szybszy niż SMB, za to SMB umożliwia uwierzytelnianie, czego NFS nie obsługuje. Z tego też powodu nie da się limitować udostępnianego miejsca na serwerze NAS korzystając z NFS.
NFS i Samba mogą jednak współistnieć ze sobą i możesz używać ich zamiennie według potrzeby. Jeśli masz potrzebę skopiowania dużych ilości danych np., możesz użyć zasobów udostępnianych przez serwer NFS. Przy zwykłym użytkowaniu możesz używać Samby, aby mieć pod kontrolą zasoby dysku twardego na serwerze.
Jak widać na powyższym przykładzie, dwa serwery (nfs i samba) zostały podmontowane dokładnie do tych samych zasobów na Raspberry Pi – do katalogu /nas. Serwer NFS udostępnia całe dostępne miejsce, natomiast Serwer Samba respektuje ustawione limity.
Chmura OwnCloud lub NextCloud jako własny NAS
Rozwiązanie najbardziej wszechstronne, zalecane osobom, które wymagają, aby ich zasoby były dostępne w sieci Internet. Uruchomienie chmury na oprogramowaniu NextCloud jest bardzo podobne do OwnCloud, więc nie będę opisywał obydwu przypadków.
Instalacja chmury OwnCloud
Rozwiązanie to działa w oparciu o zwykły protokół http/https, więc instalacja przebiega tak, jak każdej innej strony internetowej.
- Skonfiguruj swój DNS oraz załóż konto www dla wybranej przez siebie domeny lub subdomeny. Załóż bazę danych MySQL dla niej (jak to zrobić mówiłem we wcześniejszych częściach tutoriala). Zakładając nowe konto www zwróć uwagę, aby włączyć szyfrowanie ssl np. Let’s enCrypt oraz przydzielić konkretny limit Quota. Nie chcesz chyba, aby po jakimś czasie, w najmniej spodziewanym momencie, twój serwer stanął z powodu braku miejsca na dysku :]
- Wybierz też PHP w wersji 7.4, w chwili pisania tego artykułu OwnCloud nie współpracuje z PHP z gałeżi 8.x.
- Wrzuć pliki OwnCloud na serwer (pobrane ze strony https://owncloud.com/download-server/). Oprogramowanie OwnCloud ma też opcje płatne jednak całość opiera się o ten sam plik instalacyjny. Płatne opcje w ramach danej usługi załączane są po wpisaniu odpowiedniego klucza autoryzacyjnego.
- Uruchom w przeglądarce adres https://nazwa-domeny.pl, powinno to uruchomić instalację OwnCloud. Zainstaluj usługę, postępując zgodnie z opisem wymaganych opcji, co nie powinno być zbyt skomplikowane.
- Zaloguj się do własnej chmury OwnCloud
Konfiguracja chmury OwnCloud
Autor oprogramowania udostępnia wiele przydatnych rozszerzeń do OwnCloud, zarówno tych darmowych jak i płatnych poprawiających bezpieczeństwo lub rozszerzających funkcjonalność chmury.
My skupimy się na tych darmowych, a o to moja propozycja
brute_force_protection – dodatek poprawiający bezpieczeństwo, chroniący przed atakami typu brute force na naszą chmurę. Działa on podobnie jak wcześniej już omawiany fail2ban (oczywiście od strony użytkownika nie programowej, czy algorytmicznej). Blokuje czasowo próby ataku na nasz serwer (IP).
Anti-Virus – dodatek, dzięki któremu nasze pliki dodawane do OwnCloud będą skanowane przez oprogramowanie antywirusowe. Wtyczka wymaga instalacji ClamAv na serwerze i jej konfiguracji. Cały proces nie jest skomplikowany i opiszę go w dalszej części artykułu.
camerarawpreviews – fajny dodatek jeśli robimy zdjęcia w formacie raw, które chcielibyśmy wrzucić na naszą chmurę. Daje on podgląd do zdjęć raw co pomaga w ich identyfikacji.
gallery – pozwala na stworzenie galerii, ze zdjęć dodanych do chmury
music – dodaje odtwarzacz muzyki i tym samym pozwala na jej słuchanie bezpośrednio z naszej chmury OwnCloud.
W celu dalszej poprawy bezpieczeństwa, możesz dodatkowo doinstalować jedno z dostępnych rozszerzeń dla logowania dwuetapowego.
Dodatkowe wtyczki, które opisałem, zainstalować możesz, przechodząc do: Pliki/Market
Konfiguracja ogólna
Kolejnym krokiem będzie dodanie kilku wpisów do pliku /config/config.php. Na samym końcu pliku przed znakiem ); na serwerze – w katalogu ze stroną.
'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'redis' => [
'host' => 'localhost',
'port' => 6379,
'timeout' => 0,
'password' => '',
'dbindex' => 0,
],
'filelocking.enabled' => true,
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
'host' => 'localhost',
'port' => 6379,
'timeout' => 0,
'password' => '', // Opcionalnie jeśli twój serwer redis posiada zdefiniowane haasło.
],
Uwaga, wpis ten włącza cachowanie dla naszej chmury co odciąża zarówno sam serwer jak i przyspiesza jej działanie. Żeby jednak działało to poprawnie, musisz mieć zainstalowany na serwerze serwer redis (jego instalację opisałem w poprzednich częściach tutoriala). Wymagane są także rozszerzenia php7.4-apcu oraz php7.4-redis. Na wszelki wypadek wpisz w konsoli swojego serwera
$ sudo apt install php7.4-apcu
$ sudo apt install php7.4-redis
Jeśli korzystasz z innej wersji php dla owncloud np. php7.3, zainstaluj dla niej powyższe pakiety oprogramowania.
Stwórz następnie w katalogu z plikami oprogramowania Owncloud na serwerze plik .htaccess i umieść w nim poniższy wpis
<If "%{HTTPS} == 'on'">
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSu
Header always set Content-Security-Policy: upgrade-insecure-requests
</IfModule>
</If>
Zapisz plik.
Następnie przejdź w panelu zarządzania OwnCloud do Ustawienia/Ogólne
Skonfiguruj Serwer pocztowy według poniższego wzorca. Przykładowa konfiguracja jest podana dla Gmail, ale podobnie będzie ona wyglądała dla każdego innego serwera pocztowego. Gmai do poprawnego działania wymaga dodatkowego hasła dla aplikacji więc (z podstawowym nie będzie działał prawidłowo),
- zaloguj się do swojej skrzynki Gmail
- kliknij konto google (twój avatar w prawym górnym rogu), a następnie zarządzaj kontem Google
- W lewym menu kliknij Bezpieczeństwo
- Włącz weryfikację dwuetapową jeżeli jeszcze nie masz włączonej
- Kliknij w nią i wpisz raz jeszcze swoje hasło do konta Google
- Zjedź na sam dół i przejdź do Hasła do aplikacji
- Wpisz nazwę np. Owncloud i zatwierdź
- Skopiuj wygenerowane hasło, to je wpiszesz w konfiguracji serwera pocztowego w Owncloud
Teraz w panelu Owncloud:
Zapisz poświadczenia, a następnie
w pole test Reciever email, wpisz swój jakikolwiek adres mail jaki posiadasz i kliknij wyślij mail. Jeśli otrzymasz maila z testową wiadomością OwnCloud, to znaczy, że konfiguracja przebiegła prawidłowo.
następnie poniżej zaznacz opcję
Cron
Użyj systemowej usługi cron do wywoływania cron.php co 15 minut.
Zaloguj się do konsoli swojego serwera z prawami roota (sudo -s) i wydaj następujące polecenie
# crontab -u webx -e
Tutaj uwaga, webx, to nazwa użytkownika z prawami do plików owncloud na serwerze. Jeśli instalowałeś serwer według mojego poradnika, to w panelu ispconfig3 przejdź do zakładki Strony. x to będzie id twojej strony. Jeśli np. id dla twojej strony wskazuje na 4, to będziesz musiał podmienić to wyrażenie na web4. Wtedy będzie ono wyglądało tak:
# crontab -u web4 -e
dopisz do otwartego powyższym poleceniem pliku poniższą instrukję
/15 * * * * /usr/bin/php7.4 -f /var/www/clients/client0/web4/web/occ system:cron
Oczywiście web4 zamień na swoją wartość i jeśli nie używasz php7.4, to zmień wersję PHP na prawidłową.
Jeżeli konfiguracja jest prawidłowa, to do 15min w OwnCloud powinna zapalić się zielona „lampka” Cron Ostatnie uruchomienie …
Jeżeli jest inaczej , popełniłeś gdzieś błąd.
Konfiguracja Anti-Spam
Jeżeli zainstalowałeś dodatek Anti-Spam. Zainstaluj na serwerze program antywirusowy ClamAv poprzez wydanie w konsoli serwera polecenia
# sudo apt install clamav clamav-daemon -y
następnie uruchom go
# sudo systemctl start clamav-daemon
Przejdź następnie do Panelu OwnCloud do zakładki bezpieczeństwo i uzupełnij pola według poniższego schematu
Socket to: /var/run/clamav/clamd.ctl
Kliknij Zapisz. Obecna, standardowa konfiguracja nie będzie usuwała zainfekowanych plików, a jedynie dodawała odpowiednie informacje do /var/log/clamav/clamav.log na serwerze. Stąd też, jeśli nie wyrzuca żadnych błędów po przeprowadzonej przez ciebie konfiguracji, możesz zmienić ją na Usuń plik. Spróbuj wrzucić po tej operacji jakieś pliki do do swojej chmury OwnCloud (pliki bez wirusa :]). Jeśli kopiowanie przebiegnie prawidłowo, to znaczy że wszystko działa prawidłowo. Jeżeli nie pozwoli skopiować plików, to prawdopodobnie jest coś nie tak z konfiguracją. Przywróć wtedy Tylko loguj i sprawdź logi co jest nie tak i popraw to. OwnCloud jeśli wykryje niepoprawną konfigurację wtyczki, bądź brak programu antywirusowego na serwerze, zablokuje dodawanie plików przy tym ustawieniu. Nawet gdy są one niezainfekowane.
Resztę ustawień możesz pozostawić bez zmian, będą one właściwe dla poprawnej pracy twojej chmurki OwnCloud.
Uzyskanie dostępu z urządzeń klienckich do chmury OwnCloud
Dostęp do zawartości chmury może odbyć się w dwojaki sposób. Logując się przez przeglądarkę jak w przykładzie powyżej. Instalując odpowiednie dla twojego systemu na komputerze klienta programowanie. https://owncloud.com/desktop-app/ podając adres www swojej chmury OwnCloud, login oraz hasło.
W tym drugim przypadku, dostęp odbywa się jak do każdego innego dysku na komputerze, a o to nam przecież chodzi :]
Co w przypadku jeżeli w twojej sieci są urządzenia oparte na różnych systemach operacyjnych. Takich jak Windows, Linuks, Android, Mac Os itp. ? z których musisz mieć dostęp do swoich zasobów ? Otóż uczciwie trzeba powiedzieć, że każdy z wyżej wymienionych sposobów, daje możliwość podłączenia się z praktycznie każdego urządzenia. Każdy z nich także może się okazać dość problematyczny w pewnych zastosowaniach.
Problemem nie jest sam protokół, który użyjesz do stworzenia własnego serwera NAS, a potencjalny problem z jego konfiguracją, już na urządzeniach klienckich (końcowych) oraz bezpieczeństwo.
Własny nas: Bezpieczeństwo udostępnianych zasobów
Każdy z prezentowanych protokołów, czy też serwerów ma swoje wady i zalety. Także w przypadku, jeśli chodzi o bezpieczeństwo. Z tego też powodu nigdy, ale to nigdy nie udostępniaj serwerów samby i NFS do internetu. Ich porty powinny być zablokowane na routerze, nigdy też na nich, nie powinno być zrobione przekierowanie do sieci zewnętrznej/internetu.
Serwery NAS oparte na tych protokołach znakomicie sprawdzają się właśnie w sieciach wewnętrznych. Wszędzie tam, gdzie mamy możliwość przechowywania wrażliwych danych, które nigdy nie powinny wypłynąć na zewnątrz. Mogą to być np. nasze pliki firmowe, osobiste filmy, zdjęcia itp. którymi nie koniecznie się chcemy chwalić innym.
Jeśli chcemy udostępniać nasze zasoby do internetu np. naszym znajomym, lub sami chcemy mieć do nich dostęp z sieci zewnętrznych, powinniśmy do tego celu użyć innego rozwiązania. Oprogramowane OwnCloud, zapewnia dużo większe bezpieczeństwo naszym zasobom w internecie. Bezpieczeństwo to, jednak nigdy nie będzie stu procentowe i zawsze istnieje ryzyko, że dane gdzieś wypłyną. Przykładem są potencjalne dziury bezpieczeństwa w oprogramowaniu, zbyt słabe hasła, kradzież hasła itp. Z tego więc powodu nie powinniśmy trzymać tam danych wrażliwych.
Porada
Patrząc na powyższe, dobrym rozwiązaniem będzie skorzystanie z trzech metod, które opisałem – jednocześnie.
Uruchamiając własny nas, wrażliwe i niewrażliwe dane powinny być od siebie odseparowane. Powinniśmy korzystać z serwera smb i nfs, kierujących do tego samego katalogu z naszymi zasobami, które mogą zawierać dane wrażliwe. W OwnCloud natomiast, te zasoby powinny kierować do innego katalogu. Nie głupim rozwiązaniem jest, gdyby one leżały nie tylko w odrębnych katalogach ale też na osobnych dyskach. Istnieje przejściówka, która umożliwia podpięcie do Raspberry Pi5 dwóch dysków twardych. Może być to także osobny dysk podpięty przez usb. Nigdy natomiast nie powinny być to karty SD, czy też tzw. pendrive ze względu na ich niewystarczającą do takich zastosowań bezawaryjność i trwałość.
A co w przypadku awarii dysku serwera ?
Jeżeli na dysku NAS chcesz przechowywać jakieś ważne dane, których nie możesz utracić i nie chcesz wysyłać ich na dyski zewnętrzne, możesz dokupić kolejny dysk o takiej samej pojemności i najlepiej marki i modelu i spiąć je w Raid1. Jak to zrobić, to jednak temat na inny artykuł.
RaID1 działa w ten sposób, że dane są replikowane na drugi dysk. W przypadku awarii pierwszego dysku, rolę jego przejmuje drugi dysk. Po wymianie uszkodzonego dysku cała procedura jest powtarzana.
W skrócie
- Nigdy nie udostępniaj swojego własnego serwera NAS opartego na samba lub NFS do sieci zewnętrznej. Najlepiej też, gdybyś ty miał tylko do niego dostęp jeśli chcesz przechowywać na nim wrażliwe dane. Nie ma czegoś takiego jak 100% bezpieczeństwo i tam, gdzie przechowywane są jakieś dane, zawsze znajdzie się ktoś kto będzie chciał je ukraść. Dlatego też dbaj o to, aby zapewnić im jak największe bezpieczeństwo, by zminimalizować ryzyko ich kradzieży. Z tego powodu nigdy nie przechowuj wrażliwych danych z dostępem do sieci zewnętrznej, stosuj silne hasła.
- Jeżeli istnieje nawet najmniejsze ryzyko, że jakiekolwiek dane w jakiś sposób mogą wypłynąć na zewnątrz do osób niepowołanych, szyfruj je. Jako, że nigdy nie jesteś w stanie stwierdzić ze stu procentową pewnością, że twoje dane są bezpieczne, szyfruj je. Możesz to zrobić na wiele sposobów, najprostszym i zarazem dość skutecznym sposobem będzie np. szyfrowanie za pomocą ssl w przypadku oprogramowania OwnCloud oraz zaszyfrowanie np. partycji z katalogiem, który udostępniasz za pomocą protokołów smb i nfs.
- Najprostszym sposobem na zapewnienie bezpieczeństwa twoim danym w przypadku awarii dysku, jest dokupienie drugiego dysku i spięcie ich w zw. Raid1. Stosuj to rozwiązanie jeżeli utrata danych trzymanych na dysku sieciowym, była by dla ciebie katastrofą.
Niniejszy artykuł ma charakter wyłącznie informacyjny. Mimo, że dołożyłem wszelkich starań, aby opisać zagrożenia z jakimi się możesz spotkać stawiając własny NAS, to niniejszy artykuł w żaden sposób nie wyczerpuje tematu.
Przedstawione rozwiązania mogą się sprawdzić w zastosowaniach prywatnych (domowych) bądź w małych firmach, gdzie wrażliwość udostępnianych danych nie jest bezwzględna. Wszędzie tam, gdzie bezpieczeństwo jest najwyższym priorytetem, powinieneś skorzystać z rozwiązań komercyjnych, do tego celu przeznaczonych, pod nadzorem specjalisty/doradcy od spraw cyber bezpieczeństwa!
Wydajność i skalowalność prezentowanego serwera NAS
Wbrew co poniektórym opiniom, które możemy znaleźć w sieci internet, Raspberry Pi5 jest dość wydajną maszynką, potrafiącą wytrzymać spore obciążenie.
Jeśli tylko zapewnimy naszej malince odpowiednie chłodzenie, szybki i dobrej jakości dysk nvme o znacznej pojemności (lub dyski) oraz stabilne łącze internetowe, to używanie takiego własnego NAS będzie bezproblemowe.
Prawie zawsze bezproblemowe, bo problemem może się okazać to, jak robić backupy dla tak dużych ilości danych. Jak można rozwiązać ten problem opiszę jednak, w którymś z przyszłych artykułów.
Skalowalność takiego serwera, także nie powinna budzić zastrzeżeń. Jeśli nam zbraknie miejsca, możemy dołożyć do serwera kolejny dysk np. poprzez port usb lub odpowiednią przejściówkę. Jeśli chodzi o wydajność samego serwera, to w razie konieczności możemy zwiększyć częstotliwość taktowania procesora naszego Raspberry Pi.
Gdy na serwerze www, współistniejącym na maszynie z naszym NAS hostujemy mocno odwiedzaną stronę opartą na skrypcie WordPress. to aby odciążyć nasze Rasppberry Pi i dodatrkowo zwięszyć wydajność takiej strony powinniśmy schować ją za CloudFlare.
Dodatkowo przydatne mogą się okazać takie usługi CloudFlare jak APO, Argo i LoadBalancing. W przypadku niniejszej strony (włączone APO i Argo na darmowym koncie), testy Apache AB wykonane z zewnętrznego serwera vps stojącego we Francji pozwoliły, osiągnąć czas wykonania 10000 zapytań, przy 100 zapytaniach jednocześnie w niecałe 58sek i zerowym współczynnikiem błędów.
Połączenie z niniejszą stroną generuje 25 zapytań, więc wynik jest więcej niż zadowalający. Ten sam test wykonany na niniejszej stronie za CloudFlare (darmowe konto) ale z wyłączonym APO i ARGO pozwoliło na wykonanie 2000 zapytań przy 30 zapytaniach jednocześnie z zerowym współczynnikiem błędów w 60sek. Co także nie jest złym wynikiem.
Warto także wspomnieć, że podczas przeprowadzania testów strona otwierała się bez żadnych widocznych opóźnień. Obciążenie mojego serwera (Load) po włączeniu APO i ARGO spadło z około 1-0.7 do około 0.25-0.1
Jeśli i to będzie za mało, możemy postawić kilka Raspberry Pi5 w tzw. klastrze, z wykorzystaniem odchudzonej wersji oprogramowania Kubernetes, K3s. Ostatnie rozwiązanie może do najtańszych i najprostszych nie należy ale masz taką możliwość.
Uwaga: Cały artykuł był pisany niejako „z głowy”, rzadko sięgałem do źródeł zewnętrznych przy jego pisaniu aby coś sprawdzić. Może więc on zawierać pewne drobne błędy i literówki, a także pewne braki (mogłem o czymś zapomnieć i coś przeoczyć).
Jeśli takie zauważysz, lub czegoś do końca nie zrozumiesz, bądź będziesz miał jakiś problem z poprawnym działaniem opisanych powyżej usług, napisz o tym. Znalezione potencjalne błędy i niedociągnięcia, oczywiście poprawię.
cz. 1 Raspberry Pi 5: Niezbędne Akcesoria do Uruchomienia Własnego Serwera WWW
cz. 2 Instalacja Apache, MySQL, PHP na Raspberry Pi 5
cz. 3 Konfiguracja DNS dla Serwera WWW na Raspberry Pi 5
cz. 4 ISPConfig3 na Raspberry Pi 5: Instalacja i Konfiguracja Panelu Hostingowego
cz. 5 Optymalizacja Stron hostowanych na Raspberry Pi 5: Jak Przyspieszyć stronę WWW
cz. 6 Bezpieczeństwo Serwera WWW na Raspberry Pi 5: Konfiguracja Zabezpieczeń
cz. 7 Jak skonfigurować Cloudflare pod serwer WWW na Raspberry Pi 5 Praktyczny poradnik
cz. 8 Monitorowanie serwera WWW na Raspberry Pi 5 za pomocą Monit
cz. 10 Serwer internetowy na Raspberry Pi 5 — 6 miesięcy testów i optymalizacji