https://www.flickr.com/photos/greenoid/9693327611/

Synchroniser ses contacts, calendriers, notes et dossiers sur Ubuntu Phone

Que diriez vous de regrouper au sein d’un unique contact les mails, adresses et téléphones d’une même personne, que cela soit sauvegardé pour résister aux vols et aux pannes, tout en vous permettant d’y accéder depuis n’importe quel terminal ?

La réponse à cette question est le protocole HTTP « WebDAV ». Avec lui vous pouvez synchroniser fichiers, contacts (CardDAV), calendriers et mémos (CalDAV) : en d’autres mots il est trivial de se substituer à Dropbox, Gmail et Evernote si vous souhaitez posséder vos données.

Chapitre 1 – Choisir votre logiciel et votre hébergement de serveur

Cet article ne peut pas traiter le sujet en totalité, cette partie est par ailleurs très largement renseignée sur le Net : ownCloud (en PHP) et Cozy Cloud (en NodeJS) sont deux logiciels libres renommés qui implémentent WebDAV en entier.

En vous baladant sur leurs sites, vous trouverez la complexité qui vous convient, allant de la création d’un compte au téléchargement du logiciel. Libre à vous de trouver un hébergement, de louer un serveur ou de monter une infra chez vous !

Chapitre 2 – Configurer votre Ubuntu Phone

Si vous n’avez pas encore d’Ubuntu Phone mais que vous êtes familier avec la ligne de commande d’Ubuntu pour ordinateur de bureau, j’ai une bonne nouvelle : il y a un terminal et tout ce que vous avez l’habitude de trouver dedans !

Les développeurs d’Ubuntu Touch ont eu l’excellente idée de faire reposer le carnet d’adresses et le calendrier sur un backend standard : SyncEvolution ! Bien que l’absence d’interface graphique pose une barrière, il est tout à fait possible de la contourner.

Étape 1 : Il faut avant tout obtenir un accès console. Deux possibilités. Si vous êtes sur Ubuntu pour ordinateur de bureau :

sudo apt-get install phablet-tools

Sur votre téléphone allez dans Paramètre système / À propos de ce téléphone / Mode développeur et activez-le pour la première connexion SSH. Le mot de passe que vous allez créer servira pour le compte phablet du téléphone. Puis toujours sur votre PC :

sudo phablet-shell

Sur votre téléphone allez dans Paramètre système / Wi-Fi / votre réseau. Appuyez dessus afin que l’IP s’affiche.

ssh phablet@ip-de-votre-telephone

Depuis le téléphone vous devrez, au choix, soit de créer un conteneur isolé soit de monter votre système complet en écriture :

sudo mount /dev/loop0 / -o remount,rw

Si vous n’avez pas du tout accès à un ordinateur sous Ubuntu, vous pouvez vous en sortir avec l’application Terminal du Magasin Ubuntu. Cela va être très long, mais sachez que l’icône orange permet de changer entre des palettes de raccourcis claviers !

Étape 2 : Si le fournisseur de services que vous avez choisi est protégé par un certificat auto-signé, téléchargez-le dans la mémoire de votre téléphone (par exemple dans le dossier Documents). Vous pouvez le trouver depuis la barre d’URL de votre navigateur. S’il porte l’extension .pem, veillez à le renommer en .crt. Gardez bien le câble connecté.

Dans la console du téléphone, procédez comme il suit pour activer votre certificat auto-signé :

sudo mv /home/phablet/Documents/votre-certificat.crt /usr/share/ca-certificates
sudo dpkg-reconfigure ca-certificates

Une interface interractive va se présenter à vous, il suffit de vous laisser guider et de cocher absolument toutes les cases. C’est fastidieux car il y en a une centaine (espace pour cocher, flèche du bas pour passer au suivant, tab pour aller sur le bouton « ok » et entrer pour valider). Tout a l’air de bien de passer jusque là non ?! 🙂

Étape 3 : Vous allez à présent remplacer uniquement ce que j’ai tapé en majuscules concernant votre site de synchronisation (l’exemple est donné pour ownCloud, facilement adaptable) :

