Familien-Adressbuch


Die tapferen Leser der IT-Sparte meines Blogs kennen vielleicht den Artikel über den Familienkalender. Dieses Projekt hat Anfang des Jahres 2017 eine Fortsetzung erhalten: Das Familien-Adressbuch.

Auslöser des zweiten Kapitels in der Geschichte der Google-freien Synchronisation war eine Mail von meinem Hoster, dass er PHP5.5 deaktivieren wolle.

Der erste Schritt: Update auf PHP7.0

Auf der Management-Seite meines Web-Produktes konnte ich die gewünschte Version einstellen. Möglich ist bei mir nur genau eine Version für alle meine Programme. Installiert sind dieser Blog, der Kalender-Server und ein Wiki ist in Vorbereitung. Ich habe die Version auf 7.0 raufgesetzt und sowohl Blog (WordPress) als auch Wiki (Media-Wiki) funktionierten einfach weiter. Migration, wie sie sein soll.

Der Kalender-Server ist aber durch den Wechsel von PHP5.5 zu PHP 7.0 komplett aus der Kurve geflogen: Die Management-Seite reagierte mit einem PHP-Fehler, die Synchronisation legte sich auch mit lustigen Fehlern hin. Ich habe daher zu recherchieren begonnenen, wie ich denn die fest in der Familienorganisation verankerte Kalender-Synchronisation wieder in Gang bekomme.  Auf GitHub habe ich eine Seite gefunden, die Maßnahmen beschreibt, meine Version 0.2.x für PHP7.0 zu patchen. Ich habe das ausprobiert und bin genau keinen Millimeter weiter gekommen. Dieser Weg scheint mir mindestens sehr schmerzhaft oder gar eine Sackgasse zu sein.

Zum Glück habe ich eine weitere Seite gefunden, die einen Migrationspfad von meiner Version 0.2.x zur aktuellen Version 0.4.x aufzeigte. Die neue Version sollte dann auch mit PHP7.0 laufen. So sieht der Pfad aus:

  1. Erstelle eine Sicherung der Datenbank des Baikal-Servers. Unbedingt!
  2. Erstelle eine Sicherung des Installationsverzeichnisses des Baikal-Servers.
  3. Hole das neueste Baikal 0.4.x von github.
  4. Benenne das jetzige Installationsverzeichnis von Baikal um, zum Beispiel von /baikal zu baikal-0.2.x
  5. Erstelle ein neues Verzeichnis mit originalem Namen, in diesem Beisspiel /baikal.
  6. Kopiere das ganze Zeug aus dem Baikal 0.4.x ZIP-Archiv dortin.
  7. Achtung! Sorgfältig! Kopiere den Inhalt des alten baikal-0.2.x/Specific Verzeichnis in das neue Verzeichnis /baikal/Specific.
  8. Gehe auf die Admin-Seite http://dav.example.org/baikal/html/admin/.
  9. Mach, was da steht, wobei eigentlich nur so etwas wie “ja, bitte aktualisiere” da steht.

Ich bin entlang dieses Pfades erfolgreich gewesen: PHP7.0 tut, der Server tut, der kombinierte Zugangspunkt für Cal- und Card-Dav tut.

Das Familien-Adressbuch

Mir sind dabei noch ein paar Besonderheiten aufgefallen, die ich Euch nennen möchte:

  1. Auf dem Baikal-Server habe ich zusätzlich zu den Kalendern Adressbücher unter dem Familien-Account angelegt: Eines für jedes Familienmitglied, eines für alle und ein Archiv für die Adress-Reste-Rampe. Dorthin haben wir die Adressen geschoben, die wir “mal später” auf Gültigkeit prüfen wollen.
  2. Ich musste in der Baikal-Managementseite die URL CalDAV/CardDAV base URI anpassen, wie ich es schon für die URLs der separaten CalDAV und CardDAV Zugangspunkte getan habe.
  3. Beachtet, dass für die Zugangspunkte nun eine Verzeichnisebene hinzugekommen ist:  http://dav.example.org/baikal/html/dav.php/principals/Familie
  4. Ich benutze nun den kombinierten cal / card-dav Zugang. Ich musste dazu auf den Handies die davdroid-Konten entfernen und mit der neuen URL wieder anlegen. Das ist lästig, geht aber ohne Datenverlust (bei mir war es so, so soll es theoretisch sein, ich übernehme keine Gewähr).
  5. Android bietet nun beim Anlegen eines Kontos an, beliebig viele Kalender zu synchronisieren, aber nur ein Adressbuch. Das ist zwar lästig, aber nicht schlimm: Legt einfach ein weiteres Konto mit der gleichen URL, Name und Passwort an, wählt ein anderes Adressbuch aus und gebt dem Konto einen andere Namen.
