wiki/HowtoVdirsyncer.md

118 lines
2.9 KiB
Markdown
Raw Normal View History

---
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.
2022-07-25 16:48:13 +02:00
## Installation
2022-07-25 16:48:13 +02:00
Il y a besoin :
~~~
2022-07-25 16:48:13 +02:00
# apt install vdirsyncer libpam-systemd
~~~
2022-07-25 16:48:13 +02:00
Depuis son compte UNIX, déclarer l'emplacement de son fichier de configuration :
~~~
2022-07-25 16:48:13 +02:00
$ mkdir -vp ~/.config/vdirsyncer/
~~~
## Configuration
### Synchronisation unidirectionnelle
2022-07-25 16:48:13 +02:00
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 des noms précis des calendriers et des carnets d'adresses des deux instances :
~~~
2022-07-19 18:02:53 +02:00
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 :
~~~
2022-07-25 16:48:13 +02:00
$ 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"
2022-07-25 16:48:13 +02:00
conflict_resolution = "a wins"
collections = null
[storage remote_zimbra]
type = "caldav"
# On précise le calendrier :
2022-07-19 18:02:53 +02:00
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 :
2022-07-19 18:02:53 +02:00
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"
2022-07-25 16:48:13 +02:00
conflict_resolution = "a wins"
collections = null
[storage remote_zimbra_contacts]
type = "carddav"
# On précise le nom du carnet
2022-07-19 18:02:53 +02:00
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
2022-07-19 18:02:53 +02:00
url = "https://$NEXTCLOUD_URL/remote.php/dav/addressbooks/users/$NEXTCLOUD_USER/$NEXTCLOUD_NOM_CONTACT/"
username = "$NEXTCLOUD_USER"
password = "$NEXTCLOUD_MDP"
EOF
~~~
2022-07-25 16:48:13 +02:00
Il faut lancer la commande suivant à chaque modification pour vérifier s'il n'y a pas d'erreurs de syntaxe :
~~~
vdirsyncer discover
~~~
### Synchronisation
2022-07-25 16:48:13 +02:00
Le package Debian vdirsyncer inclus un fichier timer pour systemd qui peut être lancé via l'[utilisateur](https://wiki.evolix.org/HowtoSystemd#systemd-par-utilisateur) :
~~~
2022-07-25 16:48:13 +02:00
# loginctl enable-linger foo
# su - foo
$ systemctl --user enable vdirsyncer.timer
~~~
2022-07-25 16:48:13 +02:00
Ainsi toutes les 15 minutes, la commande `vdirsyncer sync` sera lancée.