syncevolution --keyring=no --configure --template webdav username=IDENTIFIANT password=MOT_DE_PASSE syncurl="URL_RACINE_DU_SITE" target-config@owncloud
syncevolution --configure --template SyncEvolution_Client sync=none syncURL=local://@owncloud username= password= peerIsClient=1 owncloud
syncevolution --configure database=https://URL_RACINE_DU_SITE/remote.php/carddav/addressbooks/IDENTIFIANT/CARNET backend=carddav target-config@owncloud contacts
syncevolution --configure sync=two-way backend=contacts database="Personnel" owncloud contacts

Le paramètre database de la dernière commande est traduit selon la langue du téléphone et il faut le deviner ! Persönlich en allemand, Personale en italien, etc. J’avais essayé autre chose initialement mais cela m’a posé problème, il semble qu’on puisse aussi le laisser vide sans guillemets. Votre téléphone ne dispose que d’une seule base par défaut.

Vous aurez remarqué que la synchronisation est bidirectionnelle, je vous conseille de supprimer tous les contacts de votre téléphone à partir d’ici. L’heure de vérité a sonné :

syncevolution --sync slow owncloud contacts

Vous me devez à présent une bière blanche bien fraîche ! Jouons pour une pinte avec la synchronisation du calendrier :

syncevolution --configure database=https://URL_RACINE_DU_SITE/remote.php/caldav/calendars/IDENTIFIANT/CALENDRIER backend=caldav target-config@owncloud calendar
syncevolution --configure sync=two-way backend=events database="Personnel" owncloud calendar
syncevolution --sync slow owncloud calendar

Pour la synchronisation des notes / mémos / tâches / todo, cela passe habituellement par la même URL que le calendrier. Je n’ai rien trouvé sur le Net, en tout cas il ne semble pas y avoir d’application Note capable de lire ce qui est pourtant là !

Étape 4 : Automatiser ces deux commandes avec crontab requiert un petit trick, sans quoi rien ne se passe. Créez un script bash :

nano /home/phablet/syncevolution.sh

Ajoutez les lignes suivantes et refermez avec Ctrl+X suivi de Y et Entrer :

#!/bin/sh
export DISPLAY=:0.0 
export DBUS_SESSION_BUS_ADDRESS=$(ps -u phablet e | grep -Eo 'dbus-daemon.*address=unix:abstract=/tmp/dbus-[A-Za-z0-9]{10}' | tail -c35)
syncevolution owncloud contacts
syncevolution owncloud calendar
exit 0

Rendez à présent ce fichier exécutable, puis ouvrez l’éditeur de tâches planifiées :

chmod +x /home/phablet/syncevolution.sh
sudo crontab -u phablet -e

Ajoutez la ligne suivante et refermez avec Ctrl+X suivi de Y et Entrer :

0 0,6,12,18 * * * sh /home/phablet/syncevolution.sh >/dev/null 2>&1

Vous pouvez modifier la fréquence bien que quatre fois par jour me semble suffisant. La fin de ligne envoie les logs dans le vide au lieu de les stocker et n’envoie pas de mail.

Étape 5 : Pour aller plus loin, il serait possible de synchroniser en WebDAV le répertoire /home/phablet/Pictures où les photos sont enregistrées, ou tout autre dossier de votre choix, avec le programme davfs2 :

sudo apt-get install davfs2

Je ne suis pas allé plus loin mais le tuto donné sur le lien davfs2 juste au dessus devrait vous être utile.

La parenthèse douloureuse qui a duré deux ans

J’avais acheté un Firefox OS Phone pensant que Mozilla ferait de la vie privée leur priorité (marketing), résultat :

  • Le protocole WebDAV, fonctionnalité la plus votée, n’est toujours pas envisagé.
  • Mozilla permet d’importer ses contacts depuis Google et Facebook uniquement. C’est délibéré.
  • Il n’y a à proprement parler aucune solution de contournement, à moins de tout redévelopper soit même en JS.

Chapitre 3 – Configurer votre client mail de bureau Thunderbird

L’intérêt venant du partage des contacts entre plusieurs terminaux, je vous invite à poursuivre vos recherches en fonction de ce que vous utilisez pour lire vos mails. Si vous utilisez un Webmail libre, il se peut qu’une option de synchronisation vous soit offerte, le protocole proposé sera avec une quasi-certitude WebDAV.

Il existe deux extensions pour le client lourd Thunderbird. D’abord Lightning, l’extension calendrier et todo par excellence :

LightningLightning2

