NextCloud è un server di hosting e condivisione file gratuito e open source, biforcato dal progetto ownCloud. È molto simile ad altri servizi di condivisione di file come Google Drive, Dropbox e iCloud. NextCloud ti consente di archiviare file, documenti, immagini, filmati e video dalla posizione centrale. Con NextCloud puoi condividere file, contatti e qualsiasi altro supporto con i tuoi amici e clienti. NextCloud si integra con posta, calendario, contatti e altre funzionalità che aiuteranno i tuoi team a svolgere il proprio lavoro in modo più rapido e semplice. È possibile installare il client NextCloud su un computer desktop per sincronizzare i file con il server Nextcloud. I client desktop sono disponibili per la maggior parte dei sistemi operativi, inclusi Windows, macOS, FreeBSD e Linux.

In questo tutorial, spiegheremo come installare NextCloud e proteggerlo con Let's Encrypt SSL su Debian 10.

Prerequisiti

  • Un server che esegue Debian 10.
  • Un nome di dominio valido indicato con l'IP del tuo server. In questo tutorial useremo per esempio il dominio nextcloud.example.com.
  • Utente con privilegi sudo.

Installare Apache, MariaDB e PHP

NextCloud viene eseguito sul server Web, scritto in PHP e utilizza MariaDB per archiviare i propri dati. Quindi dovrai installare Apache, MariaDB, PHP e altri pacchetti richiesti sul tuo sistema. È possibile installarli tutti eseguendo il comando seguente:

sudo apt-get install apache2 libapache2-mod-php mariadb-server php-xml php-cli php-cgi php-mysql php-mbstring php-gd php-curl php-zip wget unzip -y

Una volta installati tutti i pacchetti, apri il file php.ini e modifica alcune impostazioni consigliate:

sudo nano /etc/php/7.3/apache2/php.ini

Modifica le seguenti impostazioni:

memory_limit = 512M
upload_max_filesize = 500M
post_max_size = 500M
max_execution_time = 300

Salva e chiudi il file al termine. Quindi, avviare il servizio Apache e MariaDB e abilitarli all'avvio dopo il riavvio del sistema con il comando seguente:

sudo systemctl start apache2
sudo systemctl start mariadb
sudo systemctl enable apache2
sudo systemctl enable mariadb

Una volta terminato, puoi procedere al passaggio successivo.

Configurare il database per NextCloud

Successivamente, sarà necessario creare un database e l'utente del database per NextCloud. Per fare ciò, accedi alla shell MariaDB con il seguente comando:

sudo mysql -u root -p

Fornire la password di root quando richiesto, quindi creare un database e l'utente con il seguente comando:

CREATE DATABASE nextclouddb; 
CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'password';

Successivamente, concedi tutti i privilegi a nextclouddb con il seguente comando:

GRANT ALL ON nextclouddb.* TO 'nextclouduser'@'localhost';

Quindi, svuota i privilegi ed esci dalla shell MariaDB con il seguente comando:

FLUSH PRIVILEGES;
EXIT;

Una volta terminato, puoi procedere al passaggio successivo.

Scaricare NextCloud

Per prima cosa, visita la pagina di download di NextCloud e scarica l'ultima versione di NextCloud sul tuo sistema. Al momento della stesura di questo articolo, l'ultima versione di NextCloud è la 17.0.1. Puoi scaricarlo con il seguente comando:

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

Una volta completato il download, decomprimere il file scaricato con il seguente comando:

sudo unzip nextcloud-17.0.1.zip

Quindi, sposta la directory estratta nella directory principale web di Apache:

sudo mv nextcloud /var/www/html/

Quindi, concedere le autorizzazioni appropriate alla directory nextcloud con il seguente comando:

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

Una volta terminato, puoi procedere al passaggio successivo.

Configura Apache per NextCloud

Successivamente, dovrai creare un file di configurazione dell'host virtuale Apache per servire NextCloud. Puoi crearlo con il seguente comando:

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

Aggiungi le seguenti righe:

<VirtualHost *:80>
     ServerAdmin [email protected]
     DocumentRoot /var/www/html/nextcloud/
     ServerName nextcloud.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 e chiudi il file al termine. Quindi, abilitare il file host virtuale Apache e altri moduli richiesti utilizzando i seguenti comandi:

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

Infine, riavvia il servizio Apache per applicare la nuova configurazione:

sudo systemctl restart apache2

Proteggi NextCloud con Let's Encrypt SSL gratuito

NextCloud è ora installato e configurato. Successivamente, si consiglia di proteggerlo con Let's Encrypt SSL gratuito. Per fare ciò, installare prima il client Certbot con il seguente comando:

sudo apt-get install python-certbot-apache -y

Una volta installato, puoi eseguire il comando seguente per installare Let's Encrypt Certificate per il tuo dominio nextcloud.example.com.

sudo certbot --apache -d nextcloud.example.com

Durante l'installazione, ti verrà chiesto di fornire il tuo indirizzo e-mail e di accettare il termine di servizio come mostrato di seguito:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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 our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for nextcloud.example.com
Enabled Apache rewrite module
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/apache2/sites-available/nextcloud-le-ssl.conf
Deploying Certificate to VirtualHost /etc/apache2/sites-available/nextcloud-le-ssl.conf
Enabling available site: /etc/apache2/sites-available/nextcloud-le-ssl.conf

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

Quindi, digita 2 e premi Invio per scaricare e installare un certificato SSL gratuito per il tuo dominio. Una volta che l'installazione è stata completata correttamente. Dovresti ottenere il seguente output:

Enabled Apache rewrite module
Redirecting vhost in /etc/apache2/sites-enabled/nextcloud.conf to ssl vhost in /etc/apache2/sites-available/
nextcloud-le-ssl.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://nextcloud.example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=nextcloud.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 2019-10-22. 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"
 - Your account credentials have been saved in your Certbot
 configuration directory at /etc/letsencrypt. You should make a
 secure backup of this folder now. This configuration directory will
 also contain certificates and private keys obtained by Certbot so
 making regular backups of this folder is ideal.
 - 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

Una volta terminato, puoi procedere al passaggio successivo.

Accedi all'interfaccia Web di NextCloud

NextCloud è ora configurato e protetto con Let's Encrypt SSL. Quindi, apri il tuo browser web e digita l'URL https://nextcloud.example.com . Verrai reindirizzato alla seguente pagina:

Ora, inserisci il nome utente e la password dell'amministratore, la cartella Dati, le credenziali corrette del database e fai clic sul pulsante Termina configurazione. Verrai reindirizzato alla dashboard di NextCloud.

Conclusione

Congratulazioni! hai installato e protetto con successo NextCloud con Let's Encrypt SSL gratuito su Debian 10. Ora puoi facilmente condividere file, documenti e media con altri utenti usando l'interfaccia web di NextCloud.