Jak zrobić sobie swojego Dropboksa, czyli chmura, ale własna

dodał 7 maja 2019 o 07:10 w kategorii HowTo  z tagami:
Jak zrobić sobie swojego Dropboksa, czyli chmura, ale własna

Trzymanie kopii bezpieczeństwa prywatnych czy firmowych danych w chmurze jest kuszące – chmura jest odporniejsza na pożary czy kradzieże sprzętu. Rodzi jednak pewne dodatkowe ryzyka – które zredukujemy, budując w niej własne rozwiązanie.

Artykuł jest częścią cyklu poświęconego usługom chmurowym Aruba Cloud. Wcześniej opisaliśmy, jak backup w chmurze może uratować czas (lub pracę) informatyka oraz jak zapewnić dostępność usług. Dzisiaj zbudujemy własnego Dropboksa.

Internetowe rozwiązania wykorzystywane do udostępniania plików pojawiły na długo przed spopularyzowaniem pojęcia chmury plikowej. Możliwość przechowywania naszych danych w modelu, dzięki któremu będziemy mieli do nich dostęp z każdego miejsca na świecie, niezależnie od platformy sprzętowej czy programowej, jest niewątpliwie bardzo wygodna. Sama kwestia przechowywania danych w ramach zasobów innych podmiotów budzi wiele kontrowersji, wywołując przy tym sporo burzliwych dyskusji. W kontekście bezpieczeństwa wiele zależy od tego, co tak naprawdę chcemy przechowywać w chmurze i w jaki sposób zapewniać (zabezpieczać) dostęp do określonych zasobów.

Możemy w całości powierzyć nasze zasoby plikowe zewnętrznemu dostawcy i skorzystać z gotowego rozwiązania takiego jak Dropbox, Google Drive czy OneDrive. Poza największymi graczami dostępnych jest jeszcze wiele innych usług, które starają się konkurować z tymi najbardziej popularnymi atrakcyjną ceną czy dodatkowymi opcjami ,,premium”.

Organizacje potrzebujące przetwarzać bardzo duże ilości danych, dla których prognoza ich przyrostu jest ciężka do przewidzenia, najbardziej doceniają model zasobów dyskowych określanych jako ,,object storage”. Dzięki obiektowemu podejściu do obsługi danych możliwe jest stworzenie swoistej warstwy abstrakcji, w ramach której usługodawca izoluje całe zaplecze systemu storage od platformy dostępu do danych wykorzystywanej przez usługobiorcę.

W kolejnym artykule cyklu poświęconego rozwiązaniom Aruba Cloud, w oparciu o wcześniej opisany klaster serwerów Apache, prezentujemy scenariusz wdrożenia własnej chmury plikowej umożliwiającej przechowywanie danych w oparciu o usługę Aruba Cloud Object Storage. Poniżej znajdziecie film, pokazujący cały proces konfiguracji, a pod nim wersję tekstowo – obrazkową instrukcji.

Instrukcja konfiguracji Nextclouda w chmurze Aruby

Chmura plikowa ,,następnej generacji”

Nextcloud to otwartoźródłowa platforma pozwalająca na stworzenie własnej ,,chmury plikowej” w modelu ,,self-hosting”. Może ona działać w oparciu o różnego rodzaju zasoby. W zależności od potrzeb i możliwości może to być lokalny serwer i storage, system dzierżawiony (dedykowany lub VPS) oraz instancja chmurowa. Sam proces instalacji i wdrożenia nie należy do skomplikowanych, mając jednak na uwadze główne przeznaczenie systemu, należy we właściwy sposób dobrać zaplecze pod storage wykorzystywany do składowania plików. Nextcloud może wykorzystać zasoby dyskowe, w jakie jest wyposażony serwer lub korzystać z tzw. magazynów zewnętrznych: systemów NAS (CIFS/SMB), WebDAV, SFTP czy Amazon S3. Przedstawiana przez nas implementacja skupia się na ostatnim z wymienionych protokołów, czyli Amazon Simple Storage Service.

