Moneyplex auf Ubuntu 12.04 64bit mit PCSC-Treiber

Wer Moneyplex mit auf einem 64Bit system betreibt, wird das ein oder andere Mal verärgert feststellen, dass es immer noch keine native 64 Bit Version des Programms gibt. Um es zu starten muss man unter Ubuntu schon immer das ia32-libs Package installieren. Will man dann auch noch den kartenleser via PC/SC-Treiber ansprechen (oder muss es, weill der Herrsteller nur solche Treiber ausliefert) musste man im 10.04 LTS basteln. Mittlerweile kann man einfach die benötigte Library im 32 Modus nachinstallieren. Einfach das Paket libpcsclite1:i386 nachinstallieren, Moneyplex neustarten und zb den Reiner-SCT ohne gefrickel ansteuern.

So nun muss matrica nur noch eine 64Bit Version raus bringen, dann bin ich 100% zufrieden 😉

Ubuntu Upgrade / Neuinstallation mit geringer Downtime

Wenn man den Ubuntu LTS auf einem Server einsetzt hat mein ein relativ ruhiges Leben. Es gibt kaum wartungsaufwand, da sich die Updates automatisch einspielen (wenn man das will), nur ab und an sollte man den Rechner neustarten.

Will man die Maschine jedoch auf die neue Version hochziehen ist Arbeit angesagt. Ob man nun das Upgrade macht oder ein blankes System aufspielt. Beides kostet Zeit und eine Downtime. Kann man ein ersatzsystem sein eigenen nennen oder eine Weile auf die Services verzichten ist das keine Problem, leider ist dem selten so.

In meinem Fall geht ohne meinen Ubuntu-Server gar nichts und für eine komplettes Spiegelsystem hab ich weder Geld noch Platz. Ich brauchte einen Weg um die Downtime für die gesamte Familie auf unter 4 Stunden zu drücken. Kurz der WLAN Wecker sollte am nächsten Morgen wieder wecken. (Ubuntu-Server = Radius, MediaStorage und MediaServer)

Was es dazu braucht ist ein Software-Raid (Mirror) eine zweite Maschine und eine Virtuelle-Umgebung die eine physikalische Platte „durchreichen“ kann.

Der Trick ist einfach. Man baut im laufenden Betrieb eine der Mirror-Platten aus. Das kann jeh nach Konfiguration (kein HotSwap, „umbauarbeiten“ notwendig) eine kurze Downtime bedeuten. Anschließend schließt man die Platte an einem anderen Rechner an und haut ein VM-Host seiner wahl drauf. Dieser sollte direkt mit Physikalischen Platten umgehen können. (VMWare, VirtualBox) Nun muss man nur noch eine VM erzeugen und anschließend von der Platte booten. In meinem Fall funktionierte das tadellos. Der virtuelle „Server“ meckerte zwar eine defekten Raid und fehlendes Netzwerk an, aber das ließ sich schnell beheben.

Ab diesem moment kann man in aller Sehlenruhe sein Upgrade einspielen oder gleich den ganzen Server neu aufsetzen.

Anschließen muss man nur die eigentliche Hardware runterfahren. Die noch aktive Platte ausbauen und (ganz wichtig) die RAID-Header-Informationen löschen (mdadm –zero-superblock). Die „VM“-Platte wieder in den Rechner einbauen durchstarten und hoffen dass man alles richtig eingerichtet hat. Wenn alles klappt bootet der Rechner ohne murren durch, man richtet den RAID wieder ein und hat eine Downtime von unter einer Stunde.

XBMC unter 12.04

Im Rahmen meines Wechsels von Ubuntu 10.04 bis 12.04 musste als erstes mein HTPC dran glauben. Das ganze ging recht Problemlos von statten. Einzig der NoDM hatte Probleme bereitet. NoDM erwartet den XServer unter /usr/bin/X. Ubuntu 12.04 stellt selbigen aber (ohne Link) unter /usr/bin/Xorg zur Verfügung. Da musste mit einem Link nachgeholfen werden.

Danach lief sofort XBMC hoch, ohne weitere Probleme. Danach begann jedoch die Detailarbeit.

Wie gehabt muss nachgeholfen werden, wenn man vie XBMC den Rechner runter fahren möchte. Dazu bedarf es der Packete policykit-1, upower und acpi-support.

