Nextcloud – Skrypt Instalacyjna dla systemów Linux

Ten skrypt został przygotowany pod czystą (minimalną) instalację systemów Linux takich jak:
Debiana 11-13, Entepreise Linux 9-10, Ubuntu Server 22-24, Fedora Server 39-42 na architekturze procesorów AMD64 (x86_64).
Zaktualizuje on system operacyjny, zainstaluje potrzebne pakiety i wstępnie skonfiguruje wszystko do uruchomienia Nextcloud.
Wśród nich są Apache (serwer WWW), MariaDB (serwer baz danych), PHP (język programowania),
NTP (usługa synchronizacji czasu) i Redis/Valkey (serwer cache).
Generowana jest także nowa usługa cron dla Nextcloud, która uruchamia się co 5 minut.
Do Nextcloud zostanie dodany nowy użytkownik z uprawnieniami administracyjnymi, jego dane uwierzytelniające znajdziesz po zakończeniu pracy skryptu (hasło jest generowane losowo).

Po instalacji możesz korzystać z przeglądarki internetowej, aby uzyskać dostęp do Nextcloud za pomocą lokalnego adresu IP.
Protokoły HTTP i HTTPS są domyślnie włączone (generowany jest certyfikat localhost).
Jeżeli masz już domenę, której chcesz użyć to możesz to zrobić dodając ją jako argument do komendy uruchamiającej skrypt. Pamiętaj jednak, że domena musi być wcześniej ustawiona na adres IP Twojego serwera, oraz Twoje urządzenia sieciowe (routery) muszą być już poprawnie skonfigurowane. W innym wypadku generowanie certyfikatów SSL się nie powiedzie.

Link do skryptu: https://github.com/nicrame/Linux-Scripts/blob/master/nextcloud-ins.sh

Aby zainstalować użyj tej komendy (jako root):

wget -q https://github.com/nicrame/Linux-Scripts/raw/master/nextcloud-ins.sh && chmod +x nextcloud-ins.sh && ./nextcloud-ins.sh

Lub – jeżeli posiadasz skonfigurowaną domenę:

wget -q https://github.com/nicrame/Linux-Scripts/raw/master/nextcloud-ins.sh && chmod +x nextcloud-ins.sh && ./nextcloud-ins.sh -dm=mojadomena.com

