Broken links

To content | To menu | To search

Wednesday 12 March 2014

Fuga da Google

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, 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


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 coll'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

Abilito Apache a usare https

Voglio collegarmi al mio server usando https, in modo da non far passare la password in plain text, per fare ciò dovrò abilitare 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.

scetticoandroid.jpg

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.

#!/bin/bash

DATE=`date +"%Y-%m-%d"`

wget --no-check-certificate --auth-no-challenge --no-clobber --http-user=USERNAME --http-password=PASSWORD \
 -O $HOME/backup/pimdata/contacts-$DATE.vcf "https://192.168.1.3/owncloud/index.php/apps/contacts/addressbook/local/2/export" ;
gzip -f $HOME/backup/pimdata/contacts-$DATE.vcf ;

wget --no-check-certificate --auth-no-challenge --no-clobber --http-user=USERNAME --http-password=PASSWORD \
  -O $HOME/backup/pimdata/calendar-$DATE.ics "https://192.168.1.3/owncloud/index.php/apps/calendar/export.php?calid=2" ;
gzip -f $HOME/backup/pimdata/calendar-$DATE.ics

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.

Friday 29 March 2013

Debian squeeze on X60 Lenovo Thinkpad

Mi hanno regalato (grazie!) un vecchio Thinkpad senza batteria.
ThinkPad Lenovo X60, 120GB HD, 2GB RAM, GenuineIntel Core Duo T2400 1.83Ghz, US keyboard

Bella macchina leggera e simpatica. Non avendo un un cd drive, devo installare il sistema operativo via chiavetta Usb.
Prendo una chiavetta da almeno 256Mb (nel mio caso userò una Kingston da 2Gb) e ci butto dentro un bootloader e un sistema operativo, scelgo Debian 6.0 aka "Squeeze". E riavvio dalla chiavetta (che nel mio caso vedo in /dev/sdb1).


$ sudo -s
# umount /dev/sdb1
# wget ftp://ftp.debian.org/debian/dists/stable/main/installer-i386/current/images/hd-media/boot.img.gz
# zcat boot.img.gz > /dev/sdb1
# mount /dev/sdb1 /mnt
# wget http://cdimage.debian.org/debian-cd/current/i386/iso-cd/debian-6.0.7-i386-netinst.iso
# cp debian-6.0.7-i386-netinst.iso /mnt/
# shutdown -r now

Parte l'installer, devo usare un cavo di rete perché i driver per la scheda wireless non sono disponibili fino a che non avrò completato l'installazione

Audio in/out funziona, Il monitor prende 1024x768 60Mhz. Tutto ok OOTB.

WIreless
attivo il repositorio non-free e installo i driver iwlwifi
apt-get install firmwire-iwlwifi wireless-tools wpasupplicant

Alcuni appunti di viaggio:

Illuminazione tastiera: FN+PGUP
Luminosità schermo: FN+Bottoni in alto-dx

Installo Gnome-Do e passa la paura del cursorino malefico in mezzo alla tastiera

Alcune scorciatorie da tastiera generiche GNU/Linux:

CTRL-ALT-F5 mi manda sulla console n. 5 (ad es.)
CTRL-ALT-L lock screen
CTRL-ALT-DELETE log out
ALT-F2 run application
ALT-F1 menu
ALT-SPACE window menu
ALT-F10 toggle maximization state
ALT-F4 close window
ALT-TAB move between windows
CTRL-ALT-D hide windows and show desktop
CTRl-ALT-LEFT switch to workspace and the left

Software

Per installare Cinelerra aggiungo il repositorio multimedia in /etc/apt/sources
deb http://www.debian-multimedia.org/ stable main non-free
Mixxx va installato a mano
Skype repos: deb http://download.skype.com/linux/repos/debian/ stable non-free
Dropbox repos: deb http://linux.dropbox.com/debian squeeze main
Backport repos: http://backports.debian.org/debian-backports squeeze-backports main contrib non-free

Accentate
ogni tanto ho bisogno di usare le accentate, elenco qui le scorciatoie di tastiera che uso
cambio il layout tastiera da US a US-internazionale
per fare le vocali accentate basta precedere la vocale dall'accento grave o acuto. `+a=à '+a=á
ALTGR+5 = €
SHIFT+TILDE+n = ñ
ALTGR+,+c= ç

Saturday 28 July 2012

Twitter da command line

Non mi trovavo bene con l'interfaccia web e neanche con i programmini da desktop. Del resto i tweet sono solo brevi righe di testo e Url dunque dovrebbero essere gestibilissimi da terminale.

TTYtter è un software da linea comando per Twitter.

È un script in Perl, lo metto nella ~/bin/ e gli dó permessi di esecuzione: chmod +x ~/bin/ttytwitter.pl

Lo lancio e mi chiede di configurare il mio account, ecc ecc. Funziona.

Se hai diversi account rinomina il ID-keyfile .twitterkey con ad esempio .twitterkeyB e chiamalo con l'opzione -keyf=, esempio: $ttytwitter.pl -keyf=B

ogni tweet e' nella forma: code> (number of re-tweet) tweet
/refresh, (o /r) per i nuovi tweet
/again (/a), per rivedere i vecchi
/a +3 per rivedere solo 3 dei vecchi
/a username per rivedere solo i tweet del username
/reply [code] la_replica
/rt [code], per retwittare
/search [keywords], per cercare
/follow /unfollow username
/friends lista chi segui
/followers lista chi ti segue
/dm username msg, direct message
/deletelast, delete your last tweet
/favourite [code], favorisce un tweet (anche /f)
/faves, lista i tuoi tweet favoriti
/ruler (/ru) mostra un righello. ooooh!
/url [code] apre l'url
/history (/h) mostra la storia dei comandi immessi
/whois
/help

