Geuni/ April 28, 2020/ Deutsch/ 7Kommentare

Im Beitrag „Speicher deine Daten zu hause, z.B. auf einem NAS!“ habe ich erklärt, wie man u.a. seine Daten aus der Cloud in das eigene Wohnzimmer bringen kann. Jetzt gehen wir einen Schritt weiter. Wir versuchen unsere Kontakte und Kalender aus der Cloud ebenfalls in unser Wohnzimmer zu bringen.

1) Welches Ziel haben wir?

Ich will meine Kontakte und Kalender bei mir zu Hause speichern und von dort auch auf alle meine Endgeräte synchronisieren.

2) Welche Anforderungen haben wir?

Wir wollen unsere:

  • Kontakte und Kalender lokal und zentral speichern,
  • diese Kontakte und Kalender auf unseren Smartphones automatisch synchronisieren,
  • und die Kontakte und Kalender in unseren E-Mail Clients automatisch synchronisieren,
  • sowie die Daten sicher über das Internet übertragen (das werden wir nicht in diesem Artikel schaffen!).

3) Was brauchen wir um Kontakte und Kalender zu speichern?

Technisch werden Kontakte bzw. Adressbücher in der sog *.vcf Form gespeichert, Kalender in der *.ics Form (u.a.). Beide Formate sind von der sog. „Interne Engineering Task Force (IETF)“ als „Request for Comment (RFC)“ diskutiert worden und als Standard definiert (RFC vCard, RFC ICS) . Übertragen werden diese Daten mittels des HTTP Protokolls und können somit per TLS im Transport abgesichert werden. Wer jetzt nicht weiß, was HTTP und TLS ist, einfach mal im letzten Artikel schauen, dort wird es nochmal erklärt. Den Server, der diese Funktionen erfüllt, bezeichnet man als CardDav/CalDav Server. CardDav ist für Kontakte, CalDav für Kalender.

Mit diesen Informationen können wir jetzt erstmal googeln was in unserem Beispiel mit einem Qnap NAS möglich ist.

4) CardDav (Kontakte) und/oder CalDav (Kalender) für Qnap?

Nach einer kleinen Recherche, stelle ich fest, dass Qnap eine eigene App hat namens QContactz. Die hab ich ausprobiert. Die schafft es nicht sich auf meinem Smartphone mit den gängigen Adressbüchern zu integrieren. Damit war die Lösung für mich direkt gestorben.

Alle weitere Suche im Qnap App-Store war vergeblich. Ich habe nichts gefunden, was mir einen CalDav oder CardDav Server bereitstellt. Also musste ich eine andere Lösung finden.

Beim googeln bin ich dann auf einen alternativen App-Store für Qnap gestoßen, den Qnap-Club Store.

5) Qnap Club bietet Radicale für Kalender und Kontakte an

Erst einmal installieren wir den Qnap-Club Store auf unserem NAS. Das geht recht einfach. Im Qnap App-Store oben rechts auf das Zahnrad-Symbol klicken dann im Reiter „App-Archiv“ einen neues „Archiv“ „Hinzufügen“ und die folgende URL eintragen: https://store.qnapclub.eu/store/de.xml

Qnap App Center mit App-Archiv
Qnap App Center mit App-Archiv wie man einen weiteren App-Store hinzufügt

Wenn ihr das getan habt, sollte es so aussehen wie im Bild. Wir schließen diesen Dialog und sehen links in der Navigation des Qnap App-Stores ein weiters Symbol. Es hat den Namen den wir ihm im Qnap-Club Store gegeben haben. Nachdem wir dann den Qnap-Club Store browsen können, suchen wir mal die App „Radicale“. Das ist ein kleiner open source CalDav/CardDav Server den wir als sog. QPackage installieren können.

Qnap Club Radicale App für Kontakte und Kalender
Qnap Club Radicale App

Sobald die Installation von Radicale abgeschlossen ist, können wir im App-Store mit einem Klick auf „Öffnen“ in die Konfiguration von Radicale gehen.

6) Radicale konfigurieren über das UI im LAN

Wenn Radicale installiert ist, öffnen wir es und landen auf einer separaten Seite, die so aussehen sollte. Jetzt kommt etwas, dass komisch ist.
Egal welchen Namen ihr eingebt, mit oder ohne Passwort, ihr kommt immer in das nächste Fenster mit „Next“.

Radicale Login Dialog
Radicale Login Dialog
Radicale Admin UI Im Kontext eines Benutzers mit der Darstellung der eingerichteten Kalender und Kontakte
Radicale Admin UI Im Kontext eines Benutzers

