Serwer www na Raspberry Pi5 z dostępem do internetu | Własny NAS

Czas czytania: 14 minuty

Czym jest NAS i do czego służy ?

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 do uruchomienia takiego serwera 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 serwer NAS.

Jakie rozwiązanie dla serwera NAS będzie dla mnie odpowiednie ?

W internecie można spotkać wiele artykułów o tym, jak taki serwer 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 serwer NAS jako 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

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, 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 serwer 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

Ż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.

Udostępnione zasoby nas na linuksie, na komputerze domowym
NFS vs SMB

Nie mam zamiaru wywoływać kolejnej świętej wojny, który serwer 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.

NFS vs SMB

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. NFS udostępnia całe dostępne miejsce, natomiast Samba respektuje ustawione limity.

Chmura OwnCloud

Rozwiązanie najbardziej wszechstronne, zalecane osobom, które wymagają, aby ich zasoby były dostępne w sieci Internet.

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 i 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, a ewentualne 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) , blokując 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) oraz 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 (wykorzystując do tego celu np. program Filezilla) 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, na jaki chcesz wysłać testową wiadomość 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 i 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 :]) i 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, albo logując się przez przeglądarkę jak w przykładzie powyżej, albo instalując odpowiednie dla twojego systemu na komputerze klienta oprogramowanie ze strony 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 :]

Udostępnione zasoby chmury OwnCloud – pod linuksem

Co w przypadku jeżeli w twojej sieci są urządzenia oparte na różnych systemach operacyjnych 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, w oparciu o który będziesz udostępniał swoje zasoby dyskowe daje możliwość podłączenia się z praktycznie każdego urządzenia, jednak i każdy z nich 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.

Bezpieczeństwo udostępnianych zasobów

Każdy z prezentowanych protokołów, czy też serwerów ma swoje wady i zalety jak już wspomniałem, 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, 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, np. właśnie oprogramowania OwnCloud, które 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ą np. w przypadku potencjalnej dziury bezpieczeństwa w oprogramowaniu, zbyt słabego hasła, kradzieży 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.

Z serwera smb i nfs, kierujących do tego samego katalogu z naszymi zasobami na serwerze, oraz OwnCloud, od którego te zasoby są całkowicie odseparowane. Nie głupim rozwiązaniem było by, 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ść/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

  1. Nigdy nie udostępniaj swojego 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.
  2. 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.
  3. 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 serwer NAS, to niniejszy artykuł w żaden sposób nie wyczerpuje tematu.

Przedstawione rozwiązania mogą się sprawdzić w zastosowaniach prywatnych (domowych) bądź 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 serwera NAS będzie bezproblemowe (no 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 niniejszej serii „Serwer www na Raspberry Pi5 z dostępem do internetu„).

Skalowalność takiego serwera, także nie powinna budzić zastrzeżeń, gdyż 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 Pi5 np. do 3GHz (wymagane wydajne chłodzenie), a 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ć, stąd też może 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 w komentarzu. Znalezione potencjalne błędy i niedociągnięcia, oczywiście poprawię.

Autor

  • gielo

    Witam! Jestem pasjonatem technologii z wykształceniem matematycznym i informatycznym. W kręgu moich zainteresowań leży między innymi elektronika, linuks i technologie serwerowe.

    View all posts