sudo aptitude install policykit-1 upower acpi-support

anschließend müssen dem XBMC-User die entsprechenden Rechte eingeräumt werden:
File /var/lib/polkit-1/localauthority/50-local.d/xbmc-actions.pkla

[Actions for xbmc user]
Identity=unix-user:xbmc-user
Action=org.freedesktop.upower.*;org.freedesktop.consolekit.system.*;org.freedesktop.udisks.*
ResultAny=yes
ResultInactive=yes
ResultActive=yes

Danach kann man über die entsprechenden Menüs/Kommandos aus XBMC heraus den Rechner Ausschalten, Schlafen legen oder in den Hibernate schicken.

Um den Rechner wieder aufzuwecken bedurfte es eines weiteren Kniffs. Die Schnittstelle, wie man ein USB Device für das Aufwecken markiert hat sich verändert. Ich musste es wie folgt erweitern:

#!/bin/sh
echo "USB0" > /proc/acpi/wakeup
echo "USB2" > /proc/acpi/wakeup
echo enabled > /sys/bus/usb/devices/3-1/power/wakeup
echo enabled > /sys/bus/usb/devices/usb1/power/wakeup
echo enabled > /sys/bus/usb/devices/usb2/power/wakeup
echo enabled > /sys/bus/usb/devices/usb3/power/wakeup
echo enabled > /sys/bus/usb/devices/usb4/power/wakeup

Interessanterweise war die „Breitbandfreigabe“ nur für den Suspend nötig. Um aus den Hibernate aufzuwachen reichte es das 3-1 Device zu „enablen“. Ich hab das Script auch nicht mehr in der rc.local verlink sondern lasse es vor und nach jeden Suspend/Hibernate ausführen, indem es unter /etc/pm/sleep.d abgelegt wurde.

Ein letzer Kniff war nötig damit sich das DVD-Laufwerk nach dem mounten auswerfen lies. Dazu musste ich in der /lib/udev/ruled.d/60-cdrom_id.rules die folgende Zeile ändern.

IMPORT{program}="cdrom_id --lock-media $tempnode"

So sollte es aussehen, dann lässt sich das Laufwerk jederzeit öffnen.

IMPORT{program}="cdrom_id $tempnode"

Quellen:

Zwei Jahre Ubuntu 10.04 – Zeit für einen Wechsel

Seit dem 29 April 2010 betreibe ich meinen HomeServer mit Ubuntu LucidLynx. Danach hab ich suxesive meine ganze Rechner auf den Langläufer umgestellt. Die folgenden zwei Jahren waren die ruhigsten in meiner ganzen Zeit, die ich mit Computern zu tun hab.

In der ganzen Zeit ereilten mich nur zwei „schwere Fehler“ (GAUs) die ich nicht auf meine eigene Dummheit zurückführen konnte. Gleich zu beginn Zerschoss mir der GRUB-Installer mein verschlüsseltes Storage indem der Bootsektor den Kryptoheader überschrieben hat obwohl ich eine andere Platte als Bootloader-Ziel angegeben habe. Der zweite GAU ereignete sich durch ein defektes Update, der die Netbook-Version unbenutzbar machte.

Beide Fehler liesen jedoch mit überschaubarem Aufwand beheben. Alle weiteren Fehler waren auf die eigene Dummheit zurückzuführen. Alles in allem hat sich der LTS-Release als sehr robust erwiesen. Jetzt wird es Zeit Abschied zu nehmen und auf die neue Version umzusteigen, hoffentlich werden die folgenden 2 Jahre genauso entspannt wie die bisherigen.

Samba/CIFS und Kerberos Authentifizierung

Nachdem ich NFS und Kerberos installiert hatte, wollte ich auch Samba/CIFS an Kerberos anbinden. Das gestaltete sich schwerer als erwartet.

Das Einrichten auf Serverseite gestaltete relativ reibungslos. Einfach dem Samba-Dienst entsprechend Konfigurieren.

security = ADS
realm = AQUA
kerberos method = system keytab
encrypt passwords = true

Im Kerberos hinterlegt man einen entsprechenden Principal und fügt ihn dem CIFS-Server hinzu.