Wszystkie dostępne argumenty skryptu (można, ale nie trzeba dopisywać do komendy startowej):
-lang – obsługa wielu języków, obecnie dostępne: Arabski (ar), Chiński (zh), Francuski (fr), Hindi/Indyjski (hi), Polski (pl), Hiszpański (es) i Ukraiński (uk). Opcja pozostawiona  bez zdefiniowania po prostu nie doda pakietów systemowych i nie skonfiguruje wstępnie Nextcloud (pozostanie domyślny język przeglądarki www).
-mail – adres email konta administracyjnego.
-dm – domena, której chcemy używać, skrypt skonfiguruje serwer www aby domena wskazywała na Nextcloud, doda ją jako zaufany adres dla samego NC, oraz skonfiguruje usługę certyfikatów SSL (Let's encrypt) aby działało bezpieczne połączenie httpS. Domena musi być wcześniej już skonfigurowana tj. wskazywać na adres IP, na którym udostępniamy usługę. Router także powinien być już wcześniej skonfigurowany (to znaczy, przekierowywać ruch z zewnątrz na port 80 i 443 serwera, na którym działa Nextcloud).
-nv – wersja Nextcloud, której chcemy użyć. Dostępne są wersje 24, 25, 26, oraz 27. Starsze wersje mają dostosowaną instalacje i konfigurację PHP dopasowaną do wersji NC. Brak wybranej opcji zainstaluje najnowszą na dany moment wersję skryptu.
-fdir – zmienna umożliwia określenie miejsca przechowywania plików użytkownika i plików nextcloud.log. Domyślnie ustawienie to pozostawia domyślną lokalizację, którą jest /var/www/nextcloud/data. Wybranie innej lokalizacji nie zmieni konfiguracji Nextcloud, ale powiąże (za pomocą mount) domyślną lokalizację Nextcloud z określoną lokalizacją, dzięki czemu mechanizmy bezpieczeństwa, takie jak chroot/jail/SELinux itp. będą działać poprawnie bez dodatkowej konfiguracji dla nich, serwera WWW itp. Na przykład, jeśli zostanie użyta opcja -fdir=/mnt/sdc5/nextcloud-data, to po wejściu do katalogu /var/www/nextcloud/data zostanie wyświetlona zawartość katalogu /mnt/sdc5/nextcloud-data. Jeśli chcesz używać spacji między słowami w nazwie katalogu, umieść ścieżkę w cudzysłowie, np. -fdir="/mnt/sdx/users data folder".
Aby zapamiętać ustawienia katalogu danych i montować je przy każdym uruchomieniu systemu operacyjnego, modyfikowany jest plik /etc/fstab.
-restore – argument służy do odzyskiwania starszych plików/bazy danych Nextcloud. Od wersji 1.11 skrypt ten generuje kopię zapasową plików Nextcloud (z wyłączeniem danych użytkowników) i bazy danych, gdy jest uruchamiany w celu aktualizacji (co jest domyślnym scenariuszem, gdy skrypt jest uruchamiany po raz kolejny po pierwszym użyciu). Możesz użyć opcji -restore=list, aby sprawdzić listę wcześniej utworzonych kopii zapasowych, lub -restore=filename.tar.bz2, aby wybrać jeden z tych plików i użyć go do przywrócenia Nextcloud.
WAŻNE: Gdy argument -restore jest używany z dowolnym rodzajem parametrów, wszystkie inne są ignorowane. Oznacza to, że nie można używać zmiennej -restore z innymi.
-backup – argument uruchamia proces tworzenia kopii zapasowej bez wykonywania żadnych innych zadań. Tworzy on jedynie kopię zapasową bieżącej instalacji Nextcloud wraz z bazą danych, z wyłączeniem plików użytkowników.
Podobnie jak w przypadku opcji -restore, argument -backup musi być używany samodzielnie (wszelkie inne argumenty użyte wraz z nim zostaną zignorowane).
-purge – jest używany jako samodzielny argument – usunie całe oprogramowanie zainstalowane przez ten skrypt oraz jego konfigurację. Usunie również Nextcloud wraz ze wszystkimi plikami (także użytkowników) i bazą danych. Powinien być używany tylko wtedy, gdy pierwsze uruchomienie nie zadziałało poprawnie – spowoduje to coś w rodzaju "cofnięcia" zmian, dzięki czemu możliwe będzie ponowne uruchomienie skryptu.

Należy zwrócić uwagę, aby definiować wartości argumentów za znakiem sumy (=).

Przykładowe użycie skryptu z wszystkimi opcjami:

wget -q https://github.com/nicrame/Linux-Scripts/raw/master/nextcloud-ins.sh && chmod +x nextcloud-ins.sh && ./nextcloud-ins.sh -lang=pl -mail=[email protected] -dm=mojadomena.com -nv=24

Przetestowane z Nextcloud v24-V32.

Historia zmian:
V 1.12.4 – 24.11.2025
– Argument backup sprawdza, czy Nextcloud był już zainstalowany.
– Poprawki dotyczące sposobu uruchamiania i działania skryptu.
– Sprawdza, czy firewalld jest zainstalowany w Debianie, a jeśli tak, nie dodaje UFW, tylko jego własne reguły.
V 1.12.3 – 23.11.2025
– Obsługa Nextcloud Hub 25 (v32).
– Niewielkie zmiany w dokumentacji.
– Sprawdzanie, czy skrypt jest uruchamiany w pełnej powłoce logowania.
– Dodano nową opcję -purge, która usuwa oprogramowanie zainstalowane przez ten skrypt wraz z NC i całą bazą danych, dzięki czemu można ponownie rozpocząć proces instalacji z nowymi danymi.
V 1.12.2 – 09.09.2025
– Poprawki zapewniające lepszy proces aktualizacji ze starszych wersji NC.
V 1.12.1 – 09.09.2025
– Małe poprawki.
V 1.12 – 07.09.2025
– Ustawienie PHP 8.4 jako domyślnej wersji.
– Zmiana sposobu przechowywania konfiguracji PHP (nowy, inny plik konfiguracyjny zamiast zmiany ustawień przez edycje plików dodawanych z pakietu).
– Dodano obsługę Debiana 13.
– Dodano obsługę EL 10 (używa Valkey zamiast Redis, przetestowano na Rocky i RHEL).
– Dodano obsługę Fedory 42 Server.
– Dodano obsługę Ubuntu 24 LTS Server.
V 1.11.5 – 25.05.2025
– Kolejna porcja małych zmian.
V 1.11.4 – 24.05.2025
– Nextcloud Hub 10 (v31) jako domyślna wersja instalacyjna.
– Małe poprawki.
V 1.11.3 – 12.09.2024
– Nextcloud Hub 9 (v30) jest teraz domyślnie instalowany (najnowsza wersja).
– Zaktualizowano domyślne wersje do najnowszych wydań przy użyciu parametru -nv.
– Dodano kilka poleceń, aby upewnić się, że PHP 8.3 jest używane jako wersja domyślna.
– Drobne zmiany i poprawki.
V 1.11.2 – 16.05.2024
– Nowe argumenty: -backup (tworzenie kopii zapasowej) i -restore (który może być użyty z argumentem „list", aby wyświetlić wcześniej utworzone kopie zapasowe, lub z nazwą pliku, aby użyć go do przywrócenia z niego).
– Zmodyfikowano nazwy plików kopii zapasowych, aby wyświetlały więcej danych (datę, godzinę i wersję Nextcloud, której kopia zapasowa jest tworzona).
V 1.11 – 16.05.2024
– Aktualizacja dokumentacji wewnątrz skryptu.
– Pierwsza próba utworzenia funkcji kopii zapasowej/przywracania.
V 1.10 – 19.04.2024
– Nextcloud Hub 8 (v29) jest teraz domyślnie instalowany (najnowsza wersja).
– PHP 8.3 używane jako domyślna wersja.
– Naprawiono błąd, który nie pozwalał na instalację starszych wersji NC (i PHP 7.4).
V 1.9.2 – 13.03.2024
– Sprawdzenie, czy parametr „fdir" jest skonfigurowany dla już istniejącego katalogu i poinformowanie, jeśli nie.
– Poprawiono spacje w nazwach katalogów zapisywanych w fstab, skonfigurowanych z argumentem -fdir (fstab nie obsługuje spacji w nazwach katalogów).
V 1.9.1 – 12.03.2024
– Pewne aktualizacja opisu i kilka zmian w kodzie, które nie wpływają na sposób działania skryptu.
– Dodanie kodu instalacyjnego PHP 8.3 (obecnie wyłączonego) dla przyszłych wersji NC.
V 1.9 – 04.03.2024
– Nowy argument pozwalający skonfigurować lokalizację katalogu „data", w którym przechowywane są pliki użytkownika (korzysta z mount/fstab w celu zapewnienia zgodności z mechanizmami bezpieczeństwa).
V 1.8.1 – 07.02.2024
– Pierwsze wydanie z obsługą dystrybucji Fedora Server 39 i Ubuntu Server LTS (22).
V 1.8 – 04.02.2024
– Pierwsze wydanie z obsługą Rocky Linux (9) oraz innych dystrybucji Enterprise Linux
– Trochę więcej optymalizacji kodu.
V 1.7.1 – 01.02.2024
– Czyszczenie kodu źródłowego skryptu (jest mniejszy o 1/4!).
– Dodano opcję "maintenance window start" do konfiguracji (w związku z dzisiejszym wydaniem wersji 28.0.2).
V 1.7 – 30.01.2024
– Poprawki dla generowania miniatur/podglądu.
– Wyłączenie trybów uśpienia/hibernacji w systemie operacyjnym.
– Dodanie obsługi protokołu HTTP2.
– Mała poprawka bezpieczeństwa.
– Ulepszenia opisów w źródle skryptu.
V 1.6.4 – 04.01.2024
– Dodano instalacje modułu bz2 dla PHP (w związku z wydaniem Nextcloud Hub 7).
– Drobne poprawki.
V 1.6.3 – 04.11.2023
– Szersze testy działania.
– Drobne poprawki.
V 1.6.2 – 04.08.2023
– Więcej języków jest teraz obsługiwanych poprzez parametr "-lang=" (Arabski (ar), Chiński (zh), Francuski (fr), Hindi/Indyjski (hi), Polski (pl), Hiszpański (es) i Ukraiński (uk)).
V 1.6.1 – 03.08.2023
– Drobne poprawki.
V 1.6 – 03.08.2023
– Nowa zmienna umożliwiająca instalację starszej wersji Nextcloud (użytkownicy zgłaszali problemy z NC27).
– Skrypt zmienia nazwę po zakończeniu pracy (więc polecenie instalatora zawsze odnosi się do najnowszej wersji).
– Skrypt jest przygotowany na kilka przyszłych aktualizacji (aż do Nextcloud v28).
V 1.5.5 – 12.07.2023
– Lepszy opis zmiennych używanych w przypadku błędu.
V 1.5.4 – 07.07.2023
– Naprawiono kilka problemów logicznych.
– Dodano wsparcie dla Debiana 12.
– Dodano wsparcie dla Nextcloud Hub 5 (v27).
V 1.5.3 – 15.04.2023
– Używanie starszej wersji PHP (8.1) do procesu aktualizacji przed jej usunięciem (Nextcloud nie kończy procesu aktualizacji na nigdy nie zainstalowanej wersji PHP).
– Sprawdza aktualnie zainstalowaną wersję Nextcloud i zaktualizuj ją tyle razy, ile potrzeba (do wersji 26) – podczas aktualizacji ze skryptu w wersji 1.4 lub starszej.
V 1.5.2 – 05.04.2023
– Instalacja i włączenie aplikacji twofactor_webauthn dla większego bezpieczeństwa (testowane z Yubikey).
V 1.5.1 – 05.04.2023
– Aktualizacja z wersji 1.4 i niższych dodana do skryptu.
V 1.5 – 25.03.2023
– Używa Nextcloud Hub 4 (v26).
– Ponownie włączenie opcache (wygląda na to, że teraz działa dobrze).
– Używa PHP w wersji 8.2.
– Instaluje ddclient (dynamiczny klient DNS – https://ddclient.net/).
– Instaluje miniupnpc i uruchamia dla portów 80 i 443 by je otworzyć (nie powinno być to konieczne, ale…).
– Dodano więcej zmiennych do użycia (język, e_mail).
– Instalator tworzy teraz plik z numerem wersji dla przyszłych aktualizacji.
– Instalator wykrywa, czy używane były starsze wersje skryptu i w następnym wydaniu zaktualizuje wszystko (w tym nextcloud).
V 1.4.3 – 24.02.2023
– Zezwolenie na opcję konfiguracji samopodpisanego certyfikatu w nextcloud (czasami może być potrzebna).
V 1.4.2 – 10.02.2023
– Całkowite wyłączenie opcache z powodu wielu segfaultów, nawet gdy JIT jest całkowicie wyłączony.
V 1.4.1 – 08.02.2023
– Opcache jit cache w php został wyłączony z powodu wielu zgłaszanych segfaultów.
V 1.4 – 31.01.2023
– Poprawki dzięki użytkownikowi "maybe" z portalu hejto.pl (ufw, redis, chmods itp.) Dziękuję!
V 1.3 – 30.01.2023
– Poprawka instalacji PHP 8.1.
– Więcej danych przechowywanych w dzienniku dla lepszej obsługi błędów.
V 1.2 – 23.01.2023
– Kilka poprawek wydajności (lepsze wsparcie dla dużych plików).
V 1.1 – 04.08.2022
– Wbudowano wsparcie dla dodawania nazwy domeny jako argumentu linii poleceń (z obsługą let's ecnrypt).
– Dodano zadanie crontab dla certbot (Let's encrypt – odświeżanie certyfikatu) i poszerzono opisy.
V 1.0 – 20.06.2022
– Pierwsze wydanie bazujące na prywatnym skrypcie (dla EL).