Raspberry Pi

Raspberry Pi: Firefox Sync Server installieren

Mozillas Firefox ist neben Google Chrome und Apples Safari einer der populärsten Webbrowser. In Firefox gibt es die Möglichkeit seine aktuellen Tabs, Einstellungen, Verläufe, Lesezeichen und Add-Ons mit anderen Geräten zu synchronisieren. Hierbei kommt ein Firefox Sync Server zum Einsatz. Bei Beanspruchung des Service werden dabei die Daten standardmäßig auf den Servern von Mozilla abgelegt. Demgegenüber bietet Mozilla die Option, den Firefox Sync Server selbst zu betreiben und somit die Daten auf einem eigenen, vertrauenswürdigen Host zu verarbeiten. Seit Firefox in der Version 29 wird der Firefox Sync Server in der Version 1.5 angeboten. In diesem Zusammenhang ist die Verwendung des Raspberry Pi als Sync Server sinnvoll. Auf Grund der geringen Leistungsaufnahme des Einplatinencomputers ist die Umsetzung von Clouds und ähnlichem im heimischen Umfeld ein beliebtes Einsatzgebiet, um seine persönlichen Daten nicht im Netz liegen zu haben. Im Folgenden wird erklärt, wie man auf dem Raspberry Pi den Firefox Sync Server installieren, einrichten und nutzen kann.

DynDNS

In Vorbereitung zur Installation und Nutzung des Firefox Sync Servers auf dem Raspberry Pi sollte man vorher sicherstellen, das der Raspberry Pi über eine DynDNS Domain über das Internet erreichbar ist. Bei privaten Internetanschlüssen kommt es in der Regel aller 24 Stunden zu einem neuen Verbindungsaufbau und damit auch zur Zuweisung einer neuen IP-Adresse. Die Konfiguration einer DynDNS Domain wurde bereits im Artikel Raspberry Pi: DynDNS einrichten beschrieben.

Weiterhin sollte vor Beginn der Installation des Firefox Sync Servers der Port 5000 (für den Raspberry Pi) freigegeben sein. Dieser Port wird vom Firefox Sync Server verwendet. Möchte man den Firefox seiner Geräte lediglich innerhalb des lokalen Heimnetzes synchronisieren, ist die externe Freigabe von Port 5000, sowie eine DynDNS Domain nicht notwendig.

Raspberry Pi: Firefox Sync Server installieren

Zu Beginn der Installation des Firefox Sync Servers auf dem Raspberry Pi bringen wir unser System auf gegebenenfalls auf den neuesten Stand und installieren die benötigten Pakete. Diese benötigen wir um im nächsten Schritt den Server zu kompilieren. Zudem benötigen wir im weiteren Verlauf das Tool screen für den Betrieb des Sync Servers.

sudo apt-get install python-dev git-core python-virtualenv g++ screen

Anschließend wird der Sourcecode von Mozillas Git Repository heruntergeladen und via Make-Skript kompiliert.

sudo git clone https://github.com/mozilla-services/syncserver
cd syncserver
sudo make build

Im nächsten Schritt passen wir die Konfigurationsdatei des Sync Servers an. Dazu benötigen wir vorab eine Zufallszahl bzw. einen Zufallscode den wir mit dem folgenden Kommando erstellen können. In der Ausgabe gehört der endende Bindestrich nicht mehr mit zu Zufallscode.

head -c 20 /dev/urandom | sha1sum

Anschließend bearbeiten wir die Serverkonfigurationsdatei mit dem Editor nano.

sudo nano syncserver.ini

Zuerst tragen wir im Punkt public_url die DynDNS Domain. Der Port 5000 muss dabei erhalten bleiben. Dazu ersetzen wir:

public_url = http://localhost:5000/

mit dem folgenden Eintrag. Hierbei muss natürlich die eigene DynDNS Domain eingetragen werden. Möchte man den Firefox Sync Server ausschließlich im lokalen Netzwerk nutzen, dann kann hier die lokale IP-Adresse des Rapsberry Pi verwendet werden.