sudo kadmin -p kerberosadmin/admin
addprinc -randkey cifs/server.fqdn
ktadd cifs/server.fqdn

Nach einem Neustart des Dienstes werden die User-Credentials von Samba gegenüber Kerberos Authentiziert.

Auf Client-Seite war dem ganzen nicht so leicht bei zu kommen. Als erstes muss ein Client-Key am Kerberos erzeugt werden und in der Client Keytab hinterlegt werden.

sudo kadmin -p kerberosadmin/admin
addprinc -randkey cifs/client.fqdn
ktadd cifs/client.fqdn

Anschließend mounted man den Share wie folgt:

mount -t cifs //server.fqnd/Share /mnt/cifs-share -o sec=krb5,uid=1001

Bis dahin hat mich das „nur wenige“ Stunden gekostet. Der Parameter „uid“ wird scheinbar gebraucht wenn Winbind nicht so will, wie es soll. Ich hab es ums verrecken nicht hinbekommen, dass der Winbind mehr schmeißt als nur Fehler.

Daneben war es mit nicht möglich den krb5i-Modus zu aktivieren, also Schutz gegen Veränderung der einzelnen Daten-Pakete. Zudem scheint CIFS/Samba nur beim Mount die Usercredentials zu überprüfen und die Verbindung dann an den User zu knüpfen. Wenn ein anderer User (root) auf den Share zugrifft, erfolgt das unter der UID des Users der den Mount aufgemacht hat.

Kerberos und NFS einrichten.

Ich kämpfe schon eine weile mit CIFS/Samba her rum. Bisher hab ich es leider nicht geschafft die Transferraten über mehr als 40MByte/s zu bekommen. Was bei Gigabit-Ethernet unbefriedigend ist. Vor einem Wechsel auf NFS habe ich mich aber immer gedrückt. Zum Einen weil dann immer die „Böse“ LDAP-Konfiguration im Raum stand, zum Anderen, weil ich der Meinung war Kerberos nicht zu brauchen.

Nun hat sich in den letzten Tagen herausgestellt, dass ich ein paar mehr Dienste brauche, die alle eine eigenen Authentisierung mit sich bringen. Darauf hatte ich keine Lust, ergo Kerberos musste her. Zweitens hat sich gezeigt, dass man LDAP nicht braucht. Das Maping von Usernamen/Groups funktioniert auch so Prima.

Es gibt ein gutes Tutorial, mit dem man innerhalb von einer Stunde einen NFS-Share mit Kerberos Unterstützung einrichten kann: NFSv4-Howto

Das Tutorial hat nur zwei Schönheitsfehler:

  • Der wichtigste Hinweis wird nicht hervorgehoben. Wer es ums verrecken nicht hinbekommt, dass sich NFS über Kerberos Authentifiziert sollte  seine /etc/krb.conf checken. Dort muss unter [libdefaults] der Eintrag „allow_weak_crypto = true“ gemacht werden.
  • Die Angaben für die /etc/exports Datei sind veraltet. Es wird noch die „gss/krb5“ verwendet. Aussehen sollten die exports aber so.

    /export       10.0.0.0/24(sec=krb5,rw,fsid=0, secure, no_subtree_check,async,no_all_squash)
    /export/Share1 10.0.0.0/24(sec=krb5:krb5i:krb5p,rw,fsid=0, secure, no_subtree_check,async,no_all_squash)

    So kann man auch gleich dem Benutzer überlassen welche „Absicherung“ er gerade benötigt.

Des bin ich beim Einrichten des NFS-Shares noch über eine Stolperstein gefallen:

Aus irgendeinem Grund war der NFS-Server im all_squash Modus. Soll heißen alle User wurden auf „Nobody/Nogroup“ gemapt. Was zur folge hatte, dass ich zwar den Share mounten konnte aber keine Berechtigung hatte. Mit der Option „no_all_sqash“ war das behoben.

Anschließend hab ich mal Bonnie++ auf den Share los rennen lassen. Das Ergebnis waren 95.1MByte/s Read/Write. Kein Vergleich zu CIFS. Einzig wenn ich die höchste Sicherheitsstufe (krb5p – Transportverschlüsselung) ging die Performance in Knie (20 MByte/s).

Routing unter Ubuntu

