
Di seguito i passi per l’installazione completa di NextCloud su macchina Virtuale debian 9.xx.
Trattandosi di installazione da zero dopo il passaggio a superuser è opportuno aggiornare il sistema
su apt update && apt upgrade
Next cloud necessita di un server di tipo LAMP cioè con installati Apache – MySQL o MariaDB) e PHP.
prima, per semplificarci le operazioni, installiamo: sudo, unzip, wget ed un editor vim, mcedit, nano o altro
installiamo sudo e per comodità aggiungiamo il nostro user al gruppo sudoers, che sarà disponibile al prossimo login
apt install sudo adduser tuo-user sudo
apt install wget unzip vim -y
Installare i componenti per il server LAMP
apt install apache2 mariadb-server -y
Installare PHP
apt install libapache2-mod-php
verranno installati anche i seguenti pacchetti :
libapache2-mod-php7.0 php-common php7.0-cli php7.0-common php7.0-json
php7.0-opcache php7.0-readline
Quindi installare
apt install php-cgi php-gd php-json php-mysql php-curl php-intl apt install php-zip php-mbstring php-mcrypt php-imagick apt install php-xmlwriter php-xmlreader php-xml php-simplexml
Configurare MariaDB
Configurare mysql per l’avvio al boot debian 9 usa systemd come init quindi
systemctl start mysql systemctl enable mysql
Di default MariaDB il fork opensource di mysql non è sicuro per passare all’installazione sicura avviare:
mysql_secure_installation
mysql_secure_installation NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. You already have a root password set, so you can safely answer 'n'. Change the root password? [Y/n] n ... skipping. By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] Y ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] Y ... Success! By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] Y - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] Y ... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB!
Creare il database per nextcloud (scegliamo: nextclouddb) e lo specifico user in MariaDB (mysql ):
entrare in myslq
mysql -u root -p
MariaDB [(none)]> CREATE DATABASE nextclouddb;
Creare utente e password per NextCloud
MariaDB [(none)]> CREATE user 'nextcloud'@'localhost' IDENTIFIED BY 'nextcloud-DBpassword';
Garantire allo user nexcloud i privilegi al database creato nextclouddb
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nextclouddb.* TO 'nextcloud'@'localhost';
Per attivare i permessi con
MariaDB [(none)]> FLUSH PRIVILEGES;
uscire da mysql con
MariaDB [(none)]> \q
Configurare apache
Configurare apache per l’avvio al boot debian 9 usa systemd come init quindi
systemctl start apache2 systemctl enable apache2
Abilitare i moduli aggiuntivi
a2enmod rewrite
a2enmod headers
a2enmod env
a2enmod dir
a2enmod mime
Riavviare apache con
systemctl restart apache2
Installare nextcloud da terminale
Configurata la basedati installare l’ultima versione dell’applicativo nextcloud. La versione corrente è nextcloud ver. 13.0.2. rilasciata a fine aprile.
wget https://download.nextcloud.com/server/releases/latest.zip
unzip latest.zip
mv nextcloud/ /var/www
Per procedere all’installazione usano il terminale spostarsi nella cartella di nextcloud ( installing from command line )
cd /var/www/nextcloud/
impostare i permessi della cartella con.
chown www-data:www-data . -R
installare con
sudo -u www-data php occ maintenance:install –database “mysql” –database-name “nextclouddb” –database-user “nextcloud” –database-pass “nextcloud-DBpassword” –admin-user “ncadmin” –admin-pass “ncadmin-password”
# sudo -u www-data php occ maintenance:install --database "mysql" --database-name "nextclouddb" --database-user "nextcloud" --database-pass "xxxxxx" --admin-user "ncadmin" --admin-pass "xxxxx" Nextcloud is not installed - only a limited number of commands are available Nextcloud was successfully installed
E’ necessario ora aggiungere l’indirizzo ip e/o il nome di dominio (fwdn) tra i domini sicuri nella sezione ‘trusted domain’ nel file di configurazione:
/var/www/nextcloud/config/config.php
Editare il file di configurazione ad esempio con vi o nano è possibile aggiungere più domini che dovranno essere preceduti da un numero progressivo.
vi /var/www/nextcloud/config/config.php
... 'trusted_domains' => array ( 0 => 'localhost', 1 => '192.168.1.189', 2 => 'cloud.example.com', 3 => 'cloud.internal', ), ...
Firewall ufw
Installazione e configurazione del firewall ufw
E’ sufficiente rendere disponibile la porta 80 di seguito le istruzioni per rendere disponibili anche la porta 443 per il protocollo https e la porta 22 per il protocollo ssh.
apt install ufw # installazione firewall
ufw allow http # apertura porta 80
ufw allow https # apertura porta 443
ufw allow ssh # opzionale apertura porta 22
ufw enable # abilitazione firewall ufw
Avviare Next Cloud
Per poter avviare Nextcloud è necessario ora definire un virtual host file per apache.
In questa fase abilitiamo all’utilizzo del solo protocollo http: .
In un secondo momento verrà configurato apache affinche risponda alla porta https:
creare il file nextcloud.conf
vi /etc/apache2/sites-available/nextcloud.conf
del tipo
<VirtualHost *:80> ServerAdmin admin@example.com DocumentRoot "/var/www/nextcloud" ServerName 192.168.1.189 <Directory "/var/www/nextcloud/"> Options MultiViews FollowSymlinks AllowOverride All Order allow,deny Allow from all </Directory> TransferLog /var/log/apache2/nextcloud_access.log ErrorLog /var/log/apache2/nextcloud_error.log </VirtualHost>
quindi disabilitare il virtual host file di default che reindirizza alla classica pagina Apache2 Debian Default Page
a2dissite 000-default
e abilitare il virtual host file che farà puntare apache a Nextcloud
a2ensite nextcloud
E riavviare apache
systemctl restart apache2
Rendere sicuro l’accesso a Nextcloud con SSL
Oramai gli standard di accesso alle applicazioni web prevedono l’utilizzo del protocollo https. Quindi risulta necessario creare i certificati SSL per il server apache.
Se non si dispone di un certificato rilasciato da un authority a seconda delle esigenze si può procedere con la creazione di un certificato auto-firmato. Oppure si può utilizzare il servizio online gratuito let’s encrypt per la generazioni di un certificato associato ad un proprio dominio.
Generazione di certificato auto firmato per apache
mkdir /etc/apache2/ssl cd /etc/apache2/ssl
generare le chiavi SSL
openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.key
abilitare il modulo ssl di apache e la configurazione di default per il protocollo https
a2enmod ssl
a2ensite default-ssl
creare il file nextcloud-s.conf per configurare l’accesso https
vi /etc/apache2/sites-available/nextcloud.conf
del tipo
<IfModule mod_ssl.c> <VirtualHost *:80> # ServerName cloud.example.com # Redirect permanent / https://cloud.example.com/ </VirtualHost> <VirtualHost *:443> DocumentRoot "/var/www/nextcloud" # ServerName cloud.example.com 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/apache.pem SSLCertificateKeyFile /etc/apache2/ssl/apache.key <IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload" </IfModule> </VirtualHost> </IfModule>
abilitare il virtual host https nextcloud-s con
a2ensite nextcloud-s
E riavviare apache
systemctl restart apache2
In questo momento nexcloud risponde sia sulla porta 80 che sulla porta 443 dell’indirizzo locale 192.168.1.189.
Per questioni di sicurezza nexcloud invita ad utilizzare il protocollo https
- You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our security tips.
pertanto la porta 80 andrebbe reindirizzata verso la porta 443 modificando il file di configurazione nexcloud.conf e aggiungendo la riga in verde con il Redirect permanent / verso https
<VirtualHost *:80>
ServerAdmin admin@example.com
Redirect permanent / https://192.168.1.189/
...
Let’s Encrypt Certificato SSL/TLS gratuito
Il certificato utilizzato essendo auto firmato farà si che i browser qualifichino la connessione come non sicura per evitare il warning si può generare il certificato facendo ricorso a Let’s Encrypt . Let’s Encrypt consente di generare certificati per domini pubblico gratuitamente. Per utilizzare questo serivizio online in Debian installare letsencrypt
apt install letsencrypt
ed apt install python-certbot-apache
generare il certificato con
certbot
perchè letsencrypt possa generare il certificato il dominio indicato dovrà essere esposto sulla rete internet. Per completare il rilascio letsencrypt chiederà infatti di pubblicare in una cartella specifica del dominio un piccolo file con inserita una stringa che verrà verificata dal servizio stesso.
Generato il certificato i file di configurazione di apache andranno modificati sostituendo l’indirizzo ip presente nel parametro ServerName con il nome del dominio utilizzato per generare il certificato
Schermata di login di Nextcloud 13.0.2
Rendere sicura e personalizzare installazione di nextcloud
Prima di procedere alla personalizzazione dell’installazione si può generare una copia di backup di nextcloud. Così da poter ripristinare l’installazione da questo punto in caso di errori. Si può generare il backup con tar procedere ad una semplice copia
tar zcvf nextcloudxx.tar.gz /var/www/nexcloud/
oppure
cp -a /var/www/nextcloud /var/www/nexcloud01
Spostare la cartella data di nextcloud
Per Nextcloud può essere opportuno utilizzare una data directory diversa da quella default, localizzata nello spazio web.
/var/www/nextcloud/data
ad esempio i dati potrebbero essere spostati /var/nc-data ( o /opt/nc-data )
/var/nc-data
Muovere la cartella data con
mv /var/www/nextcloud/data /var/nc-data
ora è necessario precisare il nuovo percorso nel file di configurazione
modificare il file di configurazione con
vi /var/www/nextcloud/config/config.php
cambiare il valore di datadirectory
'datadirectory' => '/var/www/nextcloud/data',
in
'datadirectory' => '/var/nc-data',
Rendere sicura l’installazione di Nextcloud
Per rendere sicura l’installazione di nextcloud può essere conveniente utilizzare lo script proposto da SyS0p3r in https://help.nextcloud.com/t/complete-nc-installation-on-debian-9-stretch-and-manual-update/21881
salvare lo script di seguito riportato in /var/www/nc_perm.sh facendo attenzione che le variabili evidenziate siano correttamente impostate
vi /var/www/nc_perm.sh
#!/bin/bash ncpath='/var/www/nextcloud' ncdata='/var/nc-data' htuser='www-data' htgroup='www-data' rootuser='root' printf "Creating possible missing Directories\n" mkdir -p $ncpath/data mkdir -p $ncpath/updater printf "chmod Files and Directories\n" find ${ncpath} -type f -print0 | xargs -0 chmod 0640 find ${ncpath} -type d -print0 | xargs -0 chmod 0750 find ${ncdata} -type f -print0 | xargs -0 chmod 0640 find ${ncdata} -type d -print0 | xargs -0 chmod 0750 printf "chown Directories\n" chown -R ${rootuser}:${htgroup} ${ncpath} chown -R ${htuser}:${htgroup} ${ncpath}/apps/ chown -R ${htuser}:${htgroup} ${ncpath}/config/ chown -R ${htuser}:${htgroup} ${ncdata}/ chown -R ${htuser}:${htgroup} ${ncpath}/themes/ chown -R ${htuser}:${htgroup} ${ncpath}/updater/ chmod +x ${ncpath}/occ printf "chmod/chown .htaccess\n" if [ -f ${ncpath}/.htaccess ] then chmod 0644 ${ncpath}/.htaccess chown ${rootuser}:${htgroup} ${ncpath}/.htaccess fi if [ -f ${ncdata}/.htaccess ] then chmod 0644 ${ncdata}/.htaccess chown ${rootuser}:${htgroup} ${ncdata}/.htaccess fi ## END SCRIPT
Cambiare i permessi del file script con
chmod 750 /var/www/nc_perm.sh
eseguire con
./nc_perm.sh
Primo accesso in Nextcloud 13
Nextcloud 13 dashboard
Configurare PHP OPcache
Al primo avvio Nexcloud nella sezione basic setting evidenzia che PHPOcache non è configurato in modo appropriato.
* The PHP OPcache is not properly configured. For better performance it is recommended to use the following settings in the php.ini: opcache.enable=1 opcache.enable_cli=1 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.memory_consumption=128 opcache.save_comments=1 opcache.revalidate_freq=1
Aprire il file di configurazione php.ini per apache modificare le voci specifiche della sezione opcache oppure incollare il blocco di voci al termine della sezione stessa.
opcache.enable=1 opcache.enable_cli=1 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.memory_consumption=128 opcache.save_comments=1 opcache.revalidate_freq=1
riavviare apache2
systemctl restart apache2
In setting si evidenzia che le performance migliorano con la configurazione di una cache come memcache.
Nextcloud è un’ applicazione matura con molte funzionalità, Molte le apps/plugin disponibili.
Alcune apps della sezione multimedia
User Manual disponibile nella sezione help
Risorse:
- Nextcloud
- Installare nextcloud 12 in debian 9
- Mysql Comandi Utili
- Installing from command line
- https://help.nextcloud.com/t/complete-nc-installation-on-debian-9-stretch-and-manual-update/21881
- Installazione completa di nextcloud in debian 9.xx – versione 13.xx