public_url = http://MeineDynDNSDomain.com:5000/

Im nächsten Schritt passen wir die zu verwendende Datenbank des Sync Servers an. Dazu bearbeiten wir den bisher via Raute auskommentierten Punkt sqluri.

#sqluri = sqlite:////tmp/syncserver.db

Standardmäßig nutzt der Sync Server eine In-Memory Datenbank, d.h. er legt seine Datenbank im Arbeitsspeicher ab. Folglich sind die Daten nach einem Neustart des Servers weg und während des Betriebs würde der RAM des Pi mehr als notwendig beansprucht werden. Aus diesem grund verwenden wir hier die SQLite Datenbank. Gegenüber einer MySQL Datenbank wird hierfür kein permanent laufender und ressourcenfressender Dienst benötigt. Theoreitsch wäre der EInsatz von MySQL dennoch möglich. Zur Definition der SQLite Datenbank entfernen wir den Kommentar und fügen den Pfad zur verwendeten Datenbankdatei ein.

sqluri = sqlite:////home/pi/syncserver/syncserver.db

Im Punkt secret kümmern wir uns um die Sicherheit des Sync Servers. Für die Erstellung von kryptografischen Authentifizierungs-Tokens verwendet der Server einen Schlüssel. Standardmäßg ist diese Option auskommentiert, sodass sich der Server bei jedem Neustart selbst einen neuen Schlüssel generiert. Für den sicheren Langzeitbetrieb des Sync Servers empfhielt es sich jedoch einen eigenen persistenten Schlüssel zu definieren, was wir im Punkt secret vornehmen. Hier tragen wir unsere erzeugte Zufallszahl ein. In meinem Fall sieht das wie folgt aus:

secret = db8a203aed5fe3e4594d4b75990acb76242efd35

Damit der Server zunächst neue, unbekannte Benutzer erlaubt den Service des Servers zu nutzen, erlauben wir in der Einstellung allow_new_users das hinzufügen neuer Nutzer. Im späteren Verlauf, wenn die gewünschten Benutzer mit dem Sync Server bekannt gemacht wurden, kann diese Einstellung wieder rückgängig gemacht werden. Doch zunächt erlauben wir dies, in dem wir bei folgender Zeile den Kommentar entfernen und diesen auf true setzen.

#allow_new_users = false

Wird editiert zu:

allow_new_users = true

Nachdem die Einstellungen vorgenommen wurde kann die Konfigurationsdatei mit der Tastenkombination Strg + X, Y und Enter gespeichert und geschlossen werden. Weiterhin geben wir unserem Benutzer noch die Rechte am Firefox Sync Server, damit dieser den ausführen kann. In der Regel verwendet man ja den Nutzer pi.

sudo chown -R pi:pi /home/pi/syncserver

Gestartet werden könnte der Sync Server mit dem folgenden Befehl.

local/bin/pserve syncserver.ini

Damit man den Firefox Sync Server einfacher starten kann, setzen wir eine Verknüpfung mit dem Kommando ln.

sudo ln -s /home/pi/syncserver/local/bin/pserve /usr/bin/pserve

Zum Starten des Servers können wir nun die Verknüpfung nutzen. Bei dem Aufruf übergeben wir den Pfad Server Konfigurationsdatei.

pserve /home/pi/syncserver/syncserver.ini

Ist der Server erfolgreich gestartet sollte folgende Ausgabe ähnlich sichtbar werden. Mit Strg+C kann der Server wieder beendet werden.

Starting server in PID 2389
serving on 0.0.0.0:5000 view at http://127.0.0.1:5000

Damit der Firefox Sync Server zukünftig beim Systemstart selbständig im Hintergrund startet, legen starten wir den Server in screen und diesen screen wiederum fügen wir in die Crontab Datei ein. Dazu editieren wir den Crontab.

crontab -e

Am Ende der Datei fügen wir folgende Zeile ein. Anschließend kann die Datei gespeichert und geschlossen werden.

@reboot screen -dmS syncserver pserve /home/pi/syncserver/syncserver.ini

Bei dem nächsten Neustart des Raspberry Pi wird nun der Firefox Sync Server automatisch gestartet. Um den Server direkt ohne Neustart zu starten nutzen wir den Befehl, welchen wir in der Crontab verwenden.

screen -dmS syncserver pserve /home/pi/syncserver/syncserver.ini

Firefox einrichten

Nach dem wir auf dem Raspberry Pi den Firefox Sync Server installieren konnten, müssen wir im verwendeten Firefox Webbrowser diesen als den zu verwendenden Server hinterlegen. Dies ist in jedem Firefox auf jedem Gerät notwendig. In die Adresszeile des Browsers geben wir about:config ein. Hierbei bekommen wir den Hinweis, mit den Einstellungen sorgsam umzugehen. Diese Meldung muss bestätigt werden.

Anschließend erscheint oberhalb diverser Einstellungen ein Suchfeld bzw. ein Filter. In diesem suchen wir nach identity.sync.tokenserver.uri. Haben wir die Einstellung gefunden, können wir diese mit einem Doppelklick auf die Zeile bearbeiten. Als neuen Wert definieren wir die folgende Linkstruktur, mit unserer DynDNS Domain. Wichtig ist, dass sowohl die Linkstruktur, als auch der Port 5000 eingetragen ist.

http://MeineDynDNSDomain.com:5000/token/1.0/sync/1.5

Nachdem diese Einstellung gesetzt ist können wir im Firefox Browser unter Einstellungen -> Sync einen Account erstellen bzw. uns mit einem vorhandenem anmelden. In den weiteren Einstellungen des Sync Dialoges kann bestimmt werden, was alles synchronisiert werden soll (Tabs, Lesezeichen, Verläufe, etc.). Bei Erstellung eines Accounts erhält man eine E-Mail mit einem Bestätigungslink um den Account freizuschalten. Hat man sich erfolgreich einen Account erstellt, oder sich mit einem bestehenden angemeldet, sollte der Sync Service in Firefox aktiv sein.

Quelle: Mozilla Services Documentation

Hinterlasse eine Antwort

Kommentare

  • Der Sync-Server liegt zwar bei dir, aber der Contenserver, fxa oauth usw. sind bei Mozilla. Mozilla greift immer noch deine Daten ab und hat jetzt indirekten Zugriff auf deinen Pi.
    Wenn du wirklich deine Privatssphäre wahren willst, musst du insgesamt 7 Server installieren, u.a. nginx reverse proxy server, fxa oauth server, fxa content server usw.

    Und es gibt ein Firefoxplugin mit dem sich die vielen URLs in der about:config anpassen lassen.

  • Hallo,

    kann es sein, dass die Anleitung mitterweile veraltet ist? Bekomme beim Serverstart folgende Fehlermeldung:

    pserve /home/pi/syncserver/syncserver.ini
    Starting server in PID 4591.
    !!!
    !!! WARNING: This command is deprecated.
    !!!
    !!! You should now use the `–paste` option. Ex.:
    !!!
    !!! gunicorn –paste development.ini
    !!!
    !!!

      • Hallo Toni
        ich bin aktuell auch auf der Suche nach einer Lösung um Firefox und Thunderbird im Heimnetz zu Synchronisieren.
        Bitte kurze Info ob Dein Raspberry Projekt mit dem aktuellen Firefox noch läuft bzw. gibt es eine aktuelle Beschreibung ?

        Grüße Charly

        • Hallo,

          ich selbst habe das nicht in Betrieb. Da die Anleitung schon etwas älter ist, vermute ich das es neuere Versionen gibt oder einfach via apt-get installiert werden kann.