Einen Text mit viel „Bla-Bla“ hatte ich heute schon, jetzt gibt es Technisches!

Will man unter Ubuntu einen „echten“ Router betreiben, also dynamisch auf die Netzwerkumgebung reagieren, stehen zwei Routing-Suites zur Verfügung: BIRD und Quagga. Beide unterstützen die wichtigsten Routing-Protokolle: BGP, RIP, OSPF

Wichtiger Hinweis vorweg: in Ubuntu 10.04 wird BIRD noch in Version 1.1.5 ausgeliefert. Die ist mal gut zwei Jahre alt und Unterstützt noch nicht alle Funktionen. Entweder akzeptiert man diese Schwächen oder nutzt das PPA des CZ.NIC Labs.

Die Quagga-Suite ist schon seit einiger Zeit am Markt. Sie bietet ein Config-Interface das einem CISCO Router gleicht. Man kann sowohl Config Files hinterlegen als auch „on the fly“ Config Befehle geben und die entsprechende Config dann raus schreiben (ganz wie bei CISCO Routern). Im Hintergrund werden bei Quagga für jedes Routing-Prokoll ein eigener Dienst gestartet und jeder dieser Dienste macht einen TELNET Port auf. Diesen kann man auf den Localhost beschränken oder so konfigurieren, dass er jede Anfrage ablehnt (kein Password angeben).

Bird befindet sich aktuell noch in der (Weiter-)Entwicklung. Zudem wirkt es auf mich schlanker. Es wird nur ein Dienst gestartet, die Config befindet sich in einer Datei und wirkt übersichtlicher. Neben diesen „Geschmacksfragen“ soll BIRD leistungsschonender sein.[1. Quelle: Vergleich BIRD/Quagga] Laut Wiki kommt er vor allem deswegen in den großen „Verteilerknoten“ zum Einsatz. [2. Quelle: Wikipedia] Dafür spricht auf jeden Fall, dass bei DD-WRT Firmwares für wenig Speicher der BIRD zum Einsatz kommt und bei viel Speicher die Quagga-Suite.

Ich habe beide Implementierungen gezwungenermaßen durch meine Routern im Einsatz. Beim Ubuntu-Router hatte ich die Wahl und mich nach einem kleinen Quagga Test für BIRD entschieden.

Wichtig: Die meisten Routing-Protokolle nutzten MultiCast-Addressen für ihre Kommunikation. Damit das funktioniert muss man eine entsprechende Route hinterlegen.

route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0

Beispiel – Konfiguration BIRD

Einfach über apt-get oder aptitude bird installieren und schon kann es losgehen.

aptitude install bird

Danach kann man die /etc/bird.conf bearbeiten.

log syslog all;
router id 10.1.0.1;

protocol kernel {
        export all;
        learn;
}

protocol device {
        scan time 60;
}

protocol ospf {
        debug { states, routes, interfaces };
        area 0 {
                interface "eth0" 10.1.0.0/16 {
                        cost 10;
                        stub;
                        check link;
                };
                interface "eth1" 10.2.0.0/16 {
                        priority 10;
                        cost 100;
                        type broadcast;
                        hello 30; retransmit 5; wait 10; dead 120;
                        authentication none;
                        check link;
                };
                interface "eth2" 10.3.0.0/16 {
                        priority 10;
                        cost 10;
                        type broadcast;
                        hello 30; retransmit 5; wait 10; dead 120;
                        authentication none;
                        check link;
                };
        };
}

Die Config dürfte selbsterklärend sein. Ein paar Hinweise zum Umgang mit BIRD:

  • Das Kernel-Protokoll wird gebraucht. Ohne die „export all;“ Regel werden keine Routen an das OS bekanntgegeben.
  • Hat man Default-Routen oder pflegt händisch welche über den „route“-Befehl nach, sollte die über das „learn“-Statement von BIRD ermittelt werden.
  • Alle lokalen Netze, die den Nachbarn mitgeteilt werden sollen, benötigen ein interface-Statement. Das stub-Statement markiert Interfaces die nur „announced“ werden sollen aber sonst keine Funktion haben.
  • Wenn man einen PPPoE-DSL-Uplink als Default-Route verwendet, sollte man das PPPoE Interface nicht als Area-Interface hinterlegen.
  • „check link“ funktioniert nur, wenn man neuerere BIRD-Versionen benutzt. BIRD 1.1.5 meckert einen Syntax-Fehler an.

 Beispiel – Konfiguration Quagga

