NextCloud è una piattaforma open source per il cloud storage e la condivisione di file, che permette di accedere ai propri dati da qualsiasi dispositivo e da qualsiasi luogo. È molto simile ad altre piattaforme cloud come Dropbox o Google Drive, ma con l’importante differenza che NextCloud è completamente open source e quindi personalizzabile e configurabile.
NextCloud è molto utile per le organizzazioni che vogliono avere un controllo totale sui propri dati e la propria privacy. Può essere utilizzato sia da piccole imprese che da grandi aziende, ma anche da singoli utenti che vogliono gestire i propri dati in modo sicuro e privato. Inoltre, NextCloud offre una vasta gamma di funzionalità, tra cui la condivisione di file, la sincronizzazione, la collaborazione su documenti, l’integrazione con app di terze parti e molto altro.
Inoltre, Nextcloud ha funzionalità di sicurezza avanzate, come la crittografia end-to-end, la protezione dei dati con password e la gestione dei permessi per garantire che solo le persone autorizzate possano accedere ai file.
NextCloud è anche molto flessibile e può essere installato su un server di una infrastruttura locale (On-Premises) o su un’infrastruttura cloud, su una vasta gamma di piattaforme, inclusi server Linux, Windows, macOS e anche dispositivi a basso costo come Raspberry Pi. La sua flessibilità e la sua capacità di personalizzazione lo rendono una scelta popolare tra le persone che desiderano una soluzione di gestione dei dati su misura per le proprie esigenze specifiche.
Installazione via Appliance VM Ubuntu
Per lo scaricamento e la configurazione dell’appliance VM questi sono i passi da eseguire:
- Eseguire il download del file Nextcloud-VM.ova a questo link: Download
- Lanciare VMWare Player / Workstation oppure VirtualBOX
- Selezionare File > Open e selezionare il file: Official-Nextcloud-VM.ova
- Cambiate il nome della VM in NextCloud Ubuntu e specificate il path di destinazione della VM
- Cliccate sul bottone di import per completare l’importazione della VM
- Quando il processo di import è completato, selezionare NextCloud VM e cliccate su Avvio della VM
- Al login inserite Username: ncadmin Password: nextcloud
- Successivamente allo startup della VM e all’avvenuto login si avvierà in automatico un procedura guidata per la configurazione del corretto layout della tastiera, cambio utente e password e altre informazioni.
Ora esamineremo alcuni importanti passaggi successivi all’installazione.
Domini attendibili
Tutti gli URL utilizzati per accedere al tuo server Nextcloud devono essere inseriti nella whitelist nel tuo config.php file, sotto la voce trusted_domains impostazione. Gli utenti possono accedere a Nextcloud solo quando indirizzano i propri browser a un URL elencato nell’impostazione trusted_domains. Questo non è un elenco di domini lato client o indirizzi IP consentiti. Puoi utilizzare indirizzi IP e nomi di dominio. Una configurazione tipica è simile a questa:
'trusted_domains' => array ( 0 => 'localhost', 1 => 'server1.example.com', 2 => '192.168.1.50', 3 => '[fe80::1:50]', ),
Nota:
L’indirizzo di loopback, 127.0.0.1, viene automaticamente inserito nella whitelist, quindi finché hai accesso al server fisico puoi sempre accedere. Intestazione host inoltrato. Quando un utente tenta un URL non inserito nella whitelist, viene visualizzato il seguente errore:
Aggiornamento di NextCloud da riga di comando
Il programma di aggiornamento basato sulla riga di comando funziona esattamente nello stesso modo in cui funziona il programma di aggiornamento basato sul Web. I passaggi e i controlli sono gli stessi.
Warning…
APCu è disabilitato per impostazione predefinita sulla CLI, il che potrebbe causare problemi con il programma di aggiornamento basato sulla riga di comando di nextcloud. Assicurati di impostare apc.enable_cli su 1 nel tuo php.ini file di configurazione o di aggiungerlo alla chiamata di aggiornamento basata sulla riga di comando (come ). –define apc.enable_cli=1
$ sudo -u www-data php -- define apc.enable_cli=1 /var/www/nextcloud/updater/updater.phar
I passaggi sono fondamentalmente gli stessi dell’aggiornamento basato sul Web:
- Dovresti vedere una notifica nella parte superiore di qualsiasi pagina Nextcloud quando è disponibile un nuovo aggiornamento. Vai alla pagina delle impostazioni di amministrazione e scorri fino alla sezione “Versione”. Questa sezione ha un pulsante per aprire il programma di aggiornamento. Questa sezione e la notifica di aggiornamento sono disponibili solo se l’app di notifica dell’aggiornamento è abilitata nella gestione delle app.
- Invece di fare clic su quel pulsante, ora puoi richiamare l’aggiornamento basato sulla riga di comando accedendo alla directory updater/ nella directory Nextcloud ed eseguendo updater.phar come utente del server web. (cioè )
$ sudo -u www-data php /var/www/nextcloud/updater/updater.phar
- Verificare le informazioni visualizzate e immettere “Y” per avviare l’aggiornamento.
- Nel caso in cui si verifichi un errore o il controllo fallisca, il programma di aggiornamento interrompe l’elaborazione e fornisce un feedback. Ora puoi provare a risolvere il problema ed eseguire nuovamente il comando di aggiornamento. Ciò continuerà l’aggiornamento ed eseguirà nuovamente il passaggio non riuscito. Non rieseguirà i precedenti passaggi riusciti.
- Una volta eseguiti tutti i passaggi, il programma di aggiornamento ti chiederà un’ultima domanda: “Il comando “occ upgrade” dovrebbe essere eseguito?”. Ciò consente di eseguire direttamente la procedura di aggiornamento basata sulla riga di comando ( ). Se selezioni “No”, terminerà con “./occ upgrade” per terminare l’aggiornamento. .occ upgrade
- Al termine, ti viene chiesto se la modalità di manutenzione deve essere mantenuta attiva. occ upgrade
Modalità batch per l’aggiornamento basato sulla riga di comando
È possibile eseguire il programma di aggiornamento basato sulla riga di comando in modalità non interattiva. Il programma di aggiornamento quindi non pone alcuna domanda interattiva. Si presume che se è disponibile un aggiornamento, dovrebbe essere installato e anche il comando viene eseguito. Dopo aver terminato la modalità di manutenzione verrà disattivata tranne che si è verificato un errore durante la sostituzione del codice.occ upgrade occ upgrade
Per eseguire ciò, eseguire il comando con l’opzione –no-interaction .
$ sudo -u www-data php /var/www/nextcloud/updater/updater.phar --no-interaction
Installazione Completa su UBUNTU 22.04
In questo post del blog, spiegheremo passo dopo passo come installare l’ultima versione di NextCloud su Ubuntu 22.04.
NextCloud è un servizio di cloud storage open source utilizzato per archiviare, condividere e sincronizzare i dati su più dispositivi. Il software di archiviazione NextCloud è scritto in PHP e Javascript, il che lo rende molto facile da installare. In questo tutorial, installeremo e configureremo NextCloud con lo stack LAMP.
L’installazione di NextCloud con lo stack LAMP può richiedere fino a 15 minuti. Facciamo funzionare le cose!
Prerequisiti
- Un server con Ubuntu 22.04 come sistema operativo
- Privilegi utente: utente root o non root con privilegi sudo
Passo 1. Aggiorniamo il il sistema
Prima di installare il servizio di archiviazione NextCloud aggiorneremo i pacchetti di sistema alle ultime versioni disponibili.
sudo apt update -y && sudo apt upgrade -y
Passo 2. Installare Apache Web Server
Installare il server Web Apache con il seguente comando:
sudo apt install apache2
Una volta installato, avviare e abilitare il servizio.
sudo systemctl enable apache2 && sudo systemctl start apache2
Controlla se il servizio è attivo e funzionante:
sudo systemctl status apache2
Dovrebbe essere visualizzato il seguente output:
root@host:~# sudo systemctl status apache2 ? apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2023-03-11 22:03:46 UTC; 4 days ago Docs: https://httpd.apache.org/docs/2.4/ Main PID: 84157 (apache2) Tasks: 8 (limit: 4566) Memory: 350.2M CPU: 21ms CGroup: /system.slice/apache2.service | 84157 /usr/sbin/apache2 -k start | 150719 /usr/sbin/apache2 -k start | 150720 /usr/sbin/apache2 -k start | 150721 /usr/sbin/apache2 -k start | 150722 /usr/sbin/apache2 -k start | 150723 /usr/sbin/apache2 -k start | 150724 /usr/sbin/apache2 -k start | 150943 /usr/sbin/apache2 -k start May 18 00:00:04 host.test.vps systemd[1]: Reloading The Apache HTTP Server...
Passo 3. Installare PHP8.1 con dipendenze
Per installare PHP8.1 insieme alle estensioni eseguire il seguente comando:
sudo apt-get install php8.1 php8.1-cli php8.1-common php8.1-imap php8.1-redis php8.1-snmp php8.1-xml php8.1-zip php8.1-mbstring php8.1-curl php8.1-gd php8.1-mysql php8.1-intl
Passo 4. Installare il server di database MariaDB
Per installare il server di database MariaDB, eseguire il comando seguente.
$ sudo apt install mariadb-server
Avviare e abilitare mariadb.service con i seguenti comandi:
$ sudo systemctl start mariadb && sudo systemctl enable mariadb
Controlla lo stato del mariadb.service
$ sudo systemctl status mariadb
Dovrebbe essere visualizzato il seguente output:
$ sudo systemctl status mariadb | mariadb.service - MariaDB 10.6.7 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2022-05-16 19:40:12 UTC; 5 days ago Docs: man:mariadbd(8) https://mariadb.com/kb/en/library/systemd/ Main PID: 42716 (mariadbd) Status: "Taking your SQL requests now..." Tasks: 7 (limit: 4566) Memory: 56.9M CPU: 2min 51.567s CGroup: /system.slice/mariadb.service ??42716 /usr/sbin/mariadbd May 16 19:40:12 host.test.vps mariadbd[42716]: Version: '10.6.7-MariaDB-2ubuntu1' socket: '/run/mysqld/mysqld.sock' port: 3306 Ubuntu 22.04 May 16 19:40:12 host.test.vps systemd[1]: Started MariaDB 10.6.7 database server.
Per verificare la versione del database MariaDB installata è possibile eseguire il seguente comando:
mysql -V
Dovrebbe essere visualizzato il seguente output:
root@vps:~# mysql -V mysql Ver 15.1 Distrib 10.6.7-MariaDB, for debian-linux-gnu (x86_64) using EditLine wrapper
Passo 5. Crea database e utente del database
I database supportati da NextCloud sono MySQL, MariaDB, Oracle 11g e PostgreSQL si consiglia MySQL/MariaDB.
Dobbiamo creare un database e un utente del database prima di installare NextCloud.
$ sudo mysql -u root
CREATE DATABASE nextcloud; GRANT ALL PRIVILEGES ON nextcloud.* TO 'ncadmin'@'localhost' IDENTIFIED BY 'YourStrongPasswordHere'; FLUSH PRIVILEGES; exit;
Passo 5.1. Gia che ci siamo installiamo anche PhpMyAdmin
Spendo due parorle su PhpMyAdmin,
PHPMyAdmin è un’applicazione web gratuita e open-source che consente agli utenti di gestire facilmente i propri database MySQL o MariaDB attraverso un’interfaccia utente basata sul web.
PHPMyAdmin è scritto principalmente in PHP e utilizza JavaScript per alcune funzionalità lato client. Tra le sue caratteristiche principali ci sono:
- Accesso e gestione di database MySQL o MariaDB tramite il browser web
- Creazione e gestione di tabelle, campi, indici e relazioni
- Importazione ed esportazione di dati in diversi formati (ad esempio CSV, SQL, XML)
- Creazione e modifica di query SQL
- Gestione degli utenti e dei privilegi di accesso al database
- Monitoraggio delle prestazioni del database
PHPMyAdmin è ampiamente utilizzato da sviluppatori web, amministratori di database e utenti finali, ed è compatibile con la maggior parte dei browser web e dei sistemi operativi. Tuttavia, come qualsiasi altra applicazione web, richiede un’adeguata protezione e configurazione per garantire la sicurezza dei dati contenuti nei database.
Con il seguente comando installiamo PhpMyAdmin:
$ sudo apt install phpmyadmin php-mbstring php-gettext
Nelle schemate che ti appariranno durante l’installazione conferma Apache2 come Web Server utilizzato selezionando il tab relativo con lo spazio, e alla schermata successiva conferma la configurazione del database con configdb-common selezionando Yes e successivamente Enter come ultima opzione ti verrà chiesto di impostare la password di default per l’utente phpmyadmin. Potrai entrare anche utilizzando le credenziali dell’utenza ncadmin definita con il comando GRANT ALL PRIVILEGES……. ‘YourStrongPasswordHere‘.
Una volta completata l’installazione, un file di configurazione di phpMyAdmin verrà aggiunto nel seguente percorso:
/etc/apache2/conf-enabled/phpmyadmin.conf
L’unica cosa che dovrai fare sarà attivare l’estensione PHP mbstring. Per farlo digita:
$ sudo phpenmod mbstring
Per poter applicare tutte le modifiche riavvia Apache digitando:
$ sudo systemctl restart apache2
Passo 6. Installa Nextcloud
L’ultima versione stabile di NextCloud al momento è NextCloud 26.0.0 vai nella radice del documento Apache e scarica l’ultima versione:
$ cd /var/www/html $ sudo wget https://download.nextcloud.com/server/releases/nextcloud-26.0.0.zip
Una volta scaricata l’installazione, estrarla con il seguente comando.
$ sudo unzip nextcloud-26.0.0.zip
Dopo l’estrazione, dobbiamo impostare le autorizzazioni giuste:
$ sudo chown -R www-data:www-data /var/www/html/nextcloud
Passo 7. Crea file Apache Virtual Host e configura SSL
Per poter accedere a NextCloud tramite nome di dominio abbiamo bisogno di creare il file Apache Virtual Host ma prima dobbiamo configurare le di misure di sicurezza aggiuntive per Nextcloud quali ad esempio la navigazione SSL.
Innanzitutto, creiamo il file di configurazione con il seguente comando:
$ sudo touch /etc/apache2/sites-available/nextcloud.conf
Ora passiamo alla creazione dei certificati SSL:
Creazione Certificato e Chiave Privata
La generazione della coppia chiave privata – certificato avviene con il comando:
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/guardiadiporta.key -out /etc/ssl/certs/guardiadiporta.crt
Gli argomenti utilizzati nella riga di comando controllano il comportamento dell’utility openssl:
req indica il comando opnessl da eseguire. In questo caso, vogliamo effettuare una richiesta di emissione di certificato X.509 (X.509 CSR).
-x509 specifica che la richiesta CSR verrà eseguita direttamente, invece di essere trasmessa successivamente ad una CA. Questo comando permette quindi la generazione di un certificato autofirmato.
-nodes disabilita la richiesta di una password per l’accesso alla chiave privata. Poiché la chiave privata sarà utilizzata da Apache la presenza di una password richiederebbe l’inserimento della stessa da parte dell’utente amministratore ad ogni avvio del server
-days 365 specifica la durata temporale del certificato (1 anno in questo caso). Alla scadenza il certificato andrà rigenerato.
-newkey rsa:2048 richiede la generazione di una chiave privata e di un certificato contemporaneamente. Inoltre, specifica l’algoritmo (RSA) e la lunghezza della chiave (2048 bit).
-keyout specifica il percorso in cui salvare la chiave privata.
-out specifica il percorso in cui salvare il certificato.
Passo 8. Configurare i parametri SSL di Apache
Procediamo impostando le direttive per la connessione protetta che Apache andrà a creare. Per farlo creiamo il file ssl-params.conf all’interno della directory conf-available di Apache:
$ sudo nano /etc/apache2/conf-available/ssl-params.conf
Incolla la seguente configurazione base all’interno del file appena creato:
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
# Requires Apache >= 2.4
SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
# Requires Apache >= 2.4.11
SSLSessionTickets Off
Quindi salva e chiudi il file.
Torniamo ora alla configurazione del Virtual Host Aprire il file /etc/apache2/sites-available/nextcloud.conf e incollare le seguenti righe di codice avendo l’accortezza di modificare in accordo alle vostre esigenze i path di DocumentRoot, Directory, ErrorLog, CustomLog:
<VirtualHost *:80> ServerName yourdomain.com DocumentRoot /var/www/html/nextcloud <Directory /var/www/html/nextcloud/> Require all granted Options FollowSymlinks MultiViews AllowOverride All <IfModule mod_dav.c> Dav off </IfModule> </Directory> ErrorLog /var/log/apache2/yourdomain.com.error_log CustomLog /var/log/apache2/yourdomain.com.access_log common </VirtualHost> <IfModule mod_ssl.c> <VirtualHost _default_:443> ServerAdmin webmaster@gcportal.com ServerName nextcloud DocumentRoot /var/www/html/nextcloud ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine on SSLCertificateFile /etc/ssl/certs/certificato.crt SSLCertificateKeyFile /etc/ssl/private/privata.key <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory /usr/lib/cgi-bin> SSLOptions +StdEnvVars </Directory> </VirtualHost> </IfModule>
Passo 9. Configurare Apache
A questo punto sei pronto ad apportare le modifiche alla configurazione di Apache.
Abilita i moduli mod_ssl e mod_headers:
$ sudo a2enmod ssl
$ sudo a2enmod headers
Abilita la lettura della configurazione SSL che hai creato in precedenza:
$ sudo a2enconf ssl-params
Abilita il Virtual Host SSL di default:
$ sudo a2ensite nextcloud.conf
$ sudo a2enmod rewrite
Verifica di non aver commesso errori di sintassi nei file di configurazione di Apache:
$ sudo apache2ctl configtest oppure $sudo apachectl -t
Se appare a schermo il messaggio “Syntax OK” puoi procedere con il riavvio di Apache:
$ sudo systemctl restart apache2
Passo 10. Configuriamo il Firewall
Se sul tuo sistema è presente un firewall allora dovrai impostarlo per abilitare il traffico HTTP e il traffico HTTPS verso la tua macchina.
Nel caso in cui utilizzassi il firewall UFW, avrai a disposizione dei profili preinstallati per Apache. Vediamo quindi come abilitarli.
Per verificare i profili disponibili installati nel firewall UFW esegui questo comando:
$ sudo ufw app list Verrà mostrata a schermo una lista simile a questa: Available applications: Apache Apache Full Apache Secure OpenSSH Per consentire il traffico HTTP (Porta 80) e HTTPS (Porta 443), dovrai utilizzare il profilo "Apache Full". Puoi verificare le informazioni del profilo in questo modo: $ sudo ufw app info "Apache Full" Apparirà la descrizione del profilo a schermo: Profile: Apache Full Title: Web Server (HTTP,HTTPS) Description: Apache v2 is the next generation of the omnipresent Apache web server. Ports: 80,443/tcp Dopo aver verificato il profilo, potrai abilitarlo: $ sudo ufw allow in "Apache Full"
Passo 11. Verificare la connessione protetta
Apri il tuo browser collegandoti al dominio o all’indirizzo IP del Virtual Host che hai configurato, facendo attenzione a utilizzare il protocollo https://
https://nextcloud
Se vedete la pagina di configurazione allora potete passare allo step successivo.
Passo 12. Configurazione NextCloud
Quando i prerequisiti Nextcloud sono soddisfatti e tutti i file Nextcloud sono installati, l’ultimo passaggio per completare l’installazione è l’esecuzione dell’Installazione guidata. Sono solo tre passaggi:
- Punta il tuo browser Web su https://localhost/nextcloud
- Inserisci il nome utente e la password dell’amministratore desiderati.
- Fare clic su Termina configurazione .
Hai finito e puoi iniziare a utilizzare il tuo nuovo server Nextcloud.
Naturalmente, c’è molto di più che puoi fare per configurare il tuo server Nextcloud per le migliori prestazioni e sicurezza. Nelle sezioni seguenti tratteremo importanti fasi di installazione e post-installazione.
- Posizione della directory dei dati
- Scelta del database
- Domini fidati
Posizione della directory dei dati
Fare clic su Archiviazione e database per esporre ulteriori opzioni di configurazione dell’installazione per la directory dei dati e il database di Nextcloud.
Dovresti localizzare la tua directory dei dati Nextcloud al di fuori della tua radice Web se stai usando un server HTTP diverso da Apache, oppure potresti voler archiviare i tuoi dati Nextcloud in una posizione diversa per altri motivi (ad esempio su un server di archiviazione). È meglio configurare la posizione della directory dei dati al momento dell’installazione, poiché è difficile spostarla dopo l’installazione. Puoi metterlo ovunque; in questo esempio si trova in /opt/nextcloud/. Questa directory deve già esistere e deve essere di proprietà del tuo utente HTTP.