Ihr legt also faktisch mit dem eintippen und auf „Next“ klicken, immer einen Account an, außer dieser besteht schon, dann landet ihr im Account. Das ist leider die Standardkonfiguration bei dem Radicale-QPKG im Qnap-Club. Das kann man in der Radicale-config ändern, welche sich unter „/share/CACHEDEV1_DATA/.qpkg/Radicale/config“ befindet (ich gehe hier nicht näher drauf ein, da wir später einen ReverseProxy aufbauen und dort dann mit dem Auth-Type „HTTP_X_Remote_User“ arbeiten werden) befindet.

Kleine Empfehlung: Wer Radicale so einsetzene will, sollte zumindest den Auth-Type in der Config auf „Authenticated“ setzen, dann sollte Benutzername und Passwort erforderlich sein um in einen Account zu gehen! Der nächste Dialog sieht dann, wenn ihr was angelegt habt, meist so aus:

Ich habe Radicale im Einsatz und es anders abgesichert und dazu kommen wir in einem anderen Beitrag (Stichwort: ReverseProxy). Wir könnten uns jetzt mit Radicale auseinandersetzen, es lässt auch eine Konfiguration zu, die sich anders verhält, die Software ist also nicht schlecht, wir werden aber nur den Auth-Type später ändern und alles weiter über einen ReverseProxy machen. Das hat u.a. damit was zu tun, dass wir später noch ein paar mehr Services aufbauen werden und deshalb eine zentrale Verwaltung einiger Aspekte einfacher über einen ReverseProxy abbildbar sind.

7) DavDroid für Android zum Syncronisieren – Installieren

Jetzt fangen wir Mal an unseren eingerichteten Cal/Card-Dav Server zu nutzen. Android ist da sehr einfach. Man lade sich die App DavDroid herunter.

Davx5 im Google Play Store
Davx5 im Google Play Store

Im Play-Store kostet die App 3,99€, im alternativen F-Droid Store ist DavDroiod kostenlos. Wie man den F-Droid-Store installiert (aus dem Play-Store), erkläre ich hier nicht, nur das es ein alternativer App-Store ist, der seinen Fokus auf Open-Source Anwendungen legt.

DAVx5 (ehm. Davdroid) im alternativen Android App-Store F-Droid
DAVx5 (ehm. Davdroid) im alternativen Android App-Store F-Droid

Sobald ihr die App habt, könnt ihr beginnen diese einzurichten.

7) DavDroid für Android zum Syncronisieren – Einrichten

Dazu einfach mal die App starten, dann solltet ihr ein leeres Bild sehen und unten rechts ein großes „+“ Symbol. Da klickt ihr drauf und wählt die Option „Mit URL und Benutzername anmelden“:

Davx5 Einrichtungsdialog
Davx5 Einrichtungsdialog
Davx5 Einstellung bei Einrichtung ob Kontaktgruppen als Karten angezeigt werden
Davx5 Einstellung bei Einrichtung ob Kontaktgruppen als Karten angezeigt werden

Jetzt müssen wir uns Stück für Stück herantasten. Dazu wichtig, Unterscheidung, LAN und WAN. Weiter oben hab ich einen Screenshot von Radicale, wo ich per interne IP auf das NAS ging und dann über das Admin-UI Radicale gestartet habe. Demnach ist das geschwärzte oben im Bild eine intern IP. Wenn unser Smartphone jetzt im heimischen W-LAN ist, dann nehmen wir für einen Test auch erstmal das LAN. Deshalb tragt ihr in das Feld „Basis-URL“ (oben im Bild), genau das ein, was als Link im Bild oben von Radicale steht, bspw. also „http://IP/name/“. Wir lassen also eine ID bspw. von Kalender weg, denn Radicale, erkennt alle angelegten Kalender oder Adressbücher automatisch hinter dem Benutzer. Wenn ihr alles richtig eingegeben habt, kommt der nächste Dialog, wo ihr dann auswählt, ob Gruppen vCards sind oder Kategorien von Kontakte. Ich tendiere zur zweiten Option.

Wenn ihr dann auf „Konto Anlegen“ drückt, sollte das Konto angelegt sein und ihr könnt jetzt auswählen, ob es sich hier um die Synchronisierung von Kontakten oder Kalendern oder beidem handelt.

Wenn ihr jetzt oben rechts im Bild auf das Synchronisierungs-Symbol klickt, sollte das fehlerfrei durchgehen. Ob es wirklich funktioniert hat, seht ihr nun daran, dass ihr die Kontakte App startet, dort, oben rechts auf den drei Punkten in den Kontakt-Manager geht und dort dann unter „Konto-Kontakte“ nachschaut ob ein Adressbuch von Davx5 auftaucht ähnlich dem Bild unten.

Davx5 Konto ist eingerichtet und wir sehen die Auswahl
Davx5 Konto ist eingerichtet und wir sehen die Auswahl
Android Standardadressbuch in den Einstellungen auswählen
Android Standardadressbuch in den Einstellungen auswählen

In meinem Beispiel sind die Screenshots auf meinem OnePlus 5T entstanden im OxygenOS. Wenn ihr ein anderes Android-Smartphone habt, dann wundert euch nicht, wenn die Bilder bei euch evtl. leicht anders aussehen oder die Navigationsbeschreibungen nicht zu 100% bei euch anwendbar sind, das kann nämlich variieren.

Jetzt können wir einen neuen Kontakt anlegen. Bei der Anlage wählen wir aus, dass dieser im neuen Davx5 Adressbuch angelegt werden soll. Ggf. sucht ihr jetzt auf eurem Smartphone wie ihr die Standardauswahl bei der Anlage eines neuen Kontaktes das Davx5 Adressbuch angeben könnt. Erst jetzt werden immer alle neuen Kontakte direkt im richtigen Adressbuch gespeichert.

Man bedenke bei der Lösung, dass es keinen aktiven Push bei Aktualisierungen gibt. Wenn man z.B. Kalender oder Kontakte mit anderen Personen teilt, würde DavDroid die Änderung bei eurem Endgerät erst nach einer definierten Zeitspanne aktualisieren. Anbieter wie z.B. Google bieten hier etwas mehr Komfort und können direkt bei Änderungen „pushen“ sodass alle Endgeräte stets aktuell sind! Das Feature kann man sich selber bspw. mit Z-Push bauen, aber das habe ich selber noch nicht fertig!

Da jetzt niemand lust hat alle seine Kontakte auf dem Smartphone per Hand in ein anderes Adressbuch zu überführen, muss man das am Ende ein wenig anders lösen, das Beschreibe ich am Beispiel G-Mail noch.

8) Card/CalDav Synchronizer für Outlook – Installieren

Ich nehme Outlook als Desktop-Beispiel, weil ich an der Arbeit Outlook nutze und auch zu Hause. Outlook bringt vom Hause aus leider keine Schnittstelle für Card/CalDav mit. Das liegt wohl daran, dass Outlook hauptsächlich als Client für Exchange konzipiert ist, aber das ist nur eine Mutmaßung.

Ich hatte ein paar Tools gesucht und gefunden, doch leider sind viele Add-Ons für Outlook entweder nicht mehr in der Entwicklung oder gehen nur noch für ältere Versionen. Das Addon „Caldavsynchroniser“ ist das einzige was ich gefunden habe, welches aktuell noch weiterentwickelt wird. Deshalb habe ich das genommen.

Man lade also das Addon herunter, installiere es und es taucht in den Ribbons von Outlook direkt auf.

8) Card/CalDav Synchronizer für Outlook – Konfigurieren

Jetzt starten wir über das Ribbon „CalDav Synchronizer“ die „Synchronization Profiles“ und wählt dann „Generic CalDav/CardDav“ aus und kommt dann in die Übersicht, wie man das Profil konfiguriert.

Anzeige der Outlook Ribbons wie das Add-On CalDav Synchronizer konfiguriert.
Anzeige der Outlook Ribbons wie das Add-On CalDav Synchronizer konfiguriert.

Jetzt können wir einen Namen definieren. Dann wählen wir einen Outlookordner aus, der ist frei wählbar, wie es einem am besten gefällt. Dann kommt bei DAV URL einfach die bereits oben beschrieben und auf Android eingesetzte URL hinein, ebenso wie Benutzername und das Passwort (was noch sinnlos ist). Hier sollte man darauf achten, dass ein Kalender aus Radicale in einen Kalenderordner von Outlook synchronisiert wird und gleiches bei Kontakte, denn Outlook unterschiedet hier die Art der Ordner und dessen Handhabung.

CalDavSynchronizer Add-On in Outlook bei der Einrichtung eines Profils um Daten zu synchronisieren.
CalDavSynchronizer Add-On in Outlook bei der Einrichtung eines Profils um Daten zu synchronisieren.

Wenn das erledigt ist, sollte man seine Kalender und/oder Kontakte entsprechend synchronisieren können. Hier müssen zwei Profile angelegt werden, eins für Kalender und eins für Kontakte. Ein einfacher Cross-Test wäre jetzt einen Kontakt in Outlook anzulegen und diesen dann auf dem Smartphone anzusehen.

Wenn ihr das versucht in Outlook umzusetzen, nicht verzweifeln, denn es ist ein wenig Fummelarbeit bis man wirklich alles so hinbekommen hat, dass es annehmbar und einfach in der Nutzung in Outlook ist.