Installation:

aptitude install quagga

Quagga ist anfangs etwas komplizierter. Anfangs muss man erst mal die benötigten Dienste unter /etc/quagga/daemons freischalten. Will man, dass diese Dienste per TelNet auch Remote konfigurierbar sind muss man noch in der /etc/quagga/debian.conf Anpassungen vornehmen.

Auf jeden Fall benötigt man den zebra-Dienst. Dieser ist das „protocol kernel“ Pendant. Zusätzlich muss man noch den Dienst für das gewünschte Protokoll aktivieren. Für den einfachen Einstieg findet man Beispiel-Konfigurationen unter /usr/share/doc/quagga/examples.

zebra.conf

hostname deadend-router

interface br0
  link-detect
interface ath1
   link-detect

in der zerba.conf werden die zu nutzenden interfaces angegeben.

ospf.conf

interface br0
  ip ospf cost 10
  ip ospf dead-interval 120
  ip ospf hello-interval 30
  ip ospf retransmit-interval 5
  ip ospf network broadcast
interface eth0
  ip ospf cost 10
  ip ospf dead-interval 120
  ip ospf hello-interval 30
  ip ospf retransmit-interval 5
  ip ospf network broadcast

router ospf
  ospf router-id 10.3.0.10
  network 10.3.0.0/16 area 0
  network 10.4.0.0/16 area 0
    redistribute kernel
    redistribute connected

In der ospf.conf wird diesen Interfaces erst Eigenschaften zugewiesen und anschließend das Protokoll zugeschaltet. Wichtig ist die Syntax. Das Einrücken dient nur zur Optik und hat kein Einfluss. Die Reihenfolge der Befehle hingegen hat Einfluss. Gewisse Befehle „öffnen“ eine SubConfig-Ebene. Ein „ip ospf cost“ ist nur gültig, wenn vorher eine interface-Direktive stand. Was bei den „interface“-Direktiven noch übersichtlich erscheint, kann bei den area-direktiven unübersichtlich werden, da diese ineinander geschachtelt sein können. Angenehm sind hingegen die redistribute -Direktiven. So muss man nur die Interfaces auflisten, auf den auch wirklich ein weiterer Router lauscht.

RSyslog und der komfortable Weg Logfiles zu lesen.

Seit geraumer Zeit hab ich eine Artikel aus dem CT Sonderheft vor mir hergeschoben. Nun hab ich es endlichgeschafft RSyslog Logs über MySQL durch LogAnalyzer analysieren zu lassen. Wer nur Bahnhof versteht, hier eine kleine Zusammenfassung: Worum geht es eigendlich? Ein laufendes LinuxSystem produziert ziehmlich zentral einen Haufen LogFIles. Diese geben meist den entschiedenden Anhaltspunkt wenn es darum geht rauszufinden, was passiert ist, warum etwas nicht funktioniert und so weiter. Das Problem bei der vielzahl an Logs ist, dass man sie schlecht durchsuchen kann. Wenn man einen Zeitstempel hat, kann man vieleicht noch gezielt Suchen, aber spätestens wenn es um die Frage geht: „wann wurde Datei XY gelöscht und von wem“ wirds ungemütlich, Liegt der fragliche Zeitpunkt noch in der Logrotation, wenn ja in welcher und überhaupt ist suchen über mehrere Dateien angesagt. Wie häufig wünschte ich mir bei sowas ein statement wie folgendes:

SELECT * FROM logevents WHERE message LIKE '%filename%"

Nunja genau das kann man mit RSyslog umsetzten. Sobald man das Packet „rsyslog-mysql“ installiert (es gibt noch eine PostGreSQL Backend) werden alle LogEintrage zusätzlich auch in einer (auf Wunsch automatisch angelegten) Datenbank abgelegt. Zusätzlich deshalb, weil es blöd ist, in die Datenbank zu schreiben, dass die Datenbank nicht da ist. Hat man einmal diese Komfortstatus erreicht, will man ihn gleich richtig Auskosten. Hier kommt LogAnalyzer ins Spiel.

