Installare Nextcloud su Ubuntu Server 16.04 con Apache2 e SSL/TLS

Nexcloud e ubuntu 16.04

In questa serie di articoli vi spiegherò come installare e configurare Nextcloud, oltre ad alcuni consigli utili per metterlo in sicurezza.

Cos’è Nextcloud

Nextcloud è una Web App che permette di ospitare su un computer personale un’infrastruttura simile a quella dei servizi di cloud storage. È un’alternativa interessante anche ai tradizionali file server, sia in casa sia in ambito professionale.

Nextcloud come alternativa a Google Drive, Drobox o OneDrive

I servizi di file storage come Google Drive, Dropbox o OneDrive sono diventati molto popolari ultimamente. Essi permettono infatti di sincronizzare automaticamente i vostri files con il cloud e attraverso diversi dispositivi.

Questi servizi di file storage offrono qualche gigabyte di spazio gratuito, ma se volete aumentare lo spazio disponibile dovreste pagare qualche euro ogni mese.

Nextcloud si propone come alternativa gratuita a Google Drive, Dropbox e OneDrive.

Vantaggi

I vantaggi sono molteplici: il costo molto basso e l’assenza di costi mensili, il controllo completo, la gestione dei dati (cosa che non è sempre scontata) e lo spazio limitato solo dalla dimesione degli hard disks a vostra disposizione.

Svantaggi

Ovviamente ci sono degli svantaggi: il costo una-tantum per l’acquisto di un computer (se sprovvisti), dei dischi rigidi se non ne siete già forniti e dell’energia elettrica; la velocità di download/upload che sarà determinata dalla velocità della vostra connessione a internet e per finire i possibili downtime, causati per esempio da sbalzi di corrente, temporali o lavori elettrici che potrebbero creare un disservizio.

Le features

Vediamo ora alcune delle principali funzionalità di Nextcloud:

  • Creazione di utenti multipli e gestione dei privilegi
  • Condivisione tra utenti e tramite url pubblici
  • Accesso tramite web browser, client software e app
  • Sincronizzazione automatica dei files
  • Sicurezza, con possibilità di 2FA (autenticazione a 2 fattori)
  • Cronologia delle modifiche dei files
  • Possibilità di modifica dei files online tramite una suite office
  • Estensione delle funzionalità tramite app da aggiungere a Nextcloud
  • Possibilità di collegamento con storage esterno (Google Drive, Dropbox, Amazon, e altri)
  • Calendario e tante altre

Requisiti :

  • Ubuntu Server 16.04LTS
  • Accesso SSH
  • Dominio

Step 1: Installare Apache2

NextCloud richiede un server Web per funzionare e il server Web più popolare in uso oggi è Apache2.

Quindi, installiamo Apache2 su Ubuntu eseguendo i comandi seguenti:

sudo apt install apache2 -y

Dopo aver installato Apache2, esegui i comandi seguenti per disabilitare l’elenco delle directory.

sudo sed -i "s/Options Indexes FollowSymLinks/Options FollowSymLinks/" /etc/apache2/apache2.conf

Successivamente, esegui i comandi seguenti per interrompere, avviare e abilitare il servizio Apache2 all’avvio del server.

sudo systemctl stop apache2.service 
sudo systemctl start apache2.service 
sudo systemctl enable apache2.service 

Step 2: Installare MariaDB

NextCloud richiede anche un server database per funzionare e il database MariaDB è un ottimo punto di partenza.

Per installarlo, esegui i comandi seguenti.

sudo apt-get install mariadb-server mariadb-client -y

Dopo l’installazione, è possibile utilizzare i comandi seguenti per interrompere, avviare e abilitare il servizio MariaDB all’avvio del server.

sudo systemctl stop mysql.service 
sudo systemctl start mysql.service
sudo systemctl enable mysql.service 

Quindi, usare il comando seguente per proteggere il server MariaDB.

sudo mysql_secure_installation

Quando richiesto, rispondi alle domande seguenti seguendo la guida.

Enter current password for root (enter for none): Inserire la password
Set root password? [Y/n]: Y
New password: Inserire la Password del Database
Re-enter new password: Ripetere la password
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]:  Y
Reload privilege tables now? [Y/n]:  Y

Riavvia il server MariaDB

sudo systemctl restart mysql.service

Step 3: Installare PHP 7.1 e i relativi moduli

PHP 7.1 non è disponibile sui repository predefiniti di Ubuntu, per installarlo, dovrai scaricarlo da repository di terze parti.

Eseguire i comandi seguenti per aggiungere i repository di terze parti

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php

