Installazione Nextcloud
Nextcloud è una valida alternativa ai più famosi servizi come GDrive, OneDrive, etc. La principale differenze è la possibilità di installare Nextclod on-premis, quindi completamente sui nostri server.
L’installazione che andremo a dimostrare sarà effettuata su un Server Ubuntu 20.04.
In questa installazione, avendo come obbiettivo la possibilità di bilanciare il carico sulla parte applicazione non installeremo il DB all’interno del server ma useremo un server con MySql già installato in precedenza.
Iniziamo da un Server “fresh” ma con tutta la parte di aggiornamenti già eseguita, per questo potete riferirvi al mio articolo Aggiornare Ubuntu.
Come prima parte andiamo ad installare tutti i requisiti al funzionamento di Nextcloud
sudo apt install apache2 libapache2-mod-php7.4
sudo apt install php7.4-gd php7.4-mysql php7.4-curl php7.4-mbstring php7.4-intl
sudo apt install php7.4-gmp php7.4-bcmath php-imagick php7.4-xml php7.4-zip
sudo apt install php-apcu
sudo apt-get install libmagickcore-6.q16-6-extra
pongo l’attenzione sul pacchetto “php-apcu” che ci servirà per attivare la gestione della “cache” fortemente consigliata per ottenere delle ottime performance.
Procediamo con il download e preparazione del pacchetto TAR di Nextcloud, nel nostro caso nella versione 21.
cd /tmp
wget https://download.nextcloud.com/server/releases/nextcloud-21.0.0.tar.bz2
sudo tar -xjvf nextcloud-21.0.0.tar.bz2
sudo cp -r nextcloud /var/www
con i passaggio appena effettuati troveremo la carella nextcloud direttamente in /var/www, la nostra installazione infatti avrà luogo nella path /var/www/nextcloud
A questo punto sono necessari alcuni passaggio prima di poter avviare il wizard grafico per la prima configurazione.
Attiviamo i moduli di Apche necessari a Nextcloud con i comandi
sudo a2enmod ssl
sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod env
sudo a2enmod dir
sudo a2enmod mime
procediamo con la creazione nella path /etc/apache2/sites-available/ del file di configurazione per il redirect in https, parte opzionale ma secondo me assolutamente necessaria
cd /etc/apache2/sites-available/
sudo nano nextcloud.conf
Il contenuto del file dovrà essere come segue
<VirtualHost *:80>
ServerAdmin admin@example.com
Redirect permanent / https://url/
</VirtualHost>
prima del prossimo passaggio sarà necessario copiare all’interno del nostro server il nostro certificato SSL con la sua chiave privata, nel mio caso userò la path /etc/apache2/ssl/
Ora potremmo procedere alla creazione del file nextcloud-ssl.conf per la gestione del sito https
<IfModule mod_ssl.c>
<VirtualHost *:443>
DocumentRoot "/var/www/nextcloud"
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/nextcloud/>
Options +FollowSymlinks
AllowOverride All
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
Satisfy Any
</Directory>
#SSLEngine on
SSLCertificateFile /etc/apache2/ssl/cert.crt
SSLCertificateKeyFile /etc/apache2/ssl/cert.key
Include /etc/apache2/ssl/options-ssl-apache.conf <-- attenzione
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
</IfModule>
</VirtualHost>
</IfModule>
prima di eseguire Apache dovremmo ancora creare il file options-ssl-apache.conf che definirà la parte di configurazione SSL
sudo nano /etc/apache2/ssl/options-ssl-apache.conf
questo il contenuto
SSLEngine on
# Configuration
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES2>
SSLHonorCipherOrder on
SSLCompression off
SSLOptions +StrictRequire
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" vhost_combined
LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost_common
come ultimo passaggio andiamo ad attivare il file nextcloud-ssl.conf, disattiviamo i siti di default, configuriamo correttamente le permission e avviamo Apache
sudo a2ensite default-ssl.conf
sudo a2dissite 000-default
sudo a2dissite default-ssl
sudo chown -R www-data:www-data /var/www/nextcloud/
sudo systemctl start apache2
A questo punto possiamo eseguire il wizard web al link https://url, una volta creato il file config.php da parte del wizard vi suggerisco un confronto con il mio per attivare delle funzionalità aggiuntive
'instanceid' => 'vostra_istanza_generata_dal_wizard',
'passwordsalt' => 'generata_dal_wizard',
'secret' => 'generata_dal_wizardA',
'trusted_domains' =>
array (
0 => 'url.local',
1 => 'url',
),
'datadirectory' => 'mount_dei_vostri_dati',
'dbtype' => 'mysql',
'version' => '21.0.0.18',
'overwrite.cli.url' => 'https://url/',
'htaccess.RewriteBase' => '/',
'dbname' => 'nextcloud',
'dbhost' => 'server_mysql',
'dbport' => '',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,
'dbuser' => 'user_mysql',
'dbpassword' => 'password_user_mysql',
'installed' => true,
'mail_from_address' => 'nc_noreplay',
'mail_smtpmode' => 'smtp',
'mail_sendmailmode' => 'smtp',
'mail_domain' => 'domaini_smtp',
'mail_smtphost' => 'indirizzo_vs_server_smtp',
'default_phone_region' => 'IT',
'default_locale' => 'it_IT',
'default_language' => 'it',
'memcache.local' => '\OC\Memcache\APCu',
'enable_previews' => true,
'maintenance' => false
ogni volta che modifichiamo il file config.php dobbiamo lanciare questo comando per ri-generare il file .htaccess
sudo -u www-data php /var/www/nextcloud/occ maintenance:update:htaccess
sudo systemctl restart apache2 <-- riavviare sempre Apache
la parte più importante che possiamo notare nel mio file config.php e che non viene inserita dal wizard è -> ‘memcache.local’ => ‘\OC\Memcache\APCu’ questo comando attiva il motore di cache.
anche questo -> ‘overwrite.cli.url’ => ‘https://url/’ e ‘htaccess.RewriteBase’ => ‘/’ servere per eliminare “index.php” da ogni vostra url, risulta molto più leggibile e comodo da ricordare anche durante la condivisione dei link.
Per ultima parte nella sezione “trusted_domains” vanno indicati tutti gli url a cui vogliamo che Nextcloud possa rispondere, il mio suggerimento è sempre indicare almeno, quello locale e quello pubblico.
Il manuale ufficiale lo trovate al link Nextcloud Admin Manual
Questo articolo presuppone una buona conoscenza di Linux per le parti base e della distribuzione Ubuntu 20.04, in alcuni passaggi vengono volutamente scontate certe conoscenze per porre maggior attenzione all’oggetto principale Nextcloud.