Apparso sul blog: "Broken links."
Prima di tutto: Non è facile.
Se quello di cui si ha bisogno è convenienza e ampio parcheggio, sarà difficile battere Google, se si vuole fare a meno di Google ed usare dei servizi simili ci vuole una buona motivazione ideale del perché farlo.
Qui parleremo di come sincronizzare un telefono Android e un Pc-server-di-casa.
Give me convenience or give me death!
In breve: Google non è gratis, offre il suo ottimo servizio in cambio dei dati dell'utente. Il business di google è la pubblicità, non la beneficenza. Se questo non è un problema, meglio continuare a usare Google e ad apprezzarne la convenienza. Se invece questo è un fastidio da risolvere, allora andiamo avanti. La Google suite offre dei servizi davvero ottimi: spazio per le foto, documenti condivisi, calendario, indirizziario, email, eccetera. Non è gratis, come docevamo il servizio si paga con i propri dati, che hanno un valore. Si tratta quindi di uno scambio che ognuno deve sentirsi libero di accettare valutandone coscientemente i pro e contro. I servizi "gratis" Non sono eterni né garantiti, difatti ad esempio Google Reader, il servizio di sincronizzazione Rss, che era davvero utilissimo, è stato chiuso e pazienza per chi lo usava e stica**i per chi ne era dipendente. Io ho usato Google reader, e so che chi non impara dalla storia è condannato a riviverla. Dunque sono sempre alla ricerca di sistemi alternativi per organizzare la mia vita digitale in modo quanto più possibile indipendente.
Quattro alternative:
-
Affidarsi a un servizio in cambio di dati (Google, Dropbox, eccetera). Pro: funziona ed non ha costi in denaro, zero fatica. Contro: perdita di privacy, le conseguenze a lungo termine sono imprevedibili.
-
Usare un servizio a pagamento (Gandi, Silent Circle, vboxx eccetera). Pro: funziona, zero fatica. Contro: costa soldi
-
Farsi da sé i propri servizi sul server di casa. Pro: hai pieno controllo su tutto. Contro: non è detto che funzioni, è fatica, costa la corrente elettrica.
-
Costruirsi una comunità in modo da ridurre i costi e la fatica. Non più il server di casa, ma il server del gruppo. Esistono community privacy-aware come Autistici e RiseUp da cui prendere esempio, e se quelle citate non offrono servizi SaaS, nessuno vieta di farti la tua comunità e avere una nuvola condivisa coi tuoi amici. Esci dalla stanzetta, frequenti gente, ti confronti, impari cose nuove e trovi la ragazza/o scoprendo che il SaaS è secondario alla tua vita. Pro: funziona, conosci gente interessante. Contro: nessuno
Selfhosting
Qui parleremo della parte server-di-casa, con i seguenti strumenti: Pc con GNU/Linux (Debian) e cellulare con Android.
Sono i miei appunti di viaggio, quanto più possibile ordinati, spero che siano utili a qualcuno.
Quello che voglio ottenere è un server di casa che offra gli stessi servizi di Google, anzi di più. Voglio sincronizzare i files tra Pc e telefonino, fare in modo che tutte le foto scattate dal telefonino vengano automagicamente caricate sul mio server di casa, voglio sincronizzare il calendario, l'indirizziario, voglio editare un file da qualsiasi computer mi trovi, voglio che i dati nel mio server siano crittografati, voglio accedere al server usando SSL, voglio usare il server per scambiare files cogli amici, voglio la scrittura condivisa con formattazione da ufficio, voglio il mio sync Rss, voglio che tutto sia bello bello bello e fruibile e facile da usare, voglio l'ampio parcheggio con privacy. voglio tutto e lo voglio ora. ecche diamine, siamo nel 2014.
Ehi dimenticavo: stai configurando Owncloud sul server per sincronizzare contatti, files e calendario con Android e quant'altro? Kudos! Complimenti!
Brevemente occorre:
- Installare F-Droid sul telefonino, che dà accesso a un repositorio di applicazioni libere.
- usare OwnCloud per sincronizzare i propri dati (pagando un provider o installandolo sulla propria macchina di casa)
Cominciamo col fare una Cloud personale, con un Pc, Debian e OwnCloud, per sincronizzare files, calendario e address book.
Avendo installato sul sistema di casa una Debian 7, procedo con l'installare OwnCloud
Comincio col diventare root, e farò molta attenzione a non spararmi nel piede.
sudo -s
Aggiungo al respositorio in /etc/apt/sources.list i sorgenti del software OwnCloud
deb http://download.opensuse.org/repositories/isv:ownCloud:community/Debian_7.0/ /
scarico la chiave pubblica di OwnCloud
wget http://download.opensuse.org/repositories/isv:ownCloud:community/Debian_7.0/Release.key
e la aggiungo al mio portachiavi
apt-key add - < Release.key
A questo punto installo OwnCloud
apt-get update ; apt-get install owncloud
Voglio collegarmi al mio server usando https, in modo da non far passare la password in plain text, per fare ciò dovrò abilitare https.
Abilito Apache a usare https
a2enmod rewrite
a2ensite headers
a2ensite default-ssl
a2enmod ssl
service apache2 restart
e riavvio Apache
service apache2 restart
Creo il mio certificato SSL
Dovrò anche avere un certificato SSL valido, escludo l'idea di comperarne uno e me lo faccio a mano.
Creo la directory dove terrò i miei certificati
mkdir /etc/apache2/ssl
Devo fare in modo che il certificato che vado a creare sia X.509v3, altrimenti Android si rifiuterà di usarlo.
Edito il file /usr/share/ssl-cert/ssleay.cnf
, cambiando
[ v3_req ]
basicConstraints=CA:FALSE
con
[ v3_req ]
basicConstraints=CA:TRUE
Bisogna che quando mi sarà richiesto dia come common name al mio certificato il site address, che d'ora in poi chiameremo: IP_SERVER, ossia qualcosa come server.org, altrimenti avrò problemi in seguito.
Procediamo con la creazione del certificato:
make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.crt
ora ricavo i files apache.key e apache.pem
cp /etc/apache2/ssl/apache.crt /etc/apache2/ssl/apache.pem
cp /etc/apache2/ssl/apache.crt /etc/apache2/ssl/apache.key
edito il file /etc/apache2/ssl/apache.pem
e lascia solo la parte da BEGIN CERTIFICATE ad END CERTIFICATE
edito il file /etc/apache2/ssl/apache.key
e lascia solo la parte da BEGIN PRIVATE KEY a END PRIVATE KEY
edito il file /etc/apache2/sites-enabled/default-ssl
e modifico le righe SSL per indirizzare Apache al certificato che
ho appena creato, in questo modo:
SSLCertificateFile /etc/apache2/ssl/apache.pem
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
Mi assicuro che il file apache.key non sia pubblicamente leggibile
chmod 600 /etc/apache2/ssl/apache.key
e riavvio apache
service apache2 restart
A questo punto posso con un browser visitare una pagina del mio server e constaterò che alle richieste https mi viene detto che il certificato non è sicuro, in quanto non è garantito da nessuna delle entità certificatorie, ma l'ho fatto io a manina e il mio browser non lo può sapere. Dunque accetto il certificato insicuro e procedo il mio cammino di indipendenza o morte canticchiando: Sono un ribelle mamma, degli Skiantos. Ed è subito pausa caffé.
OwnCloud Setup
Raggiungo owncloud a https://IP_SERVER/owncloud
e creo il primo utente amministratore, un nuovo gruppo (user) e gli utenti, tra cui me.
Installo anche sul telefonino OwnCloud e OwnCloud-Client sul Pc e potrò così sincronizzare file in allegria.
Esportare la chiave pubblica del certificato per importarla in Android
Con Android userò DavDroid, che sincronizzerà calendario e indirizziario col mio server permettendomi di non usare i server di Google. I contatti e gli eventi sincronizzati saranno comunque visibili usando le apps di google, al momento in cui scrivo si chiamano Calendar e People, ma potrei usare altre applicazioni, come ad esempio aCalendar o aCal.
Perché DavDroid possa collegarsi al mio server dovrà sapere che Android accetta il mio certificato, perché Android accetti, pur malvolentieri, il mio certificato, esso dovrà essere X.509v3.
Per pura fortuna (guarda che combinazione) il certificato che abbiamo creato era proprio X.509v3=TRUE
Dunque ora basta che lo esportiamo in formato DER e che lo salviamo in formato CER, in modo di fare contenti tutti. sia Android che DavDroid.
openssl x509 -in/etc/apache2/ssl/apache.pem -outform DER -out /etc/apache2/ssl/certificato-del-mio-server.cer
Ora posso copiare il certificato e importarlo nello smartphone, ad esempio usando scp per copiare certificato-del-mio-server.cer sul Desktop e poi copiarlo nella SDCard dello smartphone dopo averlo collegato via usb al Desktop. Ma potrei anche mettere il certificato-del-mio-server.cer sul web e visitarlo col browser del cellulare. O anche potrei usare OwnCloud e sincronizzare il file. Importante è che metta il file certificato-del-mio-server.cer nella root della SDcard storage, non in una sottocartella.
A questo punto importo il certificato in Android, dal telefonino trovo i settaggi:
Settings / Security / Credential storage: "Install from device storage".
Android mi chiederà se sono sicuro sicuro e rimarrà sempre un pò scettico sulla bontà delle mie azioni, pazienza. Non si possono fare contenti tutti.
Questo è come Android vede l'importazione del mio certificato. E' inaudito incredibile assurdo
perlomeno curioso che non si possa in pieno possesso delle proprie facoltà dichiarare una volta per tutte che è ok, non
si deve preoccupare, l'ho fatto io il certificato. Non si può, il mio telefonino, mio nel senso che l'ho comperato e
potrei farne ciò che voglio in teoria, è petulante e tremebondo e ci tiene a stare all'erta. Ora, è vero che se qualcuno
mi installasse di nascosto un certificato sul telefonino è bene farmelo sapere, ma se qualcuno mette le mani sul mio
telefonino fino a quel punto il messaggino che mi avvisa è l'ultimo dei miei problemi. Il mio Android sogna un wallet
garden e mi ricorderà le conseguenze delle mie azioni ad ogni riavvio e per levare il fastidioso avviso dovrò diventare
root sul telefonino e mergiare il mio certificato a quelli ufficiali. Per il senso di questo howto, lo teniamo come un
problema estetico.
Ora ho il mio certificato tra gli user trusted certificates, e posso configurare DavDroid.
Installare e configurare DavDroid
Per installare DavDroid userò F-Droid e lo punterò rispettivamente per calendario e contatti a questi indirizzi, entrambi rintracciabili dall'interfaccia di OwnCloud:
https://IP_SERVER/owncloud/remote.php/caldav/
https://IP_SERVER/owncloud/remote.php/carddav/addressbooks/USERNAME/contacts
Sync calendario e contatti da Desktop
Evolution funziona per calendario e task, ma non per i contatti.
Non è chiaro ma non accetta un CardDav address, vuole un WebDav address, diamine glielo dico ma non funziona uguale. Aspé, ora funziona.. Al riavvio se lo scorda.. Ok, non ci tengo per il momento.
Userò allora IceDove (aka Thunderbird per i simpatici amici che usano Mac o Win)
Configurare IceDove con Sogo
anzi no, visto che Sogo molti lamentano che non funziona, e IceDove verrà dismesso.
Faccio comunque la prova, installo IceOwl plugin per il calendario con apt-get e configuro il tutto e funziona, Questo è l'indirizzo che devo dare in pasto a IceOwl
https://IP_SERVER/owncloud/remote.php/caldav/calendars/USERNAME/defaultcalendar
Finisco col preferire usare solo l'interfaccia di OwnCloud quando non sono sul telefonino e fare un backup direttamente dal server senza passare fuori dalla rete, usando questo script suggerito da Tanghus che dovrò editare per adattarlo alla mia configurazione.
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Setup Finale
Sarebbe molto meglio ricominciare una vita digitale da capo, a questo punto, piuttosto che pretendere di esportare il calendario e i contatti da Google e sdegnarsi se non dovesse andare tutto perfetto. Come si è visto prima, Android è scettico su quello che stai facendo. Sarebbe molto meglio cominciare a immettere dati senza pretendere di portarsi appresso il passato.. No eh? Passiamo allora al:
Calendar Setup
- Esporto il cal.ics da google attraverso l'interfaccia web e lo importo in OwnCloud, funziona.
- Stacco la sincronizzazione dal telefono per il calendario di google
- Dico al calendar viewer di visualizzare solo il mio calendario.
Contact Setup
- Esporto i contatti in un contact.vcf file direttamente dal telefonino
- Trasferisco contact.vcf sul Pc
- Disattivo la sinconizzazione per i contatti di google, attraverso la app People
- Importo contact.vcf in owncloud
- Attivo il sync da davdroid
- Una volta che tutto è ok, cancello i contatti da google via web
Nota: se hai scritto molto nelle note, sappi che verrà salvata solo una riga circa, inoltre si dimenticherà tutti i compleanni di cui non sia impostato anche l'anno di nascita. (si, lo so, infatti li scrivevi nelle note..) e infine si scorderà tutti i campi proprietari di Android, (ogni evento eccetto il compleanno). In compenso importerà tutti i campi regolari compresa la fotina. A seconda del personale setup di ognuno, direi che funziona bene.
Intervallo di sincronizzazione
Contatti ed eventi vengono sincronizzati automaticamente una volta al giorno, oppure ogni volta che un contatto o un evento viene cambiato, o quando forzi un sync dalla app Calendar o da Settings/ Account/ DAVdroid.
Considerazione finale
I miei contatti provengono dal Palm Pilot, hanno fatto una lunga strada e sono passati da Google solo perché non trovai un altro modo per convertirli in un formato accettabile per WebOS, che usavo nel mio precedente telefonino. Sono più che lieto di riportarli finalmente a una dimensione privata.