LogAufkommen nach Severity
LogAufkommen nach Diensten

LogAnalyzer wiederum ist eine „kleine“ PHP-Anwendung die mehrere Quellen (darunter MySQL, PlaintextFile, etc) einlesen und auswerten kann. Diese können dann Aggregiert, komfortabel durchsucht und ausgewertet werden. Das macht einem das Leben im Zweifelsfall ziehmlcih einfach. Und gerade mit dem PlaintextFile kann man so ziehmlich jede Quelle in das System einbinden Link: http://loganalyzer.adiscon.com/downloads

MoneyPlex auf 64Bit System und ReinerSCT-CardReader

Nachdem meine Bank (endlich) das iTan verfahren als „unsicher“ ansieht und auf andere Sicherungsverfahren umgestiegen ist, „durfte“ ich mich mit dem „sicheren“ Homebanking HCBI unter Linux beschäftigen. Erstes Kurzfazit: es geht. Zweites Kurzfazit: mit Einschränkungen!

Als erstes befasse ich mich mit dem Lesegerät. Es handelt sich dabei um ein gerät der Firma ReinerSCT. Diese liefert vorbildlich Treiber für alle gängigen Betriebssysteme. Für Ubuntu sogar als DEB mit gepflegten Dependencies. Leider haben sie dabei nicht die Zielanwendungen im Blick. Dazu aber gleich mehr. Die Treiber selbst sind problemlos zu installieren. erzeugen zwar eine Warnung wegen einer als „deprecated“ markierten Methode.  Gerät anschließen und „los gehts“, eigentlich…

Denn nun kommen wir zu den Anwendungen, OpenSource werden aktuell folgende Programme in den Repos angeboten:

  • GnuCash: Eine Banking-Anwendung im „alten“ Gnome-Style
  • KMyMoney: Eine Finanzverwaltung schön gribbelbunt. KMyMoney hat den Fokus primär auf der kompletten Finanzverwaltung/Buchführung. Wer nur Homebanking betreiben will, braucht das alles nicht und findet, das was er sucht nur in einem Plugin abgebildet. Das endet darin, dass man noch keine Überweisungen machen kann.
  • QBankmanger: eine QT Anwendung fürs Homebanking.

Allen OpenSource-Varianten gemein ist, dass sie AqBanking als „Schnittstelle“ zwischen KartenLeser und Applikation nutzen. Das hat zwei Nachteile:

  •  AqBanking setzt noch auf die CT API. ReinerSCT liefert seine Treiber aber schon in eine PC/SC-Variante aus. Folge es geht so nicht und man muss einen alten Treiber einsetzen. Die Version für 8.04 Funktioniert auch in aktuellen Ubuntu-Versionen Prima.
  • Die zweite  Hürde ist weniger eine technische denn optische Problematik. AqBanking ist sehr „gesprächig“. Bei einem normalen Abruf des Kontos öffnen sich zwei Popups, beide nicht im Farbstil der eigentlichen Banking-Anwendung. Ein LogFenster und ein Hinweis zu Pin-Eingabe am Leser. Das währe noch tolerierbar. Was nicht geht, sind rot markierte Meldungen während eines normalen Ablaufes. Klingt banal, aber in einem so sensiblen Bereich wie HomeBanking ist „normalen“ Nutzern die Einschätzung was ein „richtiger“ Fehler ist und was nicht, nicht zuzumuten.

Ich hab mich dann auf der suche nach alternativen gemacht und bin auf MoneyPlex gestoßen. Das Tool ist (leider) ClosedSource und wird (momentan) nur in 32 Bit angeboten. Dazu kommt eine arg Windows-LookALike Oberfläche. Auf der haben Seite  verbucht es ein schlüssiges Bedienkonzept das sich rein auf die Kontenführung konzentriert und eine direkte Integrierung der Kartenleser.

Hat man ein 32Bit Ubuntu funktioniert alles ohne Probleme, mit Ausnahme der Darstellung von Umlauten. ReinerSCT Treiber installieren, MoneyPlex drauf, loslegen. Das mit den Umlauten kann man jedoch lösen, der Hersteller verlinkt einen WorkAround.

