Einen eigenen Mozilla Weave/Sync-Server (unter Gentoo) betreiben

[caption id="attachment_874" align="alignright" width="150" caption="Logo der Firefox - Sync - Erweiterung"]Logo der Firefox -
Sync -
Erweiterung{.size-thumbnail .wp-image-874 width="150" height="150"}[/caption]

Yeah - Heute möchte ich Euch mal allen eine kleine Einführung in die Firefox-Extension (... was ist eigentlich ein "Plugin", was ein "Add-on" und was eine "Extension"?? O.O - Hab ich noch nie gerallt ;D ) "Sync" (früher: "Weave") geben.

Vielleicht kennt Ihr das: Ihr seid an einem neuen Rechner, startet Euren Firefox und merkt, wie sehr Ihr Euch eigentlich schon an Eure "Personas" (Theme), Bookmarks, History, Passwort- und Formularvervollständigung, etc. gewöhnt habt. Oder Ihr habt mehrere Rechner und irgendwie überall andere Bookmarks, das Kennwort, was Ihr gerade braucht, habt Ihr ausgerechnet auf dem System, vor dem Ihr gerade sitzt, noch nie eingegeben, und so weiter ...

Genau hier schafft "Sync" Abhilfe:

Es wird einfach auf allen Systemen als Firefox-Erweiterung installiert und kümmert sich im Hintergrund darum jegliche Daten, die sonst nur lokal gespeichert werden würden, auf einen Server hochzuladen. Alle Firefox...e synchronisieren sich dann stets mit den in diesem Profil gespeicherten Daten und ... was soll ich sagen: Ihr wollt das einfach nicht mehr missen! :)

Standardmäßig legt man sich bei Mozilla einen Weave-/Sync-Account an und konfiguriert seine Sync-Einstellungen hierfür; die Extension unterstützt einen mit passenden "Account Anlegen" / "Bestehenden Account verwenden" - Buttons.
Man wird hier - man kennt es - zunächst nach einem Usernamen und einem Passwort gefragt; im weiteren Verlauf des Setups zudem nach einem weiteren Passwort, welches zur Verschlüsselung der Daten auf den Mozilla - Servern dient. Diese Verschlüsselung soll diese doch schon sehr sensiblen Daten bei einer Kompromittierung der Mozilla Server schützen. Hier wird empfohlen ein anderes Passwort als das für den Account selbst zu verwenden. Klar - dieser Empfehlung nicht zu folgen wäre auch schon sehr dumm!

Ich selbst habe diese Methode lange Zeit verwendet (nur für private und nicht so sensible Daten, versteht sich!!). Mit jedem weiteren Passwort, welches in diesen Speicher wanderte, fühlte ich mich jedoch mehr und mehr verunsichert. Immerhin

sendet man hier Zugangsdaten zu wer-weiss-was für Systeme an einen Server, zu welchem man keinerlei Ahnung hat wer da eine Möglichkeit hat diese Daten einzusehen; ich muss zugeben nicht wirklich viel über die internen Strukturen der Mozilla Foundation zu wissen. Wenn diese Server gar irgendwann einmal von dritten kompromittiert werden (was dem besten Admin passieren kann), hat man spätestens dann ein wirklich ausgewachsenes Problem.

Heute wurde mir dieses unangenehme Gefühl zu belastend und ich habe mich einmal nach Alternativen umgesehen. Und Tatsache: Man kann, wie es sich für ein anständiges, freies System gehört, diese Serverkomponente auch auf seiner eigenen Infrastruktur betreiben! :)

Voraussetzungen schaffen

Damit dieses ganze System funktioniert, muss neben dem obligatorischem Apache Webserver auch ein PHP 5 mit den Modulen:

  • json
  • mbstring
  • SQLite ( 3! )

installiert sein. Das ist eigentlich schon alles, was zwingend vorhanden sein muss.
Idealerweise sollte man sich jedoch darüber bewusst sein, das hier hochsensible Daten durch's Internet geschickt werden und sowohl OpenSSL, wie auch ein passendes SSL Zertifikat im Apache einrichten. Wer meint er braucht das nicht: Ihr könnt mir Eure Logins auch vertrauensvoll direkt an mailYYYY@marc-richter.info mailen, ohne Euch hier die Mühe zu machen ... ;)

Achtung:

Unter Gentoo Linux war es zwingend erforderlich, das "dev-lang/php" mit dem USE-Flag "sqlite3" kompiliert wurde; "sqlite" allein genügte hier nicht, was mich bereits Stunden gekostet hat ... :P
Ich denke, dieses gilt es in ähnlicher Form auch unter anderen Distributionen zu beachten. Zu erkennen ist das fehlen oder das vorhandensein der Erweiterung in einer falschen Version daran, das nach dem Weave - Passwortdialog nur eine Meldung "Database unavailable" ausgegeben wird.

Einrichtung des "Weave Minimal Servers"

Das Setup des "vollen" Servers ist im Wiki des Mozilla Projektes dokumentiert. Beschrieben; allerdings wird direkt im er

sten Satz darauf hingewiesen, das wohl für die meisten Setups der "Minimal Server", einer alternativen Implementierung des ganzen von "tobyelliott", besser geeignet ist:

It is strongly recommended that you use the [Weave Minimal Server] rather than a full install.

Ich kann zum "Full Server" nichts sagen - ich habe diesen "Minimal Server" installiert! :) Das schafft mir schon ein deutlich besseres Gefühl, das ganze irgendwo liegen zu haben wo (unter normalen Umständen) nur ich drankomme. Vor einer Kompromittierung bin ich natürlich so auch nicht gefeit. Ich denke jedoch das ich mit meinem Server ein deutlich weniger lohnendes Ziel bin als die Mozilla - Systeme. Zumal ein Angreifer ja zunächst garnicht weiß wohin er sich auf so einem System wenden soll und was so alles auf dem Server liegt.
Wie auch immer: Es stellt in meinen Augen, aus meiner Sicht, eine deutlich bessere Lösung dar. Wenn sich jemand mit dem ganzen Kram nicht auskennt und somit viel wahrscheinlicher "Besuch" zu erwarten hat als ich, der ist bestimmt mit der bei Mozilla gehosteten Lösung besser bedient (oder es ganz sein zu lassen - was immer am sichersten ist ;) ). Ich möchte hier keinen dazu ermuntern seine privaten Daten quasi in eine Art Selbstbedienungstheke zu legen ;)

Eine Installation ist ganz einfach und ist in der Datei "README" im tar.gz - Archiv zum "Minimal Weave Server" beschrieben. Dennoch gibt es ein paar Stolperfallen, welche ich hier einmal Punkt für Punkt durchgehen möchte.

Das ich hier das "Minimal Weave Server" - tar.gz - Archiv von der Originalseite zum Download anbiete, soll kein "mit fremden Federn schmücken" sein! Ich weise hier noch einmal ausdrücklich darauf hin, das die gesamte Arbeit, sowie also auch die Blumen und das Lob hierfür der Arbeit von "tobyelliott" zu verdanken ist!
Ich stelle die nur zusätzlich hier zur Verfügung, damit die Originalseite nicht irgendwann verschwindet oder der Link verwaist:

Eine Installation ist ganz einfach und ist in der Datei "README" im tar.gz - Archiv zum "Minimal Weave Server" beschrieben. Dennoch gibt es ein paar Stolperfallen, welche ich hier einmal Punkt für Punkt durchgehen möchte.

Das ich hier das "Minimal Weave Server" - tar.gz - Archiv von der Originalseite zum Download anbiete, soll kein "mit frem

den Federn schmücken" sein! Ich weise hier noch einmal ausdrücklich darauf hin, das die gesamte Arbeit, sowie also auch die Blumen und das Lob hierfür der Arbeit von "tobyelliott" zu verdanken ist!
Ich stelle die nur zusätzlich hier zur Verfügung, damit die Originalseite nicht irgendwann verschwindet oder der Link verwaist:

Download des "Minimal Weave Server" - tar.gz - Archives
(MD5 Checksumme: 5c1837c2690ddbb4a5b4c0860d5791e2)

In dem Archiv befinden sich 4 .php - Dateien. Diese müssen uns nicht weiter interessieren. Später wird lediglich das Script "create_user" interessant. Die Dateien müssen nur für den Apache-User lesbar gemacht werden und in einem dem Apache-Server zugänglichem Verzeichnis abgelegt werden; das Standardsetup geht davon aus, das die Daten aus Sicht des Webservers unter /weave/ erreichbar sind. Theoretisch sollte aber auch jeder andere Ort OK sein. Das Verzeichnis selbst muss (zumindest bis die SQLite - Datenbank angelegt ist) für den Apache schreibbar sein.

Meine Konfiguration, die ich zusätzlich in meine vhost-Datei eintragen musste, lautet exemplarisch wie folgt:

Alias /weave    "/home/marc/public_html/zoosau.de/weave_minimal/index.php"

<Directory /home/marc/public_html/zoosau.de/weave_minimal/>
Options -Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all

</Directory>

Das hier scheinbar ein Verzeichnis ("/weave") auf eine Datei ("/home/marc/public_html/zoosau.de/weave_minimal/index.php") zeigt, ist kein Fehler, sondern absolut gewollt!
Das ganze ist natürlich im Kontext meiner SSL - Konfiguration definiert.

So, nun legt man zunächst die SQLite Datenbank an. Dieses geschieht zunächst auf ungewöhnliche Art und Weise: Man ruft in seinem Browser die folgende URL auf:

https://www.zoosau.de/weave/1.0/blah/info/collection

"www.zoosau.de" ersetzt Ihr dabei natürlich durch Eure Domain/IP.

Wie genau sich dieser Pfad hinter dem "/weave" zusammensetzt, habe ich nun nicht weiter recherchiert - interessiert mich ehrlich gesagt auch nicht ;) Das Setup ist so simpel und funktioniert tadellos - da muss ich nicht alles so genau wissen. Wer gerne mehr wissen will (oder weiß?) der kann gerne Google verwenden, oder Tipps und Hinweise als Kommentar an diesen Beitrag anfügen; würde mich freuen!

Es sollte nun eine Passwortabfrage kommen - Die Ausgabe der Webseite lautet schlicht: "Weave". Hier kann man sich mit irgendetwas (die README spricht von Username: "blah", Passwort: "garbage"; das sollte aber völlig egal sein) anmelden; das Resultat sollte eine weitere Abfrage sein. Diese kann man schließlich abbrechen; Ziel war es lediglich, das hierdurch die SQLite Datenbank "weave_db" im Weave - Verzeichnis angelegt wird.

Nun können wir uns einen ersten User anlegen: Auf der Shell im Weave-Verzeichnis führt man dazu folgendes aus:

php create_user

Nun wird man mit selbsterklärenden Dialogen konfrontiert:

#> php create_user

(c)reate, (d)elete or change (p)assword: c
Please enter username: marcrichter
Please enter password: Mein super-geheimes Passwort
marcrichter created
#>

Anschließend ist der neue Server umgehend einsatzbereit.

Einrichten des Firefox

Zunächst muss natürlich die Firefox-Erweiterung installiert werden. Wie das geht spare ich mir an dieser Stelle zu beschreiben, da sich dieses Wissen jeder eigeninitiativ aneignen kann.

Nach einem Neustart des Browsers kann man unter "Extras >> Sync >> Einstellungen" die Extension konfigurieren. Diese Einrichtung möchte ich mit einer Bilderstrecke begleiten:

[caption id="attachment_877" align="aligncenter" width="300" caption="Schritt 1 der Firefox Sync-Installation"]Schritt 1 der
Firefox
Sync-Installation{.size-medium .wp-image-877 width="300" height="237"}[/caption]

Man wird zunächst mit einem Begrüßungsdialog empfangen. Hier wählen wir die Option "I Have a Firefox-Sync Account".

[caption id="attachment_880" align="aligncenter" width="300" caption="Schritt 2 der Firefox Sync-Installation"]Schritt 2 der
Firefox
Sync-Installation{.size-medium .wp-image-880 width="300" height="237"}[/caption]

Im folgendem Dialog stellen wir die Standardvorgabe auf "Eigenen Server verwenden" um. Die möglichen Eingabeoptionen erweitern sich anschließend um das Feld "Server-URL".

[caption id="attachment_881" align="aligncenter" width="300" caption="Schritt 3 der Firefox Sync-Installation"]Schritt 3 der
Firefox
Sync-Installation{.size-medium .wp-image-881 width="300" height="237"}[/caption]

Hier geben wir nun folgendes ein:

  • Server-URL: https://www.zoosau.de/weave/
    (auch hier gilt wieder: Ersetzt "www.zoosau.de" durch Eure Domain/IP)
  • User Name: Den Usernamen, den Ihr beim Script "create_user" angegeben habt.
  • Passwort: Das Passwort, welches Ihr beim Script "create_user" angegeben habt.

[caption id="attachment_882" align="aligncenter" width="300" caption="Schritt 4 der Firefox Sync-Installation"]Schritt 4 der
Firefox
Sync-Installation{.size-medium .wp-image-882 width="300" height="237"}[/caption]

Hier gebt Ihr nun letztendlich den Sync-Key ein, welcher für die Verschlüsselung der Daten verwendet werden soll. Wie zuvor bereits erwähnt empfiehlt es sich hier dringend ein anderes Kennwort als das Login-Passwort zu verwenden, auch wenn dieses nicht zwingen vorgeschrieben wird.
Welche Daten übertragen werden sollen (wenn Ihr z.B. die Passworte von der Synchronisation ausschließen wollt), könnt Ihr dieses in diesem letzten Dialogfenster links unten über den Button "Sync-Options" einstellen.

Das war's schon! :) Wenn alles geklappt hat, sollte sich das kleine "Sync" - Symbol unten rechts in der Statuszeile des Firefox nun drehen und somit anzeigen, das Eure bisher in diesem Browser gespeicherten Daten in Euren Account hochgeladen werden.

So, ich hoffe Ihr fandet dieses Tutorial hilfreich und verständlich! Wie immer würde ich mich über Feedback freuen :)

Teilen per: TwitterEmail


eGroupware und mein Nokia E71

YEAH!!!!

Mann, was freue ich mich!! :)
Ich habe schon seit Jahren die Groupware eGroupware im Einsatz. Ich bin nicht 100%ig zufrieden, jedoch arbeitet das (recht kleine) Team immer weiter daran das Teil zu verbessern. Ich hatte auch mal einen Bug dort erstellt, da er mir gehörig auf den Sack gegangen war. Ich hörte nie wieder etwas zu dem Thema - bis vor kurzem. Ich dachte schon "Wa?? Ein halbes Jahr später?" Aber nein - das war nur eine globale Nachricht an ALLE Bugreporter, das man bitte die neue Version, 1.6, prüfen soll, ob der Fehler behoben ist. Habe ich NICHT getan. Entweder man nutzt als Projekt einen Bugtracker oder nicht. Tut man es nicht, braucht man auch keinen anzubieten.

Egal: Ich wollte hier eigentlich etwas positives zu schreiben :D
Ich habe ja seit mehreren Monaten ein Nokia E71. Falls dieser Link Nokia-typisch in 3 Monaten nicht mehr funktioniert, hier wenigstens ein Bild:

[caption id="attachment_241" align="alignnone" width="150" caption="Bild meines Handys Nokia E71"]Bild meines neuen Handys
Nokia
E71{.size-thumbnail .wp-image-241 width="150" height="150"}[/caption]

Ich wollte dieses Handy zum einen wegen der super Tastatur haben. Zuvor hatte ich ja ein eTen Gloofish x800 . Das Teil hat fast 600 € gekostet, welche ich jedoch bereit war auszugeben, da ich nach vielen Fehlgriffen im Handybereich dachte "OK, Qualität hat da wohl seinen Preis." Das Gerät war der blanke Horror, aber das alles könnt ihr hier nachlesen. Doch trotz (oder gerade wegen?) Windows Mobile war es mir weder möglich zuverlässig mit dem Gerät zu arbeiten (stürzte wie "der grosse Bruder" dauernd ab), noch zu telefonieren (das Gerät brauchte intern fast 15 Sekunden, bis es den Klingelton in den Arbeitsspeicher geladen hat. Bis dahin hat fast jeder aufgelegt.). Den Navi konnte ich auch nicht nutzen, da das Teil entweder einfach zu langsam war die Software laufen zu lassen, und/oder die Software den GPS Empfänger schlichtweg nicht fand. Den internen Kalender oder meine Kontakte konnte ich auch nicht gescheit synchronisieren. Lediglich mit Outlook war das möglich. Doch mein Ziel war es eigentlich ein Handy zu haben, das diese Daten mit meiner eGroupware synchronisiert.

Das hatte ich auch jetzt beim E71 im Hinterkopf. Ich dachte, wenn es mit Symbian, wo es X tausende (gröstenteils konstenfreie) Zusatzapplikationen gibt, nicht klappt, dann muss ich halt aufgeben. Einen Blackberry will ich nicht haben, da ich die Bedienung alles andere als intuitiv finde. Zudem macht das OS denselben Eindruck wie ein MacOS / iPhone OS: Entweder etwas wird unterstützt, dann sieht alles echt edel aus und geht ganz einfach. Oder etwas weicht nur minimal vom Standard ab - dann hat man aufgrund fehlender Optionen keine Möglichkeit den Kram ans laufen zu kriegen.
Zumal tue ich mich mit dem Trackball sehr schwer, der meist mehrere Menüpunkte auf einmal überspringt, bzw. (es ist ein Touch-Trackball, mit dem man Menüeinträge anwählen kann) beim drücken springt das System, dank minimaler Drehung beim drücken, nochmal schnell auf einen anderen Menüpunkt.

Egal! Ich habe mich heute das erste Mal seitdem ich das Gerät habe damit beschäftigt, es mit meiner eGroupware zu synchronisieren. Laut Doku soll alles total einfach sein. Dieses kann ich nun bestätigen!
Wenn man sich ganz einfach an die Doku zum Nokia N95 hält, funktioniert hinterher alles!

Endlich kann ich meine Kontakte und Termine ohne Zwischenstation, wobei ich an ein Windows + Outlook gebunden bin, direkt zwischen Telefon und Server synchronisieren! :) Das macht mich total Happy!! :)

Ich habe 3 Ergänzungen zur offiziellen Doku (basierend auf eGroupware v1.4.004):

  1. Man muss zunächst in der Adminoberfläche der eGroupware (Login als Admin -> Modul "Admin" -> Punkt "Konfiguration der Anwendung") die Einstellung "xmlrpc Service einschalten (Vorgabe Nein, ausgeschaltet lassen, wenn nicht benützt)" auf "Ja" stellen, damit das ganze funktionieren kann.
  2. Wenn die Synchronisation anschliessend nicht klappt, hat man die Möglichkeit die Seite "http://www.meine-seite.de/egroupware/rpc.php" in einem ganze normalen Browser aufzurufen, um ggf. auf Misstände in der Konfiguration aufmerksam gemacht zu werden. Wenn alles OK ist, steht hier nur "You should access this URL only with a SyncML enabled device.".
  3. Damit das SyncML - Modul funktioniert, muss die PHP Funktion "mbstring.func_overload" auf "0" gesetzt sein. Damit UTF-8 innerhalb der eGroupware verwendet werden kann, muss diese Option jedoch auf "7" gesetzt sein. Was nun?
    Ich habe nun folgendes gemacht: In meiner Apache2 - Konfigurationsdatei habe ich folgenden Eintrag vorgenommen:

    <Directory /usr/local/share/egroupware>
    ...
    <IfModule mod_php5.c>
    ...
    # multibyte extension: needed for utf-8
    php_value mbstring.func_overload 7
    <Files rpc.php>
    # Fuer SyncML muss mbstring.func_overload = 0 sein
    php_value       mbstring.func_overload  0
    </Files>
    </IfModule>
    </Directory>

    Dieses bewirkt, das alle Elemente im Verzeichnis "/usr/local/share/egroupware" (und darunter) die PHP Konfiguration "mbstring.func_overload=7" verwenden. Lediglich Dateien, unterhalb von "/usr/local/share/egroupware" mit dem Namen "rpc.php", verwenden so die PHP Konfiguration "mbstring.func_overload=0"
    ACHTUNG:
    Es mag sein, das es bei diesem Vorgehen zu Zeicheninkompatibilitäten bei Umlauten (ä,Ä,ö,Ö,...) oder Sonderzeichen kommt. Ich habe aber keine Lust, meine auf "mbstring.func_overload=7" und UTF-8 laufende eGroupware nun zu zerschiessen, nur um Synchronisieren zu können. Daher lebe ich damit und bin bisher noch nicht auf die angesprochenen Probleme gestossen.

Der unter Punkt 3 vorgestellte Abschnitt "<Files ...>...</Files>" funktioniert in .htaccess Dateien und der Apache2 Konfiguration gleichermaßen. Wer mehr zu dieser Direktive wissen will, der lese hier nach.

Teilen per: TwitterEmail