Nextcloud Hub

Installare Nextcloud 20 su Ubuntu – Il Metodo “Lungo”

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 (ovvero LAMP).

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 [email protected] IDENTIFIED BY "password";
GRANT ALL PRIVILEGES ON nextcloud.* TO [email protected];
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 e clicchiamo sul pulsante Get Nextcloud, poi su Server Packages. Facciamo click con il tasto destro sul pulsante Download Nextcloud e click su Copia collegamento.

Ora torniamo sul terminale di Ubuntu e diamo il seguente comando per scaricare l’archivio contenente i file di Nextcloud. Sostituiamo la versione 20.0.5 con la versione corrente del collegamento copiato in precedenza (al momento attuale l’ultima versione è proprio la 20.0.5).

wget https://download.nextcloud.com/server/releases/nextcloud-20.0.5.zip

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

unzip nextcloud-20.0.5.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 Nextcloud 20

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.

Schermata benvenuto

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.
Per ogni consiglio o richiesta di aiuto non esitate a scrivere un commento sotto.

Quanto è stato utile questo post?

Clicca su una stella per votare!

Mi dispiace che questo post non ti sia stato utile!

Permettimi di migliorare questo post!

Dimmi come posso migliorare questo post!

17 comments

    1. Grazie. Per le anteprime non ho mai avuto problemi. Però adesso che ci penso mi sono dimenticato di aggiungere una parte alla guida.
      Io ho installato l’app Preview Generator che utilizzando cron genera in anticipo tutte le anteprime.
      Devi modificare il crontab dell’utente www-data
      crontab -u www-data -e
      e aggiungere un cronjob:
      */30 * * * * /var/www/nextcloud/occ preview:pre-generate > /dev/null
      Per funzionare, il file occ deve avere il permesso di esecuzione, purtroppo dopo gli aggiornamenti perde questo permesso, basta dare il comando
      chmod +x /var/www/nextcloud/occ

      1. Quindi terminata l’installazione,
        devo solo fare i seguenti passaggi

        – installare preview generator
        – crontab -u www-data -e
        – aggiungere */30 * * * * /var/www/nextcloud/occ preview:pre-generate > /dev/null

        e poi chmod +x /var/www/nextcloud/occ

        e come posso verificare che sta funzionando correttamente? perchè per ora sembra sempre lento il caricamento della galleria tramite app sul telefono android

        1. Sì esatto, ma ho dimenticato di dirti che per generare le anteprime per i file caricati in precedenza, devi dare il seguente comando (una volta sola):
          /var/www/nextcloud/occ preview:generate-all -vvv
          Potrebbe metterci un po’ di tempo.

          1. Allora lanciando come indicato da te mi da errore, mentre lanciandolo come fatto da me, mi genera le anteprime:

            [email protected]:~$ sudo /var/www/nextcloud/occ preview:generate-all -vvv[sudo] password for administrator:
            Console has to be executed with the user that owns the file config/config.php
            Current user id: 0
            Owner id of config.php: 33
            Try adding ‘sudo -u #33’ to the beginning of the command (without the single quotes)
            If running with ‘docker exec’ try adding the option ‘-u 33’ to the docker command (without the single quotes)
            [email protected]:~$ sudo -u www-data ./occ preview:generate-all -vvv

          2. Puoi verificare che ti abbia creato le anteprime controllando la cartella /opt/nextcloud/data/appdata_******/preview.
            Nella cartella preview vengono salvate tutte le anteprime. Puoi controllarne la dimensione con il comando du -hs preview

          3. Perdonami, ultima cosa, mi dici come mai lanciando il tuo comando mi da errore

            sudo /var/www/nextcloud/occ preview:generate-all -vvv
            Console has to be executed with the user that owns the file config/config.php
            Current user id: 0
            Owner id of config.php: 33
            Try adding ‘sudo -u #33’ to the beginning of the command (without the single quotes)
            If running with ‘docker exec’ try adding the option ‘-u 33’ to the docker command (without the single quotes)

            se invece lancio il mio, mi fa le anteprime
            sudo -u www-data ./occ preview:generate-all -vvv

            Invece riguardo il controllo, ho controllato la cartella e ci sono le anteprime

      2. e scusami, un’altra cosa, consigli nextcloud su VM o Container? (io utilizzo ProxMox).

        Anche per la questione anteprime, funziona in entrambi i casi?

        1. Dipende. Se hai poco tempo o non hai voglia di metterci le mani ti consiglio di usare un container (tipo Docker). È più facile perchè appena lo crei hai tutto pronto, non so le anteprime.
          Usando una VM invece hai il controllo completo.

          1. Non ne faccio una quesdtione di tempo ma di risorse da rendere disponibile…regge con un docker o meglio una VM?

        1. Nella guida che hai linkato viene spiegato come selezionare solo per quali estensioni generare le anteprime. Se non aggiungi quelle modifiche al file ‘config.php’, l’app genererà le anteprime per tutti i file compatibili.

Lascia un commento