Quindi aggiorna

sudo apt update

Eseguire i comandi seguenti per installare PHP 7.1 e relativi moduli.

sudo apt install php7.1 libapache2-mod-php7.1 php7.1-common libapache2-mod-php7.1 php7.1-mbstring php7.1-xmlrpc php7.1-soap php7.1-apcu php7.1-smbclient php7.1-ldap php7.1-redis php7.1-gd php7.1-xml php7.1-intl php7.1-json php7.1-imagick php7.1-mysql php7.1-cli php7.1-mcrypt php7.1-ldap php7.1-zip php7.1-curl -y

Dopo l’installazione di PHP 7.1, esegui i comandi seguenti per aprire il file predefinito di PHP-FPM.

sudo apt install nano -y
sudo nano /etc/php/7.1/apache2/php.ini

Quindi apportare la modifica le seguenti righe di seguito nel file e salvare.

file_uploads = On  
allow_url_fopen = On
memory_limit = 256M 
upload_max_filesize = 64M 
max_execution_time = 360 
date.timezone = Europe/Roma

Step 4: Creare un database per Nextcloud

Ora che hai installato tutti i pacchetti richiesti, possiamo cominciare la configurazione del server.

Per prima cosa esegui i comandi qui sotto per creare il database NextCloud.

Eseguire i comandi seguenti per accedere al server del database.

Quando viene richiesta una password, digitare la password di root creata in precedenza.

sudo mysql -u root -p

Quindi creare un database chiamato nextcloud

CREATE DATABASE nextcloud;

Creare un utente del database sostituire i primi gli asterischi dopo USER con il nome dell’utente invece quelli dopo BY con la password.

ATTENZIONE: non rimuovere gli apici

CREATE USER '*****'@'localhost' IDENTIFIED BY '*****';

Quindi concedere all’utente l’accesso completo al database.

GRANT ALL ON nextcloud.* TO '*****'@'localhost' IDENTIFIED BY '*****' WITH GRANT OPTION;

Infine, salva le tue modifiche ed esci.

FLUSH PRIVILEGES;
EXIT;

Step 5: Scaricare l’ultima relase di Nextcloud

Con i seguenti comandi di procede a scaricare l’ultima versione ad oggi 04/01/2019 nel caso la versione si fosse aggiornata basta cambiarla nel punto del comando nel quale è scritta.

Esempio: nextcloud-15.0.0.zip si vuole la 14 basta cambiare con nextcloud-14.0.0.zip

cd /tmp && wget https://download.nextcloud.com/server/releases/nextcloud-15.0.0.zip 
sudo apt install unzip
unzip nextcloud-15.0.0.zip 
sudo mv nextcloud /var/www/html/nextcloud/ 

Quindi eseguire i comandi seguenti per impostare le autorizzazioni corrette per NextCloud.

sudo chown -R www-data:www-data /var/www/html/nextcloud/ 
sudo chmod -R 755 /var/www/html/nextcloud/ 

Step 6: Configure Apache2

Infine, configura il file di configurazione di Apahce2 per NextCloud.

Questo file controllerà il modo in cui gli utenti accedono ai contenuto di NextCloud.

Eseguire i comandi seguenti per creare un nuovo file di configurazione chiamato nextcloud.conf

sudo nano /etc/apache2/sites-available/nextcloud.conf

Quindi copia e incolla il contenuto sottostante nel file e salvalo.

Sostituisci la scritta example.com con il tuo nome di dominio.

<VirtualHost *:80>
     ServerAdmin admin@example.com
     DocumentRoot /var/www/html/nextcloud/
     ServerName example.com
     ServerAlias www.example.com
  
     Alias /nextcloud "/var/www/html/nextcloud/"

     <Directory /var/www/html/nextcloud/>
        Options +FollowSymlinks
        AllowOverride All
        Require all granted
          <IfModule mod_dav.c>
            Dav off
          </IfModule>
        SetEnv HOME /var/www/html/nextcloud
        SetEnv HTTP_HOME /var/www/html/nextcloud
     </Directory>

     ErrorLog ${APACHE_LOG_DIR}/error.log
     CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Salva il file ed esci.

Step 7: Abilitare il modulo Rewrite in Nextcloud

Dopo aver configurato VirtualHost, abilitarlo eseguendo i comandi seguenti

sudo a2ensite nextcloud.conf
sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod env
sudo a2enmod dir
sudo a2enmod mime

Step 8 : Restart Apache2

Per caricare tutte le impostazioni sopra, riavvia Apache2 eseguendo i comandi seguenti.

