wiki/HowtoVdirsyncer.md

155 lines
3.9 KiB
Markdown
Raw Permalink Normal View History

---
2022-07-29 16:01:25 +02:00
categories: sysadmin Zimbra zimbra Nextcloud nextcloud sync synchro synchronisation vdirsyncer
title: Howto Vdirsyncer
...
* Documentation: <https://vdirsyncer.pimutils.org/en/stable/>
2022-07-29 16:01:25 +02:00
Vdirsyncer est un outils 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-29 16:01:25 +02:00
Installer les paquets sur votre poste :
~~~
2022-07-25 16:48:13 +02:00
# apt install vdirsyncer libpam-systemd
~~~
Sous Bullseye, une [incompatibilité avec python-click](https://bugs.debian.org/1008502) rend le paquet inutilisable, mais les versions compatibles peuvent être installé depuis [notre dépôt backports](/HowtoDebian/Backports).
~~~
# apt install python3-click/bullseye-backports python3-click-threading/bullseye-backports
~~~
2022-07-29 16:01:25 +02:00
Avec votre compte Unix, créer le répertoire de configuration de Vdirsyncer :
~~~
2022-07-25 16:48:13 +02:00
$ mkdir -vp ~/.config/vdirsyncer/
~~~
## Configuration
2022-07-29 16:01:25 +02:00
Pour synchroniser un calendrier et un carnet d'adresse d'un serveur Zimbra vers un serveur Nextcloud, il faut spécifier dans la configuration les identifiants et les noms des calendriers et carnets d'adresses des deux instances.
2022-07-29 16:01:25 +02:00
Renseigner les variables shell suivantes :
~~~
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
2023-02-23 18:34:57 +01:00
NEXTCLOUD_NOM_CONTACT=contacts
2022-07-19 18:02:53 +02:00
~~~
2022-07-29 16:01:25 +02:00
Puis, créer le fichier de configuration :
2022-07-19 18:02:53 +02:00
~~~
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 :
2023-02-23 17:54:09 +01:00
url = "$ZIMBRA_URL/dav/$ZIMBRA_USER/$ZIMBRA_NOM_CALENDRIER"
2022-07-19 18:02:53 +02:00
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 :
2023-02-23 17:54:09 +01:00
url = "$NEXTCLOUD_URL/remote.php/dav/calendars/$NEXTCLOUD_USER/$NEXTCLOUD_NOM_CALENDRIER/"
2022-07-19 18:02:53 +02:00
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
2023-02-23 17:54:09 +01:00
url = "$ZIMBRA_URL/dav/$ZIMBRA_USER/$ZIMBRA_NOM_CONTACT/"
2022-07-19 18:02:53 +02:00
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
2023-02-23 17:54:09 +01:00
url = "$NEXTCLOUD_URL/remote.php/dav/addressbooks/users/$NEXTCLOUD_USER/$NEXTCLOUD_NOM_CONTACT/"
2022-07-19 18:02:53 +02:00
username = "$NEXTCLOUD_USER"
password = "$NEXTCLOUD_MDP"
EOF
~~~
2023-02-23 18:06:06 +01:00
## Tester
Vérifier la syntaxe de la configuration (**qu'il faut lancer à chaque modification du fichier de configuration**) :
~~~
vdirsyncer discover
~~~
2023-02-23 18:06:06 +01:00
La sortie devrait être :
~~~
Discovering collections for pair pull2push_calendar
remote_zimbra:
- "Calendar"
remote_nextcloud:
- "personal" ("Personal")
Saved for pull2push_calendar: collections = null
Discovering collections for pair pull2push_contacts
remote_zimbra_contacts:
- "Contacts"
remote_nextcloud_contacts:
- "contacts" ("Contacts")
Saved for pull2push_contacts: collections = null
~~~
On obtient 2 paires `pull2push_calendar` et `pull2push_contacts`
## Importation manuelle
2023-02-23 18:08:19 +01:00
Lancer la copie d'une seule paire :
2023-02-23 18:06:06 +01:00
~~~
vdirsyncer sync pull2push_contacts
~~~
## Importation automatique
2022-07-29 16:01:25 +02:00
Lancer le timer systemd fournit par la paquet `vdirsyncer` avec un compte [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
2023-02-28 18:10:14 +01:00
$ systemctl --user start vdirsyncer.timer
~~~
2023-02-27 18:29:22 +01:00
Ainsi, la commande `vdirsyncer sync` sera lancée toutes les 5 minutes.