Mise en place d’un service personnel de synchronisation de calendrier et de carnet d’adresses

Vous souhaitez garder le contrôle sur vos données personnelles ?

C’est avec cette philosophie que j’ai décidé de vous partager mon expérience sur la mise en place d’un serveur de synchronisation de calendrier et de carnet d’adresses, sous forme de tutoriel.

Sur le plan technique, la synchronisation sera effectuée à l’aide des protocoles WebDAV, CalDAV et CardDAV.

Préambule : contraintes techniques

Voici les contraintes techniques initiales auxquelles j’ai été soumises, je pense que celles-ci sont partagées par le plus grand nombre de personnes :

  • Serveur : pas de serveur personnel chez moi, mais j’ai des espaces disponibles chez un hébergeur internet, avec des noms de domaine associés. Pour mon cas l’hébergeur est OVH, avec les offres perso et kimsufi, toutefois le tutoriel que je propose fonctionne également pour n’importe quel autre hébergeur.
  • Technologies : étant chez un hébergeur web, je n’ai que PHP et éventuellement MySQL. Pour ceux qui ne connaissent pas, ce sont les langages de programmation web les plus répandus et acceptés par tous les hébergeurs de sites internet.
  • Appareils : j’ai un iPhone et un ordinateur sous Windows.

Etape 1 : téléchargement du projet

Le projet Baïkal est une solution libre qui permet la synchronisation de calendriers et de contacts. Il reposant sur le langage PHP et gère le protocole DAV.
Il a également l’avantage de fonctionner aussi bien avec ou sans MySQL.

Action : rendez-vous sur la page des dernières versions et téléchargez la plus récente.
Décompressez le contenu du fichier zip téléchargé.

Etape 2 : envoi du projet sur votre espace d’hébergement web

Connectez-vous par ftp (je vous conseille FileZilla) sur votre espace disque personnel.
Créez un dossier baikal à la racine de votre espace dans lequel vous enverrez le contenu du fichier zip téléchargé précédemment.
Rentrez dans le dossier et assurez-vous de voir les fichiers avec un chemin comme /home/votrenomdespace/baikal/README.md

Etape 3 : création du sous-domaine et génération du certificat SSL (conseillé)

Connectez-vous à votre sur votre espace d’administration OVH.
Rendez-vous dans la partie « Hébergements », choisissez votre nom de domaine et cliquez sur l’onglet « Multisites ».
Vous avez maintenant la possibilité de créer votre sous-domaine en cliquant sur « Ajouter un domaine ou un sous-domaine ».
Sélectionnez alors votre domaine (je prendrai pour exemple votresite.com) et cliquez sur « Suivant ».
Sur la fenêtre qui apparaît :

  • dans le champ « sous-domaine » saisissez dav
  • dans le champ « dossier racine » saisissez baikal/html
  • cochez la case SSL pour que les données transitent de manière securisée

Cliquez sur « Suivant », acceptez la configuration automatique et validez pour effectuer la création du sous-domaine.
Cliquez sur « Régénérer le certificat SSL » pour que les sous-domaines soient pris en compte. Cette action prend plusieurs heures, rafraîchissez le tableau de temps en temps pour voir quand les lignes passent au vert dans la colonne « SSL ».

Etape 4 : configuration initiale de Baïkal

Cette étape consiste à configurer Baïkal et l’adapter à vos besoins et ne sera faite qu’une fois.
Tout d’abord, accédez à l’interface de configuration initiale via l’adresse https://dav.votresite.com.
Sur l’écran de paramétrage :

  • Laissez coché « Enable CalDAV » si vous souhaitez que votre serveur puisse synchroniser des calendriers
  • Laissez coché « Enable CardDAV » si vous souhaitez que votre serveur puisse synchroniser des contacts
  • Le paramètre « WebDAV authentication type » n’a pas à être changé
  • Saisissez votre mot de passe qui permettra d’accéder à nouveau à la page d’administration

Si vous voulez modifier ces paramètres par la suite, l’interface d’administration vous en offrira la possibilité.
Cliquez sur suivant pour accéder à la seconde page qui vous permettra de choisir la méthode de stockage :

  • SQLite (conseillée, la plus simple) : ne modifiez aucun champ, cliquez sur « Save changes » directement
  • MySQL (uniquement dans le cas de très grand nombre d’utilisateurs) : cliquez sur « Use MySQL » et renseignez les champs demandés

Validez et la configuration sera terminée.

Etape 5 : administration de Baïkal et gestion des utilisateurs

Cette étape permet de modifier les paramètres et de rajouter des utilisateurs.
Tout d’abord, accédez à l’interface d’administration via l’adresse https://dav.votresite.com/admin.
Sur l’écran de paramétrage :

  • L’onglet « Dashboard » récapitule les informations importantes
  • L’onglet « Users and resources » permet l’ajout d’utilisateurs et de ressources
  • L’onglet « Settings » permet de modifier les informations saisies lors de la configuration initiale
  • L’onglet « System Settings » permet de modifier des informations techniques, je déconseille la modification de champs sur cette page

Nous allons ajouter un premier utilisateur en choisissant « Add User » de l’onglet « User and resources ». Le champ « Username » correspondra au login du premier utilisateur, et peut être un login (exemple : jacques) ou une adresse mail (exemple : jacques@votresite.com). Je vous conseille de tout saisir en minuscule pour ce premier champ. Renseignez les autres champs et validez.
L’utilisateur créé apparaît dans la liste et lui sont automatiquement ajoutés un calendrier et un carnet d’adresses dont vous pouvez modifier le nom ou la description.
Nota 1: je vous déconseille d’ajouter ou de supprimer des calendriers et carnets d’adresses manuellement aux utilisateurs/
Nota 2 : vous pouvez ajouter autant d’utilisateurs que vous souhaitez.

Etape 6 : Synchronisation de vos appareils

Sur iPhone/iPad
Nota : les étapes décrites ont été testées sous iOS 11. Cette étape doit également fonctionner pour les Mac/MacOS.
1) Allez dans le menu « Réglages », puis l’option « Comptes et mots de passe »
2) Choisissez l’option « Ajouter un compte » puis « Autre » sur l’écran qui apparaît
3) Choisissez « Ajouter un compte CalDAV »
4) Sur l’écran de saisie qui apparaît, renseignez les champs de la manière suivante :

  • Serveur : https://dav.votresite.com/dav.php/principals/votrelogin : remplacez votresite.com par votre nom de domaine, remplacez votrelogin par le login de l’utilisateur dont vous souhaitez synchroniser le calendrier.
  • Nom d’utilisateur : le login de l’utilisateur dont vous souhaitez synchroniser le calendrier
  • Mot de passe : le mot de passe associé
  • Description : ce champ n’est pas important

Ajout d'un nouveau compte CalDAV pour iPhone/iPad sur iOS
Remarque : si à la validation vous avez une erreur, je vous invite à vous rendre en bas de cet article dans la partie « Résolution de problèmes ».
5) Votre calendrier est maintenant connecté à votre appareil !

Sur Thunderbird
1) Rendez-vous sur l’onglet « Agenda » en cliquant sur l’icône de calendrier en haut à droite, ou encore en cliquant dans la barre de menu sur « Evénéments et tâches » puis « Agenda ».
2) Sur l’onglet « Agenda » qui s’affiche, cliquez avec le bouton droit sur « Agendas » sous le petit calendrier à gauche, puis sur « Nouvel agenda ».
3) Choisissez la case à cocher « Sur le réseau » et cliquez sur « Suivant ».
4) Choisissez la case à cocher « CalDAV » et saisissez l’emplacement au format https://dav.votresite.com/dav.php/calendars/votrelogin/default : remplacez votresite.com par votre nom de domaine, remplacez votrelogin par le login de l’utilisateur dont vous souhaitez synchroniser le calendrier. Puis cliquez sur « Suivant ».
Création d'un nouvel agenda sur Thunderbird
5) Donnez un nom qui servira de description au calendrier, puis cliquez sur « Suivant » pour valider.
6) Votre calendrier a été importé ! A la première synchronisation, le couple login/mot de passe vous sera demandé, je vous conseille de les enregistrer pour ne pas à avoir à les saisir à nouveau à l’avenir.
7) En cliquant avec le bouton droit sur votre calendrier, vous pouvez forcer sa synchronisation ou modifier sa fréquence de synchronisation en choissant « Propriétés ».

Sur Outlook
Partie à venir.

Résolution de problèmes

J’ai saisi sur mon iPhone/iPad dans l’outil de création de compte de calendrier l’adresse indiquée, mais j’ai un message d’erreur générique, ou j’ai un message d’erreur générique

Le problème sur iOS est qu’aucune information détaillée sur l’erreur est remontée à l’utilisateur, ce qui ne permet pas de savoir quel est précisément l’origine de celle-ci.
La solution pour déterminer d’où vient l’erreur, est de saisir l’adresse de synchronisation sur Safari et de l’exécuter.
Plusieurs possibilités après avoir exécuté l’adresse :

  • vous avez un message à propos d’un problème de certificat. Vérifiez que vous avez bien demandé la génération des certificats SSL une fois le sous-domaine créé, et attendu quelques heures le temps que les répercussions soient prises en compte.
  • vous aurez un message d’erreur avant d’avoir eu la fenêtre de saisie d’identifiant / mot de passe. Votre adresse a mal été construite, cherchez d’où vient le problème en réécrivant votre adresse et en vous référant à la partie ci-dessus traitant du sujet. Quand l’adresse sera correcte, Safari affichera une page d’information sur votre compte.

Voir chorégraphies en ligne.

Voir photographies en ligne.

3 réponses sur “Mise en place d’un service personnel de synchronisation de calendrier et de carnet d’adresses”

  1. J’ai reproduis la même configuration que vous sur OVH ( a part que j’utilise mysql).

    J’arrive bien à créer des utilisateurs, à me loguer a partir d’un navigateur sur dav.php/principals/user mais lorsque je veux setup ça sur un OSX, ou à partir d’android, je n’y arrive pas. D’apres les logs de davx:

    don’t have permission to access /.well-known/carddav on this server
    don’t have permission to access / on this server
    don’t have permissions to acess /cal.php/calendars/user/default on this server

    Bon à premiere vue, ça serait un problème de permission … Auriez-vous effectuer une commande en plus qui ne serait pas dans la documentation ?

    Merci 🙂

  2. J’ai trouvé, c’était le firewall qui causait soucis. Puisqu’il bloque les requetes de PROPFIND, j’obtenais une erreur 403 …

Laisser un commentaire

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