Differences between revisions 20 and 21
Revision 20 as of 2015-10-29 05:32:32
Size: 18549
Editor: RudolfReuter
Comment: Redirect Modifikation für El Capitan, Struktur überarbeitet
Revision 21 as of 2016-06-16 16:34:42
Size: 19192
Editor: RudolfReuter
Comment: added Daden suchen/editieren
Deletions are marked like this. Additions are marked like this.
Line 249: Line 249:
Line 276: Line 277:
Zur Not kann man damit auch '''Inhalte editieren'''.

||<tablestyle="float: right;">[[attachment:Baikal_phpLiteAdmin_search.png|{{attachment:Baikal_phpLiteAdmin_search.png|attachment:Baikal_phpLiteAdmin_search.png|width="525"}}]]||
=== Daten suchen/editieren ===
Man kann mit '''phpLiteAdmin.php''' auch '''Inhalte suchen oder editieren'''. Wenn es mehrere Adressbücher gibt, werden die Daten in den Tabellen '''calendarobjects''' und '''cards''' zusammengefasst.

Wenn man in '''Kontakten sucht''', klickt man die Tabelle '''cards''' an, und sucht (Reiter '''Search''') dann im Feld '''carddata''' mit '''LIKE %...%''' nach dem Text, zum Beispiel %Rudolf% im Feld '''Value'''. Bei den '''Kalender Eintragungen''' sucht man in der Tabelle '''calendarobjects''' zum Beispiel im Feld '''calendardata'''.
Line 279: Line 286:

