120 lines
2.7 KiB
Markdown
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
|
|
~~~ |