Die hosts-Datei von Android ist für normale Nutzer nicht erreichbar, weswegen Sie den Server nur über seine IP-Adresse ansprechen können. Das ist nicht nur mühsam, sondern funktioniert auch mit dem Firefox-Sync-Server nicht, da dieser die Kontaktaufnahme über die hinterlegte public_url erwartet. Die Lösung liefert ein eigener DNS-Server, den Sie mit dem Befehl
sudo apt-get install dnsmasq
einrichten. Obwohl Dnsmasq viel mehr leistet, benötigen wir nur seine Basisfunktionalität. Der Service stellt alle Hostnamen aus der lokalen /etc/hosts Datei im Netz bereit. Adressen entfernter Rechner holt sich der Dienst über den konfigurierten DNS-Server aus der /etc/resolv.conf. Damit müssen Sie nur noch die Hosts-Datei auf dem RasPi pflegen und in den erweiterten WLAN-Einstellungen auf dem Smartphone dessen IP-Adresse als ersten DNS-Server angeben.
Die zweite Hürde kommt in Form eines Bugs im mobilen Firefox. Er ist seit Version 33 bekannt und sollte schon längst behoben sein, war aber in der getesteten Version 35 war immer noch vorhanden. Der mobile Browser spricht Sync-Server nur dann richtig an, wenn diese die auf dem Default-Port 80 beziehungsweise 443 lauschen. Dafür gibt es zwei Lösungen.
Die naheliegende davon besteht darin, den Port in der syncserver.ini von 5000 auf 80 zu ändern. Da es sich dabei um so genannte privilegierte Ports unterhalb von 1024 handelt, bleiben diese aber Diensten, die mit Root-Rechten laufen vorbehalten. Darüber hinaus wäre der Standard-Webserver-Port mit diesem speziellen Service blockiert.
Die saubere Lösung: Auf dem RasPi läuft zusätzlich ein normaler Webserver, der sogenannte virtuelle Hosts unterstützt. Anfragen zum Beispiel an pi.meinprivatnetz.de bearbeitet er selbst, während er Anfragen an ffsync.meinprivatnetz.de an den Syncserver auf Port 5000 weiterleitet. Beide Hostnamen müssen in der /etc/hosts stehen und die selbe IP-Adresse verwenden.
Das hört sich komplizierter an als es ist. Mit den Kommandos aus Listing 2 installieren den schlanken Webserver Lighttpd und bereiten ihn auf seine Aufgabe vor. Das Listing 3 konfiguriert die Umleitung der Anfragen an den Syncserver. Last but not least ändern Sie in der syncserver.ini die Einträge host = von 0.0.0.0 auf 127.0.0.1 und public_url = von http://pi.meinprivatnetz.de:5000/ auf http://ffsync.meinprivatnetz.de/. Die erste Änderung bewirkt, dass der Server nicht mehr direkt von Außen erreichbar ist, die zweite weist ihm die neue URL zu, auf die er reagiert.
Listing 2
# Webserver installieren sudo apt-get update sudo apt-get install lighttpd # Proxy-Modul aktivieren sudo lighty-enable-mod proxy # Konfigurationsdatei für die Umleitung von Anfragen erstellen # und die Daten aus Listing 3 hineinkopieren nano /etc/lighttpd/conf-enabled/99-ffsync.conf # Geänderte Konfigurationen neu laden sudo /etc/init.d/lighttpd force-reload
Listing 3
# Umleitung von ffsync.meinprivatnetz.de zum Sync-Server
# für die Datei /etc/lighttpd/conf-enabled/99-ffsync.conf
$HTTP["host"] =~ "ffsync.meinprivatnetz.de" {
proxy.server = ( "" =>
(( "host" => "127.0.0.1", "port" => 5000 ))
)
}
Nur mit Mozilla
Mit diesem Setup unterstützt der Sync-Server sowohl die Desktop- als auch die Mobilversion des Firefox. Ohne die Anmeldung bei Mozilla geht allerdings nichts. Zwar stellt Mozilla auch den Anmeldeserver samt rudimentärer Anleitung quelloffen zum Download bereit, auf der ARM-Architektur des Pi klappt das allerdings nicht. Der Server ist zum größten Teil mittels Nodejs in JavaScript implementiert. JavaScript arbeitet zwar plattformunabhängig, die verwendeten Nodejs-Plugins nutzen aber aus Performancegründen nativen Code.
Einige dieser Erweiterungen verwenden ganz spezielle x86-Befehle (SSE), die ARM nicht unterstützt. Der Code ist also nicht portabel womit eine Installation auf dem RasPi und seinen Verwandten flach fällt. Zwar könnte sich das in Zukunft ändern, im Moment heißt es aber, mit dem Status Quo zu leben.
Fazit
Die hier vorgestellte Lösung eignet sich nur für das heimische Netz. Wer den Syncserver auch ins Internet stellen will, muss viel mehr Aufwand betreiben. Das fängt schon an der Basis an: das Standard-Raspbian bringt viel zu viel Software mit, um als sicherer Server zu arbeiten. Ebenso sollte die Kommunikation mit dem Webserver per HTTPS statt mit HTTP erfolgen.
Bis auf das Problem mit dem Anmeldeserver läuft der neue Syncserver ohne Probleme auf dem RasPi. Auch die Migration einer vorhandenen Lösung gelingt in wenigen Minuten. Wieder einmal zeigt sich, dass der Minirechner auch in seinen älteren Versionen für viele Alltagsaufgaben genug Leistung bereitstellt und sich nicht zu verstecken braucht. Schade nur, dass die Android-Version von Firefox so viele unnötige Probleme bereitet.
Infos
- Raspberry Pi als Synchronisationszentrale: Bernhard Bablok, “Im Gleichtakt”, Raspberry Pi Geek 03/2014, S. 38, http://www.raspberry-pi-geek.de/32080
- Firefox-Mobile mit eigenem Sync-Server verbinden: http://www.ncalexander.net/blog/2014/07/05/how-to-connect-firefox-for-android-to-self-hosted-services/





