wiki/HowtoVdirsyncer.md
2022-07-19 18:02:53 +02:00

120 lines
2.7 KiB
Markdown

---
categories: sysadmin
title: Howto Vdirsyncer
...
* Documentation: <https://vdirsyncer.pimutils.org/en/stable/>
Vdirsyncer est un outil de synchronisation de calendriers et de carnets d'adresses avec une gestion de droits et de priorités en cas de conflits.
## Déploiement
Son installation est simple avec son compte utilisateur :
~~~
pip install --user vdirsyncer
~~~
L'emplacement de son fichier de configuration :
~~~
mkdir -vp ~/.config/vdirsyncer/
~~~
## Configuration
### Synchronisation unidirectionnelle
Admettons que l'on veuille la synchro d'un calendrier et d'un carnet d'adresse précis d'un serveur zimbra vers un serveur nextcloud. On a besoin des identifiants et du nom précis des calendriers et des carnets d'adresses :
~~~
ZIMBRA_URL=
ZIMBRA_USER=
ZIMBRA_MDP=
ZIMBRA_NOM_CALENDRIER=Calendar
ZIMBRA_NOM_CONTACT=Contacts
NEXTCLOUD_URL=
NEXTCLOUD_USER=
NEXTCLOUD_MDP=
NEXTCLOUD_NOM_CALENDRIER=personal
NEXTCLOUD_NOM_CONTACT=Contacts
~~~
Qui seront utile pour valider la configuration :
~~~
cat > ~/.config/vdirsyncer/config <<EOF
[general]
# Emplacement où se trouve la base des métadonnées
status_path = "~/.local/state/vdirsyncer/status/"
#### Calendar
[pair pull2push_calendar]
a = "remote_zimbra"
b = "remote_nextcloud"
collections = null
[storage remote_zimbra]
type = "caldav"
# On précise le calendrier :
url = "https://$ZIMBRA_URL/dav/$ZIMBRA_USER/$ZIMBRA_NOM_CALENDRIER"
username = "$ZIMBRA_USER"
password = "$ZIMBRA_MDP"
# Pas d'écriture sur cette instance :
read_only = true
[storage remote_nextcloud]
type = "caldav"
# On précise le calendrier :
url = "https://$NEXTCLOUD_URL/remote.php/dav/calendars/$NEXTCLOUD_USER/$NEXTCLOUD_NOM_CALENDRIER/"
username = "$NEXTCLOUD_USER"
password = "$NEXTCLOUD_MDP"
#### Contacts
[pair pull2push_contacts]
a = "remote_zimbra_contacts"
b = "remote_nextcloud_contacts"
collections = null
[storage remote_zimbra_contacts]
type = "carddav"
# On précise le nom du carnet
url = "https://$ZIMBRA_URL/dav/$ZIMBRA_USER/$ZIMBRA_NOM_CONTACT/"
username = "$ZIMBRA_USER"
password = "$ZIMBRA_MDP"
# Pas d'écriture sur cette instance :
read_only = true
[storage remote_nextcloud_contacts]
type = "carddav"
# On précise le nom du carnet
url = "https://$NEXTCLOUD_URL/remote.php/dav/addressbooks/users/$NEXTCLOUD_USER/$NEXTCLOUD_NOM_CONTACT/"
username = "$NEXTCLOUD_USER"
password = "$NEXTCLOUD_MDP"
EOF
~~~
A chaque modification de la configuration, il faut faire un discover :
~~~
vdirsyncer discover
~~~
Ainsi, on voit si les sélections sont correctes.
### Synchronisation
Sans disposer de daemon pour se lancer continuellement en arrière plan, la synchronisation se fait manuellement avec :
~~~
vdirsyncer sync
~~~
L'usage d'une tâche cron est donc conseillé :
~~~
10 1 * * * vdirsyncer sync
~~~