NextCloud

De la adresa https://download.nextcloud.com/server/releases descărcăm ultima versiune a lui NextCloud, la momentul scrierii ultima versiune este 28.0.1:

wget https://download.nextcloud.com/server/releases/latest.zip

După vom dezarhiva arhiva anterior descărcată în directorul /var/www/ folosind următoarea comandă, la care indicatorul -d este folosit pentru a indica directorul de destinație:

unzip latest.zip -d /var/www/

După instalarea serviciului PostgreSQL descrisă în acestă arie se va crea baza de date nextcloud și un utilizator nextcloud ce va fi propietarul acestei baze date ca mai jos:

Ne conectăm la servicul bazei de date:

psql -h localhost -U postgres -W

apoi va apare un prompter ce ne solictă parola utilizatorului postgres.

După logarea cu succes vom crea baza de date nextcloud:

create database nextcloud;

Creăm utilizatorul nexcloud și în același timp stabilim și parola acestuia:

create user nextcloud with password 'nextcloud_pass;

Stabilim ca propietarul bazei de date nextcloud să fie utilizatorul nextcloud:

alter database nextcloud owner to nextcloud;

Atribuim toate privilegiile către utilizatorul nextcloud la baza de date nextcloud:

grant all privileges on database nextcloud to nextcloud;

Apoi închidem conexiunea la serverul PostgreSQL:

\q

Verificăm după comezile de mai dacă utilizatorul nextcloud are dreptul la baza de date nextcloud:

psql -h localhost -d nextcloud -U nextcloud

Instalăm serverul Apache și php pentru Apache cu PHP-FPM descrisă aici cât și unele module respectiv utilitare:

apt install imagemagick ffmpeg exiftool php8.2-imagick php8.2-common php8.2-pgsql php8.2-fpm php8.2-gd php8.2-curl php8.2-imagick php8.2-zip php8.2-xml php8.2-mbstring php8.2-bz2 php8.2-intl php8.2-bcmath php8.2-gmp php8.2-imap php8.2-smbclient php8.2-exif

Schimbam proprietarul și grupul directoarelor și fișierelor unde am dezarhivat anterior nextcloud /var/www/nextcloud, conform cu propietarul și grupul din care face parte seviciul Apache:

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

Din motive de securitate creăm directorul /var/www/data unde nextcloud ne va păstra date:

mkdir /var/www/data

Modificăm proprietarul la directorul creat anterior:

chown www-data:www-data /var/www/data

Cream fișierul de configurare pentru site-ul virtual aferent nextcloud, în directorul /etc/apache2/sites-available/:

nano /etc/apache2/sites-available/nextcloud.domeniu.com.conf

<VirtualHost *:80>
  DocumentRoot /var/www/nextcloud/
  ServerName  nextcloud.domeniu.com

  <Directory /var/www/nextcloud/>
    Require all granted
    AllowOverride All
    Options FollowSymLinks MultiViews

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

Atenție - Numele de la ServerName trebuie să existe și să fie înregistrat la un serviciu DNS, de asemenea atentie la calea aferentă DocumentRoot.

Activăm site-ul creat anterior:

a2ensite nextcloud.domeniu.com.conf

Pentru ca Nextcloud să funcționeze corect, avem nevoie de modulul mod_rewrite activat:

a2enmod rewrite

în acest caz a fost activat anterior:

Modulele suplimentare recomandate sunt: mod_headers, mod_env, mod_dir și mod_mime:

a2enmod headers && a2enmod env && a2enmod dir && a2enmod mime

În cazul meu 3 erau activate anterior.

Dacă rulăm mod_fcgi în locul standardului mod_php activăm și:

a2enmod setenvif

fiind de asemeni activat anterior în cazul meu.

Repornim servicul Apache:

systemctl restart apache2

Solicităm cheile pentru conexiunea ssl la site-ul virtual aferent nextcloud folosind comanda:

certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email emailul_tau@domeniu_email.com -d nextcloud.domeniu.com

în cazul în care anterior am solictat chei pentru un alt site virtual vom adăuga indicatorul --expand:

certbot --expand --apache --agree-tos --redirect --hsts --staple-ocsp --email emailul_tau@domeniu_email.com -d domeniu.com,nextcloud.domeniu.com

Pentru a verifica, dacă am realizat un lucru bun, vom testa la https://www.ssllabs.com/ssltest/index.html site-ul nostru dacă ok, eu am obținut o notă bună:

După accesarea paginii web a site-ului https://nextcloud.domeniu.com vom fi întânpinați, pentru prima dată, de pagina unde va trebui să raspundem prin introducerea datelor solictate:

După care apăsăm butonul Instalează și dacă totul a fost introdus corect vom fi întâmpinați de o nouă fereastră:

După apăsarea butonului Instalați aplicațiile recomandate și instalarea aplicațiilor recomandate ecranul următor va fi de forma:

După citirea și închiderea ferestrei de bun venit tablou de bord a alui nextcloud instalat pe severul nostru va fi de forma:

Astfel că în acest moemnt avem un nextcloud cu servicii minime și suncțional.

Verificăm la pagina Administare -> Prezentare Generala eventuale probleme sau lucruri care trebuiesc optimizate:

Dar cel mai bine îninate de realiza modificări să realizăm backupuri la fișierele originale:

Unul din lucruri este că trebuie să marim memoria la minim 512M:

nano /etc/php/8.2/fpm/php.ini

căutăm linia:

memory_limit = 128M

și schimbăm valoarea la minim 512M:

memory_limit = 512M

Instalare Collabora (Libreoffice utilizat în Nextcloud)

Collabora are un depozit oficial de pachete pentru Ubuntu 22.04. Rulăm următoarea comandă pentru a o adăuga la sistem.

echo 'deb https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-ubuntu2204 ./' | tee /etc/apt/sources.list.d/collabora.list

Apoi rulăm următoarea comandă pentru a descărca și importa cheia publică pentru Collabora, care ve va permite ca managerului de pachete APT să verifice integritatea pachetelor descărcate din acest depozit.

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0C54D189F4BA284D

Copiem cheia trusted.gpg din directorul /etc/apt/ în directorul /etc/apt/trusted.gpg.d/:

cp /etc/apt/trusted.gpg /etc/apt/trusted.gpg.d

sau și mai bine exportăm cheia în directorul respectiv:

apt-key export F4BA284D | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/collabora.gpg

după care ștergem fisierul trusted.gpg creat anterior:

rm -f /etc/apt/tusted.gpg

și verificăm că totul este regulă cu cheile noastre:

apt-key list

Atenție - Verificăm anterior că nu sunt mai multe chei în trusted.gpg (nu ar trebuie să fie) pe lângă cele de la Collabora cu apt-key list, dacă sunt trebuiesc exportate și acelea.

Actualizăm sistemul:

apt update && apt upgrade

Acum instalăm Collabora, vor fi necesare doua pachete:

apt install coolwsd code-brand

După instalare verificăm starea serviciului coolwsd:

systemctl status coolwsd

După cum se poate observa sunt probleme cu pornirea servicului și verificăm jurnalul acestuia:

journalctl -eu coolwsd

vom analiza jurnalul și vom constată că nu este găsit un fișier cu chei:

Va trebui să edităm fișierul /etc/coolwsd/coolwsd.xml dar fiind destul de complicat vom folosi comanda de configurare a acetsuia coolconfig, dar înainte de editare o salvare a originalului pentru orice eventualitate nu strică:

cp /etc/coolwsd/coolwsd.xml /etc/coolwsd/coolwsd.xml.orig

dezactivăm TLS:

coolconfig set ssl.enable false

activăm TLS termination:

coolconfig set ssl.termination true

În mod implicit, coolwsd permite doar gazdelor cunoscute să-și acceseze serviciul. Pentru a permite serviciului nostru de Nextcloud să acceseze serviciul, rulăm următoarea comandă pentru a adăuga numele de gazdă a virtual host-ului nostru (realizat la pasul cu instalarea lui Nextcloud) cu servicul Nextcloud la lista sigură:

coolconfig set storage.wopi.host nextcloud.domeniu.com