Nextcloud na VPS: All-in-One w Dockerze, domena i kopie
Własna chmura na Nextcloud All-in-One za nginx: domena i HTTPS, katalog danych na osobnym dysku, kopie Borg, aktualizacje i kiedy gotowa chmura wychodzi taniej.
Redakcja serwisu Dealownia · ceny i fakty ze stron dostawców, jak sprawdzamy
Własna chmura: Nextcloud pod adresem https://cloud.example.pl, zainstalowany oficjalnym obrazem All-in-One (AIO), schowany za nginx z certyfikatem Let’s Encrypt, z plikami na osobnym dysku i z codzienną, szyfrowaną kopią BorgBackup, po której AIO samo aktualizuje kontenery. Na końcu liczymy, kiedy to się opłaca, a kiedy gotowa chmura jest prostsza i tańsza.
Czego potrzebujesz
- VPS z Ubuntu 24.04 LTS albo Debianem 12 lub 13, przygotowany jak w poradniku od zera: nginx na hoście, certbot, Docker z oficjalnego repozytorium. README AIO zaznacza, że Docker instalowany przez snap nie jest wspierany. Obsługiwane architektury to x86_64 i arm64.
- Pamięć: wymagania systemowe Nextcloud podają minimum 128 MB RAM na proces PHP i zalecane 512 MB. README AIO nie podaje łącznego minimum dla całego zestawu, a AIO uruchamia kilka kontenerów (serwer WWW, PHP, PostgreSQL, Redis, opcjonalnie Collabora, Talk, ClamAV). Wybierz plan, który pozwala dołożyć RAM bez reinstalacji, i po instalacji sprawdź zużycie w
docker stats. - Dysk: README zaleca SSD. Policz miejsce na pliki razy dwa, jeśli kopię trzymasz lokalnie przed wysłaniem na zewnątrz.
- Subdomenę
cloud.example.plz rekordem A (i AAAA przy IPv6) wskazującym serwer.
Przy każdej ofercie sprawdź RAM – AIO uruchamia kilka kontenerów, więc najmniejsze plany z 1 GB się nie nadają – i dysk, bo przy chmurze na pliki to on szybciej się kończy niż pamięć.
Plany z większym dyskiem porównasz w rankingu VPS.
Krok 1. Dysk na dane
Pliki użytkowników warto trzymać na osobnym wolumenie blokowym, który powiększysz niezależnie od dysku systemowego. Jeśli dostawca go oferuje, podłącz go i zamontuj (nazwę urządzenia sprawdź w lsblk; poniżej /dev/sdb):
mkfs kasuje zawartość urządzenia – upewnij się, że to nowy, pusty wolumen. Bez osobnego dysku po prostu utwórz katalog /mnt/ncdata na dysku systemowym.
Krok 2. nginx przed AIO
AIO ma tryb pracy za reverse proxy opisany w dokumentacji reverse proxy AIO: kontener Apache nasłuchuje na porcie podanym w APACHE_PORT (w przykładach 11000), a TLS kończy się na Twoim nginx. Konfiguracja niżej korzysta ze zmiennej $connection_upgrade z mapy WebSocket. Mapę WebSocket tworzysz raz na serwer (wyjaśnienie w poradniku o reverse proxy); polecenie niżej nic nie zmieni, jeśli plik już istnieje:
Plik /etc/nginx/sites-available/cloud.example.pl – ustawienia proxy według przykładu z dokumentacji AIO:
client_max_body_size 0 wyłącza limit wielkości wysyłanego pliku, a wyłączone buforowanie sprawia, że duże pliki idą prosto do Nextclouda, zamiast lądować w tymczasowych plikach nginx. proxy_read_timeout 3610s to wartość z dokumentacji: o 10 sekund więcej niż domyślny limit czasu żądania w AIO (3600 s). Certbot dopisze HTTPS i przekierowanie z HTTP.
Krok 3. Kontener główny AIO
AIO składa się z kontenera głównego (mastercontainer), który przez gniazdo Dockera zakłada i aktualizuje pozostałe. Komenda z dokumentacji reverse proxy, z dwiema zmianami: Apache słucha tylko na 127.0.0.1, bo nginx łączy się lokalnie (tak każe dokumentacja przy proxy na tym samym hoście), a panel AIO (w kontenerze port 8080) publikujemy tylko lokalnie, na porcie hosta 8088, i otworzymy go tunelem SSH. Port 8080 na hoście zostaje wolny, bo zajmuje go zwykle strona ze stacku Docker Compose.
NEXTCLOUD_DATADIR ustawiasz teraz albo nigdy – README ostrzega, żeby nie zmieniać go po pierwszej instalacji. Dostęp do gniazda Dockera oznacza, że kontener główny ma w praktyce uprawnienia roota na hoście; to cena za automatyczne zarządzanie resztą.
Krok 4. Konfiguracja w panelu AIO
Na swoim komputerze otwórz tunel i wejdź na panel:
W przeglądarce otwórz https://localhost:8080 (lokalny koniec tunelu; na serwerze panel słucha na 8088) i zaakceptuj certyfikat samopodpisany. Panel pokaże hasło (passphrase) do logowania – zapisz je w menedżerze haseł. Dalej:
- Wpisz domenę
cloud.example.pl. AIO sprawdzi, czy domena przez Twój nginx trafia do jego Apache; jeśli test nie przechodzi, popraw konfigurację, a nie wyłączaj walidacji (SKIP_DOMAIN_VALIDATION=trueto według dokumentacji ostateczność). - Wybierz dodatki. Każdy to osobny kontener i więcej pamięci – na start zostaw tylko to, czego użyjesz.
- Uruchom kontenery i poczekaj, aż wszystkie będą zielone. Panel poda dane pierwszego administratora Nextclouda.
Talk (rozmowy wideo) publikuje dodatkowo port 3478 TCP i UDP. Docker dopisuje własne reguły zapory, więc ufw go nie zablokuje; jeśli dostawca ma zaporę w panelu, otwórz tam ten port tylko wtedy, gdy włączasz Talk.
Krok 5. Kopie i aktualizacje
AIO ma wbudowane kopie oparte na BorgBackup: przyrostowe, kompresowane i szyfrowane. W panelu podaj katalog kopii (np. /mnt/ncbackup, najlepiej na innym dysku niż dane) albo zdalne repozytorium Borg i zrób pierwszą kopię. README podkreśla, że bez klucza szyfrującego, który panel pokaże, kopii nie odtworzysz – zapisz go poza serwerem.
Po pierwszej kopii możesz włączyć kopie codzienne i automatyczne aktualizacje: skrypt kopii zatrzymuje kontenery, robi kopię, aktualizuje obrazy i uruchamia wszystko ponownie. Domyślnie AIO trzyma kopie z 7 dni, 4 tygodniowe i 6 miesięcznych. Duże wydania Nextclouda trafiają do AIO dopiero po pierwszym wydaniu poprawkowym.
Kopia na tym samym VPS nie chroni przed utratą serwera. Wyślij katalog z repozytorium Borg na zewnątrz, np. przez rclone jak w poradniku o kopiach poza serwerem, albo od razu użyj zdalnego repozytorium Borg. Pliki podłączone przez aplikację External storage nie wchodzą do kopii AIO.
Kiedy to się nie opłaca
Nextcloud ma sens, gdy chcesz trzymać dane u siebie, potrzebujesz kalendarzy, kontaktów i współdzielenia w jednym miejscu dla rodziny albo małego zespołu, albo masz już VPS z wolnym miejscem. Gotowa chmura (Google Drive, OneDrive, Dropbox, Proton Drive) wygrywa, gdy:
- trzymasz głównie zdjęcia i dokumenty, a nie potrzebujesz kontroli nad serwerem – płacisz za miejsce, a nie za serwer, pamięć, kopie i własny czas;
- potrzebujesz dużo przestrzeni: dysk VPS jest zwykle droższy za gigabajt niż miejsce w planach chmurowych, a własna kopia podwaja zapotrzebowanie;
- nikt nie będzie pilnował aktualizacji i kopii, a od plików zależy firma.
Zanim zdecydujesz, porównaj cenę planu VPS z dyskiem, którego naprawdę potrzebujesz, z ceną planu chmurowego o tej samej pojemności – aktualne cenniki sprawdzaj u dostawców.
Najczęstsze problemy
- Walidacja domeny w panelu nie przechodzi. Rekord A nie wskazuje serwera, certbot nie wydał certyfikatu albo nginx przekazuje ruch na inny port niż
APACHE_PORT. Sprawdźcurl -I https://cloud.example.plisudo tail /var/log/nginx/error.log– błąd 502 i wpisconnect() failedoznaczają, że pod127.0.0.1:11000nic nie słucha albo port się nie zgadza. - Panel AIO nie otwiera się po zmianie domeny. Przeglądarka zapamiętała HSTS dla domeny. Dlatego panel otwierasz przez
localhostw tunelu, a nie przez domenę. - Wysyłanie dużych plików kończy się błędem 413. W nginx brakuje
client_max_body_size 0albo ten limit jest w innym blokuserverniż ten, który obsługuje HTTPS. Po certbocie sprawdźsudo nginx -T | grep -n client_max_body_size. - Kontenery padają po włączeniu dodatków. Zabrakło pamięci – w
dmesgznajdziesz „Out of memory”. Wyłącz Collabora lub ClamAV albo przejdź na większy plan. - Dane zajęły dysk systemowy.
NEXTCLOUD_DATADIRnie był ustawiony przy pierwszej instalacji. Przeniesienie później wymaga przywrócenia z kopii na nową instalację – stąd krok 1 przed wszystkim innym.
Co dalej
Zainstaluj aplikacje Nextcloud na telefonie i komputerze, żeby pliki synchronizowały się same. Zanim wrzucisz tam ważne dane, przejdź listę kontrolną zabezpieczenia VPS i dodaj monitoring adresu, np. Uptime Kuma. Inne narzędzia, które zastąpią płatne subskrypcje, znajdziesz w zestawieniu self-hosted alternatyw. Ile kosztuje VPS pod Nextcloud w porównaniu z Dropboxem albo Google One, sprawdzisz w kalkulatorze self-hosting czy abonament.