Dzięki wykorzystaniu rozwiązania w postaci Object Storage już na samym etapie wdrożenia nie musimy planować i rezerwować rozmiaru przestrzeni dyskowej. Usługa Aruba Cloud Object Storage jest dostarczana w ramach kilku planów taryfowych, przy czym pierwszy z nich to tak naprawdę model kosztowy ,,Pay-per-use”. Dzięki takiemu rozwiązaniu opłaty (naliczane godzinowo) ponosimy za każde 10 GB danych składowanych w naszych koszykach (bucketach).

Wielkość docelowej przestrzeni w usłudze jest praktycznie nieograniczona, same dane są składowane nadmiarowo (replikacja na trzech oddzielnych urządzeniach storage) i przechowywane zawsze w tym samym obszarze geograficznym.

Cloud Object Storage – konfiguracja

Skonfigurowanie konta usługi Cloud Object Storage zajmuje dosłownie kilkanaście sekund. Wymagane jest aktywne konto Aruba Cloud oraz środki pieniężne, jakie będą potrzebne do utrzymania tzw. ,,Konta Storage”. Po zalogowaniu do Panelu Kontrolnego Aruba Cloud przechodzimy do sekcji  ,,Cloud OBJECT STORAGE:

W celu uruchomienia kreatora konfiguracji klikamy na przycisk

Podajemy nazwę ,,Konta Storage”, definiujemy bezpieczne hasło oraz wybieramy region składowania danych. Na koniec wybieramy odpowiedni plan taryfowy i zatwierdzamy wszystkie parametry, klikając na ,,UTWÓRZ KONTO OBJECT STORAGE”:

Instalacja w ramach klastra

Nextcloud zostanie przez nas wdrożony na wcześniej przygotowanym środowisku, jakie opisaliśmy w naszym poprzednim artykule. Samo rozwiązanie może być także zainstalowane od podstaw na zupełnie nowej instancji lub na lokalnym serwerze. W przypadku wyboru platformy Centos 7.x scenariusz postępowania będzie dokładnie taki sam, jak w poniższych instrukcjach. Jedyną różnicę będą w zasadzie stanowić polecenia dotyczące restartu klastra:

Należy je po prostu zastąpić poleceniem przeładowania usługi Apache (httpd):

Proces wdrożenia zaczynamy od instalacji niezbędnych prerekwizytów, jaką wykonujemy na obu serwerach WEB01 i WEB02.

1. Nextcloud w najnowszej stabilnej wersji oznaczonej numerem 15 wymaga silnika PHP w wersji minimum 7.0. Nie jest ona domyślnie dostarczana wraz z systemem CentOS, dlatego najpierw niezbędne jest dodanie odpowiedniego repozytorium i przeprowadzenie deinstalacji starszych wersji pakietów:

2. Następnie na obu instancjach instalujemy wymagane pakiety:

Baza danych

Nextcloud wspiera trzy silniki bazodanowe: SQLite, MySQL(MariaDB) i PostrgeSQL. MariaDB jest domyślnie dostarczana wraz z system CentOS 7.x, zapewniając przy tym rozsądny poziom wydajności dla instalacji średniej wielkości (od kilkudziesięciu do maksymalnie kilkuset aktywnych użytkowników Nextcloud).

Instalację MariaDB przeprowadzamy na serwerze STOR01, do którego połączenia będą realizowane przez oba nody klastra WEB01 i WEB02:

1.Pobieramy, instalujemy i konfigurujemy wymagane pakiety:

2. Zabezpieczamy instancję MariaDB korzystając z narzędzia mysql_secure_instalation:

Wynik działania naszego kreatora powinien wyglądać w następujący sposób:

Tym samym hasło roota zostało ustawione, zablokowaliśmy możliwość zdalnego logowania na tym użytkowniku oraz usunęliśmy testową bazę danych.

