Il mio cloud? E’ a casa mia.

Credo poco nelle qualità irrinunciabili del cloud e da alcuni mesi ne ho abbandonato quasi del tutto l’utilizzo. Il cloud, d’altronde, è il computer di qualcun altro.

Il mio non è un tentativo di fuga dalla tecnologia quanto un uso più intelligente ed educato della stessa. Come dico da tempo, non voglio vivere più come un prodotto.

Il 90% del furto dei dati nel mondo del lavoro è legato al cloud secondo un report di Kaspersky.
Credete ancora che il cloud sia la soluzione a tutto?

Il mondo è cambiato da quando avevamo connessioni a 56kbps. Il digital divide in Italia esiste ancora, ma se siete tra quelli che hanno una linea dati sufficientemente capace (io ho una 30/3Mbps, nulla di fantascientifico) allora potreste considerare la mia soluzione.

Negli ultimi 5-6 anni siamo stati bombardati e incentivati all’uso del cloud con una narrativa abbastanza standard «E’ fondamentale per la resilienza dei dati, velocizza il lavoro, conserva i dati al sicuro» e così via.

I vantaggi del cloud.

Per eliminare il cloud bisogna dunque chiedersi quali siano i reali vantaggi al netto del marketing. Solitamente le funzioni apprezzate sono due:

  1. disponibilità dei file indipendente dalla propria posizione
  2. garanzia che i dati non vadano persi

Se osservate attentamente però entrambe le qualità hanno degli aspetti critici.

Esternalizzare l’hosting dei dati, ha un serio impatto sulla sicurezza e la riservatezza. Inoltre i dati possono potenzialmente venire dispersi: hacking a sistemi “cloud”, social engineering verso l’utente o semplice data-mining da parte del provider [1] sono alcuni dei limiti del fantasmagorico “cloud”.

A questo ovviamente va aggiunto il fatto che il cloud non è gratis. Per un uso intensivo infatti i classici piani gratuiti diventano molto rapidamente stretti e scomodi.

Con cosa ho sostituito il cloud?

La soluzione messa in piedi non è alla portata di tutti, ma copre le peculiarità del cloud senza grosse limitazioni. Non ho intenzione di fare una noiosissima guida alla sua configurazione (sono disponibile a dare una mano nei commenti) ma la soluzione che segue può essere implementata solo se non storcerete il naso leggendo certe parole.

Per tutti gli altri, il mio consiglio è quello di tenere d’occhio Cubbit, un progetto semi-italiano di tutto rispetto.

Il cuore del mio “cloud” è l’HP MicroServer comprato mesi fa sul quale ho installato FreeNAS.

E l’accessibilità dall’esterno?

So che aprendo qualche porta sul router potevo rendere la soluzione ancora più user-friendly ma preferisco mantenere tutti i servizi interni alla mia rete protetti da uno scudo ben robusto. Pertanto ho configurato una VPN (OpenVPN + DuckDNS) sul mio EdgeRouter. In questo modo la rete di casa mia è accessibile in maniera comoda e sicura dall’esterno e tutti i servizi con cui voglio dialogare “non escono da casa”.

Si ma… l’esperienza d’uso?

Il cloud cui siamo abituati, è costituito da un’interfaccia web con un file manager (Dropbox, Google Drive, One Drive e così via sono tutti simili a meno di personalizzazioni estetiche).

Io ho risolto installando sul NAS Nextcloud + Elasticsearch (per avere l’indicizzazione dei contenuti dei file). Nextcloud è una piattaforma di file-hosting opensourceDropbox style“. Per intenderci, avrete un client da installare sul desktop, una app per i vostri dispositivi mobili e così via.

Ok, e il disaster-recovery? La disponibilità dei dati?

La cartella nextcloud del mio MacBook viene tenuta in sync con il mio NAS. Se l’hard disk del MacBook dovesse morire, avrei i dati sul NAS. Se dovesse morire il NAS, avrei i dati sul MacBook.

