Nextcloud – instalacja domowej chmury w sieci lokalnej

Co to Nextcloud?

Najlepsze jak dotąd oprogramowanie typu open-source przetestowane przeze mnie, które przeznaczone jest do zastosowań chmurowych.
Główne cechy to:

  • Przechowywanie i synchronizacja plików. (Opcja na której skupimy się w dalszej części artykułu.)
  • Zarządzanie użytkownikami. (Wiele osób może korzystać z chmury.)
  • Możliwość rozszerzenia o dodatkowe aplikacje. (Kalendarz, komunikator, klient email.)

Narzędzie to jest „self hosted”, co oznacza, że należy je samodzielnie zainstalować na swoim serwerze.
W tym artykule pokażę jak to zrobić.

Wymagania serwera.

Podobnie jak w poprzednim arcie z instalacji Pydio Cells, będę korzystał z domowego serwera, który uruchomiony jest na starym laptopie.
Zainstalowany na nim jest Proxmox, a w nim utworzona wirtualna maszyna z Ubuntu 24.04 Server.
Najważniejsze rzeczy w konfiguracji VM:

Z takimi parametrami można pozwolić sobie na instalacje dodatkowych aplikacji.
Jeżeli potrzebujesz chmury tylko do synchronizacji plików, ewentualnie do wykorzystania jako dysk sieciowy,
słabsza maszyna wystarczy. Np Procesor 2 rdzenie i 4GB pamięci RAM.
Film z procesu tworzenia wirtualnej maszyny, dostępny jest również we wpisie z Pydio.
Jeżeli dysponujesz tylko bardzo leciwym laptopem, który fizycznie ma słabe parametry, to rozważ instalację Ubuntu 24.04 Server bezpośrednio na nim.
To są moje subiektywne spostrzeżenia, jakie miałem podczas instalacji i pracy z tą chmurą. Oficjalne wymagania można zobaczyć w dokumentacji Nextcloud tutaj.

Połączenie SSH bez hasła.(Opcjonalnie)

W filmie do tego artykułu wspomniałem, że zamieszczę komendy dzięki którym łatwiej łączyć się z serwerem za pomocą SSH.

Generowanie klucza, zamiast maila możesz wpisać inny komentarz.

ssh-keygen -t rsa -b 4096 -C "twó[email protected]"

Dodaj klucz do serwera. Po komendzie, należy wpisać hasło.

ssh-copy-id użytkownik@ip_serwera

Połącz się z serwerem. Teraz powinno połączyć Cię bez podawania hasła.

ssh użytkownik@ip_serwera

Zmiana koloru użytkownik@host w terminalu. (Opcjonalnie)

nano ~/.bashrc

Na końcu pliku dodaj:

if [ -n "$SSH_CONNECTION" ]; then
PS1='\[\e[1;33m\]\u@\h:\w\$ \[\e[0m\]'
fi

Przeładuj konfiguracje.

source ~/.bashrc

Instalacja Nextcloud

Aktualizacja systemu.

sudo apt update && sudo apt upgrade -y

Utwórz katalog na pliki

mkdir pliki

Nadaj mu odpowiednie uprawnienia.

sudo chown -R www-data:www-data /home/konrad/pliki && sudo chmod -R 750 /home/konrad/pliki && sudo chmod +x /home && sudo chmod +x /home/konrad

Sprawdź nazwę interfejsu sieciowego.

ip a

Uzyskaj statyczny adres IP.

sudo nano /etc/netplan/00-installer-config.yaml

Zmodyfikuj poniższy wpis, zmieniając nazwę swojego interfejsu sieciowego[3 linijka], oraz ip routera [9 linijka]

network:
  ethernets:
    ens18:
      dhcp4: no
      addresses:
        - 192.168.0.120/24
      routes:
        - to: default
          via: 192.168.0.1
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4
  version: 2

Ustaw odpowiednie uprawnienia pliku, oraz zastosuj zmiany.

sudo chmod 600 /etc/netplan/00-installer-config.yaml
sudo netplan apply

Instalacja potrzebnego oprogramowania.

sudo apt install apache2 unzip wget curl mariadb-client mariadb-server nano openssl ca-certificates apt-transport-https software-properties-common gnupg gnupg2 gnupg1 php8.3 -y

sudo apt install libapache2-mod-php8.3 php8.3-{zip,xml,mbstring,gd,curl,imagick,intl,bcmath,gmp,cli,mysql,apcu,redis} -y

Modyfikacja ustawień php

sudo nano /etc/php/8.3/apache2/php.ini

Zmień wartości w tych liniach.

    memory_limit = 1024M
    upload_max_filesize = 16G 
    post_max_size = 16G 
    date.timezone = Europe/Warsaw

Zaloguj się do MySQL

sudo mysql -u root -p

Utwórz bazę danych, użytkownika i hasło.

CREATE DATABASE chmura;
GRANT ALL PRIVILEGES ON chmura.* TO 'chmura'@'localhost' IDENTIFIED BY 'DoBrzeMiećMocN3Hasło!';
FLUSH PRIVILEGES;
EXIT;

Pobierz najnowszą paczę z Nextcloud-em.

cd /tmp && sudo wget https://download.nextcloud.com/server/releases/latest.zip 

Rozpakuj, przenieś i skasuj pobranego zip-a

sudo unzip latest.zip
sudo mv nextcloud /var/www
sudo rm latest.zip

Włącz moduły Apache i zresetuj.

sudo a2enmod rewrite headers env dir mime
sudo systemctl restart apache2

Utwórz wirtualny host.

sudo nano /etc/apache2/sites-available/nextcloud.conf

Upewnij się, że w poniższej konfiguracji jest adres IP twojego serwera.

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/nextcloud
    ServerName 192.168.0.120

    Alias /nextcloud "/var/www/nextcloud/"
    <Directory /var/www/nextcloud/>
        Options +FollowSymlinks
        AllowOverride All
        Require all granted

        <IfModule mod_dav.c>
            Dav off
        </IfModule>

        SetEnv HOME /var/www/nextcloud
        SetEnv HTTP_HOME /var/www/nextcloud
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/nextcloud_error.log
    CustomLog ${APACHE_LOG_DIR}/nextcloud_access.log combined
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin [email protected]
    DocumentRoot /var/www/nextcloud
    ServerName 192.168.0.120

    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/selfsigned.crt
    SSLCertificateKeyFile /etc/ssl/private/selfsigned.key

    Alias /nextcloud "/var/www/nextcloud/"
    <Directory /var/www/nextcloud/>
        Options +FollowSymlinks
        AllowOverride All
        Require all granted

        <IfModule mod_dav.c>
            Dav off
        </IfModule>

        SetEnv HOME /var/www/nextcloud
        SetEnv HTTP_HOME /var/www/nextcloud
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/nextcloud_ssl_error.log
    CustomLog ${APACHE_LOG_DIR}/nextcloud_ssl_access.log combined
</VirtualHost>

Wygeneruj samopodpisany certyfikat SSL

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/selfsigned.key -out /etc/ssl/certs/selfsigned.crt

Włącz ssl, ustaw i przeładuj konfigurację.

sudo a2enmod ssl
sudo a2ensite nextcloud.conf
sudo systemctl restart apache2

Ustaw właściciela katalogu z Nextcloud-em.

sudo chown -R www-data:www-data /var/www/nextcloud/

Kończenie instalacji przez przeglądarkę.

Z poleceń wydawanych przez SSH to tyle, teraz trzeba dokończyć instalację przez przeglądarkę.
Przejdź pod adres:

https://ip_serwera

Wyświetli się informacja, że coś jest nie tak z certyfikatem SSL.

To normalne przy certyfikacie, który sami podpisaliśmy.
Trzeba kliknąć 'Zaawansowane’ i 'Otwórz…’, w zależności od przeglądarki, może to wyglądać trochę inaczej.

Teraz trzeba wpisać dane logowania nowego administratora, katalog na pliki, oraz dane do połączenia z bazą danych, które utworzyliśmy wcześniej.
Pamiętaj aby poprawnie wpisać ścieżkę do katalogu z plikami. Ten katalog był tworzony na samym początku. W moim przypadku to:

/home/konrad/pliki


Sama instalacja może potrwać kilka-kilkanaście minut. Trzeba cierpliwie poczekać.
Polecam obejrzenie filmiku z całego procesu. Pamiętaj, że powyższy opis, tyczy się instalacji Nextcloud na serwerze lokalnym, a nie np na VPS-ie dostępnym z Internetu.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *