Synchroniser contacts entre Owncloud et Thundebird

Après avoir vu comment synchroniser les contacts entre OwnCloud et Android (sans Google et uniquement avec des logiciels libre), voyons comment synchroniser ces mêmes contacts entre notre OwnCloud et Thunderbird.

Version courte

  1. Installer l'extension Sogo Connector pour Thunderbird
  2. Créer un nouveau Carnet d'adresse dans Thunderbird
  3. Synchroniser

Version détaillée

Allons-y !

1 - Extension Sogo Connector pour Thunderbird

L'extension Sogo Connector pour Thunderbird permet d'utiliser les protocoles CalDav et CardDav dans Thunderbird (du moins de ma compréhension, en tout cas il nous la faut pour la suite !)

Remarque : c'est bien Sogo connector (et non integrator) qu'il faut prendre

(En date du 3/10/2014, je n'ai pas trouvé cette extension sur Addons.mozilla.org.)

2 - Nouveau Carnet d'adresse dans Thunderbird

(J'utiliser Thunderbird 31.1.2.)

Le but est de créer un nouveau Carnet d'adresse sur le réseau, et correspondant en fait à celui créé par défaut pour tout utilisateur OwnCloud.

Commençons:

  • Se rendre dans le carnet d'adresses Thunderbird (Outils > Carnet d'adresses, ou CTRL-MAJ-B)
  • De là, faire Fichier > Nouveau > Carnet d'adresse distant (c'est Sogo Connector qui ajoute cette entrée)

Copie d'écran Thunderbird Carnet d'adresse distant

Le champ Nom est libre.

Le champs URL est l'URL exacte du carnet d'adresses OwnCloud. Pour l'obtenir, il faut:

  • se connecter à l'interface web de son OwnCloud
  • aller dans l'application Contacts (dans OwnCloud 7, c'est par le menu déroulant en haut à gauche)
  • en bas à gauche de l'écran, cliquer sur l'icône en forme d'engrenage pour obtenir les paramètres du carnet d'adresse
  • puis, en face du nom du carnet d'adresse (pour moi "contacts"), cliquer sur l'icône représentant un lien (deux maillons de chaîne)
  • pour enfin copier l'URL du calendrier, qu'on va coller dans le champs URL de la fenêtre Thunderbird

Copie d'écran OwnCloud: paramètres du carnet d'adresses

Une fois l'URL du carnet d'adresse OwnCloud collée dans Thunderbird, on valide la création du carnet d'adresse distant.

3 - Synchroniser

Il est possible de lancer manuellement la synchronisation (côté Thunderbird) en faisant un clic-droit sur le nom du carnet d'adresse.

On peut aussi régler la fréquence de synchronisation entre Thunderbird et OwnCloud, toujours en faisant un clic-droit > Propriétés sur le carnet d'adresse.

Android : ne plus utiliser google/gmail pour le carnet d’adresse (au profit d’OwnCloud)

On l'a vite oublié à l'usage, mais tout bon téléphone Android (et même Cyanogen) demande un compte google/gmail, qui sera utilisé pour stocker le carnet d'adresse.

Voici les étapes que j'ai suivies pour m'en débarrasser et utiliser mon serveur OwnCloud.

Version Courte

  1. Avoir un OwnCloud, sécurisé en HTTPS (en l'occurrence sur un serveur à moi)
  2. Synchroniser le téléphone et le OwnCloud
  3. Exporter le carnet d'adresse Google vers OwnCloud
  4. Supprimer le carnet d'adresse Google du téléphone
  5. Vérifier la synchro

Version longue

C'est parti !

1 - Avoir un OwnCloud sécurisé en HTTPS

J'ai déjà un OwnCloud installé sur un serveur.

J'ai initialement tenté d'utiliser un certificat auto-signé, mais cela coinçait pour l'étape suivante de synchronisation téléphone/owncloud. J'ai donc pris un certificat SSL chez un prestataire. C'est le certificat X509 de chez TBS-Internet (77€/an) que j'ai choisi.

TBS Internet

Ça fait un peu cher pour une utilisation perso, mais au moins ce point est carré et réglé.

J'ai pris soin de laisser de côté StartSSL qui semble récupérer les données personnelles contre un certificat gratuit. Par ailleurs, les gens de TBS sont des co-listiers d'OVH, donc quand on voit discuter son créateur depuis 10 ans sur les listes serveur, ça donne confiance !

2 - Synchroniser le téléphone Android / Cyanogen avec OwnCloud

La synchro en tant que telle se fait grâ à l'application DAVdroid (DAVdroid est disponible sur F-Droid). Le principe est de créer deux comptes DAVdroid : l'un pour le carnet d'adresse ("carddav"), l'autre pour le calendrier ("caldav").

Pour cela il faudra saisir l'adresse du serveur OwnCloud et surtout le chemin carddav ou caldav. La page configuration de DAVdroid explique cela très bien. En gros, il faut retenir :

  • URL pour les Contacts (CardDAV) : https://mon-serveur-owncloud/eventuel-dossier-owncloud/remote.php/carddav/
  • URL pour l'Agenda (CalDAV) : https://mon-serveur-owncloud/eventuel-dossier-owncloud/remote.php/caldav/

De là, tous les nouveaux contacts et nouveaux rendez-vous seront associés à OwnCloud (et plus au compte gmail).

Il reste toutefois tous les contacts existants, qui sont encore associés au compte gmail.

3 - Exporter le carnet d'adresse Google vers OwnCloud

Depuis le téléphone, se rendre dans l'application carnet d'adresse, faire un "bouton de droite", choisir Importer/Exporter puis Exporter vers la mémoire. Jusque là, rien de bien sorcier, un fichier .vcf est stocké sur la sdcard du téléphone.

Transférer le fichier .vcf sur un ordinateur (par mail, ou grâce à l'application Primitiv FTP sur F-Droid).

Pour importer les adresses dans OwnCloud 7, il faut se rendre dans l'application Contacts, puis en bas à droite, cliquer sur la petite icône "engrenage" et lancer l'import.

Copie d'écran Import dans appli Contacts de Ownlcoud

La documentation OwnCloud de l'application Contact est plutôt claire.

C'est maintenant que ça devient intéressant. Si comme moi, votre carnet d'adresse est par plusieurs téléphones / versions d'Android successifs, certains contacts ont beaucoup d'informations variées dans le fichier .vcf sur (Champs en  X- ou champs en NOTE).

De tels champs "exotiques" provoquent une erreur à l'import des contact dans OwnCloud :

Invalid VObject, line 9 did not follow the icalendar/vcard format

J'ai trouvé la solution dans le billet ownCloud and Baikal: Problems Loading ICS Files into Calendar. L'idée est de modifier une option directement dans un fichier de OwnCloud. Il s'agit du fichier 3rdparty/sabre/vobject/lib/Sabre/VObject/Reader.php. À la ligne 44, il faut remplacer

static function read($data, $options = 0)

par

static function read($data, $options = 2)

Et là l'import se déroule correctement (les champs exotiques sont ignorés).

Au passage, même la photo du contact est conservée, cool !

screenshot_owncloud_contact_avatars

Ressources complémentaires en anglais

5 - Vérifier la synchro

Depuis le téléphone, aller dans les Paramètres, section Comptes.

copie d'écran de Paramètres > Comptes

De là, sélectionner le compte Davdroid, puis vérifier que la synchronisation est activée (l'icône doit être verte).

Copie d'écran Paramètres > Comptes > Synchro