sudo systemctl restart apache2.service

STEP 9: OTTENERE E CONFIGURARE I CERTIFICATI SSL

Ora che la configurazione di NextCloud è terminata, passiamo ad oinstallare e configurare Let’s Encrypt .

Let’s Encrypt fornisce un modulo Apache2 per automatizzare questo processo.

Per ottenere il client / modulo installato su Ubuntu, eseguire i comandi seguenti

sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-apache

Successivamente esegui i comandi qui sotto per ottenere il certificato Let’s Encrypt SSL / TLS gratuito per il tuo sito.

Sostituire mail@esempio.com con la propria email e dominio.com con il quello usato nello Step 6

sudo certbot --apache -m mail@esempio.com -d dominio.com -d www.dominio.com

Dopo aver eseguito i suddetti comandi, ti verrà chiesto di accettare i termini della licenza.

Se tutto è selezionato, il client deve installare automaticamente il certificato SSL / TLS gratuito e configurare Apache2 per utilizzare i certificati.

Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: A

Choose Yes ( Y ) to share your email address

Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about EFF and
our work to encrypt the web, protect its users and defend digital rights.
-------------------------------------------------------------------------------
(Y)es/(N)o: Y

È così facile ottenere il certificato SSL / TLS gratuito per il tuo sito Web Nginx.

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Scegli l’opzione 2 per reindirizzare tutto il traffico su HTTPS. Questo è importante!

Successivamente, il client SSL deve installare il certificato e configurare il sito Web per reindirizzare tutto il traffico su HTTPS.

Congratulations! You have successfully enabled https://example.com and
https://www.example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=example.com
https://www.ssllabs.com/ssltest/analyze.html?d=www.example.com
-------------------------------------------------------------------------------

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2018-02-24. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Il blocco di codice evidenziato sarà aggiunto automaticamente al file di configurazione di Apache2.

NextCloud è pronto per essere utilizzato su HTTPS.

<VirtualHost *:80>
     ServerAdmin admin@example.com
     DocumentRoot /var/www/html/nextcloud/
     ServerName example.com
     ServerAlias www.example.com
  
     Alias /nextcloud "/var/www/html/nextcloud/"

     <Directory /var/www/html/nextcloud/>
        Options +FollowSymlinks
        AllowOverride All
        Require all granted
          <IfModule mod_dav.c>
            Dav off
          </IfModule>
        SetEnv HOME /var/www/html/nextcloud
        SetEnv HTTP_HOME /var/www/html/nextcloud
     </Directory>

     ErrorLog ${APACHE_LOG_DIR}/error.log
     CustomLog ${APACHE_LOG_DIR}/access.log combined

RewriteEngine on
RewriteCond %{SERVER_NAME} =example.com [OR]
RewriteCond %{SERVER_NAME} =www.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

</VirtualHost>

Dovrebbe essere creato anche un nuovo file di configurazione chiamato nextcloud-le-ssl.conf.

Questo è il file di configurazione del modulo SSL Apache2 e dovrebbe contenere le definizioni di certificato al suo interno.

<IfModule mod_ssl.c>
<VirtualHost *:443>
     ServerAdmin admin@example.com
     DocumentRoot /var/www/html/nextcloud/
     ServerName example.com
     ServerAlias www.example.com
  
     Alias /nextcloud "/var/www/html/nextcloud/"

     <Directory /var/www/html/nextcloud/>
        Options +FollowSymlinks
        AllowOverride All
        Require all granted
          <IfModule mod_dav.c>
            Dav off
          </IfModule>
        SetEnv HOME /var/www/html/nextcloud
        SetEnv HTTP_HOME /var/www/html/nextcloud
     </Directory>

     ErrorLog ${APACHE_LOG_DIR}/error.log
     CustomLog ${APACHE_LOG_DIR}/access.log combined

SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf

</VirtualHost>
</IfModule>

Quindi apri il browser e cerca il dominio del utilizzato in precendeza. Dovresti vedere la procedura guidata di installazione di NextCloud da completare.

https://iltuodominio.com

Dovresti quindi vedere la pagina di installazione di NextCloud.

Connettiti al database usando le informazioni che hai creato come mostrato nell’immagine sottostante

nextcloud_ubuntu_install Installare Nextcloud su Ubuntu Server 16.04  con Apache2 e SSL/TLS

Fai clic su Finish setup e il gioco è fatto.

Congratulazioni! Hai installato con successo NextCloud su Ubuntu 16.04 LTS con il supporto Let’s Encrypt.

Condiviso tramite sito VDMweb

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

cinque × uno =