Pourquoi migrer ?
Utilisateur heureux de services auto-hébergés sur
Debian+YunoHost, j'utilise avec
joie le serveur de calendrier et contacts Baïkal
(via notamment l'excellente interface agendav).
Il manque quand même à Baïkal une fonctionnalité assez cruciale : le support
de calendriers partagés entre utilisateurs. Baïkal v2, une réécriture du
logiciel,
doit apporter cette fonctionnalité
mais force est de contacter que ça traîne, depuis au moins un an.
La fonctionnalité de partage est d'autant plus indispensable que je souhaite,
pour les synchronisations mobiles, utiliser un compte dédié, afin d'éviter de
stocker sur un téléphone les identifiants de mon compte principal d'utilisateur
YunoHost.
Bref, OwnCloud offre cette fonctionnalité de
partage, et fait le job, en tant que serveur de calendriers/contacts partagés.
Même si j'étais réticent à installer tout OwnCloud pour juste les calendriers
et contacts, pragmatiquement, c'est la meilleure solution pour moi.
Comment migrer ?
La migration que nous allons voir doit être effectuée par chaque utilisateur
YunoHost, elle utilise le logiciel
vdirsyncer, exécuté depuis une machine
cliente (pas nécessairement sur votre serveur YunoHost).
Fonctionnalités :
- Copie de tous les calendriers de Baïkal vers OwnCloud ;
- copie du carnet d'adresses par défaut de Baïkal vers OwnCloud.
Limitations :
- Les noms et les couleurs ne sont pas synchronisés ;
- seul le carnet d'adresse par défaut est synchronisé.
Environnement
La procédure a été testée sur Debian Jessie, mais devrait fonctionner depuis
d'autres systèmes.
- Notre utilisateur s'appelle jdoe
- OwnCloud est installé à l'adresse https://example.com/owncloud/
- Baikal est installé à l'adresse https://example.com/baikal/
Préparation
Installer OwnCloud (ex : via l'application dédiée si vous utilisez YunoHost),
et y activer la fonctionnalité contacts.
Installation de vdirsyncer
Sur la machine cliente :
sudo apt install python-virvualenv virtualenvwrapper
mkvirtualenv --python /usr/bin/python3 vdirsyncer
pip install vdirsyncer
Note : un
virtualenv
est utilisé car il y a des
problèmes connus
sinon.
Synchronisation
IL est ensuite nécessaire de créer un fichier de configuration pour indiquer à
vdirsyncer ce qu'il doit synchroniser. Créer le répertoire
~/.config/vdirsyncer et y placer le fichier ~/.config/vdirsyncer/config avec
un contenu similaire (y intégrer les bonnes URL et noms d'utilisateurs) :
[general]
status_path = ~/.vdirsyncer/status/
## Synchronise tous les calendriers
[pair calendars]
a = baikal_calendars
b = owncloud_calendars
collections = ["from a"]
[pair contacts]
a = baikal_contacts
b = owncloud_contacts
collections = ["from a"]
[storage baikal_calendars]
type = caldav
url = https://example.com/baikal/cal.php/calendars/jdoe/
username = jdoe
password.fetch = ["prompt", "Password for Baikal"]
[storage owncloud_calendars]
type = caldav
url = https://example.com/owncloud/remote.php/caldav/calendars/
username = jdoe
password.fetch = ["prompt", "Password for owncloud"]
## Synchronise le carnet d'adresse par défaut
[pair contacts_default]
a = baikal_contacts
b = owncloud_contacts
[storage baikal_contacts]
type = carddav
url = https://example.com/baikal/card.php/addressbooks/jdoe/default/
username = jdoe
password.fetch = ["prompt", "Password for Baikal"]
[storage owncloud_contacts]
type = carddav
url = https://example.com/owncloud/remote.php/carddav/addressbooks/jdoe/contacts
username = jdoe
password.fetch = ["prompt", "Password for owncloud"]
Il ne reste qu'à lancer la synchronisation:
Le logiciel devrait normalement vous demander vos mots de passe puis si il
doit créer les calendriers qui n'existent pas sur OwnCloud.
Finitions
Il faut maintenant aller, pour chaque calendrier migré, dans owncloud, le
nommer et lui choisir une couleur, la copie n'ayant pas préservé ces attributs,
mais, cela reste un volume de travail manuel raisonnable...
Pour aller plus loin
Nous n'avons vu ici qu'un des usages possibles de vdirsyncer, il permet également :
- de faire la migration dans l'autre sens ;
- de maintenir deux serveurs caldav/cardav synchronisés ;
- de synchroniser un serveur caldav/carddav avec votre machine locale.
- ...
Bref, c'est un peu le offlineimap du caldav/carddav
et il dispose d'une
excellente documentation !
commentaires