Adressen aufräumen

Das Aufräumen der Adressen in den Handy-Adressbüchern war eine Sch***arbeit. Ich bitte dieses unflätige Wort zu entschuldigen. Mir will für jedoch keine geschliffenere Formulierung einfallen, die vergleichbar gut ausdrückt, was nach der Einrichtung des Servers noch folgen sollte.

Naturgemäß sind auf dem Handy mehrere Adressbücher – zum Beispiel ein Telefon-Adressbuch, eines bei Google, eines auf der Sim-Karte und ggf. noch eines auf einem Exchange-Server. Wenn ich nun das Adressbuch öffne, kann ich nicht sofort erkennen, in welchem dieser Adressbücher ein Kontakt gespeichert ist. Die Adressbuch-Anwendung zeigt alle Adressen und führt doppelte Adressen auch magisch zusammen. Habe ich also von einem Kontakt Klaus Mustermann im Google Adressbuch die Adresse, auf dem Telefon-Adressbuch die Handynummer, sehe ich das nicht sofort. Erst wenn ich die Adresse editiere, sehe ich, welche Anteile in welchem Adressbuch liegen.

Weiterhin gibt es noch „verbundene Kontakte“, zum Beispiel Threema oder WhatsApp Accounts von dem Herrn Mustermann. Wenn ich Herrn Mustermanns Adresse entferne, nehmen die verbundenen Adressen Schaden: die WhatsApp kontakte stehen dann auch ohne Namen da.

Meine beste Ehefrau von allen und ich haben also in mehreren Nachmittags- und Abend-Sessions jeweils unsere Adressen lokal korrigiert und kategorisiert. Wir sind sie dann gemeinsam durchgegangen und haben sie manuell auf Zuruf zusammengeführt. Dann hat einer den Kontakt mit Hilfe der kostenpflichtigen App „CopyContacts“ in das jeweilige Adressbuch „persönlich“, „Familie“ oder „Archiv“ verschoben.  Abschließend haben wir in der Ursprungsanwendung (Web-Access für Google-Adressen, Outlook für Exchange) auf dem PC die Adresse gelöscht. Der Sync auf das Handy schien weitgehend nebenwirkungsfrei zu sein.

Sicherung des Servers

Baikal kann die Kalender- und Adressbucheinträge als *.ics und *.vcf exportieren. Das habe ich mit dem Tool wget automatisiert. Den Import habe ich übrigens nur für die Adressen getestet: Google kann die Datei einlesen, das Ergebnis sieht auch soweit vernünftig aus. Von dort würde es dann wieder per CopyContact zu den Baikal-Adressbüchern gehen. Ja, mir ist bewusst, das der Google-Weg eben doch wieder ein Weg über Google ist, den ich ja vermeiden will. Vielleicht sichere ich auch noch die Datenbank direkt, dann wäre das Problem auch gelöst. Das Zurückspielen der Kalender-Einträge habe ich nicht getestet.

Hier seht Ihr den Aufruf für den automatischen Export des Baikal-Servers:

wget https://ssl-id.de/dav.example.org/html/dav.php/addressbooks/UserName/AdressbuchID/?export --http-user=UserName --http-password=MeinWichtigesPasswort --no-check-certificate --output-document=Adressen.vcf

Was bleibt für mich?

Abseits des Mainstreams lauern bei der Umsetzung von eigentlich Basis-Anforderungen Stolperfallen und Aufwände. Mit etwas Aktivierungsenergie haben wir jetzt aber einem eigenen Sync-Server für Adressen  und Kalender aufgesetzt. Als Familie stehen wir jetzt sicherlich sehr gut hinsichtlich Funktion und Komfort da – der Weg war aber auch etwas steinig.

Der Sync-Server bietet noch an, Aufgaben zu synchronisieren. Da gab es bei uns noch keinen Bedarf. Falls aber einer der Leser Erfahrungen gesammelt hat, wäre ich neugierig darauf.


Eine Antwort zu “Familien-Adressbuch”