Scrivendo /help appare questa simpatica schermata:



TTYtter> /help <005  

      *** BASIC COMMANDS:  :a$AAOOOOOOOOOOOOOOOOOAA$a,     ==================
                         +@A:.                     .:B@+    ANYTHING WITHOUT
   /refresh              =@B     HELP!!!  HELP!!!    B@=     A LEADING / IS
     grabs the newest    :a$Ao                     oA$a,    SENT AS A TWEET!
     tweets right            ;AAA$a; :a$AAAAAAAAAAA;       ==================
     away (or tells  :AOaaao:,   .:oA*:.                   JUST TYPE TO TALK!
     you if there    .;=$$$OBO***+        .+aaaa$:
     is nothing new)             :*; :***O@Aaaa*o,            ============
     by thumping     .+++++:       o#o                         REMEMBER!!
     the background  :OOOOOOA*:::, =@o       ,:::::.          ============
     process.          .+++++++++: =@*.....=a$OOOB#;       MANY COMMANDS, AND
                                   =@OoO@BAAA#@$o,           ALL TWEETS ARE
   /again                          =@o  .+aaaaa:            --ASYNCHRONOUS--
      displays most recent         =@Aaaaaaaaaa*o*a;,     and might not always
      tweets, both old and         =@$++=++++++:,;+aA:          respond
      new.                       ,+$@*.=O+  ...oO; oAo+.      immediately!
                               ,+o$OO=.+aA#####Oa;.*OO$o+.
   /dm and /dmagain for DMs.   +Ba::;oaa*$Aa=aA$*aa=;::$B:
                                 ,===O@BOOOOOOOOO#@$===,
   /replies                          o@BOOOOOOOOO#@+     ==================
      shows replies and mentions.    o@BOB@B$B@BO#@+     USE + FOR A COUNT:
                                     o@*.a@o a@o.$@+ /re +30 => last 30 replies
   /quit resumes your boring life.   o@B$B@o a@A$#@+ ========================== 



premendo invio continua l'help


+- MORE COMMANDS -+  -=-=- USER STUFF -=-=-
|                 |  /whois username            displays info about username
| See the TTYtter |  /again username            views their most recent tweets
|  home page for  |  /wagain username           combines them all
|  complete list  |  /follow username           follow a username
|                 |  /leave username            stop following a username
+-----------------+  /dm username message       send a username a DM
+--- TWEET AND DM SELECTION -------------------------------------------------+
| all DMs and tweets have menu codes (letters + number, d for DMs). example: |
|      a5>  Send me Dr Pepper http://www.floodgap.com/TTYtter       |
|      [DM da0][ttytter/Sun Jan 32 1969] I think you are cute                |
| /reply a5 message                 replies to tweet a5                      |
|      example: /reply a5 I also like Dr Pepper                              |
|      becomes  @ttytter I also like Dr Pepper     (and is threaded)         |
| /thread a5                        if a5 is part of a thread (the username  |
|                                    has a @) then show all posts up to that |
| /url a5                           opens all URLs in tweet a5               |
|      Mac OS X users, do first: /set urlopen open %U                        |
|      Dummy terminal users, try /set urlopen lynx -dump %U | more           |
| /delete a5                        deletes tweet a5, if it's your tweet     |
| /rt a5                            retweets tweet a5: RT @tytter: Send me...|
+-- Abbreviations: /re, /th, /url, /del --- menu codes wrap around at end ---+
=====> /reply, /delete and /url work for direct message menu codes too! <=====

Perché funzioni tutto a puntino dovrò scaricare e installare un driver per Readline Term::ReadLine::TTYtter. Lo installo (leggi il readme) con perl Makefile.PL ; make ; make install

Una volta installato godrò di diversi bonus tra cui:
-premere tab per automagicamente shortare un url
-autocompletamento di nickname
-verifica send tweet y/n
-bash-like funzionalità
-uso del pageup/down/left/right
-navigare la history
-usare tab come autocompletamento comandi)
-editare il post sulla riga (e altro, uff)

ma ancora non funziona, all'avvio TTYtter continua a tirare su Term::ReadLine::Stub e non scatta il bonus.
dovrò dire a Perl di usare la mia libreria, dunque inserisco nel mio .bashrc queste righe:

export PERL_RL=TTYtter
PERL5LIB=/path/dovesta/la_libreria/lib
export PERL5LIB

e lanciare TTYtter facendolo precedere da perl -I, nel seguente esempio lo inserisco come alias nel .bashrc
alias twitter.pl='perl -I /usr/lib/ /usr/bin/ttytter.pl'

Ora tutto funziona, e io sono @D3D30

Mi sono stati utili:
Il sito di TTYtter (alla voce readline): http://www.floodgap.com/software/ttytter/#readline
TTYtter FAQ: http://www.floodgap.com/software/ttytter/12/dl.html
Questo post: http://stormdragon.us/?p=131
Due chiacchere con @Giskarda che mi ha puntato qui: Extending the perl library path: http://www.perlhowto.com/extending_the_library_path

- page 2 of 8 -