Puis l’extension SOGo Connector qui nécessite Lightning et qui ajoute la possibilité d’importer des carnets de contacts CardDAV. Les contacts se présentent et s’utilisent ensuite comme d’habitude.

Une dernière astuce : ces extensions enregistrent le mot de passe demandé à la première connexion. Si vous avez plusieurs identifiants sur le même serveur (par exemple, un calendrier partagé et un perso), préférez des URL contenant les identifiants :

http://utilisateur:mot_de_passe@domaine.tld/...

Mes sources

23 commentaires sur “Synchroniser ses contacts, calendriers, notes et dossiers sur Ubuntu Phone

  1. Hello 🙂

    Intéressant ce billet !
    Je n’ai pas encore eu l’occasion de jouer avec un Ubuntu Phone mais ça donne carrément envie ^^
    Au niveau du market, tu arrives à trouver ton bonheur ? Par exemple, pour la synchronisation Owncloud, rien n’a été proposé ?

    Merci d’avance pour ton retour d’expérience !

    Joël

  2. Salut ! Je dois avouer que j’ai été surpris de voir APT fonctionner normalement 🙂 Côté market non, clairement pas assez fourni. Les apps sont de bien meilleure qualité que sur FFOS (90% de raccourcis vers des sites, inutiles sans Internet) mais rien concernant ownCloud, alors je prends mon mal en patience. Là au moins une solution existe, même si ce n’est pas parfait !

  3. Excellent !
    Je viens de tout configurer sur mon Aquarius E5.
    Note : le password de phablet est le lock que vous mettez sur l’écran pour activer le mode développeur, j’ai cherché longtemps…
    Je vais me servir de ça pour palier aux applis de contact et de calendrier pas encore à la hauteur, je ferai l’édition en ligne et me servirai du téléphone que pour consulter.
    Merci pour ce tuto super clair.

  4. Merci pour la remarque je vais ajouter l’info concernant le mot de passe de phablet au tuto. Sache que tu peux parfaitement modifier ou ajouter des contacts depuis le téléphone, ça met parfaitement à jour le carnet d’adresses. J’ai fait aussi clair que possible, c’est un plaisir d’avoir pu te rendre service ! Ce tuto aura au moins servi à une personne 🙂

  5. Salut, merci pour ton tuto.
    Par contre petite question. Pour les étapes 3 et 4, quels commandes doivent être rentrés pour un Cozy Cloud ?

    Merci à toi.

  6. Pour les autres serveurs perso (SyncML par exemple) possibilité de passer par interface graphique X sync-ui
    Mise à jour du système après avoir monter la racine en lecture écriture via info :
    > moi@serveur:~$ ssh phablet@
    > phablet@ubuntu-phablet:~$ sudo mount /dev/loop0 / -o remount,rw
    > phablet@ubuntu-phablet:~$ sudo aptitude update
    > phablet@ubuntu-phablet:~$ sudo aptitude dist-upgrade
    > phablet@ubuntu-phablet:~$ sudo aptitude install sync-ui
    > phablet@ubuntu-phablet:~$ sudo aptitude clean
    Configuration de sync-ui pour utilisateur phablet (Echec pas de X Remote)
    Recherche de solution et trouvé sur : http://forum.xda-developers.com/showthread.php?t=2161884
    > phablet@ubuntu-phablet:~$ sudo apt-get install xauth x11-apps gedit
    > phablet@ubuntu-phablet:~$ sudo aptitude clean
    > phablet@ubuntu-phablet:~$ exit
    Configuration de sync-ui pour utilisateur phablet (OK)
    > moi@serveur:~$ ssh phablet@ -X
    > phablet@ubuntu-phablet:~$ sync-ui

  7. Pour la synchronisation des notes / mémos / tâches / todo !!!!!!
    ==========================================

    Avec MX4, et owncloud , OK pour agenda et contacts
    jamais réussi pour le reste.
    ESt-ce que quelqu’un a réussi et comment ???
    Merci d’avance

  8. Toujours rien vu venir de nouveau pour :
    UT, owncloud, …. notes et taches.
    Et vous ? prévu ? rien vu sur les dates ?

  9. Je n’ai vu passer aucune info dans ce sens. Ceci dit comme je l’ai écrit dans l’article, je pense que les données sont bien présentes dans Syncevolution, il manque une simple application capable de les lire.

  10. Vincent : je n’ai jamais réussi pour todo et memo :
    erreur :
    «  » » »] @default/todo: transport problem: REPORT ‘meta data’: Neon error code 2, no HTTP status: Could not resolve hostname `’: No address associated with hostname
    [INFO] @default/todo: normal sync done unsuccessfully
    [ERROR] @default/todo: external transport failure (local, status 20043)
    [INFO] creating complete data backup after sync (enabled with dumpData and needed for printChanges) » » » » »

    STP, quelle lignes as tu faites pour todo et memo pour que cela passe sans erreur
    J’ai fouillé dans MX4-r6(20-10-2015), j’ai rien trouvé qui passait, par contre j’ai trouvé les données des essais memo et todo mis directement dans le mx4.
    ligne utilsée : « syncevolution –configure sync=two-way backend=CalDAVTodo database= »Personnel » owncloud todo »
    ou « syncevolution –configure sync=two-way backend=CalDAVTodo owncloud todo »

  11. Salut ! Eh bien puisque je n’ai pas vu d’app je ne suis pas allé plus loin que ce qui est dans l’article, désolé 🙂 Sur Thunderbird, dans l’extension Lightening, je n’ai ajouté que le calendrier, cette seule source lui suffit à retrouver mes notes.

  12. Salut,

    Je viens de réinitialiser mon MX4, en rc-proposed et je n’arrive plus à synchroniser mes contacts et mon agenda avec OWNcloud. Je me suis dit, je vais essayer cette méthode bien détaillée et je me retrouve bien con, je bloque au phablet-shell. Il me retourne ça et impossible d’avancer:
    Host [localhost]:2222 not found in /home/springbank/.ssh/known_hosts
    Warning: Permanently added ‘[localhost]:2222’ (RSA) to the list of known hosts.
    Permission denied (publickey).

    Merci pour les réponses

  13. Je me réponds à moi même, problème résolu pour phablet-shell 🙂

    Tuto suivi à la lettre, ça fonctionne impec… Merci pour ce super boulot.

  14. Bonjour,
    J’ai récemment reçu mon nouveau téléphone, choisi pour tester quelque chose de plus libre que mes précédents smartphone. Je savais que cela allait nécessiter un peu d’huile de coude, mais pour démarrer, j’ai vraiment du mal…
    En effet, je compte suivre votre tutoriel mais je bloque dès le départ : je n’ai pas accès à un ordinateur sous Ubuntu, et donc je tente de m’en sortir avec l’application Terminal du Magasin Ubuntu. Mais elle demande un mot de passe que je ne connais pas (et je ne crois pas en avoir « fabriqué » un) : avez-vous une idée/solution ?
    Merci d’avance,
    hugobonav

  15. Bonsoir,
    Après plusieurs essais, je me permets de vous solliciter car j’ai une erreur que je ne maîtrise pas : j’ai réalisé l’étape 3 sans encombre mais la dernière commande :
    syncevolution –sync slow owncloud contacts
    donne cette erreur :
    [ERROR] error code from SyncEvolution fatal error (local, status 10500) : no such datastore(s): contacts
    NB : je n’ai pas accès à un ordinateur sous Ubuntu, et donc je tente de m’en sortir avec l’application Terminal du Magasin Ubuntu. C’est pourquoi j’ai commencé directement avec l’étape 3. Mais peut-être est-ce une erreur ?
    Merci d’avance si vous avez l’occasion de m’aider !
    hugobonav

  16. Owncloud synchronization with calendar, contatcs : well funtionning.
    Task is malfunctional ( no complete synchronization), but the external data (into UT) is in ics file (.local/share/evolution/tasks/system/tasks.ics).
    How update or copy (convert) the ics in your sqlite database. Here 98db8704aaadd1aeebba01b42bf4d270.sqlite file (Task UT app)
    For version:1.5?

  17. UT ‘Tasks’ apps with ’98db8704aaadd1aeebba01b42bf4d270.sqlite’ file and other name of sqlite file for other UT apps as ‘Taskly’

  18. Bonjour,
    merci pour ce tuto, qui me donne envie d’essayer 🙂
    cependant après avoir installé les phablet-tools, je n’arrive pas à lancer phablet-shell ? et il ne semble pas être dans les outils phablet-…

    suis je le seul à ne pas avoir cette ordi sur mon ordi après l’installtion des phablet-tools ?

    merci

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqué du signe *