Was schlimmer wiegt, ist die Tatsache das man kein 64Bit Kompilat beziehen kann. Startet tut das Programm unter Ubuntu dennoch. Nur den aktuellen PC/SC Treiber von ReinerSCT kann man so nicht ansprechen. Dann muss man wieder auf den oben verlinkten alten CT-API Treiber zurückgreifen.

Update: wie in den Kommentaren berichte, hat ReinerSCT ihren „alten“ Treiber vom Netz genommen. Daher hab ich den alten mal hier angehängt, cyberjack64bitctapi.deb nutzen auf eigene Gefahr.

EGroupware und SyncML im Einsatz

Wer ein mobiles Gerät mit Android seit eigen nennt, wird schnell feststellen, dass nur zwei sinnvolle Sync-Optionen vorgesehen sind: Google(Mail/Konto) und Exchange. Wer wie ich ersteres nicht hat und auch nicht will und für letzteres kein Sinn sieht (OpenXchange ist die OpenSource Alternative) der muss etwas suchen um seine Kalender, Kontakte und ToDo-List zu synchronisieren.

Seit einiger Zeit kristallisiert sich SyncML  als „Transportstandart“ für genau diese Aufgabe heraus. Der Vorteil dieses offenen Standards liegt auf der Hand. Es gibt verschiedene Backends und Frontends, die alle in unterschiedlicher Kombination miteinander Synchronisieren können. Dieser Artikel geht auf beides ein.

Mein Setup sieht wie folgt aus:

  • mehrere Thunderbird Endgeräte – mobil wie stationär
  • mehrere mobile Endgeräte mit verschieden OS Typen (Symbian, Android, usw)
  • Outlook/Exchange (Arbeitsrechner)
  • Ubuntu-Server als zentrale Datenhalde.

Das Frontend

Recht schnell bin ich auf Funambol gestoßen. Diese Firma bietet Sync-Tools für alle möglichen Plattformen, einen SyncML-Server und einen CloudService. Funambol betreibt dabei das typische OpenSource – Geschäfftsmodel. Code und Tools kostenlos, den Service und einige Features gibt’s gegen Bares. Aber das stört nicht. Zum einen gibt es den FunambolServer (SyncML) als installpacket zum anderen kann man auch auf andere SyncML-Angbote zurückgreifen. Das Backend ist frei konfigurierbar. Mein Fazit nach zwei Wochen mit Funambol im Test:

  • Thunderbird: Erst einmal muss man das Plugin finden. Dazu muss man sich das Plugin entweder selber bauen oder unter www.memotoo.com ein vorkompiliertes Paket herunter laden. Einmal installiert funktioniert alles wie man es sich vorstellt. Adressbücher, Kalender und Task werden ordnungsgemäß synchronisiert.
  • Android: Auch hier gibt es eine Funambol-Applikation kostenlos im markten. Einmal installiert, legt es ein neues „Synchronisations-Konto“ an. Es existiert neben Exchange und Google-Mail dann noch eine weite SyncQuelle, die sich schön in die Android-Oberfläche einbindet. Aufbau der Applikation und Funktonumfang entspricht den Standart Funambol Desktop-Client mit einer Ausnahme: auf dem Android gibt es (noch) keine Task. Es gibt noch keine Task-App die mit Funambol koppelt – leider.
  • Outlook: hier gibt es ein offizielles Plugin das ebenfalls einwandfrei funktioniert.

Eine Einschränkung gibt es jedoch: Funambol scheint beim syncen „marker“ in die jeweiligen Kalendereinträge zu machen (id). Wird der Kalender aber nicht lokal gespeichert sondern ebenfalls synchronisiert oder gar über Netzwerk eingebunden (Exchange/ICS/CalDav) gehen diese Informationen verloren. Der Client ist scheinbar nicht mehr in der Lage, Einträge die vom Server kommen zuzuordnen, mit der unschönen Folge das Dubletten entstehen. Bei meinem Outlook muss ich auf eine veraltete Funambol Version (8.72) setzten, weile nur noch diese den „One-Way“ Modus unterstützt. Dabei überträgt der Client (wahlweise) nur Zum Server oder Empfängt nur vom Server.

Das Backend