Wenn man in '''Adressen sucht''', klickt man die Tabelle '''cards''' an, und sucht dann im Feld '''carddata''' mit '''LIKE %...%''' nach dem Text, zum Beispiel "Ursula" (im Suchfeld ohne die Hochstriche).
Line 284: Line 289:
 1. [[http://www.klomp.de/index.php/84-kontakte-kalender-per-baikal-caldav-carddav-auf-synology-synchronisieren|Baikal auf Synology (2016-03)]]

DAV sync mit Baikal

Ich möchte meine Adressen und Kalender Daten im Android Smartphone nicht aus der Hand geben. Deshalb suche ich schon lange nach einer praktikablen Backup/Sync. Lösung mit eigenem Server, die viele gängige Clients unterstützt. Ich betrachte hier nur die Android und Mac OS X Clients.

In Jahr 2012 habe ich mit dem Programm Zarafa und Z-Push angefangen, siehe ActiveSyncZarafa, da zu dieser Zeit für Android standardmäßig nur Active Sync zu Verfügung stand, und Zarafa mit Z-Push das kostenlos erlaubte. CalDAV und CardDAV freie Client Programme gab es zu dieser Zeit noch nicht für Android. Das hat zwar im Prinzip funktioniert, es gab aber immer wieder Probleme, und die Datensicherung war auch schwierig.

Bezüglich der Methode Active Sync habe ich sonst nichts brauchbares gefunden.

Dann wurde die Methode CalDAV / CardDAV erprobt, was erfolgreich war.

Ein erste Versuch wurde mit Owncloud 6 gestartet. Das war nicht zuverlässig.

Dann wurde der CalDAV / CardDAV Server Radicale (version 0.9) ausprobiert. Das war nicht zuverlässig.

Baikal ist ein kleiner, einfacher CardDAV / CalDAV Server (basierend auf SabreDAV), der nicht mehr braucht als eine normale PHP Installation mit Datenbankanbindung (SQLite3 oder MySQL). Da haben erste sync Versuche mit gängigen Clients funktioniert. Nur der SOGo Connector unter Thunderbird hat nicht funktioniert.

Der benutze Android Kalender Client ist DAVdroid (von bitfire web engineering).

Der benutze Android Kontakte Client ist DAVdroid (von bitfire web engineering).

  • Die aktuelle Version kann man über den Link DAVdroid releases erfahren.

Die Android Kontakte kann man mit der eingebauten Export/Import Möglichkeit exportieren (*.vcf) und wieder importieren.

Die Android Kalender haben leider keine eingebaute Export/Import Möglichkeit. Da hilft aber die App iCal Import/Export 2.2 weiter (*.ics).

/!\ Wichtig zu wissen: Der Server hat immer recht. Wenn man also bei einem Client einen Kalender Eintrag, oder einen Kontakt löscht, wird bei nächster sync Gelegenheit bei allen verbundenen Clients das gleiche gemacht. Also ist es empfehlenswert, vor größeren Änderungen auf allen Clients lokal eine Datensicherung zu machen.

Baikal Installation

Nach ersten Versuchen mit dem Flat und Regular Paket (Version .0.2.7), die irgendwie unvollständig waren, habe ich mir die Github Version installiert. Bei der Github Seite war auch eine gute Anleitung mit dabei. Der Baikal Server wurde als virtual host bei dem Apache2 Web Server (unter Ubuntu 14.04) eingebunden. Bei der Test Installation wurde aus dem Github das Master-Archiv heruntergeladen und entpackt. Dann muss noch der composer installiert werden (PHP Versionsverwaltung). Um git zu nutzen waren folgende Schritte notwendig:

# Installiere PHP5 Pakete
#   php5-sqlite

# source code holen
$ cd /var/www
$ sudo git clone https://github.com/jeromeschneider/Baikal.git baikal 

# download composer
$ cd baikal
$ curl -sS https://getcomposer.org/installer | php
Composer successfully installed to: /var/www/baikal/composer.phar
Use it: php composer.phar

# installiere
$ sudo php composer.phar install
Loading composer repositories with package information
Installing dependencies (including require-dev)
  - Installing sabre/vobject (2.1.5)
    Downloading: 100%

  - Installing sabre/dav (1.8.10)
    Downloading: 100%

Writing lock file
Generating autoload files

# Rechte setzen
$ cd /var/www
$ sudo chown -R www-data:www-data baikal

# Erlaube den Gruppen Mitgliedern ein "cd" in die Ordner zu machen.
$ sudo find baikal -type d -print0 | xargs -0 sudo chmod 775

# Erlaube der Gruppe die Files zu ändern.
$ sudo chmod -R g+w baikal

# Prüfe, ob apache2 module "rewrite" enabled ist
$ ls /etc/apache2/mods-enabled/rew*
/etc/apache2/mods-enabled/rewrite.load

  # wenn nicht vorhanden, dann:
  $ sudo a2enmod rewrite
  $ sudo service apache2 restart

# Apache2 virtual host
$ cd /etc/apache2/sites-available
$ sudo ln -s /var/www/baikal/Specific/virtualhosts/baikal.apache2
# In baikal.apache2, ersetze die Referenzen zu dav.mydomain.com mit dem eigenen domain name (baikal)
    DocumentRoot /var/www/baikal/html
    ServerName baikal
    <Directory "/var/www/baikal/html">

# Aktiviere den neuen virtual host 
# legt einen Link an, in sites-enabled zu sites-available/baikal.apache2
$ sudo a2ensite baikal.apache2

# Web Server Apache2 neu starten
$ sudo service apache2 reload

# sperre Ordner "baikal" gegen Anzeige
$ touch /var/www/baikal/index.html

Dann kann man mit dem administrieren anfangen:

# Web Browser auf Adresse <server-IP>/baikal/html
# Man sieht jetzt:
  Baïkal Install Tool is locked.
  To unlock it, create (or re-create if it exists already) an empty file named ENABLE_INSTALL 
  (uppercase, no file extension) in the Specific/ folder of Baïkal.

$ cd /var/www/baikal/html/admin
$ touch Specific/ENABLE_INSTALL

# Lade die Web Seite neu, jetzt erscheint die Administration Maske
  Baikal Install tool

# "admin" Passwort eingeben

Es wurde nicht die DAV.xxx Subdomain verwendet, sondern der normale Pfad, um beim testen flexibler zu sein.

Baikal administrieren

Baikal kann sehr schön mit einer Web-Maske administriert werden. Man kann keine Kalender oder Kontakt Daten ändern. Was man ändern/einrichten kann ist:

  • Benutzer anlegen
  • Spezielle Kalender und Kontakt-Listen (andere als default) anlegen.

  • Einstellungen ändern

Um an die Administration Web-Maske zu kommen, muss man folgende URL im Web Browser eingeben:

http(s)://<SERVER>/baikal/html/admin

Dann erscheint das Dashboard (Armaturenbrett) mit Informationen zu allen wichtigen Zahlen.

Weitere Web-Masken sind:

  • Users and resources - Benutzer, Kalender und Kontakt Listen anlegen
  • Settings - Baikal Einstellungen
  • System settings - Baikal System Einstellungen, z.B. Datenbank (MySQL oder SQLite)

Kontakte, Bilder

Wenn unter Android einem Kontakt ein Bild hinzugefügt werden soll, ist es sinnvoll, es vor dem hinzufügen zum Kontakt, mit einem Bild Bearbeitung Programm auf 96 x 96 Pixel zu beschneiden. Sonst gibt es ein Problem bei der Synchronisation mit Baikal.

Sync Handhabung

Eine aktuelle Datensicherung ist sehr wichtig, da bei der Synchronisation sehr schnell etwas verloren gehen kann.

  1. Nach dem Installieren von Baikal ist die Datenbank erst einmal leer.
  2. Beim Client mit den meisten und aktuellen Daten macht man eine Datensicherung in einen *.vcf und *.ics File.
  3. Dann wird auf diesem Client ein CalDAV und CardDAV Konto für den Baikal Server eingerichtet.

  4. In dieses Konto importiert man dann die Datensicherung. Diese Daten werden normal sofort auf den Server synchronisiert.
  5. Jetzt richtet man am zweiten und folgenden Clients ein CalDAV und CardDAV Konto ein. Entweder erfolgt die Daten Synchronisierung automatisch, oder man muss sie per Hand anstoßen.
  6. Wenn ich jetzt auf einem Client einen Daten Eintrag ändere, hinzufüge oder lösche, wird das sofort, oder nach einem voreingestellten Takt auf den Server synchronisiert, und dann an die anderen Clients per Abruf verteilt.

Android Clients

Es gibt einige CalDAV und CardDAV Client Programme in dem Play Store. Aber es gibt nur wenige freie Programme.

  • DAVdroid, von bitfire web engineering, kostenlose Version 1.0, CalDAV und CardDAV (Notizen inklusive).

    • Um die kostenlose Version zu bekommen, muss man zuerst F-Droid installieren, siehe Link.

      • Das kann nur installiert werden mit Android->Einstellungen->Sicherheit/Unbekannte Quellen, Haken setzen.

      • Mit ES Datei Explorer oder AndExplorer die heruntergeladene Datei FDroid.apk kurz antippen, und Installieren antippen.

      • Mit F-Droid kann man dann DAVdroid installieren.
      • Danach den Haken bei Unbekannte Quellen wieder entfernen.

    • Einstellung->Server (Konto-Name: reuterru@g..): http://192.168.17.72/baikal/html/cal.php/ (calendars/reuterru/)

    • Einstellung->Server (Konto-Name: reuterru): http://192.168.17.72/baikal/html/card.php/ (addressbooks/reuterru/)

    • Benutzername: reuterru
    • Passwort: ***
  • CardDAV-Sync free beta, von Marten Gajda
    • in der freien Versionen werden leider keine Firmen Namen und Notizen (notes) synchronisiert.

Mac OS X Clients

Leider ist das Einrichten vom Internet-Account für CalDAV und CardDAV nicht einfach, wenn man nicht den Mac OS X Server hat. Mit der Betriebssystem Version El Capitan 10.11 ist es noch schwieriger geworden. Erst mit dem Update auf die Version 10.11.1 lässt sich das Protokoll CalDAV ohne Server Modifikation einrichten.

In El Capitan 10.11.1: Menü: Systemeinstellungen->Internet-Accounts->Andere Accounts hinzufügen

  • CalDAV-Account: Kalender Version 8.0, mit SSL
    • Accounttyp: Erweitert
    • Benutzername: reuterru
    • Passwort: ***
    • Serveradresse: 192.168.17.72
    • Serverpfad: /baikal/html/cal.php/principals/reuterru/
    • Synch: automatisch (vermutlich nach jeder Änderung)
  • CardDAV-Account: Kontakte Version 9.0, mit SSL
    • Accounttyp: Manuell
    • Benutzername: reuterru
    • Passwort: ***
    • Serveradresse: 192.168.17.72/baikal/html/card.php/principals/reuterru/
    • Synch: automatisch (vermutlich nach jeder Änderung)

Leider gibt es beim Einrichten der CardDAV Synchronisation mehrere Probleme.

  • Bei dem Accounttyp muss man manuell eingeben, sonst funktioniert es nicht.

  • Bei der Serveradresse muss man den volle Pfad eintragen.

  • Dann funktioniert das einrichten vom Internet-Account immer noch nicht, da El Capitan den Server mit dem Pfad /.well-known/carddav anspricht, obwohl ein anderer Pfad vorgegeben wurde. Das lässt sich nur mit einer Redirect Direktiven bei dem Web-Server (hier Apache2) beheben.

Web Server Redirect

Das wird beschrieben für den Apache2 Web-Server unter Ubuntu 14.04. In vielen Foren und Blogs liest man, die Direktive Redirect in den File .htaccess zu schreiben, in dem HTTP root directory. Durch die Voreinstellung AllowOverride None in der Apache2 Konfigurationsdatei /etc/apache2/apache2.conf wird aber der File .htaccess nicht mehr ausgelesen und berücksichtigt, siehe Handbuch.

Deshalb ist es sinnvoll, die Direktive Redirect in die Apache2 Konfigurationsdatei zu schreiben, siehe Handbuch.

# edit file /etc/apache2/apache2.conf
# setup for the HTTP root directory
<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
        Redirect 301 /.well-known/carddav /baikal/html/card.php
</Directory>
  • Die Zahl 301 bedeutet permanent Weiterleitung.

  • Der Baikal prefix kann auch lauten /baikal/card.php, je nach Baikal Installationstyp.

Daten Export

SabreDAV erlaubt mit einem plugin den Export aller Calendar und Contact Daten in einen xxx.ics oder xxx.vcf File. Unglücklicherweise ist das noch nicht integriert in Baikal (version 0.2.7), aber es kann leicht nachgerüstet werden, wie folgt:

# für die Calendar Daten:
# Editiere file cal.php, entweder in baikal/cal.php, oder in baikal/html/cal.php
# Füge eine Zeile ein, hinter den anderen plugins, in der Nähe des File Endes.
$server->addPlugin(new \Sabre\CalDAV\ICSExportPlugin());

# für die Contact Daten:
# Editiere file card.php, entweder in baikal/card.php, oder in baikal/html/card.php
# Füge eine Zeile ein, hinter den anderen plugins, in der Nähe des File Endes.
$server->addPlugin(new \Sabre\CardDAV\VCFExportPlugin());

# exportiere Calendar Daten, via web browser:
https://<SERVER>/baikal/html/cal.php/calendars/<USER>/default?export
# benenne den file Namen: Kalender_<USER>_baikal.ics

# exportiere Contact Daten, via web browser:
https://<SERVER>/baikal/html/card.php/addressbooks/<USER>/default?export
# benenne den file Namen: Kontakte_<USER>_baikal.vcf

Um das in der Praxis einfacher zu machen, ein Beispiel Shell Script zur Datensicherung. Das Benutzer Passwort muss jeweils per Hand eingegeben werden. Der Shell Script muss in dem Ordner der Datensicherung sein, und dort aufgerufen werden.

# DO NOT COPY THIS LINE
#!/bin/bash
# 2014-12-17 RudolfReuter
# backup Baikal addressbook and calendar
USER=reuterru
URL_A=http://192.168.17.72/baikal/html/card.php/addressbooks/$USER/default?export
URL_C=http://192.168.17.72/baikal/html/cal.php/calendars/$USER/default?export
PATH_A=contacts_$USER'_'$(date "+%Y-%m-%d_%H-%M").vcf
PATH_C=calendar_$USER'_'$(date "+%Y-%m-%d_%H-%M").ics
wget  --user=$USER --ask-password $URL_A -O $PATH_A
wget  --user=$USER --ask-password $URL_C -O $PATH_C

USER=reuter.ingeb
URL_A=http://192.168.17.72/baikal/html/card.php/addressbooks/$USER/default?export
URL_C=http://192.168.17.72/baikal/html/cal.php/calendars/$USER/default?export
PATH_A=contacts_$USER'_'$(date "+%Y-%m-%d_%H-%M").vcf
PATH_C=calendar_$USER'_'$(date "+%Y-%m-%d_%H-%M").ics
wget  --user=$USER --ask-password $URL_A -O $PATH_A
wget  --user=$USER --ask-password $URL_C -O $PATH_C

echo Job done

Troubleshooting

Nach der Installation ist der erste Test, der Aufruf der Basisseite:

# Web Browser auf Adresse <server-IP>/baikal/html
# Man sieht jetzt:
  Baïkal is running allright.

Um sich den Inhalt der Datenbank anzusehen, kann man sich phpliteadmin installieren, download siehe Links. Neben dem Programm Archiv sollte man sich auch die Themen herunterladen (CSS). Ich habe das Thema default/phpliteadmin.css benutzt.

Im Konfiguration File ist die Voreinstallung vom Password "admin". Da der File phpliteadmin.config.sample.php unter Windows erstellt wurde, sollte man das "End Of Line" Zeichen mit fromdos umstellen, zu installieren mit:

$ sudo apt-get install tofrodos

$ fromdos phpliteadmin.config.php

# Edit "password" und "directory"
  $password = '***';
  $directory = 'baikal/Specific/db';

# kopiere file phpliteadmin.php, phpliteadmin.css, und phpliteadmin.config.php nach /var/www/

# passe den Benutzer an:
$ sudo chown www-data:www-data /var/www/php*

# Aufruf in Web Browser: SERVER/phpliteadmin.php

attachment:Baikal_phpLiteAdmin_search.png

Daten suchen/editieren

Man kann mit phpLiteAdmin.php auch Inhalte suchen oder editieren. Wenn es mehrere Adressbücher gibt, werden die Daten in den Tabellen calendarobjects und cards zusammengefasst.

Wenn man in Kontakten sucht, klickt man die Tabelle cards an, und sucht (Reiter Search) dann im Feld carddata mit LIKE %...% nach dem Text, zum Beispiel %Rudolf% im Feld Value. Bei den Kalender Eintragungen sucht man in der Tabelle calendarobjects zum Beispiel im Feld calendardata.

Eine interesante Information ist die Anzahl der Kontakte in den einzelnen Adressbüchern. Das kann man in der Baikal Administrator Seite leider nicht sehen. Dort gibt es nur eine Gesamtsumme der Kontakte, was bei mehreren Adressbüchern keine Kontrolle erlaubt.

  1. Baikal auf Synology (2016-03)

Übersicht Groupware

DAV Server

DAV Clients

Groupware Server

Tools

List of pages in this category:

-- RudolfReuter 2014-06-26 07:48:16


Go back to CategoryAndroid or FrontPage ; KontaktEmail (ContactEmail)

DAVsyncBaikal (last edited 2019-01-28 10:49:49 by RudolfReuter)