3. Konfigurujemy reguły firewalld w taki sposób, aby połączenia do usługi MariaDB były możliwe tylko w sieci wewnętrznej (internal) i tylko z serwerów WEB01 i WEB01. W tym celu skorzystamy ze składni rich rules:

4. Na koniec tworzymy bazę danych Nextcloud i użytkownika do niej przypisanego:

Instalacja Nextcloud

Z racji współdzielenia przestrzeni plikowej przeznaczonej dla aplikacji webowych instalację Nextcloud możemy w zasadzie przeprowadzić na dowolnej instancji klastra. Sam proces składa się z dwóch etapów:

  • przygotowanie środowiska i rozpakowanie plików aplikacji Nextcloud od strony powłoki systemu operacyjnego,
  • konfiguracja aplikacji przeprowadzana z poziomu przeglądarki internetowej.

Pierwszy etap rozpoczynamy od pobrania właściwego pakietu instalacyjnego Nextcloud i jego rozpakowania.

1.Przechodzimy do odpowiedniego webkatalogu (/var/www/html) i pobieramy najnowszą stabilną wersję Nextcloud:

2. OPCJONALNIE: W przypadku aktywnej polityki Selinuxa należy dodatkowo ustawić właściwe konteksty na katalogach i plikach aplikacji Nextcloud – poniższe polecenia możemy wykonać z poziomu dowolnej instancji klastra:

Dodatkowo w przypadku obu instancji WEB01 i WEB02 na każdej z nich musimy pozwolić usłudze httpd na wykonywanie połączeń z bazą danych:

3. Na koniec przeładowujemy cały klaster – proces możemy wykonać bez przerwy pracy systemu (restartując najpierw WEB01, a potem WEB02) lub w całości (parametr: –all):

Po rozpakowaniu plików Nextcloud kreator instalacji aplikacji jest dostępny z poziomu przeglądarki. Sama aplikacja została rozpakowana do katalogu w ścieżce bezwzględnej /var/www/html/nextcloud, stąd też jej wywołanie w przeglądarce jest możliwe po wpisaniu adresu http://naszadomena.tld/nextcloud.

1. W przypadku naszego środowiska w przeglądarce wywołujemy adres URL http://web.z3s.pl/nextcloud i wprowadzamy dane niezbędne do skonfigurowania usługi:

– nazwę bazy danych oraz użytkownika i hasło logowania do niej podajemy dokładnie takie jak na etapie instalacji i konfiguracji MariaDB. Po wprowadzenia wszystkich danych klikamy na przycisk

2. Proces finalizacji konfiguracji i przygotowania naszej aplikacji może potrwać od kilkudziesięciu sekund do kilku minut. Po jego zakończeniu zostaniemy od razu zalogowani na koncie wcześniej utworzonego administratora i naszym oczom ukaże się kreator pierwszego użycia:

Optymalizacja OPcache i Redis

W przypadku produkcyjnego wykorzystania Nextcloud zalecane jest włączenie mechanizmów optymalizacji silnika PHP i zapewnienia dodatkowego magazynu danych dla pamięci podręcznej (Redis NoSQL). Włączenie OPcache wymaga zainstalowania odpowiednich pakietów (co wykonaliśmy wcześniej) oraz aktywacji tego mechanizmu w pliku konfiguracyjnym /etc/php.ini. Na końcu sekcji [php] tego pliku dopisujemy poniższe linijki:

Wpis w pliku konfiguracyjnym powinien przedstawiać się w następujący sposób:

Konfigurację OPcache wykonujemy na obu serwerach WEB01 i WEB02.

Następnie przechodzimy do konsoli serwera STOR01 i instalujemy serwer Redis:

Serwer ma być dostępny dla instancji WEB01 i WEB02, dlatego w pliku konfiguracyjnym /etc/redis.conf ustawiamy właściwy adres IP na jakim usługa ma nasłuchiwać:

Restartujemy usługę i definiujemy odpowiednie reguły firewalld:

Ponownie przechodzimy do wiersza poleceń dowolnej instancji klastra i edytujemy plik konfiguracyjny Nextcloud (/var/www/html/nextcloud/config/config.php) poprzez dopisanie następującej sekcji:

Nasz plik konfiguracyjny powinien wyglądać w następujący sposób:

Na koniec ponownie restartujemy klaster, aby wprowadzone zmiany zostały aktywowane:

OPCJONALNIE: W przypadku aktywnego Selinuxa musimy jeszcze zezwolić usłudze httpd na wykonywanie połączeń z silnikiem Redis:

Integracja – Object Cloud Storage

Ostatnim etapem naszego wdrożenia jest podłączenie zewnętrznego magazynu, czyli integracja z naszym kontem Aruba Object Cloud Storage. Najpierw jednak samą funkcję zewnętrznych magazynów musimy aktywować z poziomu wiersza poleceń. W tym celu logujemy się do powłoki wiersza poleceń na dowolnej instancji klastra i wydajemy polecenie:

Po wykonaniu powyższej komendy odświeżamy w przeglądarce panel zarządzający usługą Nextcloud. Z listy rozwijanej menu widocznego w prawym górnym rogu ekranu (litera ,,A” reprezentująca nazwę naszego konta ,,admin”) wybieramy pierwszą opcję o nazwie ,,Ustawienia”:

Następnie w menu po lewej stronie, w sekcji ,,Administracja” powinna pojawić się wcześniej niedostępna opcja o nazwie ,,Magazyny zewnętrzne”:

Klikając w nią będziemy mieli możliwość uruchomienia kreatora konfiguracji dla protokołu Amazon S3. Konfigurujemy go, podając nazwę folderu i wybierając protokół:

Następnie wprowadzamy wszystkie parametry niezbędne do podłączenia naszego nowego bucketa:

Kosz: dowolna nazwa bucketa (np. nextcloud). Koszyk nie musi być wcześniej utworzony, jednak jego nazwa musi być unikalna dla danego regionu.

Serwer: adres systemu Aruba Object Cloud Storage rozpoczynający się od nazwy regionu (np. r1-pl.storage.arubacloud.pl).

Zaznaczamy opcje: Włącz SSL / Włącz styl ścieżki / Stara wersja autoryzacji (V2).

Klucz dostępu: nasza nazwa konta Cloud Object Storage (w naszym przykładzie: z3sstor).

Sekretny klucz: hasło do konta Cloud Object Storage zdefiniowane podczas jego tworzenia.

Dostęp dla: W tej części konfiguracji możemy definiować, czy dany zewnętrzny zasób storage ma być dostępny dla wszystkich użytkowników Nextclouda czy też tylko dla określonej grupy lub nawet pojedynczych użytkowników:

Po zakończeniu konfiguracji zewnętrznego magazynu danych przechodzimy do głównego panelu Nextclouda i testujemy poprawność jego działania, np. poprzez załadowanie, pobranie i skasowanie testowych danych:

Podsumowanie

Nextcloud jest narzędziem o ogromnych możliwościach – nasz artykuł skupia się tylko i wyłącznie na samym procesie rozruchu systemu wraz z jego podstawową konfiguracją. Dodatkowo dla systemu dostępnych jest mnóstwo dodatkowych modułów (https://apps.nextcloud.com/), wiele z tych dodatków pozwala na lepsze zabezpieczenie naszego systemu, chociażby poprzez wdrożenie dwuskładnikowego uwierzytelniania (2FA).

Na przykładzie naszego środowiska korzystamy tylko z protokołu HTTP, dlatego przy każdym publicznym modelu wdrożenia zalecamy w pierwszej kolejności uruchomić obsługę HTTPS. Instrukcję, jak to zrobić, znajdziecie w jednym z naszych wcześniejszych artykułów z cyklu: Jak wdrożyć automatycznie odnawiane, darmowe certyfikaty SSL od Let’s Encrypt