Funambol bietet auch einen SyncML Server.  Bei diesem handelt es sich um ein Java – basierten Server samt Konfiguration. Im ersten Überblick wirkte das alles ein wenig „unübersichtlich“ und wenig strukturiert aus. Ich muss aber gestehen das ich mir den Server nur ganze 2 Stunden angeschaut habe. Nebenher hatte ich mir noch ein EGroupware Server aufgesetzt und direkt verglichen. Diesen Vergleich hat der Funambol-Server aus folgenden Gründen verloren:

  • Funambol setzt eine eigene Server-Struktur auf. Dieser Server braucht einen Port den ich durch meine FW Routen muss und so weiter. Auf meinen Server läuft aber schon ein Apache. Egroupware nutzt diesen, so fällt der Mehraufwand weg.
  • Funambol setzt sein eigenes DB-Backend ein. Die wollen gesichert werden. EGroupware kann alle DB-Backends ansprechen, die PHP beherrscht. Standardmäßig komm MySQL zum Einsatz.
  • Und mein Totschlag-Argument: Funambol kann man (noch) nicht aus einer apt-Quelle installieren. Man muss sich also selber kümmern ob und wie man das ganze aktuell hält. EGroupware gibt es als Paket aus den offiziellen quellen.

Bei Egroupware handelt es sich ebenfalls um eine OpenSource-Projekt mit kommerziellen Grundgerüst. Die Community-Edition gibt es kostenlos, den Service muss man kaufen. Man kann das Paket direkt aus den offiziellen Quellen beziehen (die sind veraltet) oder man greift auf Quellen des Herstellers zurück. Dieser bietet für fast alle Debian/Ubuntu-Verianten die quellen an.

Standardmäßig wird EGroupware so installiert das es ein Anwendung unter „http://localhost/egroupware“ gibt. Das kann man wie gewohnt über die Apache-configs umbiegen und anpassen. Die geführte Installation in der Webanwendung gestaltet sich ein wenig hackelig. Das ist bedingt durch den Umstand, dass EGroupware für große Mittelständler gedacht ist. Es unterstützt Domänenkonzepte, Mailserver, verschiedenste Authentifizierungen usw Für den Zweck der einfachen „Ein Mann Synchronisierung“ ein wenig oversized aber es gibt schlimmeres.

Einmal installiert und eingerichtet zeigt sich EGroupware sehr aufgeräumt und übersichtlich. Besonders hervor gestochen haben folgende Funktionen:

  • Es gitb unterschiedlichste Sync-Schnittstellen für ein und das selbe. Zum Beispiel kann der Kalender unter ./calendar oder calendar angesprochen werden. Jede dieser Schnittstellen kann man ein eigenes Konflikt-Management vorgeben.
  • Es wird die WebDav – Schnittstelle angeboten. Hat man Festrechner, die immer mit dem Server verbunden sind, kann man die Kalender bequem mittels WebDav einbinden. Insofern die Kalender der „Kollegen“ freigegeben sind kann man sogar die einbinden. Der Link sieht dann so aus: https://egroupware/groupdav.php/<username>/calendar
  • Legt man einen Eintrag im Kalender an und hinterlegt dabei einen Gesprächspartner (E-Mail) gleicht Egroupware automatisch mit der internen Kontakt-Liste ab und macht entsprechende Einträge bzw. versendet E-Mails
  • Sowohl IMAP als auch POP Server werden unterstützt, auch SMTP wird angeboten – Es muss aber kein Mail-Server angegeben werden!
  • Das WebEnd-ist ansprechend und übersichtlich.

Fazit

Seit zwei Wochen synchronisiere ich erfolgreich zwischen allen meinen Geräten. Von der kleinen Outlook-Einschränkung mal abgesehen funktioniert das Problemlos. Besonders das Feature, dass meine Freundin jederzeit sehen kann, wie meine geschäftlichen Termine liegen bzw. mir von zu Hause Termine „rein knallen“ kann, erleichtert mir ein wenig das leben. Der Verwaltungsaufwand hält sich in Grenzen, da fast alles aus den Mail-Clients her raus gelöst werden kann. Eine klare Empfehlung an alle die ihre Kontaktdaten,Kalender und Aufgaben lieber nicht in der Cloud speichern wollen aber dennoch auf den SyncService nicht verzichten wollen.

Weitere Links: