Installare una istanza Nextcloud su server Debian: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 1: Riga 1:
{{Stub}}
{{Stub}}
{{Warningbox|Al momento è solo un copia-incolla dal blog e mancano le immagini}}
{{Warningbox|Al momento è solo un copia-incolla dal blog}}
{{Versioni compatibili|Bullseye}}
{{Versioni compatibili|Bullseye}}
== Premesse ==
In questi ultimi tempi la '''produzione e il consumo di dati''' sta aumentando sempre più, come foto scattate con il nostro telefono, documenti di testo e progetti personali.
In questi ultimi tempi la '''produzione e il consumo di dati''' sta aumentando sempre più, come foto scattate con il nostro telefono, documenti di testo e progetti personali.
[[File:Vista file di nextcloud.png|miniatura|Vista file di Nextcloud|alt=|sinistra|500x500px]]
[[File:Vista file di nextcloud.png|miniatura|Vista file di Nextcloud|alt=|sinistra|500x500px]]
Riga 9: Riga 11:


Inoltre, i dispositivi mobili (sia laptop che smartphone) sono soggetti a rotture e furti in misura maggiore rispetto a dispositivi fissi. Con la loro perdita se ne vanno anche le nostre preziose '''fotografie''', ricordi o il nostro duro lavoro, magari di settimane, perché non abbiamo avuto tempo di effettuare il '''backup'''.
Inoltre, i dispositivi mobili (sia laptop che smartphone) sono soggetti a rotture e furti in misura maggiore rispetto a dispositivi fissi. Con la loro perdita se ne vanno anche le nostre preziose '''fotografie''', ricordi o il nostro duro lavoro, magari di settimane, perché non abbiamo avuto tempo di effettuare il '''backup'''.
Non sarebbe utile avere la possibilità di fare un '''backup in tempo reale''' di tutti i nostri documenti, di poter archiviare ogni modifica effettuata e di poter ripristinare un documento ad una versione precedente a seguito di un salvataggio errato?
Non sarebbe utile avere la possibilità di fare un '''backup in tempo reale''' di tutti i nostri documenti, di poter archiviare ogni modifica effettuata e di poter ripristinare un documento ad una versione precedente a seguito di un salvataggio errato?
[[File:Nextcloud-collabora-desktop.png|alt=Interfaccia stile LibreOffice con Collabora online, editor da browser.|miniatura|Interfaccia stile LibreOffice con Collabora online, editor da browser.|500x500px]]
[[File:Nextcloud-collabora-desktop.png|alt=Interfaccia stile LibreOffice con Collabora online, editor da browser.|miniatura|Interfaccia stile LibreOffice con Collabora online, editor da browser.|500x500px]]
Non sarebbe comodo poter '''sincronizzare i desktop''', i nostri '''telefoni''' o le cartelle documenti tra '''più dispositivi''' in tempo reale o condividere una cartella con il proprio collega di lavoro in modo da editare un documento simultaneamente?
Non sarebbe comodo poter '''sincronizzare i desktop''', i nostri '''telefoni''' o le cartelle documenti tra '''più dispositivi''' in tempo reale o condividere una cartella con il proprio collega di lavoro in modo da editare un documento simultaneamente?
[[File:Collabora-android.png|alt=Stessa interfaccia ma da android.|miniatura|300x300px|Stessa interfaccia ma da android.]]
[[File:Collabora-android.png|alt=Stessa interfaccia ma da android.|miniatura|300x300px|Stessa interfaccia ma da android.]]
L’ideale sarebbe che tutto questo potesse '''funzionare su tutti i dispositivi''' che usiamo ogni giorno: il nostro computer con '''Debian''', ma anche un '''MacBook''', o un computer '''Windows'''. E non dimentichiamo i dispositivi mobili, sia che montino '''Android''' che '''iOS''': insomma praticamente tutto ciò che esiste in commercio.
L’ideale sarebbe che tutto questo potesse '''funzionare su tutti i dispositivi''' che usiamo ogni giorno: il nostro computer con '''Debian''', ma anche un '''MacBook''', o un computer '''Windows'''. E non dimentichiamo i dispositivi mobili, sia che montino '''Android''' che '''iOS''': insomma praticamente tutto ciò che esiste in commercio. Tutto questo si può avere in casa propria grazie a un '''NAS con Nextcloud'''.
Tutto questo si può avere in casa propria grazie a un '''NAS con Nextcloud'''.


In questa guida andremo a '''costruire insieme il vostro dispositivo''' '''cloud'''.
In questa guida andremo a '''costruire insieme il vostro dispositivo''' '''cloud'''.


Attualmente non esistano in commercio dispositivi pre-configurati per realizzare le funzionalità descritte in precedenza. Per questo andremo a realizzare una '''configurazione personalizzata''' di NAS che altro non è che un HomeServer.
Attualmente non esistano in commercio dispositivi pre-configurati per realizzare le funzionalità descritte in precedenza. Per questo andremo a realizzare una '''configurazione personalizzata''' di NAS che altro non è che un '''HomeServer'''.