La ridondanza dei dischi e l’uso di ZFS come file system sul NAS però non coprivano tutti gli scenari di disaster-recovery. Un furto in casa o un incendio tecnicamente potrebbero far svanire rapidamente i miei archivi (come direbbe Elon Musk, “rapid unplanned disassembly“) così con un amico ho messo in piedi una VPN site-to-site (sempre sul mio EdgeRouter che in questo caso mostra la flessibilità del device rispetto ad un classico router consumer) ed ho configurato sul NAS un backup giornaliero cifrato dei dati del mio NAS (cron + duplicity).

Duplicity prima di inviare i dati, fa una cifratura on-the-fly degli stessi usando GPG. In pratica, sebbene abbia fiducia nell’amico, preferivo non perdere la riservatezza dei miei dati. [2]

In math we trust.

Anonymous cyptographer

Per ulteriore ridondanza ho impostato un ulteriore backup cifrato via rsync su Dropbox. In questo modo Dropbox non potrà collezionare né dati d’uso (non ho le app di Dropbox, né effettuo login in mobilità), né informazioni sui miei file (tutto ciò che vede sono dei file di cui anche il nome è composto da una stringa randomica illegibile).

Perché Dropbox? Semplice pigrizia. 🙂 L’idea è quella di farne a meno tra un po’ ma in fase di avviamento volevo esser certo di avere “una copia cifrata in più“.

E le performance?

Le performance sono limitate dalla capacità della vostra linea. Con una linea FTTC o FTTH raggiungerete certamente prestazioni migliori ma posso assicurarvi che 3Mbit sono sufficienti a fare video streaming tranquillamente.

Un film in streaming attraverso Plex (installato sul NAS) mentre ero fuori casa

L’uso tipico che faccio del “cloud” prevede upload o download di documenti di pochi Mb che richiedono pochi istanti per esser trasferiti.

Potrei raccontarvi di tutte le feature aggiuntive di nextcloud, ma quello magari lo riserviamo ad un prossimo capitolo.

Riprendiamoci i nostri dati.

Emanuele

[1] Google ad esempio, riguardo al suo Google Drive, scrive che scansiona tutto quello che caricate al fine di «fornirti funzionalità del prodotto personalizzate, come risultati di ricerca personalizzati, pubblicità su misura, rilevamento spam e malware».

[2] Nota per i nerd: il backup iniziale (circa 350GB) ha impiegato poco meno di 20 giorni. Per testare la robustezza della soluzione abbiamo riavviato più volte router, NAS, VPN… Duplicity ha sempre ripreso le sue attività senza batter ciglio. I backup incrementali successivi dipendono esclusivamente dalle modifiche che faccio sul mio (next)cloud ma si limitano tipicamente a pochi MB al giorno così i backup (schedulati in notturna) sono sempre rapidi e invisibili.

15 commenti » Scrivi un commento

  1. Adoro questi post di cui capisco solo gli articoli, le preposizioni e qualche nome.
    Mi aprono ad un mondo che non è il mio, ma che esiste.
    Per ora l’unico cloud della mia vita è al femminile e sono quelle belle nuvole che osservo ogni giorno variare nel cielo e nelle quali mi piace perdermi e svuotare la mente.
    Buona giornata, Manu!

  2. Fico!
    Io stavo valutando un opzione più light, con un raspberry che mi funge da Server VPN e vari nas dislocati tra casa e uffici del suocero.

    Valuterò acnhe la tua configurazione

    • Non sottovalutare – se posso dire la mia — la potenza di calcolo necessaria per la manipolazione dei dati. Quando è un trasferimento occasionale (tipo solo ricezione) va bene una CPU lenta. Ma se devi manipolare poi in qualche modo questi dati, allora la CPU ed il bus di sistema contano…

      {Ad esempio sono 4 giorni che sto spostando 10TB di roba all’interno di un QNAP da 8 dischi}

      • Essenzialmente dovrei “uplodare” file verso casa, ma la prima sincronizzazione dovrei farla di persona.

        Hai qualche dritta? Sono ancora in fase valutazione

        • eNIgmIsta, se la soluzione è robusta, vedrai che la prima sincronizzazione puoi farla da dove preferisci. Inizialmente, col mio amico, avevamo pensato di fare il first-run in locale, in modo da concludere il sync dei 350GB di dati (in un senso, altri 200GB nell’altro… dato che io ospito i suoi dati cifrati come lui fa coi miei) rapidamente. In realtà abbiamo preferito “testare” anche la capacità della connessione: «come reagirà Eolo o TIM quando faremo 500GB di scambio dati?». Oggi abbiamo la risposta e siamo soddisfatti. Certamente lo scambio è avvenuto più lentamente ma ci ha dato modo di testare tutto il resto: «cosa accade se cade la connessione? E cosa invece se riavvio il NAS? E cosa se si spegne duplicity mentre sta lavorando? E cosa se apro dei file mentre il backup è in marcia? E cosa se riavvio il router o il server VPN? E cosa accade se il sync è così lento che il prossimo cron schedule si avvia sopra il precedente?».
          Oggi sono convinto che la soluzione adottata possa funzionare perché ho una risposta chiara a tutte queste domande: l’infrastruttura ha superato il test in maniera silenziosa.
          Ciao,
          Emanuele

  3. Confermo. Le performance di un server VPN su Raspberry potrebbero non essere esaltanti ed eviterei di aggiungere colli di bottiglia software ai limiti fisici delle connessioni consumer italiane. Dato che non hai fretta, magari nel tuo “laboratorio” testa un po’ i limiti della tua configurazione prima di destinarla alla “produzione”.
    La mia configurazione nasce dall’idea che non volevo ritrovarmi a gestire manualmente:
    1. vari spazi dislocati
    2. la resilienza dei dati nei vari punti
    Nella mia soluzione tutto avviene in maniera invisibile e centralizzata. Io uso solo nextcloud (anche tramite l’app su iPhone o iPad) e l’infrastruttura fa il resto (ridondanza in locale, backup remoto e così via).
    Nextcloud inoltre permette di segnare file o cartelle come “disponibili offline” in modo da velocizzare incredibilmente l’accesso in mobilità a documenti consultati/utilizzati spesso (ad esempio la copia della carta d’identità che può tornare utile).
    Ciao,
    Emanuele

  4. Ciao, ottimo articolo!
    Hai mai avuto problemi di backup corrotti in fase di restore con Duplicity?
    Sto facendo delle prove, ho configurato Duplicity con una chiave RSA a 4096 bit, esporta il backup, ma quando faccio la prova di restore, gli MD5 dei file sono diversi, ed il file di test (in questo caso una foto), risulta non apribile in quanto corrotto.

    • Ciao Alessio, come effettui il restore? Utilizzi la funzione di restore di Duplicity o scarichi prima l’intero archivio e tenti poi la verifica degli MD5? Il restore di un file da Duplicity va fatto usando Duplicity stesso: prova a guardare il manuale qui http://duplicity.nongnu.org/vers7/duplicity.1.html
      Io ho appena provato a dare duplicity -t 15D --file-to-restore nextcloud.log "$REMOTE_SERVER" "/tmp/test_restore_nextcloud.log" e duplicity ha recuperato correttamente la versione del file di log di nextcloud di 15 giorni fa . Tieni presente che oltre il full-backup, tutti i successivi backup che fai sono incrementali, dunque per recuperare un file serve la sua storia intera e non semplicemente quanto salvato il giorno prima.
      Ciao,
      Emanuele

      • Ciao,
        a quanto pare utilizzavo una versione di duplicity buggata. Ho compilato l’ultima stable disponibile e ci ho montato sopra duply. Funziona perfettamente. Grazie!

        • Bene, son contento. La cosa bella è che – usando Duplicity – hai il versioning non solo su Nextcloud (che ti protegge già da alcuni scenari di perdita/corruzione dati) ma anche sul backup esterno: pensa ad esempio ad un ransomware che non attacca il tuo PC ma – addirittura – riesce ad avere accesso al server sul quale fai girare la tua istanza Nextcloud rendendo illeggibile non solo i file utente, ma anche il suo db.
          Ciao,
          Emanuele
          PS: su che macchina stai facendo girare il tutto?

  5. Sono d’accordo con te, grazie di avermi, finalmente, convinto a passare ad una soluzione self-hosted!

Rispondi a eNIgmIsta Annulla risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.