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 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 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.

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.

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.
Grande Marco, i tuoi articoli sono sempre grandemente interessanti !
Grazie
Ciao, complimenti per la guida, leggevo in rete di fare alcuni accorgimenti per le anterime delle foto troppo lente, ne sai qualcosa?
https://ownyourbits.com/2019/06/29/understanding-and-improving-nextcloud-previews/?fbclid=IwAR1CpmDLpO8w925peFQ9ksnDzIS0DAg-qa0WWBpmAG_GPhEPsjRoifNZ4tI
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
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
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.
Allora lanciando come indicato da te mi da errore, mentre lanciandolo come fatto da me, mi genera le anteprime:
administrator@nextcloudfc:~$ 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)
administrator@nextcloudfc:~$ sudo -u www-data ./occ preview:generate-all -vvv
Ovviamente nel commento
https://www.mlazzarotto.it/installare-nextcloud-20-su-ubuntu#comment-6669
mi riferisco a questi due comandi:
– il tuo che mi da errore
sudo /var/www/nextcloud/occ preview:generate-all -vvv
-il mio che funziona:
sudo -u www-data ./occ preview:generate-all -vvv
ma a prescindere, in che modo posso verificare che sta funzionando correttamente?
Scusami se ti sto bombardando di domande ma ti vedo abbastanza esperto 🙂
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
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
e scusami, un’altra cosa, consigli nextcloud su VM o Container? (io utilizzo ProxMox).
Anche per la questione anteprime, funziona in entrambi i casi?
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.
Non ne faccio una quesdtione di tempo ma di risorse da rendere disponibile…regge con un docker o meglio una VM?
Non l’ho mai provato su Docker, ma non vedo perchè non dovrebbe reggere.
che poi non mi è chiaro come mai in rete ci sono guide dove vengono richiesti iù passaggi rispetto a quanto detto da te per le anteprime
https://www.allerstorfer.at/nextcloud-install-preview-generator/?fbclid=IwAR1xUOqvwzRh-_aOYWvaAhSNCrHi808JVe67k06SiRAarm5k9f1nt1Jti2Q
puoi aiutarmi a capire? Grazie
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.