Synchronisationsfehler mit DAVdroid nach Update auf Nextcloud 11

Posted on Friday, 06 January 2017 in Server

Nachdem Nextcloud 11 mit vielen interessanten Neuerungen angekündigt wurde, wie beispielsweise neue Sicherheitsfunktionen inklusive 2-Faktor-Authentifizierung (2FA) mittels U2F oder TOTP, ein überarbeiteter Appstore mit Signaturen, experimentelle WebRTC-Funktionalität für Videokonferenzen und mehr, habe ich mich endlich daran gesetzt, meine Nextcloud-Instanz auf das neue Release zu aktualisieren. Serverseitig hat alles problemlos funktioniert, auch das Einrichten der 2FA und Backup-Passwörtern war kein Problem. Bis ich nach einer Weile auf meinem Android-Smartphone feststellen musste, dass DAVdroid keine Synchronisation mehr mit meinen Kalendern und Kontakten durchführen wollte.

Hauptgrund ist eine serverseitige Änderung der Links für CalDAV und CardDAV, unter denen die Daten mit Nextcloud ausgetauscht werden. Ein scheinbar anderes auftretendes Problem wurde bereits in der aktuellen Version von DAVdroid behoben, sodass von DAVdroid erst mal kein Fehler zu erwarten ist. Ich nutze nginx und habe noch Teile von meiner alten ownCloud-Installation in meiner Konfiguration. Und zwar handelt es sich um die Weiterleitungen für die CalDAV- und CardDAV-Schnittstelle:

rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;

Die beiden Schnittstellen wurden zusammengelegt und die alten, oben zu sehenden Links funktionieren seit Version 11 nicht mehr. Die neue Konfiguration (nginx) sollte folgendermaßen abgeändert werden:

rewrite ^/.well-known/caldav(.*)$ /remote.php/dav$1 redirect;
rewrite ^/.well-known/carddav(.*)$ /remote.php/dav$1 redirect;

Die konkrete Umsetzung kann auch anders erfolgen. Hauptsächlich geht es um die Links, die weitergeleitet werden, und worauf sie weiterleiten, in welcher Struktur auch immer. Danach sollte vom Server her wieder alles funktionieren. Ob die Weiterleitung richtig eingerichtet ist, kann mit einem

$ curl -I https://cloud.mydomain.tld/.well-known/caldav

überprüft werden. In dem zurückgelieferten Header sollte ein "301 Moved Permanently" oder "302 Moved Temporarily" und unter "Location:" der neue Link "https://cloud.mydomain.tld/remote.php/dav" erscheinen.

DAVdroid neu einrichten

Das Problem in DAVdroid besteht allerdings immer noch. Grund ist, dass DAVdroid die Server-Links nicht neu einliest, weswegen das Konto gelöscht und neu eingerichtet werden muss. So werden die neuen richtigen Links eingelesen und die Synchronisation sollte wieder problemlos funktionieren.

Doppelte Kontakte durch Signal

Ein Problem, dass in Verbindung mit Signal auftritt, wenn das Adressbuch neu eingerichtet wird, ist, dass die alten Signal-Kontakte mit der Telefonnummer verknüpft noch im Adressbuch vorhanden sind und dadurch auch in Signal selbst nur die Telefonnummern der Kontakte eingezeigt werden. Die Lösung dieses Problems ist einfach: In den Einstellungen von Android unter dem Menüpunkt Konten werden alle Konten auf dem Gerät aufgelistet. Um die doppelten Kontakte loszuwerden, muss das Signal-Konto gelöscht werden. Die Warnung, dass dadurch Daten gelöscht werden, ist falsch und kann ignoriert werden. Es werden lediglich die Nummern gelöscht, die aufgrund der Signal-Verknüpfung im Adressbuch vorhanden sind. Anschließend muss Signal geöffnet werden. Dort auf das blaue Symbol mit dem Stift klicken. In der sich öffnenden Ansicht muss nun oben rechts im Menü Aktualisieren ausgewählt werden, womit die Verknüpfungen zwischen Signal und den eigenen Kontakten wiederhergestellt werden, womit auch wieder die im Adressbuch hinterlegten Namen in Signal auftauchen.