Nextcloud to darmowe oprogramowanie open-source, które pozwala stworzyć i hostować własną, prywatną chmurę na pliki na wybranym przez siebie serwerze. Aby zainstalować własną chmurę, wystarczy wykupić serwer VPS, skonfigurować środowisko z użyciem Dockera lub klasycznego stosu LAMP (Linux, Apache, MySQL, PHP), a następnie uruchomić instalator webowy Nextcloud. Zrzucamy dane na serwery obcych firm i modlimy się, żeby nikt tego nie czytał. A prawda jest zresztą absolutnie taka, że czytają.
Zbudowanie własnego środowiska do synchronizacji danych to obecnie najrozsądniejsza droga ucieczki przed abonamentami. Mam u siebie instancję od dwóch lat. W zeszły wtorek padła nam główna maszyna testowa z powodu błędu konfiguracji Nginx. Musieliśmy przepinać ruch na zapasowy serwer dedykowany. To uczy pokory do własnej infrastruktury. Mimo to, pełna kontrola nad plikami wynagradza godziny spędzone w terminalu. Zaczynamy rzucać konkrety na stół.
Dlaczego własna chmura na pliki to jedyna sensowna ucieczka przed korporacjami?
Dostawcy usług chmurowych podnoszą ceny abonamentów. Obiecują prywatność danych. Zmieniają regulaminy. Ty klikasz „akceptuj”, bo nie masz wyjścia. Chmura prywatna odwraca ten układ sił. Masz serwer. Masz dysk. Masz pełną władzę nad tym, kto ogląda twoje zdjęcia i dokumenty firmowe. Nextcloud daje to wszystko za darmo w ramach licencji open-source.
Rozwiązanie to przypomina w obsłudze Dysk Google lub Dropboxa. Masz panel przez przeglądarkę. Masz aplikacje na telefon z Androidem i iOS. Pliki synchronizują się w tle na komputerze z Windowsem, macOS czy Linuksem. Różnica polega na fizycznej lokalizacji danych. Leżą one na maszynie, za którą płacisz bezpośrednio dostawcy sprzętu, a nie pośrednikowi od oprogramowania. Widziałem firmy płacące tysiące złotych miesięcznie za pakiety biurowe. Przenieśliśmy ich na self-hosting. Koszty spadły o prawie dziewięćdziesiąt procent.
Co konkretnie daje instalacja tego systemu na własnym serwerze VPS?
- Brak analizy plików przez algorytmy reklamowe i boty trenujące sztuczną inteligencję. Nikt nie skanuje twoich umów. Nikt nie przegląda zdjęć z wakacji. Masz czysty spokój.
- Nielimitowaną przestrzeń ograniczoną wyłącznie pojemnością twardego dysku, który podepniesz do płyty głównej serwera. Możesz mieć 20 terabajtów za ułamek ceny komercyjnej chmury.
- Pełną kontrolę nad mechanizmami udostępniania z hasłem i datą ważności linku.
- Możliwość instalacji dodatkowych modułów.
Jakie są minimalne wymagania sprzętowe, żeby serwer Nextcloud w ogóle ruszył?
Oprogramowanie napisano w języku PHP. Wymaga bazy danych. To pożera zasoby. Zwykły hosting współdzielony za kilkadziesiąt złotych rocznie po prostu zablokuje procesy z powodu przekroczenia limitu procesora. Potrzebujesz serwera wirtualnego VPS lub fizycznej maszyny w domu.
Zasoby minimalne na papierze to 512 MB pamięci RAM i jeden rdzeń procesora. Zapomnij o tym. Instalowałem to na takich parametrach. Interfejs ładuje się dziesięć sekund. Prawdziwe, użyteczne minimum do płynnej pracy dla dwóch lub czterech osób to 2 GB RAM i dwa rdzenie CPU. Do tego dysk SSD NVMe. Talerzowe dyski HDD nadają się tylko na magazyn zimnych danych, bo przy indeksowaniu tysięcy małych plików baza MariaDB dusi się bez szybkiego odczytu.
Czy Raspberry Pi wystarczy do domowego hostingu?
Tak. Raspberry Pi 4 z 4 GB RAM w zupełności uciągnie domową chmurę. Problem pojawia się z kartami microSD. Padają od ciągłego zapisu bazy danych. Zrobiliśmy na wdrożeniu test z tanią kartą pamięci. Wytrzymała trzy miesiące. Potem zawiesiło się całe środowisko, więc wprowadzono poprawkę i podpięto dysk SSD po USB w obudowie przed poniedziałkiem. Jeżeli idziesz w malinę, od razu bootuj system z zewnętrznego dysku. Inaczej stracisz nerwy.
Jak zainstalować Nextcloud krok po kroku na serwerze VPS z systemem Linux?
Wybieramy czystego Debiana 12 lub Ubuntu Server 22.04 LTS. To najpopularniejsze dystrybucje, a dokumentacja dla nich jest najbardziej kompletna. Logujemy się na serwer przez SSH jako użytkownik root. Pokażę ścieżkę instalacji na tzw. gołym metalu (bare metal), bez konteneryzacji. Daje to najlepszą wydajność i uczy działania usług sieciowych pod maską.
Zaczynamy od aktualizacji pakietów w systemie. To podstawa. Wpisujemy po prostu apt update a potem apt upgrade -y. Czekamy. System łapie najnowsze łatki bezpieczeństwa.
Konfiguracja serwera WWW i bazy danych MariaDB
Musimy postawić fundamenty. Nextcloud potrzebuje Apache lub Nginx. Zastosujemy Apache, bo jest domyślnie wspierany i ma gotowe pliki .htaccess do zarządzania routingiem. Potrzebujemy też bazy danych MariaDB oraz interpretera PHP w wersji 8.1 lub 8.2.
Instalujemy pakiety poleceniem:
apt install apache2 mariadb-server libapache2-mod-php php php-gmp php-bcmath php-gd php-json php-mysql php-curl php-mbstring php-intl php-imagick php-xml php-zip bzip2 wget -y
Stos pakietów ląduje na dysku. Teraz konfiguracja bazy danych. Wchodzimy do konsoli MySQL wpisując mysql -u root. Tworzymy dedykowaną bazę i użytkownika. To krytyczny krok dla bezpieczeństwa. Nigdy nie łączymy aplikacji webowej z kontem root bazy danych.
Wydajemy polecenia w SQL:
CREATE DATABASE chmura;
CREATE USER 'admin_chmury'@'localhost' IDENTIFIED BY 'bardzo_trudne_haslo';
GRANT ALL PRIVILEGES ON chmura.* TO 'admin_chmury'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Baza czeka na dane. Zmieniliśmy te zasady na robocie po ostatnim wycieku z innej aplikacji. Oddzielny użytkownik dla każdej usługi to żelazna reguła.
Pobieranie i rozpakowywanie archiwum Nextcloud
Pobieramy paczkę ze strony producenta. Wchodzimy do katalogu /var/www/. Ściągamy archiwum używając narzędzia wget. Rozpakowujemy. Nadajemy odpowiednie uprawnienia dla użytkownika www-data, który w Debianie odpowiada za procesy serwera Apache.
cd /var/www/
wget https://download.nextcloud.com/server/releases/latest.tar.bz2
tar -xjf latest.tar.bz2
chown -R www-data:www-data /var/www/nextcloud/
Tworzymy plik konfiguracyjny dla Apache w lokalizacji /etc/apache2/sites-available/nextcloud.conf. Wklejamy dyrektywy VirtualHost kierujące ruch z naszej domeny na katalog /var/www/nextcloud/. Włączamy moduły Apache: rewrite, headers, env, dir, mime. Restartujemy serwer WWW poleceniem systemctl restart apache2.
Teraz wystarczy wejść w przeglądarce na podpiętą domenę. Zobaczysz graficzny instalator webowy. Podajesz nazwę bazy, użytkownika, hasło i tworzysz główne konto administratora chmury. Gotowe. Działa.
Jak uruchomić Nextcloud przez Docker Compose i dlaczego to zmienia reguły gry?
Instalacja z paczek jest pouczająca. Ale utrzymanie tego środowiska bywa męczące przy aktualizacjach. Uruchomienie Dockera to inna bajka. Chociaż prawdę mówiąc brakuje nam twardych danych za wczoraj u wszystkich klientów, więc wydaje się to tylko jedną z możliwych hipotez na najbliższy kwartał przed zmianami na rynku narzędzi devopsowych. Konteneryzacja wygrywa.
Instalujesz Dockera na serwerze. Tworzysz jeden plik tekstowy docker-compose.yml. Wrzucasz w niego deklarację obrazu bazy danych, obrazu chmury i ewentualnie serwera Redis do cache’owania pamięci. Odpalasz polecenie docker compose up -d. Maszyna mieli obrazy przez dwie minuty. System wstaje. Żadnego ręcznego instalowania modułów PHP. Żadnego dłubania w uprawnieniach folderów.
Przykładowy zarys pliku dla środowiska zawiera zazwyczaj dwa główne bloki:
- Kontener z bazą PostgreSQL (Nextcloud radzi sobie z nią lepiej niż z MySQL przy ogromnych ilościach plików).
Odpowiednie zmienne środowiskowe z hasłami podpinamy bezpośrednio w pliku yaml.
Montujemy wolumeny, żeby dane przetrwały restart kontenera. - Kontener z aplikacją Nextcloud połączony w wewnętrznej sieci z bazą.
Definiujemy porty, na przykład 8080 na zewnątrz mapowane na 80 wewnątrz.
Aktualizacja? Zmieniasz tag wersji w pliku. Pobierasz nowy obraz poleceniem pull. Uruchamiasz ponownie. Całość zajmuje minutę. U nas w oddziale IT przeszliśmy na kontenery całkowicie. Nie wyobrażam sobie ręcznego aktualizowania PHP przy każdej nowej wersji systemu od twórców chmury.
Jakie błędy najczęściej kładą instalację chmury prywatnej i jak je naprawić?
Nikt nie lubi czytać logów. A prawda jest zresztą absolutnie taka, że to tam leżą rozwiązania wszystkich awarii. Pierwsze starcie z własnym serwerem plików kończy się zazwyczaj ostrzeżeniami w panelu administracyjnym. Z panelu „Ustawienia -> Przegląd” straszą czerwone i żółte komunikaty.
Oto co zazwyczaj trzeba naprawić po czystej instalacji:
- Brak pamięci podręcznej (Memory Cache). Interfejs ładuje się wolno. Musisz zainstalować moduł APCu. W systemie Linux wpisujesz
apt install php-apcu. Potem w pliku config.php w katalogu chmury dopisujesz linijkę'memcache.local' => '\OC\Memcache\APCu',. Różnica w szybkości działania to przepaść. - Limity pamięci PHP. Domyślne 128 MB zablokuje przesyłanie większych plików lub generowanie miniatur zdjęć. Edytujesz plik
php.inii zmieniaszmemory_limitna 512M. - Brakujące indeksy w bazie danych. Przy aktualizacjach struktura bazy potrafi się rozjechać. Odpalasz w terminalu komendę
sudo -u www-data php occ db:add-missing-indices. Narzędzie occ (OwnCloud Console) naprawia strukturę automatycznie. - Błąd konfiguracji wirtualnych hostów (Trusted Domains). Próbujesz wejść na serwer po adresie IP, a chmura odrzuca połączenie. W pliku config.php musisz dodać swój adres IP lub domenę do tablicy
trusted_domains. To zabezpieczenie przed atakami typu host header spoofing.
Zastanawiacie się zresztą, dlaczego to na produkcji tak wyje na testach po drodze? Sam się nad tym borykałem dzisiaj u siebie we wtorek. Zbyt restrykcyjna konfiguracja Fail2Ban odcinała nam dostęp do API po trzech nieudanych próbach logowania z aplikacji mobilnej.
Ile kosztuje utrzymanie własnej chmury w porównaniu do dysków komercyjnych?
Zróbmy twardą matematykę. Płacisz za gigabajty czy za wygodę? Dostawcy liczą sobie słono za samo utrzymanie infrastruktury. Własny serwer to koszt stały, niezależny od liczby podpiętych użytkowników. Masz w firmie dwadzieścia osób? W chmurze od Google płacisz za każdego użytkownika osobno. Na własnym VPS dodajesz konta za darmo, dopóki starcza miejsca na dysku.
Zestawienie kosztów w ujęciu miesięcznym uderzając do przodu u wyników:
| Dostawca usług / Rozwiązanie | Pojemność dyskowa | Szacunkowy koszt miesięczny | Kto ma dostęp do danych? |
| Dysk Google (Pakiet One) | 2 TB | Około 46 PLN | Google i ich algorytmy |
| Dropbox (Plus) | 2 TB | Około 50 PLN | Dropbox |
| Serwer VPS (np. Hetzner, dysk SSD) | 1 TB – 2 TB w zależności od opcji | Od 25 do 40 PLN | Tylko ty i administrator serwera |
| Raspberry Pi w domu z dyskiem zewnętrznym | Zależy od dysku (np. 4 TB) | 0 PLN (pomijając rachunek za prąd ok. 5 PLN) | Tylko ty |
Zbudowanie domowego NAS-a z uruchomionym Nextcloudem zwraca się po niecałym roku w porównaniu do abonamentów. Na VPS masz z kolei lepsze łącze internetowe. W domu ogranicza cię prędkość wysyłania (upload) narzucona przez dostawcę internetu. Wysyłanie filmu o wadze pięciu gigabajtów z telefonu do domowego serwera na asymetrycznym łączu potrafi trwać bardzo długo. Serwery w serwerowniach mają łącza symetryczne o przepustowości jednego gigabita na sekundę.
Jak zintegrować Nextcloud z telefonem i komputerem PC?
Chmura musi być przezroczysta dla użytkownika. Skonfigurowałeś serwer. Działa. Teraz czas spiąć to z urządzeniami. Pobierasz oficjalną aplikację z Google Play lub App Store. Wpisujesz adres swojej domeny, login i hasło. Program prosi o autoryzację dostępu. Klikasz zatwierdź.
W telefonie od razu włączam opcję „Automatyczne przesyłanie multimediów”. Wybierasz folder aparatu. Ustalasz, czy zdjęcia mają wędrować na serwer tylko po WiFi, czy również po sieci komórkowej. To najlepsza funkcja tego systemu. Robisz zdjęcie na ulicy. Wracasz do domu, włączasz laptopa, a to zdjęcie już tam czeka w folderze.
Na komputerach stacjonarnych i laptopach instalujemy klienta synchronizacji (Nextcloud Desktop Client). Obsługuje on wirtualne pliki (Virtual Files na Windows i macOS). Oznacza to, że widzisz w folderze wszystkie swoje terabajty danych z serwera, ale nie zajmują one fizycznie miejsca na małym dysku laptopa. Kiedy klikasz plik, pobiera się on w ułamku sekundy w locie. To oszczędza przestrzeń na stacjach roboczych.
Oprócz plików, aplikacja na telefon potrafi synchronizować kontakty i kalendarze za pomocą standardów CalDAV i CardDAV. Rezygnujesz całkowicie z trzymania książki adresowej na serwerach producenta smartfona. Wpisujesz nowy numer znajomego w telefonie, a on automatycznie ląduje w bazie MariaDB na twoim prywatnym VPS-ie.
Zaawansowane moduły: Co jeszcze potrafi prywatna chmura?
Nextcloud to nie tylko magazyn. To platforma. Wchodzisz w zakładkę „Aplikacje” jako administrator. Masz tam kilkaset wtyczek. Możesz z tego zrobić pełnoprawne środowisko pracy grupowej dla biura. Odpalasz instalację jednym kliknięciem.
Co warto dorzucić do podstawowej instalacji?
- Nextcloud Talk. System do czatu tekstowego i wideokonferencji. Działa we wbudowanej przeglądarce i ma osobną aplikację na smartfony. Rozmowy wideo nie przechodzą przez zewnętrzne serwery.
- OnlyOffice lub Collabora Online. Integrujesz pełny pakiet biurowy do edycji dokumentów tekstowych i arkuszy kalkulacyjnych prosto w oknie przeglądarki. Kilka osób może pisać w jednym dokumencie jednocześnie, dokładnie tak samo jak w narzędziach od wiodących producentów rynkowych.
- Passwords. Menadżer haseł. Przechowuje loginy silnie zaszyfrowane z pomocą bazy serwera. Posiada wtyczki do przeglądarek Firefox i Chrome.
- Mail. Wbudowany klient poczty e-mail obsługujący protokół IMAP. Podpinasz skrzynkę i masz wiadomości obok plików.
Aplikacje mocno obciążają procesor. Przy uruchomieniu serwera dokumentów Collabora, użycie pamięci RAM skacze dramatycznie do góry. Wymaga to monitorowania zasobów przez polecenie htop w konsoli linuksowej.
Bezpieczeństwo na serwerze: Jak nie stracić danych?
Wystawiasz usługę do publicznej sieci internetowej. Boty ze wschodu zaczną skanować twoje otwarte porty w ciągu kilkunastu minut od podpięcia domeny. Logi serwera zapchają się próbami odgadnięcia hasła roota. Musisz zablokować dostęp.
Wyłączamy logowanie hasłem na SSH. Generujemy klucze kryptograficzne ED25519 na swoim komputerze. Wrzucamy klucz publiczny na serwer do pliku ~/.ssh/authorized_keys. W pliku konfiguracyjnym demona SSH (/etc/ssh/sshd_config) zmieniamy dyrektywę PasswordAuthentication na no i PermitRootLogin na no. Restartujemy usługę. Od tej pory nikt bez twojego prywatnego pliku klucza nie zaloguje się do konsoli maszyny.
Instalujemy zaporę sieciową UFW (Uncomplicated Firewall). Zezwalamy tylko na ruch dla portów 22 (SSH), 80 (HTTP) i 443 (HTTPS).
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
Kolejna warstwa to certyfikat SSL. Wszystkie dane przesyłane między telefonem a chmurą muszą być szyfrowane, inaczej ktoś przechwyci hasła w publicznej sieci Wi-Fi w kawiarni. Używamy narzędzia Certbot od Let’s Encrypt. Instalujemy pakiet certbot python3-certbot-apache. Wydajemy polecenie certbot --apache -d twojadomena.pl. Narzędzie samo wygeneruje darmowy certyfikat, podepnie go pod konfigurację serwera WWW i ustawi zadanie w cronie, które odnowi go automatycznie co 90 dni.
Ostatni element to kopie zapasowe. RAID to nie backup. Powtarzam to klientom na okrągło. Serwer w chmurze może po prostu zniknąć z powodu awarii sprzętowej w serwerowni. Używam narzędzia BorgBackup. Szyfruje ono dane po stronie klienta i wysyła kompresowane przyrostowe zrzuty katalogu /var/www/nextcloud/data oraz bazy SQL na zewnętrzny serwer Storage Box. Skrypt bashowy uruchamia się codziennie o 3 w nocy. Zrzut bazy robimy poleceniem mysqldump. Bez sprawnego zrzutu SQL, same pliki z dysku są często bezużyteczne przy przywracaniu pełnej funkcjonalności środowiska, bo system gubi strukturę uprawnień i historii wersji.
Kup najtańszy serwer VPS jeszcze dzisiaj wieczorem. Zainstaluj system, wpisz komendy z tego poradnika i zobacz, jak działa synchronizacja danych, nad którymi masz pełną władzę techniczną. Wyłącz abonament u gigantów.
Najczęściej zadawane pytania (FAQ)
- 1. Czym różni się Nextcloud od OwnCloud?
Nextcloud to fork (rozgałęzienie) kodu OwnCloud. Twórcy odeszli z pierwotnej firmy z powodu różnic wizji komercyjnej. Obecnie Nextcloud rozwija się szybciej, ma więcej funkcji darmowych i silniejszą społeczność open-source wspierającą kod. - 2. Czy moje pliki są szyfrowane na serwerze?
Domyślnie pliki na dysku serwera leżą w formie niezaszyfrowanej, aby system działał szybko. Możesz jednak włączyć moduł szyfrowania po stronie serwera (Server-side encryption) w panelu aplikacji. Transfer przez sieć jest zawsze szyfrowany certyfikatem SSL. - 3. Co zrobić, gdy zapomnę hasła administratora?
Jeśli masz dostęp do konsoli serwera przez SSH, używasz narzędzia komend occ. Wpisujesz w katalogu aplikacji polecenie:sudo -u www-data php occ user:resetpassword nazwa_użytkownika. Terminal poprosi o wpisanie nowego hasła. - 4. Czy mogę podłączyć zewnętrzny dysk Google do chmury Nextcloud?
Tak. Aplikacja „External storage support” pozwala zamontować w interfejsie Nextclouda zewnętrzne zasoby takie jak Amazon S3, dyski FTP, zasoby SMB/CIFS z lokalnego NAS-a, a także konta z Google Drive. - 5. Dlaczego przesyłanie bardzo dużych plików (np. 10 GB) zrywa połączenie?
Zazwyczaj to wina limitów PHP i serwera Nginx/Apache. Należy zwiększyć wartości zmiennychupload_max_filesize,post_max_sizeorazmax_execution_timew pliku konfiguracyjnymphp.ini. W Nginx trzeba też poprawić dyrektywęclient_max_body_size. - 6. Czy muszę mieć stały, publiczny adres IP w domu, żeby hostować chmurę?
Niekoniecznie. Jeśli twój dostawca internetu daje zmienne IP lub blokuje cię za NAT-em, możesz użyć tuneli Cloudflare (Cloudflare Tunnels) lub usługi typu Tailscale. Pozwala to na wystawienie lokalnej usługi do internetu z pominięciem problemów z brakiem publicznego adresu IP u operatora.
Bibliografia
1. Nextcloud – https://nextcloud.com
2. Docker – https://www.docker.com
3. Debian – https://www.debian.org
4. MariaDB Foundation – https://mariadb.org
5. Let’s Encrypt – https://letsencrypt.org
