Offline-Sync für OwnCloud-Kontakte und Kalender mit CardDAV und CalDAV
Für E-Mails gibt es Offlineimap, um Mails von Servern auf den lokalen Rechner herunterzuladen und sie mit dem Server synchron zu haben. Wie man sich offlineimap und mutt mit IMAP einrichtet, erkläre ich in einem anderen Blog-Post.
Hier folgt nun die Erklärung, wie man Kontakte von
ownCloud auf den lokalen Rechner
synchronisiert. Dazu wird, analog zum
Maildir lokal ein Verzeichnis
von ical- und
vCard-Dateien angelegt, auf die
man mit verschiedenen Clients zugreifen kann. Außerdem erkläre ich die
Einrichtung von Clients für die Kommandozeile (cli) und die Integration
in mutt
.
Voraussetzungen
Zuallererst benötigen wir den SSL-Fingerprint des entfernten Servers. Wer sich ein kostenpflichtiges SSL-Zertifikat gekauft hat, kann diesen Schritt überspringen – alle anderen und wer wirklich auf Nummer sicher gehen möchte, können jedoch den Fingerprint des Zertifikats in der Konfiguration schon im Vorfeld festlegen.
In der Bildergalerie ist vorgeführt, wie man den Fingerprint mit Firefox ermittelt:
Bitte den SHA1-Fingerabdruck gut notieren.
Die Anleitung ab sofort basiert auf Debian 8.1, funktioniert genau so aber auch unter Ubuntu. Wer eine andere Distribution einsetzt, muss die Kommandos natürlich entsprechend anpassen.
Wir brauchen:
virtualenvwrapper
um die Python-Bibliotheken und -Programme vom restlichen System fernzuhaltenlxml
python
openssl
xslt1
- Compiler usw.
Um diese Pakete unter Debian zu installieren, genügt folgender Befehl:
apt-get install virtualenvwrapper libxml2-dev python-dev libssl-dev libxslt1-dev build-essential
Nachdem die auf dem System notwendigen Bibliotheken so installiert wurden, erstellen wir die abgeschlossene Python-Umgebung für die Programme. Wir verwenden dafür virtualenv. Dadurch haben wir den Vorteil, dass die zu installierenden Bibliotheken und Programme unabhängig von den restlichen auf dem System laufen können und wir so weder Unordnung im System verursachen noch in Abhängigkeitsprobleme und Versionskonflikte kommen.
Um die virtuelle Umgebung zu erstellen und die Programme zu installieren, verwenden wir den folgenden Befehl:
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
mkvirtualenv pim
pip install vdirsyncer keyring khal khard
Installiert werden vdirsyncer
zum Synchronisieren der PIM-Dateien,
keyring
, um Passwörter statt unsicher in der Konfigurationsdatei
lieber sicher im system-eigenen Passwortspeicher ablegen zu können und
die Beiden Programme khal
und khard
, zum Zugriff auf den Kalender
bzw. die Kontakte.
Die Befehle sind allerdings nur innerhalb der isolierten Python-Umgebung verfügbar. Um sie auch außerhalb zur Verfügung zu stellen, müssen kleine Änderungen am Suchpfad vorgenommen werden:
mkdir ~/.bin/
ln -s ~/.virtualenvs/pim/bin/{vdirsyncer,khal,khard,ikhal} ~/.bin/
echo PATH="~/.bin/:$PATH" >> ~/.bashrc
Konfiguration
Zunächst erstellen wir ndie notwendigen Verzeichnisse:
mkdir -p ~/.config/{vdirsyncer,khal,khard}
mkdir -p ~/.local/share/vdirsyncer
Es folgt die Konfiguration der Synchronisation. Dazu bearbeiten wir
~/.config/vdirsyncer/config
. Dabei ist das folgende Beispiel natürlich
den eigenen Bedürfnissen anzupassen:
[general]
status_path = ~/.local/share/vdirsyncer/
[pair Kontakte]
a = kontakte_lokal
b = kontakte_remote
collections = ["from b"]
[storage kontakte_lokal]
type = filesystem
path = ~/.pim/kontakte/
fileext = .vcf
[storage kontakte_remote]
type = carddav
url = https://URL-ZUM-OWNCLOUD-SERVER/remote.php/carddav/
verify_fingerprint = "SHA1-FINGERPRINT" # kann man auch rauslassen, wenn man ein SSL-Zertifikat gekauft hat
username = OWNCLOUD-USERNAME
[pair Kalender]
a = kalender_lokal
b = kalender_remote
collections = ["from b"]
[storage kalender_lokal]
type = filesystem
path = ~/.pim/kalender/
fileext = .ics
[storage kalender_remote]
type = caldav
url = https://URL-ZUM-OWNCLOUD-SERVER/remote.php/caldav/
username = OWNCLOUD-USERNAME
verify_fingerprint = "SHA1-FINGERPRINT"
Um die Konfiguration zu testen und die verfügbaren Adressbücher und Kontaktlisten abzuspeichern, verwenden wir:
vdirsync discover
Dabei wird auch das Passwort für die Synchronisation abgefragt, was gegebenenfalls im Passwortspeicher des Systems hinterlegt wird. Während des Vorgangs werden auch einige Fehlermeldungen angezeigt, nach denen verschiedene Verzeichnisse nicht existieren. Die Frage, ob diese erstellt werden sollen, muss natürlich mit Ja beantwortet werden.
Hat alles ohne weitere Schwierigkeiten geklappt, können sogleich alle Kontakte und Termine synchronisiert werden:
vdirsyncer sync
Jetzt sollten in ~/.pim/kontakte
und ~/.pim/kalender
Verzeichnisse
mit den jeweiligen Daten liegen. Um auf diese bequem von der
Kommandozeile aus zugreifen zu können, konfigurieren wir nun khal
und
khard
. Die Namen der jeweiligen finden wir auf der Kommandozeile
heraus:
find ~/.pim -maxdepth 2 -mindepth 2 -type d|cut -d'/' -f2,3|sed 's/\//: /'
Zu bearbeiten sind als nächstes die Konfigurationsdateien. Wie immer sind sie an die eigenen Bedürfnisse anzupassen:
Für khal
:
[calendars]
[[default]]
path = ~/.pim/kalender/defaultcalendar/
color = light red
[[geburtstage]]
path = ~/.pim/kalender/contact_birthdays/
color = yellow
readonly = true
für khard
:
[addressbooks]
[[kontakte]]
path = ~/.pim/kontakte/kontakte/
[general]
editor = /usr/bin/vim
default_country = Germany
default_action = list
show_nicknames = no
Die Namen der jeweiligen Sektionen zwischen doppelten eckigen Klammern,
also etwa [[kontakte]]
entsprechden der Ausgabe des vorhin
ausgeführten find
-Befehls.
Verwendung
Synchronisiert werden Kontakte und Kalender mit
vdirsyncer sync
Der Kalender kann einmalig angezeigt werden mit khal
oder im
interaktiven Modus mit ikhal
verwendet werden. Kontakte sind eher zum
Durchsuchen gedacht, etwa so:
khard -s Heinle
mutt
Um die synchronisierten Kontakte bequem direkt aus mutt
verwenden zu
können, muss die Konfiguration von “mutt` angepasst werden. Die
folgenden Änderungen sind an ~/.muttrc vorzunehmen:
set query_command = "khard mutt --search '%s'"
macro index, pager A \
"<pipe-message>khard add-email<return>" \
"add the sender email address to khard"
Andere Vorkommnisse von query_command
müssen natürlich gelöscht oder
auskommentiert werden. Wer meine Anleitung zum Betrieb von
mutt
verwendet hat, nimmt die erste Änderung in ~/.mutt/config.d/account
vor, löscht set_query_command
aus ~/.mutt/config.d/gmail
und fügt
die zweite Änderung in ~/.mutt/config.d/bindings
hinzu.
Nun können aus mutt
mit der Taste Q
(großes Q
!) Adressen gesucht
werden und mit A
(großes A
!) aus der Mail-Übersicht oder einer
Mail heraus Adressen zum Adressbuch hinzugefügt werden.