9) CardDav und CalDav auf iPhones

Meine Frau hat ein iPhone und weil wir einen gemeinsamen Kalender haben, habe ich geschaut wie man das auf iOS einrichtet. Naja recht einfach. Man gehe in die Einstellungen unter „Mail, Kontakte, Kalender“ -> „Account Hinzufügen“ -> „Andere“ -> „CardDav“ oder „CalDav“ auswählen und die Daten von eben angeben, fertig. Das ging wirklich schneller und besser als erwartet. Da spare ich mich sogar jegliches Bild.

10) Migration der Kontakte in das lokale Adressbuch

Grundsätzlich ist das recht einfach, wenn wir schon das obige Setup komplett durch haben, denn wir müssen dann nur die Kontakte und Kalender aus GMail exportieren und z.B. über Outlook in den richtigen Ordner der synchronisiert wird, wieder einfügen (das geht per Drag-and-Drop) und schon sind alle Daten migriert. Ich hoffe das diese kleine Beschreibung ausreicht.

11) Kontakte im WebUi bearbeiten wenn man unterwegs ist und kein Lust auf das SmartPhone hat? Pech gehabt?

Leider habe ich bis jetzt noch keinen Client gefunden der webbasiert ist um Kontakte oder Kalender online im Browser zu editieren. Immer gibt es diese Funktionen als Suit, bspw. in einem Mailclient wie Roundcube. Ich hatte mir zwar immer gedacht, dass ich diesen Anwendungsfall haben werde, muss aber ehrlich sagen, dass die Häufigkeit wo ich in großer Menge Kontakte bearbeite, selten sind und dann auch warten kann. Ich muss das nicht auf dem Handy machen und habe mich damit auch nicht mehr weiter beschäftigt.

12) Nachteile der Lösung?

Die oben beschrieben Lösung hat einige Schwachstellen. Offensichtlicht nutzen wir aktuell HTTP ohne TLS als Übertragungsart, was schon einmal nicht gut ist, da es theoretisch jeder mitlesen könnte. Weiterhin ist die Lösung in meinen Augen nicht wirklich gut portabel. D.h. ich kann nicht einfach meine Anwendung nehmen und sie wo anders hinstellen und laufen lassen, ich denke besser geht das mit einer Docker-Lösung, das werden wir aber recht spät angehen. Weiterhin haben wir aktuell auch noch kein Backup!

Die Sicherheitsprobleme können wir mit einem ReverseProxy recht einfach beheben. Ein SSL-Zertifikat können wir dort einfach einbinden, so haben wir zumindest eine gewisse Sicherheit (das geht auch in Radicale, so fair muss ich sein!).

13) Fazit

Zusammengefasst haben wir jetzt einen CalDav/CardDav Server ausfgesetzt, sowie mehrere Clients an den Server angebunden und unsere alten Kontakte in das neue System migriert. Leider haben wir festgestellt, dass die Lösung nicht wirklich sicher ist und wir deshalb hier noch nacharbeiten müssen.

14) Ausblick

Wir bauen uns einen ReverseProxy! In meinem Fall mittels Apache und als Docker. Dazu schauen wir uns an wie das mit Let’s Encrypt funktioniert und wie wir das alles verbinden, sowie unsere bestehenden Services direkt anbinden und einheitlich sicher im Internet konsumieren!

Share this Post

7 Kommentare

  1. Danke für die Anleitung. Die URL für den Store lautet jetzt allerdings:https://qnapclub.eu/de/repo.xml

  2. Vielen Dank für die tollen Beiträge! Genau das habe ich gesucht. Bitte weiter machen und mehr solche Blog Beiträge schreiben.

  3. Ich habe auch ein QNAP NAS und möchte, wie im Artikel erwähnt das Synchronisieren der Kontakte und Kalender im Docker umsetzen. Ich warte bis der Artikel erscheint.

    1. Vielen lieben Dank für dein Kommentar. Ich habe die Lösung schon fertig mit Radikale im Docker, komme nur aktuell nicht dazu weiter zu schreiben. Ich hoffe ich schaffe es in den kommenden Monaten endlich.

  4. Danke für die Anleitung funktioniert alles bestens. Intressant wäre noch wie Sie das mit dem Reverse Proxy gelöst haben.

    1. Hallo, ich hab zwei Artikel über einen Reverse Proxy verfasst. Dort sollten die Beschreibungen stehen wie das Unwetter werden kann.

  5. Hallo, gute Artikel. Radicale funktioniert soweit. Vielen Dank dafür. Aber wie geht das jetzt mit dem SSL? Bin ich zu doof den Artikel zu finden oder ist er noch gar nicht veröffentlicht?

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*
*