118 lines
2.9 KiB
Markdown
118 lines
2.9 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.
|
|
|
|
|
|
## Installation
|
|
|
|
Il y a besoin :
|
|
|
|
~~~
|
|
# apt install vdirsyncer libpam-systemd
|
|
~~~
|
|
|
|
Depuis son compte UNIX, déclarer 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 des noms précis des calendriers et des carnets d'adresses des deux instances :
|
|
|
|
~~~
|
|
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"
|
|
conflict_resolution = "a wins"
|
|
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"
|
|
conflict_resolution = "a wins"
|
|
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
|
|
~~~
|
|
|
|
Il faut lancer la commande suivant à chaque modification pour vérifier s'il n'y a pas d'erreurs de syntaxe :
|
|
|
|
~~~
|
|
vdirsyncer discover
|
|
~~~
|
|
|
|
### Synchronisation
|
|
|
|
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) :
|
|
|
|
~~~
|
|
# loginctl enable-linger foo
|
|
# su - foo
|
|
$ systemctl --user enable vdirsyncer.timer
|
|
~~~
|
|
|
|
Ainsi toutes les 15 minutes, la commande `vdirsyncer sync` sera lancée. |