La scelta dei componenti è libera, l'ideale sarebbe fare una scelta '''modulare.''' È sconsigliato però utilizzare dischi vetusti perché da questi dipenderà l’affidabilità dei vostri preziosi dati. Inoltre, Nextcloud richiede comunque una certa potenza di calcolo, pertanto è '''necessario un minimo di investimento''' hardware per non ottenere un risultato deludente, ma quello che offre è davvero molto!
La scelta dei componenti è libera, l'ideale sarebbe fare una scelta '''modulare.''' È sconsigliato però utilizzare dischi vetusti perché da questi dipenderà l’affidabilità dei vostri preziosi dati. Inoltre, Nextcloud richiede comunque una certa potenza di calcolo, pertanto è '''necessario un minimo di investimento''' hardware per non ottenere un risultato deludente, ma quello che offre è davvero molto!


Procediamo
__TOC__
__TOC__
== Premesse ==
Questo è il '''secondo articolo''' sulla serie “Il NAS definitivo con Debian e Nextcloud”, se vi siete persi il primo vi consiglio di andare a fare un salto prima al precedente articolo e poi tornare qui.


Partiamo dal presupposto che abbiate '''già assemblato il NAS''' (anche perché potreste aver modificato la configurazione o essere partiti da componenti già pre-esistenti), se non lo avete ancora fatto esistono innumerevoli guide e videoguide al riguardo, inoltre solitamente è anche '''chiaramente spiegato sulle istruzioni''' della scheda madre.
Questa guida parte dal presupposto che abbiate '''già assemblato il NAS''', se non lo avete ancora fatto esistono innumerevoli guide e videoguide al riguardo, inoltre solitamente è anche '''chiaramente spiegato sulle istruzioni''' della scheda madre.


Presupponiamo di aver '''già creato l’installer e di averlo avviato'''. Se invece non avete idea di come creare un '''drive USB''' per l’installazione abbiamo un’ottima guida al riguardo sul wiki. Inoltre per capire come funziona la procedura di installazione potete visitare sempre il nostro wiki.
Presupponiamo di aver '''già creato l’installer e di averlo avviato'''. Se invece non avete idea di come creare un '''drive USB''' per l’installazione potete seguire la guida [[Installare Debian da pendrive USB o SD card|per installare debian da USB]].


Quello che andremo ad analizzare oggi è la '''configurazione dei dischi''' da adottare per fare una cosa fighissima: '''archiviare i dati sull’HDD''', ma al contempo, '''utilizzare l’SSD come cache''' per accelerare notevolmente l’accesso e la scrittura dei files più utilizzati e quindi avere un NAS molto reattivo!
Andiamo ora ad analizzare la '''configurazione dei dischi''' da adottare per fare una cosa fighissima: '''archiviare i dati sull’HDD''', ma al contempo, '''utilizzare l’SSD come cache''' per accelerare notevolmente l’accesso e la scrittura dei files più utilizzati e quindi avere un NAS molto reattivo!
== Configurazione dischi di sistema ==
== Configurazione dischi di sistema ==
Avviate l’installer Debian '''con i firmware inclusi''' e proseguite l’installazione fino a che non vi troverete di fronte alla schermata del partizionamento. Selezionate manuale
Avviate l’installer Debian '''con i firmware inclusi''' e proseguite l’installazione fino a che non vi troverete di fronte alla schermata del partizionamento. Selezionate manuale
Riga 51: Riga 50:


Selezioniamo poi la '''partizione logica creata come swap''' e selezioniamo usare come “Area di swap”.
Selezioniamo poi la '''partizione logica creata come swap''' e selezioniamo usare come “Area di swap”.
A questo punto abbiamo '''finito il partizionamento manuale''' e possiamo procedere con l’installazione come di consueto. Alla schermata di scelta del software da installare selezionate solamente '''“server SSH”''' e '''“Utilità di sistema standard”.'''
A questo punto abbiamo '''finito il partizionamento manuale''' e possiamo procedere con l’installazione come di consueto. Alla schermata di scelta del software da installare selezionate solamente '''“server SSH”''' e '''“Utilità di sistema standard”.'''
[[File:Debian11-installer-tasksel.png|alt=Selezione del software|centro|Selezione del software|miniatura|500x500px]]
[[File:Debian11-installer-tasksel.png|alt=Selezione del software|centro|Selezione del software|miniatura|500x500px]]
Riga 58: Riga 58:


La cosa migliore è impostare una autenticazione con public-key per la quale sul wiki c’è una guida molto completa.
La cosa migliore è impostare una autenticazione con public-key per la quale sul wiki c’è una guida molto completa.
== Configurazione dischi aggiuntivi ==
=== Configurazione dischi aggiuntivi ===
Ora è giunto il momento di '''configurare il disco rigido'''. Quello che vogliamo fare è creare una '''nuova partizione su LVM''' per i dati che salveremo su Nextcloud, ma la particolarità è che lo spazio che abbiamo lasciato residuo sulla SSD verrà sfruttato come '''cache in lettura e scrittura'''.
Ora è giunto il momento di '''configurare il disco rigido'''. Quello che vogliamo fare è creare una '''nuova partizione su LVM''' per i dati che salveremo su Nextcloud, ma la particolarità è che lo spazio che abbiamo lasciato residuo sulla SSD verrà sfruttato come '''cache in lettura e scrittura'''.


Riga 91: Riga 91:


<code>mkfs.ext4 -m 0 /dev/SSD/data</code>
<code>mkfs.ext4 -m 0 /dev/SSD/data</code>
== Configurazione montaggio automatico al boot ==
=== Configurazione montaggio automatico al boot ===
Adesso che abbiamo appena creato i dischi e il file system configuriamo il montaggio automatico al boot del disco dati.
Adesso che abbiamo appena creato i dischi e il file system configuriamo il montaggio automatico al boot del disco dati.


Riga 105: Riga 105:


<code>mount -a</code>
<code>mount -a</code>
== Conclusioni ==
Ricapitolando al momento abbiamo '''installato Debian''' con il NAS e '''configurato LVM''' avendo '''una partizione per il sistema operativo ed una per i dati'''.
La '''partizione dati''' sarà montata in <code>/mnt/data</code> e configurata per utilizzare in maniera trasparente '''l’SSD come cache'''.
Nel prossimo articolo installeremo finalmente '''l’ambiente LAMP e Nextcloud'''!


== Configurazione dell'ambiente LAMP ==
Ci concentreremo ora sull’'''installazione di un ambiente LAMP''' per far girare Nextcloud e all’installazione vera e propria di '''Nextcloud'''.


In questo 3° articolo ci concentreremo sull’'''installazione di un ambiente LAMP''' per far girare Nextcloud e all’installazione vera e propria di '''Nextcloud'''. Se vi siete persi gli altri articoli vi consiglio di leggere prima quelli e poi di tornare qui.
La '''prima cosa da fare''' è '''configurare il dominio'''. Se volete acquistarne uno il mio consiglio è di utilizzare il servizio di google domains. Se volete utilizzare un vostro dominio, è importante che lo acquistiate già e lo configuriate per puntare al vostro NAS. Infatti configureremo il server web apache2 per accettare esclusivamente '''connessioni cifrate''' e quindi useremo solo il '''protocollo https'''. Per la validazione dei certificato è necessario che il dominio esista.
 
La '''prima cosa da fare''' è '''configurare il dominio'''. Se volete acquistarne uno il mio consiglio è di utilizzare il servizio di google domains, tra l’altro nel prossimo articolo verrà trattato proprio come configurare adeguatamente il dominio dinamico. Intanto però, se volete utilizzare un vostro dominio, è importante che lo acquistiate già e lo configuriate per puntare al vostro NAS. Infatti configureremo il server web apache2 per accettare esclusivamente '''connessioni cifrate''' e quindi useremo solo il '''protocollo https'''.


Inoltre dovrete al momento '''aprire''' almeno la '''porta 80 e la porta 443 del vostro router''', altrimenti non sarete accessibili dal mondo esterno.
Inoltre dovrete al momento '''aprire''' almeno la '''porta 80 e la porta 443 del vostro router''', altrimenti non sarete accessibili dal mondo esterno.
== Installazione di MariaDB ==
=== Installazione di MariaDB ===
Per prima cosa pensiamo a '''installare il database'''. Utilizzeremo '''MariaDB''' pertanto iniziamo l’installazione digitando da root
Per prima cosa pensiamo a '''installare il database'''. Utilizzeremo '''MariaDB''' pertanto iniziamo l’installazione digitando da root


Riga 128: Riga 122:


Io personalmente ho, per pigrizia, nel mio server personale, non attivato la password di root permettendo l’autenticazione come utenza root del database solamente dall’utente root di sistema. In realtà questa non è affatto una best practice e quindi impostate la password di root!
Io personalmente ho, per pigrizia, nel mio server personale, non attivato la password di root permettendo l’autenticazione come utenza root del database solamente dall’utente root di sistema. In realtà questa non è affatto una best practice e quindi impostate la password di root!
=== Configurazione utenze ===
==== Configurazione utenze ====
A questo punto siamo pronti per '''configurare l’utenza''' per nextcloud. Effettuiamo l’'''accesso da root in mysql''' con
A questo punto siamo pronti per '''configurare l’utenza''' per nextcloud. Effettuiamo l’'''accesso da root in mysql''' con


Riga 155: Riga 149:
<code>\q</code>
<code>\q</code>


=== Ottimizzazione database ===
==== Ottimizzazione database ====
Inoltre per '''utilizzare al meglio MariaDB con nextcloud''' è opportuno modificare alcuni parametri del database. Editiamo il file <code>/etc/mysql/my.cnf</code> e sotto a
Inoltre per '''utilizzare al meglio MariaDB con nextcloud''' è opportuno modificare alcuni parametri del database. Editiamo il file <code>/etc/mysql/my.cnf</code> e sotto a
<pre>[client-server]
<pre>[client-server]
Riga 187: Riga 181:
<code>service mysql restart</code>
<code>service mysql restart</code>


== Installazione del web-server ==
==== Installazione del web-server ====
Come web-server ho scelto '''apache2'''. Per installare tutte le componenti necessarie al corretto utilizzo di Nextcloud digitate
Come web-server ho scelto '''apache2'''. Per installare tutte le componenti necessarie al corretto utilizzo di Nextcloud digitate


Riga 197: Riga 191:


<code>a2enmod headers</code>
<code>a2enmod headers</code>
=== Modifiche minori ===
==== Modifiche minori ====
==== Apache ====
===== Apache =====
Sarà necessario ora effettuare alcune piccole modifiche ai file di configurazione
Sarà necessario ora effettuare alcune piccole modifiche ai file di configurazione


Riga 208: Riga 202:


modificare <code>TraceEnable</code> da <code>On</code> a <code>Off</code>.
modificare <code>TraceEnable</code> da <code>On</code> a <code>Off</code>.
==== Php ====
===== Php =====
Aprite il file <code>/etc/php/7.3/apache2/php.ini</code> e
Aprite il file <code>/etc/php/7.3/apache2/php.ini</code> e


Riga 389: Riga 383:
Non dimenticate di installare sui vostri dispositivi i client di Nextcloud! Grazie a questi programmi potrete '''attivare la sincronizzazione automatica''' di tutti i vostri dispositivi (mobile e desktop) e visualizzare da browser (ed eventualmente ripristinare) le versioni dei file.
Non dimenticate di installare sui vostri dispositivi i client di Nextcloud! Grazie a questi programmi potrete '''attivare la sincronizzazione automatica''' di tutti i vostri dispositivi (mobile e desktop) e visualizzare da browser (ed eventualmente ripristinare) le versioni dei file.


Abbiamo praticamente finito, nei prossimi articoli vedremo come configurare al meglio il '''dominio dinamico''', il '''server di posta''' e l’'''UPS''' per ricevere automaticamente le notifiche in caso di intervento ed infine un '''sistema di backup automatico'''!
== Configurazione dominio dinamico dyndns ==
 
Nella prima di configurazione del certificato di sicurezza abbiamo già configurato il domino per puntare al server.
 
Dal momento che però questa guida si occupa di un NAS casalingo è molto probabile che voi abbiate un contratto con '''indirizzo IP dinamico''' (se avete un dominio statico questa parte può essere saltata). Questo comporta che in caso di riavvio del router o di una rinegoziazione della connessione con il vostro provider il vostro '''IP possa cambiare''' rendendo irraggiungibile il vostro NAS fino a che non aggiorniate l’indirizzo IP dal gestore DNS. Questo '''non è accettabile''' per un ambiente di produzione.
Questo articolo fa parte della serie degli articoli su un home NAS con Nextcloud e Debian. Nel precedente articolo abbiamo già provveduto all’'''installazione''' del nostro server con Nextcloud, se ve lo siete perso potrete andarlo a ripescare.
 
La parte di configurazione del certificato di sicurezza prevedeva che già avevate configurato il vostro dominio per puntare al server.
Dal momento che però questa guida si occupa di un NAS casalingo è molto probabile che voi abbiate un contratto con '''indirizzo IP dinamico'''. Questo comporta che in caso di riavvio del router o di una rinegoziazione della connessione con il vostro provider il vostro '''IP possa cambiare''' rendendo irraggiungibile il vostro NAS fino a che non aggiorniate l’indirizzo IP dal gestore DNS. Questo '''non è accettabile''' per un ambiente di produzione.
[[File:Google-dns-select.png|alt=Selezione DNS|centro|miniatura|208x208px|Selezione DNS]]
[[File:Google-dns-select.png|alt=Selezione DNS|centro|miniatura|208x208px|Selezione DNS]]
Nel caso abbiate seguito il mio suggerimento e stiate utilizzando '''google domains''' accedete alla pagina di configurazione del vostro dominio e una volta selezionato andate su DNS
Nel caso abbiate seguito il mio suggerimento e stiate utilizzando '''google domains''' accedete alla pagina di configurazione del vostro dominio e una volta selezionato andate su DNS
[[File:Google-dns-sintetici.png|alt=Configurazione dei DNS sintetici su google DNS|centro|miniatura|200x200px|Configurazione dei DNS sintetici su google DNS]]
[[File:Google-dns-sintetici.png|alt=Configurazione dei DNS sintetici su google DNS|centro|miniatura|200x200px|Configurazione dei DNS sintetici su google DNS]]
Una volta fatto questo cancellate ogni configurazione dei DNS, dopo di che cliccate su “'''Record sintetici'''” e configurate il vostro DNS dinamico.
Una volta fatto questo cancellate ogni configurazione dei DNS, dopo di che cliccate su “'''Record sintetici'''” e configurate il vostro DNS dinamico.
Configurate il sottodominio “@”.tuodominio.org e generate le credenziali Nome utente e password.
Configurate il sottodominio “@”.tuodominio.org e generate le credenziali Nome utente e password.


Riga 422: Riga 413:
<code>service ddclient restart</code>
<code>service ddclient restart</code>


Avete finito!
== Configurazione UPS per l'auto shutdown e mail di notifica ==
 
Se non avete un UPS APC questa parte della guida può essere saltata, infati serve un '''UPS compatibile''', in particolare quello utilizzato per il nostro test è un '''APC Back-UPS BX700U-GR'''. Se vi interessa potrete trovarlo su Amazon.it al seguente indirizzo https://amzn.to/3jbFL0E.
Nel '''prossimo articolo''' vedremo la configurazione del '''server di posta''' per le notifiche automatiche e dell’'''UPS'''.
 
Alla prossima!
 
 
In questo articolo vedremo '''come configurare il nostro NAS''' per lo '''spegnimento automatico''' in caso di blackout prima che l’'''UPS esaurisca la batteria'''. Faremo anche in modo che il sistema provveda in automatico ad inviare '''mail di notifica''' in caso di mancanza di tensione e periodici avvisi sullo '''stato della carica''' e dell’'''autonomia residua''' prevista.
 
Quello che ci serve è un '''UPS compatibile''', in particolare quello utilizzato per il nostro test è un '''APC Back-UPS BX700U-GR'''. Se vi interessa potrete trovarlo su Amazon.it al seguente indirizzo <nowiki>https://amzn.to/3jbFL0E</nowiki>.


La compatibilità è garantita con '''tutti gli UPS della APC''' dotati di '''interfaccia USB'''. Vi servirà anche un cavo USB da tipo A a tipo B.
La compatibilità è garantita con '''tutti gli UPS della APC''' dotati di '''interfaccia USB'''. Vi servirà anche un cavo USB da tipo A a tipo B.
Riga 439: Riga 422:
A questo punto '''collegatevi via SSH''' al vostro NAS.
A questo punto '''collegatevi via SSH''' al vostro NAS.


== Configurazione apcupsd ==
=== Configurazione apcupsd ===
Per prima cosa installate <code>apcupsd</code> con
Per prima cosa installate <code>apcupsd</code> con
  apt-get install apcupsd
  apt-get install apcupsd
Riga 465: Riga 448:
  systemctl status apcupsd
  systemctl status apcupsd
Avete finito, ora non resta che '''configurare il server mail''' per ricevere le notifiche.
Avete finito, ora non resta che '''configurare il server mail''' per ricevere le notifiche.
== Configurazione del server mail ==
=== Configurazione del server mail ===
Per prima cosa modificate il file <code>/etc/aliases</code> e '''ridirigete''' tutta la posta dell’utente root e del vostro utente all’'''indirizzo di posta personale''' aggiungendo (e modificando a dovere)
Per prima cosa modificate il file <code>/etc/aliases</code> e '''ridirigete''' tutta la posta dell’utente root e del vostro utente all’'''indirizzo di posta personale''' aggiungendo (e modificando a dovere)


Riga 505: Riga 488:
</gallery>Abbiamo finito. Il '''server di posta è configurato'''. Ovviamente questa è una configurazione veramente '''base''', non possiamo inviare posta dall’esterno, non possiamo ricevere davvero posta e tutta la posta ricevuta ci verrà indirizzata all’indirizzo di posta specificato nel file alias prima.
</gallery>Abbiamo finito. Il '''server di posta è configurato'''. Ovviamente questa è una configurazione veramente '''base''', non possiamo inviare posta dall’esterno, non possiamo ricevere davvero posta e tutta la posta ricevuta ci verrà indirizzata all’indirizzo di posta specificato nel file alias prima.
Però era quello che volevamo, cioè semplicemente '''ricevere le notifiche in caso di blackout''' (o altri tipi di notifiche come un fallimento dei drive individuato da smartmontools).
Però era quello che volevamo, cioè semplicemente '''ricevere le notifiche in caso di blackout''' (o altri tipi di notifiche come un fallimento dei drive individuato da smartmontools).
== Configurazione del client di posta per ignorare la SPAM ==
=== Configurazione del client di posta per ignorare la SPAM ===
Come accennato precedentemente con questa configurazione praticamente tutta la posta che inviamo sarà girata nella SPAM. Bisogna configurare il provider di posta per accettarla comunque.
Come accennato precedentemente con questa configurazione praticamente tutta la posta che inviamo sarà girata nella SPAM. Bisogna configurare il provider di posta per accettarla comunque.
Per esempio in '''gmail''' è sufficiente andare sulle '''impostazioni'''
Per esempio in '''gmail''' è sufficiente andare sulle '''impostazioni'''
Riga 520: Riga 503:
Inoltre, nel caso dovesse tornare la tensione prima dello scattare della soglia di shutdown, vi verrà '''notificato l’eventuale ritorno''' della tensione con una mail con oggetto <code>hostname UPS nome_ups Power has returned</code>.
Inoltre, nel caso dovesse tornare la tensione prima dello scattare della soglia di shutdown, vi verrà '''notificato l’eventuale ritorno''' della tensione con una mail con oggetto <code>hostname UPS nome_ups Power has returned</code>.


Vi ringrazio per la lettura. Nel prossimo articolo (che sarà l’ultimo della serie sul NAS con Nextcloud) vedremo come '''configurare un sistema di backup automatico'''.
== Sistema autoamtico di backup con rsnapshot ==
 
Alla prossima!
 
In questo articolo vediamo come configurare un sistema automatico di backup con rsnapshot.
== Principi base di rsnapshot ==
Rsnapshot è un un software in grado di '''realizzare snapshot del disco''', cioè è in grado di '''memorizzare delle istantanee'''. Fa un massiccio utilizzo di '''hard link''' in modo da risparmiare molto spazio su disco, in pratica il '''file viene memorizzato una sola volta''' e se lo snapshot successivo contiene ancora il '''medesimo file non modificato''' non viene richiesta ulteriore memoria sul disco.
Rsnapshot è un un software in grado di '''realizzare snapshot del disco''', cioè è in grado di '''memorizzare delle istantanee'''. Fa un massiccio utilizzo di '''hard link''' in modo da risparmiare molto spazio su disco, in pratica il '''file viene memorizzato una sola volta''' e se lo snapshot successivo contiene ancora il '''medesimo file non modificato''' non viene richiesta ulteriore memoria sul disco.


Grazie agli hard link però vi ritroverete '''ogni snapshot come una differente directory''' che contiene l’istantanea del disco esattamente come quando è stato fatto, questo significa che il '''ripristino di un backup sarà semplice''' quanto copiare una directory!
Grazie agli hard link però vi ritroverete '''ogni snapshot come una differente directory''' che contiene l’istantanea del disco esattamente come quando è stato fatto, questo significa che il '''ripristino di un backup sarà semplice''' quanto copiare una directory!
== Configurazione dei dischi di backup ==
=== Configurazione dei dischi di backup ===
Potrete configurare il disco di backup come preferite, nell’ottica di questa serie di articoli sul NAS definitico con Debian e Nextcloud andremo a configurare il disco di '''backup con LVM'''.
Potrete configurare il disco di backup come preferite, nell’ottica di questa serie di articoli sul NAS definitico con Debian e Nextcloud andremo a configurare il disco di '''backup con LVM'''.


Riga 536: Riga 514:
'''Cancelliamo''' tutto il contenuto del disco con
'''Cancelliamo''' tutto il contenuto del disco con


<code>wipefs -a /dev/sd</code>c
<code>wipefs -a /dev/sdc</code>


A questo punto '''partizioniamo''' il volume con
A questo punto '''partizioniamo''' il volume con
Riga 577: Riga 555:


infatti, se avremo fatto un '''errore''' e il dispositivo '''non è correttamente montato effettueremo''' il backup sul disco principale '''esaurendo rapidamente tutto lo spazio disponibile'''.
infatti, se avremo fatto un '''errore''' e il dispositivo '''non è correttamente montato effettueremo''' il backup sul disco principale '''esaurendo rapidamente tutto lo spazio disponibile'''.
== Configurazione di rsnapshot ==
=== Configurazione di rsnapshot ===
Prima di iniziare la '''configurazione di rsnapshot''' è necessario fare una particolare premessa, altrimenti si andrà incontro a numerosi errori difficili da risolvere. Nel file di configurazione di rsnapshot gli '''spazi non sono validi''' per separare le variabili di configurazione è '''necessario utilizzare le tabulazioni'''.
Prima di iniziare la '''configurazione di rsnapshot''' è necessario fare una particolare premessa, altrimenti si andrà incontro a numerosi errori difficili da risolvere. Nel file di configurazione di rsnapshot gli '''spazi non sono validi''' per separare le variabili di configurazione è '''necessario utilizzare le tabulazioni'''.


Riga 600: Riga 578:
backup_script /usr/local/bin/rs-mysql localhost/mysqldump/</pre>
backup_script /usr/local/bin/rs-mysql localhost/mysqldump/</pre>


== Configurazione di script aggiuntivi ==
=== Configurazione di script aggiuntivi ===
Creiamo un file <code>/usr/local/bin/rs-mysql</code> contenente
Creiamo un file <code>/usr/local/bin/rs-mysql</code> contenente
<pre>#!/bin/bash
<pre>#!/bin/bash
Riga 624: Riga 602:
<code>chmod +x /usr/local/bin/rs-daily</code>
<code>chmod +x /usr/local/bin/rs-daily</code>


== Configurazione crontab ==
=== Configurazione crontab ===
Configuriamo cron per eseguire i backup con <code>crontab -e</code>
Configuriamo cron per eseguire i backup con <code>crontab -e</code>
<pre>0 6 * * * /usr/local/bin/rs-daily > /dev/null
<pre>0 6 * * * /usr/local/bin/rs-daily > /dev/null
Riga 635: Riga 613:
Comunque il '''backup settimanale e mensile è davvero veloce''' ad essere eseguito (si tratta solamente di spostare hard link), mentre il più lento è il giornaliero che deve eseguire un intero rsync e il dump del database, comunque è consigliabile lasciare un minimo di tempo (almeno 5 minuti) tra un backup e il successivo per evitare conflitti temporali.
Comunque il '''backup settimanale e mensile è davvero veloce''' ad essere eseguito (si tratta solamente di spostare hard link), mentre il più lento è il giornaliero che deve eseguire un intero rsync e il dump del database, comunque è consigliabile lasciare un minimo di tempo (almeno 5 minuti) tra un backup e il successivo per evitare conflitti temporali.


== Il backup del backup offline ==
=== Il backup del backup offline ===
È inoltre importante ogni tanto (quando ci si ricorda almeno), '''eseguire un backup del backup su un supporto offline'''. Infatti questo backup automatico è sempre accessibile dal dispositivo, inoltre il disco di backup è interno al NAS stesso.
È inoltre importante ogni tanto (quando ci si ricorda almeno), '''eseguire un backup del backup su un supporto offline'''. Infatti questo backup automatico è sempre accessibile dal dispositivo, inoltre il disco di backup è interno al NAS stesso.


Riga 648: Riga 626:
Dove <code>/mnt/usb/rsnapshot/</code> è la directory nel disco esterno montato in <code>/mnt/usb/</code>. L’attributo -H serve a mantenere gli hard link intatti e non sprecare il lavoro di risparmio di spazio prodotto da rsnapshot.
Dove <code>/mnt/usb/rsnapshot/</code> è la directory nel disco esterno montato in <code>/mnt/usb/</code>. L’attributo -H serve a mantenere gli hard link intatti e non sprecare il lavoro di risparmio di spazio prodotto da rsnapshot.


== Ripristino del backup ==
=== Ripristino del backup ===
Nel caso dobbiate ripristinare il backup la procedura è piuttosto semplice. Per prima cosa stoppate apache2. Per quanto riguarda i dati è sufficiente dare un
Nel caso dobbiate ripristinare il backup la procedura è piuttosto semplice. Per prima cosa stoppate apache2. Per quanto riguarda i dati è sufficiente dare un
  rsync -aAx --delete /directory/backup /directory/da/ripristinare
  rsync -aAx --delete /directory/backup /directory/da/ripristinare
Riga 663: Riga 641:
  mysql d_nextcloud < nextcloud.sql
  mysql d_nextcloud < nextcloud.sql
Ora potete riavviare il webserver e avrete il backup ripristinato.
Ora potete riavviare il webserver e avrete il backup ripristinato.
Con questo articolo '''si chiude la serie “Il NAS definitivo con Debian e Nextcloud”''' ad eccezione di una piccola postilla futura con la quale accennerò alla manutenzione ordinaria di Nextcloud per gestire gli aggiornamenti tramite shell ssh.
Vi ringrazio per la lettura e la passione dimostrata!
Dopo aver terminato la serie sul NAS Definitivo con Debian e Nextcloud mi sono accorto di aver dimenticato una parte tanto marginale per l’installazione quanto fondamentale per la manutenzione. In particolare:
* come importare un grande quantitativo di file in Nextcloud;
* come aggiornare al meglio le applicazioni di Nextcloud;
* come aggiornare Nextcloud.
Per tutte queste operazione (sebbene alcune si possano fare da interfaccia web) ci avvaleremo dell’interfaccia cli occ. Infatti l’interfaccia web è molto più limitata e spesso non si può proprio evitare, specialmente durante alcuni aggiornamenti, di utilizzare l’interfaccia cli (infatti alcune operazioni possono essere piuttosto lunghe e supererebbero il tempo di esecuzione ammesso di php per il webserver).


== Importare file esterni su Nextcloud ==
== Importare file esterni su Nextcloud ==
Riga 705: Riga 672:
A questo punto fornire i comandi di cui sopra. Una volta completato l’aggiornamento ripristinare la versione Stabile.
A questo punto fornire i comandi di cui sopra. Una volta completato l’aggiornamento ripristinare la versione Stabile.


Ok, questo è quanto per la manutenzione ordinaria, per informazioni più specifiche è sempre bene fare riferimento al [https://docs.nextcloud.com manuale d’uso]. Non penso ci sia molto altro da aggiungere, nel caso mi venga in mente mi sentirete in un altro articolo.{{Autori
Ok, questo è quanto per la manutenzione ordinaria, per informazioni più specifiche è sempre bene fare riferimento al [https://docs.nextcloud.com manuale d’uso].{{Autori
|Autore = [[Utente:Marcomg|marcomg]]
|Autore = [[Utente:Marcomg|marcomg]]
|Verificata_da =  
|Verificata_da =  

Versione delle 16:22, 8 nov 2021

Document-page-setup.png Attenzione: questo articolo è ancora incompleto e in fase di scrittura da parte del suo autore.

Sentitevi liberi di contribuire, proponendo modifiche alla guida tramite l'apposita pagina di discussione, in modo da non interferire con il lavoro portato avanti sulla voce. Per altre informazioni si rimanda al template.


Warning.png ATTENZIONE
Al momento è solo un copia-incolla dal blog


Debian-swirl.png Versioni Compatibili

Debian 11 "bullseye"

Premesse

In questi ultimi tempi la produzione e il consumo di dati sta aumentando sempre più, come foto scattate con il nostro telefono, documenti di testo e progetti personali.

Vista file di Nextcloud

Anche i dispositivi che possono produrre tali dati sono in continuo aumento: oramai è comune per ciascuno di noi possedere almeno uno smartphone e anche più di un computer (magari un fisso ed un laptop) e probabilmente anche una postazione in ufficio.

Complici gli ultimi eventi che ci hanno limitato un po’ negli spostamenti, ufficio e casa si mescolano. Quante volte ci è successo di produrre un documento importante sul computer di casa e di accorgerci, una volta arrivati a lavoro di non averlo copiato su una “pennetta” o un hard disk esterno?

Inoltre, i dispositivi mobili (sia laptop che smartphone) sono soggetti a rotture e furti in misura maggiore rispetto a dispositivi fissi. Con la loro perdita se ne vanno anche le nostre preziose fotografie, ricordi o il nostro duro lavoro, magari di settimane, perché non abbiamo avuto tempo di effettuare il backup.

Non sarebbe utile avere la possibilità di fare un backup in tempo reale di tutti i nostri documenti, di poter archiviare ogni modifica effettuata e di poter ripristinare un documento ad una versione precedente a seguito di un salvataggio errato?

Interfaccia stile LibreOffice con Collabora online, editor da browser.
Interfaccia stile LibreOffice con Collabora online, editor da browser.

Non sarebbe comodo poter sincronizzare i desktop, i nostri telefoni o le cartelle documenti tra più dispositivi in tempo reale o condividere una cartella con il proprio collega di lavoro in modo da editare un documento simultaneamente?

Stessa interfaccia ma da android.
Stessa interfaccia ma da android.

L’ideale sarebbe che tutto questo potesse funzionare su tutti i dispositivi che usiamo ogni giorno: il nostro computer con Debian, ma anche un MacBook, o un computer Windows. E non dimentichiamo i dispositivi mobili, sia che montino Android che iOS: insomma praticamente tutto ciò che esiste in commercio. Tutto questo si può avere in casa propria grazie a un NAS con Nextcloud.

In questa guida andremo a costruire insieme il vostro dispositivo cloud.

Attualmente non esistano in commercio dispositivi pre-configurati per realizzare le funzionalità descritte in precedenza. Per questo andremo a realizzare una configurazione personalizzata di NAS che altro non è che un HomeServer.

La scelta dei componenti è libera, l'ideale sarebbe fare una scelta modulare. È sconsigliato però utilizzare dischi vetusti perché da questi dipenderà l’affidabilità dei vostri preziosi dati. Inoltre, Nextcloud richiede comunque una certa potenza di calcolo, pertanto è necessario un minimo di investimento hardware per non ottenere un risultato deludente, ma quello che offre è davvero molto!

Questa guida parte dal presupposto che abbiate già assemblato il NAS, se non lo avete ancora fatto esistono innumerevoli guide e videoguide al riguardo, inoltre solitamente è anche chiaramente spiegato sulle istruzioni della scheda madre.

Presupponiamo di aver già creato l’installer e di averlo avviato. Se invece non avete idea di come creare un drive USB per l’installazione potete seguire la guida per installare debian da USB.

Andiamo ora ad analizzare la configurazione dei dischi da adottare per fare una cosa fighissima: archiviare i dati sull’HDD, ma al contempo, utilizzare l’SSD come cache per accelerare notevolmente l’accesso e la scrittura dei files più utilizzati e quindi avere un NAS molto reattivo!

Configurazione dischi di sistema

Avviate l’installer Debian con i firmware inclusi e proseguite l’installazione fino a che non vi troverete di fronte alla schermata del partizionamento. Selezionate manuale

Partizionamento manuale installer debian 11 testuale
Partizionamento manuale installer debian 11 testuale

A questo punto selezionate l’SSD e iniziate il partizionamento creando

  • 100MB di partizione EFI;
  • 300MB di partizione ext4 e selezionare il punto di montaggio /boot;
  • restante parte selezionate volume fisico per LVM.

Sarebbe buona norma lasciare alla fine del disco SSD un 10% di spazio non partizionato utilizzato al fine dell’over-provisioning.

Fatto questo selezionate “Configurare il Logical Volume Manager” e create un nuovo gruppo volumi che chiamiamo “SSD”. Selezionate la partizione creata come volume fisico per LVM.

A questo punto selezioniamo crea volume logico e creiamo un volume chiamato debianOS e creiamo un volume di 50GB.

Ripetiamo la procedura e creiamo un altro volume logico che chiamiamo swap e facciamolo di dimensioni pari alla dimensione della RAM installata. A questo punto clicchiamo su termina e, una volta tornati alla lista dello schema delle partizioni selezioniamo il volume debianOS

Selezione partizione LVM
Selezione partizione LVM

Scegliamo di usare come File System Ext4 con Journaling e come punto di mount selezioniamo /

Selezioniamo poi la partizione logica creata come swap e selezioniamo usare come “Area di swap”.

A questo punto abbiamo finito il partizionamento manuale e possiamo procedere con l’installazione come di consueto. Alla schermata di scelta del software da installare selezionate solamente “server SSH” e “Utilità di sistema standard”.

Selezione del software
Selezione del software

A questo punto completate l’installazione e riavviate.

Dal momento che è stato installato SSH potrete ora collegarvi tranquillamente dal vostro computer remoto con SSH.

La cosa migliore è impostare una autenticazione con public-key per la quale sul wiki c’è una guida molto completa.

Configurazione dischi aggiuntivi

Ora è giunto il momento di configurare il disco rigido. Quello che vogliamo fare è creare una nuova partizione su LVM per i dati che salveremo su Nextcloud, ma la particolarità è che lo spazio che abbiamo lasciato residuo sulla SSD verrà sfruttato come cache in lettura e scrittura.

Diamo per scontato che /dev/sda sia la vostra SSD e che /dev/sdb sia il nuovo disco magnetico da configurare.

Per prima cosa cancelliamo tutte le partizioni sul disco magnetico con

wipefs -a /dev/sdb

Ora creiamo una unica nuova partizione per LVM, per farlo

cfdisk /dev/sdb Selezioniamo lo schema di partizionamento GPT e creiamo una nuova partizione grande come tutto il disco e come tipo selezioniamo Linux LVM.

Selezione LVM
Selezione LVM

Salviamo le modifiche e creiamo il volume fisico sull’HDD con

pvcreate /dev/sdb1

aggiungiamo ora il volume fisico al gruppo di volumi precedentemente chiamato SSD (per fare la cache il gruppo volumi deve essere lo stesso quindi se in fase di installazione avete scelto un nome diverso dovete utilizzare quello)

vgextend SSD /dev/sdb1

creiamo sull’SSD, nel gruppo SSD il volume di cache chiamato datacache. Ovviamente assicuratevi prima con fdisk -l che /dev/sda3 sia la partizione corrispondente alla partizione dedicata ad LVM nell’SSD

lvcreate --type cache-pool -l 100%FREE -n datacache SSD /dev/sda3

Creiamo sull’HDD il volume dati che verrà “agganciato” alla cache-pool creata precedentemente

lvcreate --type cache -l 100%FREE -n data --cachepool datacache SSD --cachemode writeback /dev/sdb1

A questo punto creiamo il file system nella partizione logica appena creata.

mkfs.ext4 -m 0 /dev/SSD/data

Configurazione montaggio automatico al boot

Adesso che abbiamo appena creato i dischi e il file system configuriamo il montaggio automatico al boot del disco dati.

Creiamo la directory di montaggio con

mkdir /mnt/data

E modifichiamo il file /etc/fstab aggiungendo la riga

/dev/mapper/SSD-data /mnt/data ext4 discard,noatime 0 1

Proviamo la nuova configurazione con

mount -a

Configurazione dell'ambiente LAMP

Ci concentreremo ora sull’installazione di un ambiente LAMP per far girare Nextcloud e all’installazione vera e propria di Nextcloud.

La prima cosa da fare è configurare il dominio. Se volete acquistarne uno il mio consiglio è di utilizzare il servizio di google domains. Se volete utilizzare un vostro dominio, è importante che lo acquistiate già e lo configuriate per puntare al vostro NAS. Infatti configureremo il server web apache2 per accettare esclusivamente connessioni cifrate e quindi useremo solo il protocollo https. Per la validazione dei certificato è necessario che il dominio esista.

Inoltre dovrete al momento aprire almeno la porta 80 e la porta 443 del vostro router, altrimenti non sarete accessibili dal mondo esterno.

Installazione di MariaDB

Per prima cosa pensiamo a installare il database. Utilizzeremo MariaDB pertanto iniziamo l’installazione digitando da root

# apt-get install mariadb-client mariadb-server

Finita l’installazione avviamo lo script di messa in sicurezza del database lanciano

# mysql_secure_installation

Io personalmente ho, per pigrizia, nel mio server personale, non attivato la password di root permettendo l’autenticazione come utenza root del database solamente dall’utente root di sistema. In realtà questa non è affatto una best practice e quindi impostate la password di root!

Configurazione utenze

A questo punto siamo pronti per configurare l’utenza per nextcloud. Effettuiamo l’accesso da root in mysql con

# mysql -p

o nel mio caso (che sono stato una brutta persona e non ho configurato la password di root) solamente con # mysql

A questo punto dobbiamo creare il database che chiameremo d_nextcloud

CREATE DATABASE 'd_nextcloud';

creiamo ora l’utente u_nextcloud con la password c0Mpl3xpwD! che vi consiglio di generare con un generatore casuale di password.

CREATE USER 'u_nextcloud'@localhost IDENTIFIED BY 'c0Mpl3xpwD!';

Garantiamo tutti i privilegi all’utente u_nextcloud al proprio database associato d_nextcloud

GRANT ALL PRIVILEGES ON 'd_nextcloud'.* TO 'u_nextcloud'@localhost;

Aggiorniamo ora i privilegi (altrimenti è come se non avessimo mai creato alcun database).

FLUSH PRIVILEGES;

Usciamo dalla console digitando

\q

Ottimizzazione database

Inoltre per utilizzare al meglio MariaDB con nextcloud è opportuno modificare alcuni parametri del database. Editiamo il file /etc/mysql/my.cnf e sotto a

[client-server]

# Import all .cnf files from configuration directory
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/

aggiungete

[server]
skip_name_resolve = 1
innodb_buffer_pool_size = 256M
innodb_buffer_pool_instances = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_file_size = 32M
innodb_log_buffer_size = 32M
innodb_max_dirty_pages_pct = 90
#query_cache_type = 0
query_cache_type = 0
query_cache_limit = 4M
query_cache_min_res_unit = 2k
#query_cache_size = 64M
query_cache_size = 0
tmp_table_size= 64M
max_heap_table_size= 64M
performance_schema = ON
[mysqld]
transaction_isolation = READ-COMMITTED
binlog_format = ROW

La configurazione di MariaDB è conclusa, potete riavviare il server con

service mysql restart

Installazione del web-server

Come web-server ho scelto apache2. Per installare tutte le componenti necessarie al corretto utilizzo di Nextcloud digitate

# apt-get install certbot python3-certbot-apache apache2 libapache2-mod-php php-curl php-dom php-gd php-xml php-json php-mbstring php-zip php-mysql php-intl php-bcmath php-gmp php-imagick imagemagick needrestart

In seguito dobbiamo abilitare 2 mod di apache2 con

a2enmod rewrite

a2enmod headers

Modifiche minori

Apache

Sarà necessario ora effettuare alcune piccole modifiche ai file di configurazione

Aprite il file /etc/apache2/conf-available/security.conf

modificare ServerSignature da On a Off;

modificare ServerTokens da Full a Prod;

modificare TraceEnable da On a Off.

Php

Aprite il file /etc/php/7.3/apache2/php.ini e

Modificate opcache.enable=1

opcache.memory_consumption=128

opcache.interned_strings_buffer=8

opcache.max_accelerated_files=10000

opcache.max_wasted_percentage=5

Installazione Nextcloud

È giunto ora il momento (finalmente) di installare Nextcloud!

Preparazione directory

Per prima cosa creiamo la nuova directory di installazione di Nextcloud con un

mkdir /var/www/

Posizioniamoci in quella directory con cd e scarichiamo con wget il file zip contenente Nextcloud reperibile alla pagina di download ufficiale.

A questo punto, ottenuto il file spacchettiamolo con unzip dando

unzip nomearchivio.zip

Se il comando non è presente installatelo con apt-get.

Vi troverete ora la directory nextcloud appena estratta. Fornitele i giusti permessi con

chown -R www-data:www-data nextcloud

Creiamo intanto ora anche la directory dati nel disco esterno per nextcloud con

mkdir /mnt/data/nextcloud

e diamo sempre i giusti permessi con

chown -R www-data:www-data /mnt/data/nextcloud

Configurazione virtualhost

A questo punto dobbiamo creare i virtualhost per apache2

Posizioniamoci in /etc/apache2/sites-available

e creiamo un file chiamato

rediricter.conf contenente

<VirtualHost *:80>
 	ServerAdmin webmaster@localhost
 	DocumentRoot /var/www/html
 
 	#LogLevel info ssl:warn
 
 	ErrorLog ${APACHE_LOG_DIR}/error.log
 	CustomLog ${APACHE_LOG_DIR}/access.log combined
 
 	# Rewite
 	<IfModule mod_rewrite.c>
 		RewriteEngine on
 		RewriteCond %{HTTP_HOST} =www.tuodominio.org
 		RewriteRule ^ <nowiki>https://tuodominio.org%{REQUEST_URI}</nowiki> [END,NE,R=permanent]
 
 		RewriteCond %{SERVER_NAME} =tuodominio.org
 	        RewriteRule ^ <nowiki>https://%{SERVER_NAME}%{REQUEST_URI}</nowiki> [END,NE,R=permanent]
 
                 RewriteCond %{HTTP_HOST} =cloud.tuodominio.org
                 RewriteRule ^ <nowiki>https://tuodominio.org%{REQUEST_URI}</nowiki> [END,NE,R=permanent]
 
 	</IfModule>
 </VirtualHost>

Lo scopo di questa configurazione è reindirizzare tutto il traffico di nostro interesse da http verso il protocollo https. Inoltre reindirizzerà anche il traffico proveniente dal dominio di terzo livello www e cloud verso il dominio di secondo livello. Inoltre sarà anche il dominio di default nel caso di richieste provenienti da domini non configurati.

Creiamo ora il file rediricter-ssl.conf che si occuperà di redirigere il traffico dai sottodomini non desiderati per il protocollo https.

<IfModule mod_ssl.c>
 	<VirtualHost _default_:443>
 		ServerName www.tuodominio.org
 		ServerAlias cloud.tuodominio.org
 		
 		ServerAdmin webmaster@localhost
 		#LogLevel info ssl:warn
 		DocumentRoot /var/www/html
 		
 		ErrorLog ${APACHE_LOG_DIR}/error.log
 		CustomLog ${APACHE_LOG_DIR}/access.log combined
 
 		#SSLEngine on
 
 		Include /etc/letsencrypt/options-ssl-apache.conf
 
 		SSLCertificateFile	/etc/letsencrypt/live/tuodominio.org/fullchain.pem
 		SSLCertificateKeyFile /etc/letsencrypt/live/tuodominio.org/privkey.pem
 
 		Redirect "/index.html" "<nowiki>https://tuodominio.org/</nowiki>"
 	</VirtualHost>
 </IfModule>

Infine creiamo nextcloud.conf che è il file di configurazione vero e proprio per Nextcloud.

<IfModule mod_ssl.c>
 	<VirtualHost _default_:443>
 		ServerAdmin webmaster@localhost
 		#LogLevel info ssl:warn
 		DocumentRoot /var/www/nextcloud
 
 		<Directory /var/www/nextcloud>
 			Options Indexes FollowSymLinks
 			AllowOverride All
 			Require all granted
 		</Directory>
 
 		ErrorLog ${APACHE_LOG_DIR}/error.log
 		CustomLog ${APACHE_LOG_DIR}/access.log combined
 
 		#SSLEngine on
 		
 		ServerName tuodominio.org
 		Include /etc/letsencrypt/options-ssl-apache.conf
 #		ServerAlias www.tuodominio.org
 #		ServerAlias cloud.tuodominio.org
 
 		SSLCertificateFile	/etc/letsencrypt/live/tuodominio.org/fullchain.pem
 		SSLCertificateKeyFile /etc/letsencrypt/live/tuodominio.org/privkey.pem
 
 		#Nextcloud
 		<IfModule mod_headers.c>
 			Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
 		</IfModule>
 		
 		<IfModule mod_rewrite.c>
 			RewriteEngine on
 			RewriteCond %{HTTP_HOST} ^www.tuodominio.org [NC]
 			RewriteRule ^(.*)$ <nowiki>https://tuodominio.org/$1</nowiki> [L,R=301]
 			RewriteCond %{HTTP_HOST} ^cloud.tuodominio.org [NC]
                         RewriteRule ^(.*)$ <nowiki>https://tuodominio.org/$1</nowiki> [L,R=301]
 		</IfModule>
                 <IfModule mod_php7.c>
                         php_value mbstring.func_overload 0
                         php_value default_charset 'UTF-8'
                         php_value output_buffering 0
                         php_value memory_limit 512M
                         php_value post_max_size 1G
                         php_value upload_max_filesize 1G
                </IfModule>
 </VirtualHost>
 </IfModule>

Questi virtualhost sono configurati per accettare la connessione su tuodominio.org e reindirizzare su tuodominio.org tutte le connessioni provenienti anche da altri sottodomini. Se non avete creato sottodomini potete anche cancellare quella parte di reindirizzamento. Comunque lasciate il reindirizzamento per www perché necessario.

Ovviamente dovete modificare tuodominio.org con il nome del vostro dominio.

Ora i virtualhost sono disabilitati, dovrete abilitarli con

a2ensite rediricter.conf rediricter-ssl.conf nextcloud.conf

Al contempo disabilitate i siti di default con

a2dissite 000-default.conf default-ssl.conf

Richiesta dei certificati

Ovviamente questo virtualhost per il momento non funzionerà, infatti prevede sia abilitato ssl. Pertanto è giunto il momento di richiedere i certificati ssl con certbot!

certbot certonly --standalone --pre-hook "service apache2 stop" --post-hook "service apache2 start"

Seguite le istruzioni a schermo. Per funzionare ovviamente il dominio deve essere correttamente configurato e la porta 80 deve essere correttamente raggiungibile. Configurate ora per tutti i domini che vi interessano. Inserite per primo il dominio di secondolivello (nell’esempio tuodominio.org) e poi tutti i domini di terzo livello (come www.tuodominio.org). È necessario che inseriate tutti i sottodomini nella stessa richiesta in modo da avere un certificato unico per tutti.

Certbot provvederà anche autonomamente all’auto rinnovo del certificato e al riavvio di apache2.

Installazione di Nextcloud

Pagina di installazione di nextcloud
Pagina di installazione di nextcloud

Fatto ciò potrete ora collegarvi al vostro dominio e vi troverete la pagina di Nextcloud pronta ad accettare una nuova installazione. Assicuratevi di inserire correttamente il nome del database, della password e come Data folder selezionate la directory che abbiamo creato appositamente, cioè /mnt/data/nextcloud. Bene, abbiamo finito! Avrete ora il vostro servizio di Cloud auto hostato personale. Non vi resta che ultimare le vostre personalizzazioni, installando applicazioni aggiuntive, come l’ottima stuite Collabora Online che altro non è che LibreOffice utilizzabile da browser (come google documents).

Selezione del lavoro in background
Selezione del lavoro in background

Inoltre è conveniente che configuriate cron per far eseguire i lavori periodici in maniera indipendente dalla navigazione sul browser. Per fare questo dovrete impostare dalle impostazioni e poi impostazioni di base di NextCloud di eseguire i lavori con cron e poi digitare da terminale

sudo -u www-data crontab -e

e impostare

*/5 * * * * php -f /var/www/nextcloud/cron.php --define apc.enable_cli=1

In questo modo farete eseguire ogni 5 minuti i task automatici.

Non dimenticate di installare sui vostri dispositivi i client di Nextcloud! Grazie a questi programmi potrete attivare la sincronizzazione automatica di tutti i vostri dispositivi (mobile e desktop) e visualizzare da browser (ed eventualmente ripristinare) le versioni dei file.

Configurazione dominio dinamico dyndns

Nella prima di configurazione del certificato di sicurezza abbiamo già configurato il domino per puntare al server. Dal momento che però questa guida si occupa di un NAS casalingo è molto probabile che voi abbiate un contratto con indirizzo IP dinamico (se avete un dominio statico questa parte può essere saltata). Questo comporta che in caso di riavvio del router o di una rinegoziazione della connessione con il vostro provider il vostro IP possa cambiare rendendo irraggiungibile il vostro NAS fino a che non aggiorniate l’indirizzo IP dal gestore DNS. Questo non è accettabile per un ambiente di produzione.

Selezione DNS
Selezione DNS

Nel caso abbiate seguito il mio suggerimento e stiate utilizzando google domains accedete alla pagina di configurazione del vostro dominio e una volta selezionato andate su DNS

Configurazione dei DNS sintetici su google DNS
Configurazione dei DNS sintetici su google DNS

Una volta fatto questo cancellate ogni configurazione dei DNS, dopo di che cliccate su “Record sintetici” e configurate il vostro DNS dinamico.

Configurate il sottodominio “@”.tuodominio.org e generate le credenziali Nome utente e password.

Nella voce “Record di risorse personalizzati” create un cname per “www” per il vostro dominio. Se lo desiderate questa può essere l’occasione per altri sottodomini.

Fatto questo accediamo tramite ssh al nostro NAS e installiamo ddclient con

apt-get install ddclient

Per maggiori informazioni potete consultare l’ottima guida sul nostro wiki.

/etc/default/ddclient

run_ipup="false"
run_daemon="true"

/etc/ddclient.conf

ssl=yes
use=web
protocol=googledomains
login=LOGIN_TOKEN
password=PASSWORD
iltuodominio

A questo punto non vi resta che riavviare ddclient con

service ddclient restart

Configurazione UPS per l'auto shutdown e mail di notifica

Se non avete un UPS APC questa parte della guida può essere saltata, infati serve un UPS compatibile, in particolare quello utilizzato per il nostro test è un APC Back-UPS BX700U-GR. Se vi interessa potrete trovarlo su Amazon.it al seguente indirizzo https://amzn.to/3jbFL0E.

La compatibilità è garantita con tutti gli UPS della APC dotati di interfaccia USB. Vi servirà anche un cavo USB da tipo A a tipo B.

Collegate l’alimentazione del computer e del router all’USP (si, anche il router, altrimenti perderete la connessione in caso di mancanza di rete e non potrete ricevere le notifiche) e il cavo USB all’UPS e al NAS.

A questo punto collegatevi via SSH al vostro NAS.

Configurazione apcupsd

Per prima cosa installate apcupsd con

apt-get install apcupsd

Aprite il file /etc/apcupsd/apcupsd.conf

Modificate le seguenti voci (dove al posto di nome_ups potrete inserire il nome che più vi aggrada da dare all’UPS che però deve essere inferiore agli 8 caratteri e non deve contenere spazi).

UPSNAME nome_ups

UPSCABLE usb

UPSTYPE usb

#DEVICE /dev/TTySx

Vi ricordo che se utilizzate l’editor nano potrete cercare all’interno del file tramite la combinazione control+w.

Ci sono molte altre possibilità di personalizzazione, come ad esempio si può impostare a quale percentuale o dopo quanto tempo residuo stimato il vostro NAS doverà avviare lo shutdown. Comunque solitamente i parametri di default sono sufficienti per un corretto funzionamento, pertanto non entreremo nel merito in questa sede (per informazioni più dettagliate potrete guardare la nostra ottima guida sul wiki).

Ora riavviate il demone con

systemctl restart apcupsd

Potrete verificare che il vostro UPS sia letto correttamente con

apcaccess

e che il demone sia correttamente avviato con

systemctl status apcupsd

Avete finito, ora non resta che configurare il server mail per ricevere le notifiche.

Configurazione del server mail

Per prima cosa modificate il file /etc/aliases e ridirigete tutta la posta dell’utente root e del vostro utente all’indirizzo di posta personale aggiungendo (e modificando a dovere)

root: tuonomeutente

tuonomeutente: tuamail@dominio.com

A questo punto bisogna riconfigurare exim4 per fare sì che effettivamente invii la posta al di fuori del vostro computer.

La configurazione del server di posta che ho scelto è standalone. Cioè il server invierà direttamente la posta. Questa scelta ha il vantaggio di non doversi preoccupare di configurare account per l’invio della posta, ma se non configurate opportunamente i reverse DNS avrete la certezza che la vostra posta sarà inviata nello SPAM. Far configurare i reverse DNS su un indirizzo IP dinamico è impossibile, però non è un grande problema. Infatti potrete configurare il vostro indirizzo personale dove riceverete le mail per non mandare mai in SPAM la posta proveniente dal vostro server.

Per prima cosa andata nella pagina di configurazione dei DNS e configurate un record di tipo MX come

10 tuodominio.com

dove tuodominio.com è il dominio che punta al NAS.

Inoltre create un record txt per la configurazione di SPF relativamente al vostro dominio contenente

“v=spf1 mx a ?all”

Ricordatevi di aprire la porta 25 del router.

A questo punto installiamo e configuriamo exim4 con

apt-get install exim4

e poi diamo

dpkg-reconfigure exim4-config

Abbiamo finito. Il server di posta è configurato. Ovviamente questa è una configurazione veramente base, non possiamo inviare posta dall’esterno, non possiamo ricevere davvero posta e tutta la posta ricevuta ci verrà indirizzata all’indirizzo di posta specificato nel file alias prima.

Però era quello che volevamo, cioè semplicemente ricevere le notifiche in caso di blackout (o altri tipi di notifiche come un fallimento dei drive individuato da smartmontools).

Configurazione del client di posta per ignorare la SPAM

Come accennato precedentemente con questa configurazione praticamente tutta la posta che inviamo sarà girata nella SPAM. Bisogna configurare il provider di posta per accettarla comunque. Per esempio in gmail è sufficiente andare sulle impostazioni

Impostazioni nell'interfaccia di gmail
Impostazioni nell'interfaccia di gmail

e poi andare su Filtri e indirizzi bloccati, scegliete il vostro dominio

Filtri e indirizzi gmail
Filtri e indirizzi gmail

Crea nuovo filtro

Creazione nuovo filtro gmail
Creazione nuovo filtro gmail

cliccate su Crea filtro e poi selezionate

Impostazioni del filtro

A questo punto una volta cliccato su Crea filtro avete finito! Riceverete tempestivamente tutte le email nella casella selezionata. In particolare in mancanza di tensione riceverete una mail da root@tuodominio.com con oggetto hostname UPS nome_ups Power Failure !!! contenente tutte le statistiche di vostro interesse.

Inoltre, nel caso dovesse tornare la tensione prima dello scattare della soglia di shutdown, vi verrà notificato l’eventuale ritorno della tensione con una mail con oggetto hostname UPS nome_ups Power has returned.

Sistema autoamtico di backup con rsnapshot

Rsnapshot è un un software in grado di realizzare snapshot del disco, cioè è in grado di memorizzare delle istantanee. Fa un massiccio utilizzo di hard link in modo da risparmiare molto spazio su disco, in pratica il file viene memorizzato una sola volta e se lo snapshot successivo contiene ancora il medesimo file non modificato non viene richiesta ulteriore memoria sul disco.

Grazie agli hard link però vi ritroverete ogni snapshot come una differente directory che contiene l’istantanea del disco esattamente come quando è stato fatto, questo significa che il ripristino di un backup sarà semplice quanto copiare una directory!

Configurazione dei dischi di backup

Potrete configurare il disco di backup come preferite, nell’ottica di questa serie di articoli sul NAS definitico con Debian e Nextcloud andremo a configurare il disco di backup con LVM.

Ipotizziamo che il disco destinato al backup sia /dev/sdc

Cancelliamo tutto il contenuto del disco con

wipefs -a /dev/sdc

A questo punto partizioniamo il volume con

cfdisk /dev/sdc

Selezionando come schema del partizionamento GPT creiamo un’unica partizione che copra l’intero disco e selezioniamo come tipo Linux LVM.

A questo punto creiamo con il disco un physical volume con

pvcreate /dev/sdc1

e aggiungiamolo al gruppo dei dischi HDD per il backup

vgcreate HDD /dev/sdc1

creiamo il logical volume autobackup

lvcreate -l 100%FREE -n autobackup HDD /dev/sdc1

creiamo il file system senza riservare spazio per root

mkfs.ext4 -m 0 /dev/HDD/autobackup

creiamo la directory di mount

mkdir /mnt/autobackup

e aggiungiamo la seguente riga in /etc/fstab

/dev/mapper/HDD-autobackup /mnt/autobackup ext4 defaults,nofail 0 1

montiamo i dispositivi in fstab con

mount -a

Verifichiamo che il dispositivo sia effettivamente montato con

mount | grep /mnt

infatti, se avremo fatto un errore e il dispositivo non è correttamente montato effettueremo il backup sul disco principale esaurendo rapidamente tutto lo spazio disponibile.

Configurazione di rsnapshot

Prima di iniziare la configurazione di rsnapshot è necessario fare una particolare premessa, altrimenti si andrà incontro a numerosi errori difficili da risolvere. Nel file di configurazione di rsnapshot gli spazi non sono validi per separare le variabili di configurazione è necessario utilizzare le tabulazioni.

Modifichiamo il file di configurazione /etc/rsnapshot.conf

Modifichiamo la snapshot_root come segue snapshot_root /mnt/autobackup/rsnapshot/ Poi andiamo sotto dove sono specificati gli intervalli di backup. Commentiamo tutta la parte dove è definito il backup di tipo alpha, beta, gamma e delta e inseriamo subito prima

#retain	hourly	24
retain	daily	7
retain	weekly	4
retain	monthly	12

In questo modo rsnapshot terrà un backup al giorno per l’ultima settimana, uno a settimana per l’ultima settimana e un backup al mese nell’ultimo anno.

In fondo nella parte riguardante i BACKUP POINTS commentate tutto quello che è stato scritto di default e aggiungete i punti di backup da tenere. Inoltre settiamo uno script aggiuntivo (che andremo a creare in seguito) per effettuare il backup del database mysql.

backup	/home/		localhost/
backup	/etc/		localhost/
backup	/usr/local/	localhost/
backup	/root/		localhost/
backup	/var/www/	localhost/
backup	/mnt/data/	localhost/
backup_script	/usr/local/bin/rs-mysql	localhost/mysqldump/

Configurazione di script aggiuntivi

Creiamo un file /usr/local/bin/rs-mysql contenente

#!/bin/bash
/usr/bin/mysqldump --single-transaction "d_nextcloud" > "nextcloud.sql"
gzip nextcloud.sql
/bin/chmod 600 nextcloud.sql.gz

nel caso abbiate settato la password di root dovrete aggiungere in cima al file

export MYSQL_PWD=password

e aggiungere l’opzione -p a mysqldump

Ovviamente diamo i permessi di esecuzione per root (e impediamo la lettura ad altri utenti visto che lo script ha una password memorizzata) chmod 700 /usr/local/bin/rs-mysql Inoltre creiamo un ulteriore file per la manutenzione ordinaria /usr/local/bin/rs-daily

#!/bin/bash
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on
/usr/bin/rsnapshot daily
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off

e aggiungiamo i permessi di esecuzione con chmod +x /usr/local/bin/rs-daily

Configurazione crontab

Configuriamo cron per eseguire i backup con crontab -e

0 6 * * * /usr/local/bin/rs-daily > /dev/null
0 3 * * 1 /usr/bin/rsnapshot weekly
0 0 1 * * /usr/bin/rsnapshot monthly

In questo modo verrà eseguito ogni giorno il backup giornaliero alle 6 si mattina, ogni lunedì alle 3 di notte il backup settimanale e ogni primo del mese all’1 un backup mensile.

L’unico backup eseguito offline è quello giornaliero, infatti la rotazione dei backup settimanali e mensili avviene solamente sui backup giornalieri. Potrete modificare a piacimento gli orari di esecuzione, sarebbe meglio eseguire il backup giornaliero per ultimo per avere un giorno in più di backup sulla rotazione.

Comunque il backup settimanale e mensile è davvero veloce ad essere eseguito (si tratta solamente di spostare hard link), mentre il più lento è il giornaliero che deve eseguire un intero rsync e il dump del database, comunque è consigliabile lasciare un minimo di tempo (almeno 5 minuti) tra un backup e il successivo per evitare conflitti temporali.

Il backup del backup offline

È inoltre importante ogni tanto (quando ci si ricorda almeno), eseguire un backup del backup su un supporto offline. Infatti questo backup automatico è sempre accessibile dal dispositivo, inoltre il disco di backup è interno al NAS stesso.

È una buona precauzione creare un promemoria e copiare il backup eseguito, magari tramite rsync su un hard drive esterno (da tenere lontano dal nas), oppure su un dispositivo remoto.

In questo modo avremo una salvaguardia anche spaziale dei nostri dati, infatti un backup interno sempre disponibile non ci rende immuni da furti del NAS, incendi nella stanza o altre calamità naturali, ma anche più semplicemente di una nostra disattenzione e un danno causato da un rm di troppo.

Per come eseguire questo ultimo punto sta a voi (anche in funzione di quanto capiente è il dispositivo esterno), se volete mantenere lo storico o semplicemente l’ultimo snapshot.

Io attualmente sto utilizzando rsync per copiare il backup su un disco USB esterno, per farlo utilizzo rsync con

rsync -aAxH --delete /mnt/autobackup/rsnapshot/ /mnt/usb/rsnapshot/

Dove /mnt/usb/rsnapshot/ è la directory nel disco esterno montato in /mnt/usb/. L’attributo -H serve a mantenere gli hard link intatti e non sprecare il lavoro di risparmio di spazio prodotto da rsnapshot.

Ripristino del backup

Nel caso dobbiate ripristinare il backup la procedura è piuttosto semplice. Per prima cosa stoppate apache2. Per quanto riguarda i dati è sufficiente dare un

rsync -aAx --delete /directory/backup /directory/da/ripristinare

Solitamente è sufficiente ripristinare solamente la directory dei dati e quella di Nextcloud.

Mentre per quanto riguarda il database collegatevi da root ad ssh lanciando mysql (o mysql -p se avete configurato la password di mysql).

Cancellate il database e ricreatelo con

DROP DATABASE d_nextcloud;
CREATE DATABASE d_nextcloud;

A questo punto ripristinate il backup dal file sql che troverete compresso in /mnt/autobackup/daily.x/localhost/mysqldump/nextcloud.sql.gz. Copiatelo nella vostra home ed estraetelo con

gzip -d nextcloud.sql.gz

A questo punto ripristinatelo con

mysql d_nextcloud < nextcloud.sql

Ora potete riavviare il webserver e avrete il backup ripristinato.

Importare file esterni su Nextcloud

Sebbene sia sempre possibile importare i file semplicemente trascinando le directory nell’interfaccia web è possibile che si abbia un grande archivio a disposizione. Magari parecchie centinaia di GB e quindi si vorrebbe importare i dati direttamente da hard drive.

Per farlo è sufficiente posizionarsi nella directory destinata ai file con

/mnt/data/www/nextcloud/data/tuonomeutente/files/

A questo punto copiare i dati all’interno con un cp -r /origine/ ./

Dare i giusti permessi ai files con i primi 3 comandi, mentre con gli ultimi due facciamo digerire a nextcloud i files appena aggiunti (altrimenti non saranno visibili dall’interfaccia WEB).

chown -R www-data:www-data ./
find . -type d -exec chmod 755 {} +
find . -type f -exec chmod 644 {} +
cd /var/www/nextcloud/
sudo -u www-data php occ files:scan --all

Aggiornare le applicazioni di Nextcloud

Per aggiornare le applicazioni nextcloud è sufficiente dare da terminale

cd /var/www/nextcloud/
sudo -u www-data php occ app:update --all
sudo -u www-data php occ upgrade

L’ultimo passaggio non è sempre necessario, ma alcune volte l’aggiornamento di applicativi (quali mail) richiedono di mettere mano al database.

Aggiornare Nextcloud

Per aggiornare una minor version di Nextcloud è sufficiente dare

cd /var/www/nextcloud/
sudo -u www-data php updater/updater.phar
sudo -u www-data php occ upgrade

Invece per aggiornare una major version bisogna andare (dall’interfaccia web) su Impostazioni, Riepilogo e impostare come canale di aggiornamento Beta

A questo punto fornire i comandi di cui sopra. Una volta completato l’aggiornamento ripristinare la versione Stabile.

Ok, questo è quanto per la manutenzione ordinaria, per informazioni più specifiche è sempre bene fare riferimento al manuale d’uso.



Guida scritta da: marcomg Swirl-auth20.png Debianized 20%
Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized