Synchroniser les agendas de Thunderbird et Android avec Baïkal

le site de baikal Je ne suis pas un grand utilisateur du smartphone, pas plus que du simple téléphone d’ailleurs… néanmoins, un smartphone est un véritable ordinateur de poche, et l’on peut utiliser ses possibilités pour des choses bien pratiques.

L’une de ces choses, qui me trottait dans la tête depuis un petit bout de temps, c’était la synchronisation de mes deux agendas : le principal étant sur le PC, dans Thunderbird (Lightning, un add-on), et bien sûr le calendrier du smartphone, sur lequel j’ai pris l’habitude de noter des rendez-vous, etc… lorsque je suis hors de chez moi… Quitte à le recopier manuellement sur le PC une fois à la maison, ce qui était vraiment fastidieux et source d’erreur.

Je précise que si j’utilise Android, ce n’est pas la ROM d’origine, et que je ne déclare pas de compte Google lors de l’installation. L’idée générale est de se « dégoogliser » (voir cet article),  et d’apprendre à se passer de tous les beaux services « offerts » par Google.

Comme je bénéficie désormais d’un hébergeur qui offre lui aussi des possibilités, je me suis mis à chercher comment faire. Les deux agendas ne pouvant se synchroniser tous les deux directement, il va falloir utiliser le protocole CalDAV et un serveur, Baïkal en l’occurrence…

CalDAV

C’est un protocole d’édition de calendrier en ligne, qui permet d’échanger des événements. Un calendrier est, dans CalDAV, un dossier contenant des évènements, des tâches… Chaque évènement est transmis sous la forme d’un fichier VEVENT, VTASK… Il est donc possible de manipuler un seul élément sans avoir à échanger l’ensemble du calendrier.

Thunderbird/Lightning intègre ce protocole, contrairement à Android où il faudra installer un module complémentaire. Mais commençons par installer le serveur.

One.com

Ma première idée était en fait d’utiliser le calendrier fourni par One.com. La page d’aide indique que CalDAV est supporté. Hélas, après quelques essais, impossible de synchroniser avec Thunderbird. L’erreur est :

DAV_NOT_DAV. Description : La ressource sur « http://caldav.one.com/ » n’est pas une collection DAV ou n’est pas disponible.

Je contacte le support, et leur réponse est décevante (pour ne pas dire surprenante) :

Cher Client,
Merci d’avoir contacté One.com!
Nous sommes navré mais nous ne pouvons garantir le bon fonctionnement de composant dans votre application . Nous avons eu certain clients où cette manipulation fonctionnaient à 50 %. Le département technique travaille à une solution corriger ces bugs mais nous n’avons pas de retour en ce moment.
Nous nous excusons pour la gêne occasionnée.

Dans ce cas, le mieux est de laisser tomber…

Baïkal

Baïkal est un serveur CalDAV+CardDAV léger, et open-source. Il requiert un serveur Apache 2, PHP 5.3.1 et utilise SQLite3 ou MySQL. Il est compatible avec Thunderbird et Android, simple à administrer, et s’installe très facilement. Exactement ce que je cherche !

Note : CardDAV, c’est la même chose que CalDAV, mais pour synchroniser les contacts.

Sur la page de Baïkal, j’ai donc téléchargé le « Flat package » (allons au plus simple), puis je l’ai dézippé, et enfin transféré sur One.com dans un répertoire dédié. Il s’agit de la v0.2.7. Voilà, il suffit ensuite de se rendre à cette adresse dans le navigateur, et en deux clics, le serveur est installé.

Il ne reste plus qu’à créer un utilisateur via l’interface d’administration :

Vue utilisateur

Puis à lui créer un ou plusieurs agendas :

1 agenda pour pascal

Voilà, c’est terminé côté serveur ! À noter que l’on ne peut pas visualiser le ou les agendas sur Baïkal : il ne fait que synchroniser, et le fait bien apparemment.

Voir aussi cet article : Mise à jour DAVdroid et perte des couleurs des calendriers, où j’ai dû installer une version plus récente de Baïkal (v0.4.4).
Cette version permet de définir une couleur pour chaque calendrier, et fournit un nouveau dav.php qui remplace les cal.php (calendrier) et card.php (contacts) précédemment utilisés.

Thunderbird

Dans Thunderbird, ou plutôt Lightning, créer un nouvel agenda et sélectionner « Sur le réseau » :

étape 1

Puis « CalDAV » en renseignant l’adresse de votre serveur sous la forme :

http(s)://nom_du_server/rép_baikal/cal.php/calendars/nom_utilisateur/nom_agenda

étape 2

Enfin choisissez le nom et la couleur de votre agenda dans TH/Lightning :

étape 3

Voilà, c’est terminé côté Thunderbird. Aller dans les propriétés de l’agenda pour régler la synchronisation comme vous le souhaitez :

Propriétés de l'agenda

Notez que cette opération est à répéter pour chaque calendrier que vous avez créé sur Baïkal.

À ce stade, j’ai eu besoin d’importer les événements du calendrier local que j’utilisais auparavant. Pour ce faire :

  • clic droit sur le calendrier local, et « Exporter ». Vous récupérez alors un fichier « .ics ».
  • sélectionner le nouveau calendrier créé, puis menu « Événements et tâches – Importer », puis sélectionner le fichier précédemment sauvegardé.

Android

Côté Android, il faut une version 4 minimum (j’avais un  Android 2.3.7 sur mon vieux HTC Desire, il y avait bien moyen de le faire avec aCal, mais c’était vraiment limité… et le calendrier très peu esthétique). J’ai donc installé une ROM Android JB 4.1.2.

DAVdroid Il va d’abord falloir installer DAVdroid, à partir du dépôt F-Droid. Il s’intègre de manière transparente au système ; une fois installé, il va se charger de synchroniser vos agendas (et vos contacts si vous le voulez).

DAVdroid NOTE : il existe également CalDAV SyncAdapter, également sur f-droid, qui ne fait que les calendriers, et qui a l’air moins avancé que DAVdroid.

Une fois ceci fait, lancer DAVdroid :

DAVdroid 1

Choisir « Login with URL and user name »:

DAVdroid 2

Renseigner les paramètres du serveur et du compte. Pour Baikal, il faut utiliser l’URL sous la forme :

http(s)://nom_du_serveur/rép_baikal/cal.php/principals

DAVdroid 3

Voilà, DAVdroid va se connecter, et vous demander quels agendas vous désirez synchroniser.

Un compte a été créé sous Android (Paramètres systèmes – Comptes), et la synchronisation activée.

aCalendar

C’est finalement assez simple à mettre en place. Il faut bien entendu un hébergeur web pour ce faire (ou alors s’auto-héberger), mais les pré-requis de Baïkal sont très standards, et il s’installe vraiment en deux clics.

Désormais, mes agendas sont synchronisés, toute modification faite côté Thunderbird sera répliquée côté Android, et réciproquement.

Une dernière image, celle de aCalendar, l’application de calendrier que j’utilise sur Android. Le seule raison est que aCalendar affiche les anniversaires en allant chercher les informations dans les contacts (et en affichant leur photo et leur âge dans le calendrier), idéal pour ne pas oublier la famille et les amis… On ne peut pas y créer des agendas, mais il récupère automatiquement les agendas définis sous Google calendar.

aCalendar

17 réflexions au sujet de « Synchroniser les agendas de Thunderbird et Android avec Baïkal »

  1. I too had my problems with one.com and this is why I found your blog post. However, I might also can recommend you another syncing app which can be used on Android 5 (so all the new one) down to Android 2 (so also the old ones are supported) and which seems to be able to handle more complex calendar situations then DavDroid. The app names is CalendarSync and it can be found here:https://play.google.com/store/apps/details?id=com.icalparse.free

    You can combine it with whatever calendar app you like.

    Regards

    1. Thank you Lue, I will keep CalendarSync in mind, but for now DAVdroid meets my expectations, and more than this is free open-source software, regularly updated.

      I looked at the link you mention for CalendarSync, and this is an evaluation release, for only two weeks. After that, it seems you need to move to the developer site (Google takes 30% ! 🙁 ) to get it. I then noticed that there are three different apps for calendar, contacts and tasks… Which is not the case for DAVdroid : you can sync all of them with it.

      Nevertheless, I agree CalendarSync offers more specific features, but with Baïkal server running, I believe I don’t need them (got a new phone running Android 4.4).

      Regards,

  2. Oh you can also get it directly from the Play Store with frequent automatic updates, I especially like that you can get into a direct contact with the developer which extended the app specifically for a usecase of mine 🙂 and I think that the configuration is currently more easily possible because the App knows all the vendors and server types out there and has guided me though all the steps so that I had to know literally nothing then.

  3. Bonjour,
    Une précision : Calendrier hors-ligne est une appli android dispo sur la platerforme fr-droid, elle s’appelle Offlin Calendar sur google play. Et ce qui est très bien est que aCalendar reconnait et intègre ces calendriers : parfait pour organiser son emploi du temps sans passer par google.
    Je suis en train de chercher pour synchroniser ces calendriers locaux qui n’existent que sur mon smartphone sur l’interface Thunderbird qui gère tout le reste sur mon mac perso et mon pc du boulot… Si quelqu’un sait comment…
    G.

    1. Bonjour Gauth,
      À ma connaissance, ce n’est pas possible sans serveur CalDAV (Baïkal ici, installé sur mon hébergeur One.com) : que ce soit les agendas sur le smartphone, ou Thunderbird sur le PC, ils agissent comme des clients (et pas comme serveur).
      Sans hébergeur, il te faudra un serveur local (auto-hébergement), par exemple une baie Synology ou un truc du genre (voir un vieux boitier PC configuré comme serveur et qui reste toujours allumé).

      À propos de « Offline Calendar », je ne suis pas certain que ce soit la bonne solution ; dans la description, on peut lire :
      Lets you add offline calendars to the Calendar app, which are not synchronized and are accessible only on the device itself. Create the calendar in this app and it will then be available in the Calendar app.

      => Si je comprend bien, le but de cette app. est justement de ne pas se synchroniser, même si les entrées sont affichées dans le calendrier utilisé sous Android.

      Sinon, depuis cet article, j’ai un nouveau smartphone, sur lequel j’ai installé une ROM Android v5.1 toujours sans compte Google, mais avec le calendrier de fourni (voir Motorola Moto G : passage à Android 5.1 avec la « Stock ROM »).
      Plus besoin donc de aCalendar, celui d’Android v5 étant plus ergonomique je trouve. Pour les anniversaires, j’utilise « Birthday Adapter », dispo aussi sur F-Droid, qui va lire les anniversaires de ma liste de contacts et les affiche dans le calendrier. Mais toujours même principe pour synchroniser avec le PC.

      Voilà, si ça peut t’aider…

  4. Bonjour, merci pour ton article.

    J’ai un soucis dans l’utilisation de Baikal, peut-être pourra tu m’aider…

    Je me suis installé un serveur local WAMP 3.0.0 64 bits.
    J’ai créé un virtualhost « Baikal » (qui pointe sur le contenu de baikal_flat extrait dans un répertoire « baikal »).
    L’installation de Baikal semble se faire correctement,

    J’ai laissé les paramètres par défaut, créé un utilisateur et un calendrier.
    http://baikal me renvoie « Baïkal is running allright. »
    Quand je veux utilisé baikal dans Lightning (sur le pc qui héberge le serveur), après sa création comme décrite, je suis invité à me logger puis l’agenda se décoche (et se redécoche dés que je le recoche)
    Sur mon smartphone, via davdroid, j’obtiens « Couldn’t find CalDAV or CardDav service ».
    Ce problème persiste en désactivant le firewall windows et le firewall de ma box. J’ai testé avec un autre service, « radicale » et ça fonctionne sans problème…

    A tu une idée de ce qui bloque?

    Merci d’avance,
    Antoine.

  5. Salut Antoine,
    Si ton calendrier Lightning se décoche, c’est qu’il n’arrive pas à se connecter au serveur Baikal (côté DAVDroid, le message est plus clair, mais c’est le même problème). Ça m’est arrivé en mettant une mauvaise URL pour y accéder…
    Et puisque http://baikal te renvoie « Baïkal is running allright », c’est que tout va bien côté serveur.

    Vérifies donc bien ce que tu entres dans lightning pour te connecter, ça doit être un truc du genre :
    http://baikal/cal.php/calendars/nom_utilisateur/nom_agenda
    Essaie aussi avec un « / » final, on ne sait jamais :
    http://baikal/cal.php/calendars/nom_utilisateur/nom_agenda/

    Attention aussi à bien utiliser le ‘Calendar token ID’ de l’agenda (et pas le Display name) défini pour le calendrier dans Baikal, car c’est sensible à la casse (MAJ/min).

    Sinon, va voir cette page, tu as des infos sur les virtualhost (ça je ne connais pas bien, mais si radical fonctionne…): http://sabre.io/baikal/install/
    Mais attention, les infos concernent une version plus récente de Baikal : j’ai fait un autre article (http://pled.fr/?p=9704) où j’ai du aller chercher une version plus récente de Baikal (v0.4.4) que celle proposée sur http://baikal-server.com/ (v0.2.7)
    D’ailleurs, si tu pars de zéro, autant utiliser la version la plus récente…
    L’occasion aussi d’utiliser dav.php au lieu de cal.php, et avec un nouveau chemin (le répertoire html).

    Espérant t’avoir aidé…

  6. Bonjour,

    Merci beaucoup pour ton aide, c’est maintenant fonctionnel.
    Le problème avec lightning était que j’utilisais le « Display name » , c’est donc OK maintenant.
    Je suis passé à la version 0.4.4 de Baikal et cela fonctionne bien maintenant sur smartphone via davdroide.

    Un grand merci à toi.

  7. Bonjour,

    Je reviens vers toi avec une nouvelle question…

    J’aimerai pouvoir synchroniser les contacts de mon serveur Baïkal vers Lightning via le module Cardbook. Encore une fois je bloque surement sur l’url à utiliser, j’ai testé plusieurs choses du genre:

    http://192.168.0.11/baikal/html/dav.php/addressbook/ANTOINE/default/

    sans que rien n’y fasse. Tu as une idée de l’url qu’il faudrait mettre?

    Merci d’avance,
    Antoine.

  8. Salut,
    Bon, tu n’étais pas loin : tu as juste oublié un « s » à « addressbooks » (et pas « addressbook ») dans ton URL. J’ai testé avec Cardbook, ça fonctionne parfaitement.

    Par contre, je suis curieux, il t’apporte quoi de plus Cardbook ?

  9. Salut, merci pour la réponse (j’avais fini par trouver en épluchant le log de DAVDROID).
    Pour ce qu’il m’apporte (en plus d’assouvir ma curiosité 😉 ) c’est de synchroniser mes contacts de mon mobile avec ceux de thunderbird.

    Merci encore,
    Antoine.

  10. Ok pour la curiosité ! Pour la synchro avec le mobile, le carnet d’adresse par défaut de Thunderbird me convient tout à fait, et comme « less is more »… moins j’utilise d’extensions, mieux je me porte ! 😉

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *