Auto-hébergez et synchronisez agenda, contacts et todo lists avec Baïkal !

Baikal banner

Si vous me lisez régulièrement vous n’êtes pas sans connaître la passion que j’éprouve par rapport au monde du logiciel libre et à la quantité phénoménale d’outils que l’on y trouve pour auto-héberger ses propres services.

Parmi ces outils il y en a un dont je veux vous parler depuis longtemps, et il s’appelle Baïkal. Avec lui, vous allez pouvoir auto-héberger vos calendriers, vos contacts et vos todo lists afin de les centraliser et de les synchroniser avec tous vos appareils. En effet, Baïkal utilise les protocoles ouverts que sont CalDAV et CardDAV, définis par l’IETF et étendus du protocole HTTP.

Comme ce sont des protocoles très répandus, il existe de nombreux clients pour presque toutes les plateformes 🙂 Baïkal sera en mesure de synchroniser vos données entre Thunderbird, Android, iOS…

C’est parti !

Alors évidemment l’installation suivante nécessite d’avoir un nom de domaine (sauf si vous travaillez en local)… Ça sera beaucoup plus simple à configurer. Personnellement j’aime bien répartir mes services sur des sous-domaines de guillaume-leduc.fr. Ici je propose d’utiliser dav.guillaume-leduc.fr, mais vous pouvez très bien utiliser www.domaine.com/baikal ou ksxxxx.kimsufi.com/baikal. À vous de voir… Je suis aussi sur une machine personnelle (l’équivalent d’un dédié donc) mais Baïkal doit aussi fonctionner sur du mutualisé.

Préparations du serveur

Récupération et installation de Baïkal

La première étape consiste simplement à récupérer les sources sur le GitHub du projet, ou sur le site officiel.

cd /var/www/
sudo wget http://baikal-server.com/get/baikal-flat-0.2.6.zip
sudo unzip baikal-flat-0.2.6.zip
sudo chown -hR www-data: baikal-flat-0.2.6 && sudo chmod -R 775 baikal-flat-0.2.6

Préparation de la base de données

Ensuite, si on ouvre le fichier INSTALL.md, on apprend que Baïkal nécessite un serveur web (moi ça sera Apache), PHP 5.3.1 ou supérieur et utilise une base de données MySQL avec l’extension PHP-PDO. Personnellement j’utilise une base MariaDB sans problème. Une fois que vous avez tout cela d’installé, il faut créer une base de données exploitable par Baïkal. Soit vous utilisez PHPMyAdmin, soit la ligne de commande :

mysql -u root -p
CREATE DATABASE baikal;
GRANT ALL PRIVILEGES ON baikal.* TO baikal@localhost IDENTIFIED BY "password";
FLUSH PRIVILEGES;
quit

Préparation du virtual host Apache

Comme on va mettre en place un gestionnaire d’agenda et de contacts, il doit être primordial de pouvoir y accéder depuis n’importe où… en toute sécurité. Qui dit sécurité dit chiffrement des données. Si ce n’est pas déjà fait, allez créer une autorité de certification sur votre machine et générez un certificat pour l’adresse à laquelle Baïkal sera accessible. Moi c’est dav.guillaume-leduc.fr.

Une fois prêt, j’ai placé la clé et le certificat dans /etc/apache2/certificates/. On peut maintenant passer à la création du virtual host Apache, que je place dans /etc/apache2/sites-available/dav.guillaume-leduc.fr.conf, avec le contenu suivant :

<VirtualHost *:80>
        ServerAdmin     admin@guillaume-leduc.fr
        ServerName      dav.guillaume-leduc.fr
        DocumentRoot    /var/www/dav.guillaume-leduc.fr/html
 
        # On force l'utilisation de HTTPS
        RewriteEngine On
        RewriteCond %{HTTPS} !=on
        RewriteRule ^(.*)?$ https://%{SERVER_NAME}/ [L,R=301]
 
        CustomLog       /var/log/apache2/dav-access.log "conbined"
        ErrorLog        /var/log/apache2/dav-error.log
</VirtualHost>
 
<IfModule mod_ssl.c>
 <VirtualHost *:443>
        ServerAdmin     admin@guillaume-leduc.fr
        ServerName      dav.guillaume-leduc.fr:443
        DocumentRoot    /var/www/dav.guillaume-leduc.fr/html
 
        SSLEngine On
        SSLCertificateFile      /etc/apache2/certificates/dav-cert.pem
        SSLCertificateKeyFile   /etc/apache2/certificates/dav-key.pem
        SSLProtocol             all -SSLv2 -SSLv3
        SSLHonorCipherOrder     On
        SSLCipherSuite          ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:HIGH:!MD5:!aNULL:!EDH:!RC4
        SSLCompression          Off
 
        ErrorLog        /var/log/apache2/dav-error.log
        CustomLog       /var/log/apache2/dav-access.log "combined"
 
        <Directory "/var/www/dav.guillaume-leduc.fr/html">
                Options None
                Options -Indexes +FollowSymlinks
                AllowOverride All
        </Directory>
 </VirtualHost>
</IfModule>

Remarquez que j’utilise certaines directives pour forcer un chiffrement de haut niveau, compatible uniquement avec les navigateurs récents… Ce n’est sans doute pas le modèle parfait mais si vous avez des remarques ou des suggestions n’hésitez pas 🙂

Reste maintenant à activer le site et redémarrer le daemon Apache :

sudo a2ensite dav.guillaume-leduc.fr.conf
sudo service apache2 restart

Configuration de Baïkal

Finalisation de l’installation

Votre vhost prêt vous pouvez accéder à Baïkal pour une première connexion :

Finalisation instalation Baikal 01

On commence par activer ou non les fonctionnalités de Baïkal, puis on renseigne les coordonnées de la base de données :

Finalisation instalation Baikal 02

Votre nouveau service est maintenant prêt !

Finalisation instalation Baikal 03

Configurer des utilisateurs

Baïkal vous offre la possibilité de le configurer directement via les fichiers de configuration, ou via une interface web plutôt jolie, alors pourquoi se priver ?

L'accès se fait via cal.guillaume-leduc.fr/admin/

L’accès se fait via dal.guillaume-leduc.fr/admin/

Une fois authentifié, votre Dashboard vous apporte quelques statistiques à propos de l’utilisation de Baïkal. Ici c’est pour un usage personnel donc rien de bien méchant…

Baikal_dashboard

Gestion des utilisateurs

Vous l’aurez sans doute deviné la gestion des utilisateurs s’effectue sur la page « Users and resources » où vous pouvez en ajouter et éditer ou supprimer les existants. Un bouton Calendars et Adress Books permet donc de gérer respectivement les calendriers et les carnets d’adresses de tous vos utilisateurs.

Baikal_users_and_resources

Gestion des calendriers et des carnets d’addresses

Chaque calendrier est identifié par trois éléments :

  • Un ID, qui nous permettra de retrouver notre calendrier avec nos clients,
  • Un nom,
  • Une description.

La fonction Todo permet la synchronisation ou non des todo lists avec vos clients.

Baikal_calendars

La gestion des carnets d’adresses s’effectue exactement de la même manière !

Vous voilà maintenant en possession d’un serveur d’agenda / contact que vous allez pouvoir synchroniser avec vos équipements. Les tutoriels suivant vous détaillent comment :

Comprenez bien que Baïkal ne vous permet pas de voir ou consulter vos agendas, mais simplement de les administrer et de gérer vos utilisateurs. La visualisation des rendez-vous s’effectue avec vos clients !

J’utilise cette solution depuis plusieurs mois sans problème, je suis vraiment très content du résultat. Tous mes RDV / Contacts synchronisés sur tous mes appareils et hébergés chez moi… Reprenez le contrôle de vos données, vous n’avez plus d’excuse !

Et en cas de pépin n’oubliez pas les commentaires 😉

Cet article vous a plu ? Partagez-le sur les réseaux sociaux !

Twitter Facebook Google Plus email