Ciao a tutti, in questo articolo cercherò di spiegarvi nel modo più completo possibile come installare Nextcloud 20 su Ubuntu. I passaggi descritti sono stati testati su Ubuntu 20.04 LTS.

La modalità per installare Nextcloud 20 su Ubuntu della quale vi spiegherò i passi da seguire, sarà l’installazione più “difficile” e lunga, e cioè installando separatamente MySQL, Apache e PHP.

Per chi invece non avesse o non potesse seguire tutti i passaggi descritti di seguito, potrà installare Nextcloud in altri modi, ad esempio con i pacchetti snap.

Cos’è Nextcloud?

Se non sapete ancora cos’è Nextcloud e quali sono le sue fantastiche funzionalità, vi invito a leggere prima di tutto il mio post al riguardo Cos’è Nextcloud – Il Cloud personale e open source.

Prerequisiti

  • Una macchina fisica o virtuale con Ubuntu 20.04 LTS o superiori (potrebbe funzionare anche con versioni meno recenti), con almeno 1GB di RAM.
  • Tempo necessario: circa 20/30 minuti.

Tutti i comandi qui di seguito dovranno essere eseguiti come utente root oppure tramite il comando sudo da anteporre ad ogni comando.

Installazione pacchetti

Di seguito trovate un comando (bello lungo) che permetterà di installare tutti i pacchetti necessari al funzionamento di Nextcloud. Nel caso utilizziate una versione meno recente di Ubuntu, è possibile che non troviate la versione 7.4 di PHP, e dovrete ricorrere a una versione minore come la 7.3 o 7.2.

apt install apache2 php7.4 php7.4-fpm php7.4-mysql php7.4-zip php7.4-curl php7.4-apcu php-dompdf php7.4-xml php7.4-mbstring php7.4-intl php-imagick php7.4-bcmath php7.4-gmp libapache2-mod-php7.4 mariadb-server unzip

Nota: come potete vedere ho inserito tra gli altri pacchetti anche MariaDB, che utilizzeremo come database server. Per chi non volesse utilizzare MariaDB come database potrà usare MySQL, in quanto tutti i comandi della guida sono validi su entrambi i database.

Configurazione di Apache:

Cominciamo con l’attivazione dei moduli di Apache necessari al nostro scopo:

a2enmod rewrite headers env dir mime ssl

Apache per funzionare ha bisogno di alcuni file di configurazione che gli indichino quali pagine mostrare. Possiamo usare un programma come WinSCP o FileZilla per creare e modificare il file o direttamente da terminale nano o vi. Creiamo quindi il file /etc/apache2/sites-available/nextcloud.conf e all’interno del file appena creato inseriamo il testo seguente:

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

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

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

<IfModule mod_ssl.c>
  <VirtualHost _default_:443>
    DocumentRoot /var/www/nextcloud
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
    <IfModule mod_headers.c>
      Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
    </IfModule>
  </VirtualHost>
</IfModule>

Il testo qui sopra, per chi non lo comprendesse, in poche parole indica ad Apache di mostrare il contenuto della cartella /var/www/nextcloud quando aprirete il sito tramite browser. In aggiunta alla porta 80, il sito sarà raggiungibile anche tramite il protocollo HTTPS sulla porta 443.

Nota: Il certificato usato è quello di default e di conseguenza self-signed, pertanto all’accesso della pagina di Nextcloud il browser mostrerà un avviso di sicurezza, ma potete ignorarlo.

A questo punto attiviamo il nuovo sito e disattiviamo quello di default che non utilizzeremo con i seguenti comandi:

a2dissite 000-default
a2ensite nextcloud.conf
systemctl restart apache2

Configurazione di MariaDB

Wizard iniziale

Prima di poter utilizzare MariaDB, sarà necessario eseguire un primo wizard per “mettere in sicurezza” l’istanza del database, in modo da evitare eventuali accessi non autorizzati.

Ora vi spiegherò come eseguire e rispondere al wizard.

Per lanciare il wizard utilizziamo il seguente comando: mysql_secure_installation

Essendo una procedura guidata, ci verranno chieste alcune informazioni.

Io vi consiglio di rispondere nel modo seguente, ovviamente come password dovrete inserirne una vostra personalizzata.

  • Prima domanda: premete INVIO (la password non è ancora stata definita)
  • Seconda domanda: inserite una password a vostra scelta per l’account root del database. Da conservare per i passaggi successivi.
  • Terza domanda: inserire la stessa password.
  • Dalla quarta domanda in poi: confermare le impostazioni di default con il tasto INVIO.

Creazione utente e schema

A questo punto andiamo a creare lo schema sul db e un utente con i privilegi sullo schema. Questi ci serviranno per far comunicare Nextcloud con il database.

Per prima cosa apriamo la shell di MariaDB, in questo modo. La password da utilizzare per fare entrare è quella impostata durante il wizard sopra.

mysql -uroot -p

Una volta entrati creiamo lo schema, l’utente e diamo i permessi completi all’utente appena creato. Al posto di password inseriamo una password a nostra scelta, abbastanza complessa.

CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER nextcloud@localhost IDENTIFIED BY "password";
GRANT ALL PRIVILEGES ON nextcloud.* TO nextcloud@localhost;
quit

Installazione Nextcloud

Bene, arrivati a questo punto avremo Apache e MariaDB configurati. Non ci resta che scaricare il pacchetto di Nextcloud e configurarlo.

Andiamo sul sito di Nextcloud, andiamo nella sezione COMMUNITY PROJECTS e clicchiamo col tasto destro su Get ZIP file, quindi copiamo il collegamento al file.

Ora torniamo sul terminale di Ubuntu e diamo il seguente comando per scaricare l’archivio contenente i file di Nextcloud.

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

Ora diamo i seguenti comandi per scompattare la cartella e dare i permessi giusti:

unzip latest.zip -d /var/www
chown -R www-data:www-data /var/www/nextcloud

Come vedete sopra, la cartella in cui ho scompattato l’archivio è /var/www. Questa è solo la cartella che contiene il “motore” di Nextcloud. Possiamo scegliere quindi dove mettere la cartella che conterrà effettivamente i nostri dati che andremo a caricare. Il percorso può essere sullo stesso disco o su un disco esterno. In ogni caso è sempre sconsigliato usare la cartella /var/www/nextcloud come contenitore dei dati, per motivi di sicurezza.

mkdir /opt/nextcloud_data
chown -R www-data:www-data /opt/nextcloud_data

Ottimo, a questo punto basterà collegarsi al server Apache tramite il browser per iniziare il wizard di setup. Nel mio caso sarà https://192.168.1.219/.

Wizard di Nextcloud

Siamo arrivati quasi alla fine, ora rimane solo da utilizzare il wizard per configurare Nextcloud. Qui sotto potete vedere come si presenta.

wizard

Nelle prime due caselle dovrete inserire il nome e la password del nuovo utente (che sarà anche amministratore). Nella terza casella sarà da inserire il percorso della cartella che conterrà tutti i file e cartelle caricati in futuro.

Infine, nelle ultime quattro caselle dovrete inserire i dati del database: nome utente (nel nostro caso nextcloud), la password che avete scelto, il nome del database (nel nostro caso sempre nextcloud) e nell’ultima casella potete lasciare il valore di default in quanto il database server è installato sulla stessa macchina che contiene anche Apache.

Cliccate quindi sul pulsante Termina configurazione e attendete che Nextcloud finisca la sua installazione. Al termine vi sarà proposta la seguente schermata di benvenuto.

welcome

Ultimi ritocchi

Giunti a questo punto, Nextcloud sarà configurato e pronto per poter essere utilizzato. Rimangono però alcuni azioni da eseguire per configurarlo al meglio e ottimizzare il sistema. Di seguito inserirò alcuni comandi da eseguire.

PHP

sed -i 's/output_buffering = 4096/output_buffering = Off/g' /etc/php/7.4/apache2/php.ini
sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/7.4/apache2/php.ini
sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/7.4/cli/php.ini
sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 16G/g' /etc/php/7.4/apache2/php.ini
sed -i 's/post_max_size = 8M/post_max_size = 16G/g' /etc/php/7.4/apache2/php.ini
systemctl restart apache

Caching

sed -i "s/);/  'memcache.local' => '\\\OC\\\Memcache\\\APCu',\n);/g" /var/www/nextcloud/config/config.php
chown -R www-data:www-data /var/www/nextcloud/config/config.php

Controllo indici database

chmod +x /var/www/nextcloud/occ
sudo -u www-data /var/www/nextcloud/occ db:add-missing-indices

Considerazioni finali

Bene, ora che avete visto come installare Nextcloud 20 su Ubuntu a questo punto avete Nextcloud funzionante e pronto. Non vi resta che utilizzarlo per caricare i vostri documenti. Ricordate comunque di fare un backup, sopratutto del database e della cartella nextcloud_data.