Eigener Firefox Sync Server mit Debian/Ubuntu

Einen eigenen Firefox Sync Server kann man innerhalb weniger Minuten aufsetzen. Ähnlich wie Chrome, bietet Firefox die Möglichkeit Lesezeichen, Verlauf, Passwörter, etc zu synchronisieren. Im Gegensatz zum Chrome kann man beim Firefox jedoch einen eigenen Sync Server installieren und behält somit die Oberhand über die oben genannten Daten.

Diese Anleitung funktioniert sowohl für die Desktop Variante des Firefox, als auch für die Android Version.

Wichtig: Wir setzen keinen eigenen Auth Server auf, sondern verwenden den offiziellen von Firefox. Es ist außerdem wichtig im Firefox zuerst den eigenen Sync Server zu konfigurieren und sich erst danach mit dem Firefox Konto anzumelden. Nur wenn man sich an diese Reihenfolge hält, wird der eigene Syncserver verwendet.

Vorraussetzungen

Unser Server braucht nur wenige Abhängigkeiten. Diese installieren wir zuerst:

apt install python-dev git-core python-virtualenv g++

Installation des Firefox Sync Server

Der Syncserver ist in einem Git Repository abgelegt. Um diesen zu clonen wechseln wir in das /opt/ Verzeichnis:

cd /opt
git clone https://github.com/mozilla-services/syncserver
cd syncserver

Und builden das ganze

make build

Grundlegende Konfiguration

Nun stellen wir die wichtigsten Einstellungen ein. Dazu bearbeiten wir die syncserver.ini. „public_url“ist die URL unter der der Syncserver von extern erreichbar sein wird:


 [syncserver]
 public_url = http://localhost:5000/
 

Der Syncserver hält in der Standardeinstellung alle Daten nur im Arbeitsspeicher. Nach einem Neustart wären diese also weg. Um hier sqlite oder MySQL zu verwenden, kann mein eine der folgenden Zeilen nutzen:

[syncserver]
sqluri = sqlite:////path/to/database/file.db
oder 
sqluri = pymysql://username:password@db.example.com/sync
Nun müssen wir dem Server noch erlauben neue Benutzer anzunehmen:
 allow_new_users = true

Den Server starten

Den Server kann man einfach mit folgendem Befehl starten.

make serve

Damit läuft der Server jedoch nur solange das Terminalfenster geöffnet ist. Um den Server auch weiterhin laufen zu lassen nutzen wir das Programm „screen“

apt install screen

Und starten den Server damit

screen -dmS firefoxSyncServer make serve

Mit „screen -r“ kann man sich nun in das virtuelle Terminal verbinden und mit STRG+D trennen.

Optimierungen

Auch wenn der Sync Server so bereits arbeiten würde, empfiehlt es sich diesen hinter einem Apache oder nginx Webserver zu betreiben, da der integrierte Webserver nicht der Beste ist. Um das zu realisieren habe ich mich für nginx und gunicorn entschieden.

nginx installieren

apt install nginx

gunicorn installieren

cd /opt/syncserver

local/bin/easy_install gunicorn

nginx Konfiguration

server {
 listen 443 ssl;
 server_name sync.example.com;

ssl_certificate /path/to/your.crt;
 ssl_certificate_key /path/to/your.key;

location / {
 proxy_set_header Host $http_host;
 proxy_set_header X-Forwarded-Proto $scheme;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_redirect off;
 proxy_read_timeout 120;
 proxy_connect_timeout 10;
 proxy_pass http://127.0.0.1:5000/;
 }
 }

 

Damit ist der Firefox Sync Server erreichbar.

Firefox konfigurieren

Im Firefox müssen wir nun noch in der Adresszeile „about:config“ eingeben und dort nach dem Feld „identity.sync.tokenserver.uri“ suchen. Den Wert ändern wir auf unseren neuen Server ab:

http://sync.example.com/token/1.0/sync/1.5

Nun nutzt Firefox unseren eigenen Sync Server. Erst jetzt dürfen wir uns mit unserem Firefox Konto im Browser anmelden. Sollten wir bereits angemeldet sein, müssen wir uns ab- und wieder anmelden.

Es würde sich nun noch empfehlen den nginx Webserver und damit die Kommunikation zwischen Firefox und Sync Server mit einem SSL Zertifikat zu verschlüsseln.

Weitere Einstellungsmöglichkeiten und mehr Informationen findet man in der öffentlichen Dokumentation.

Das könnte Dich auch interessieren …

5 Antworten

  1. Leon sagt:

    Habe den Server so aufgesetzt wie in deiner Beschreibung ausser den teil mit der Optimierung. Der Server Läuft ( it works! ), aber ich komme immer auf die normale Firefox login seite.

    Als url habe ich die IP des Raspberrys eingegeben der als Firefox Sync server dienen soll. Der Server soll nicht aus den Internet ereichbar sein sonder nur von zuhause.

  2. Leon sagt:

    Habe es jetzt selber herausgefunden. Wenn der Firefox Server mit allen einstellungen läuft und die änderungen im Firefox Browser gemacht wurden, muss man sich im Browser unter Extras ( Bei Sync anmelden) erstmal ein Account bei Mozilla erstellen und die Synconisation läuft dann über eueren Server ab. Dieses sicht man an der Datenbank größe und den letztmaligen benutzten der Datei.

    Damit das Programm in hintergrund läuft sollte noch screen installiert werden und z.b. mit ( screen -dmS firefox make serve ) das Programm in der Instantz (firefox) dort laufen zu lassen.
    Mit screen -r wirde diese aufgerufen wenn nur diese Instantz läuft. Mit STRG-D kann man diese verlassen ohne das Programm zu beenden.

    • Matthias sagt:

      Hallo Leon, vielen Dank für die ausführlichen Infos. Du hast Recht, man muss sich dennoch mit einem Firefox Konto bei Firefox anmelden. Mann könnte zwar auch einen eigenen Auth Server aufsetzen, jedoch ist dies noch sehr experimentell, außerdem werden auf dem Auth Server keine Verlaufsdaten gespeichert, sodass ein eigener Sync Server dennoch sinnvoll ist.

      Auch deine Ergaenzungen zu „screen“ sind sicherlich für einige sehr hilfreich – danke 🙂

  3. Leon sagt:

    Hallo Matthias,

    aber ein Problem habe ich noch immer und zwar kann ich mit meinen Android Handy mit Firefox 57 kein sync machen. Ich melde mich mit den gleichen Daten an aber es funktioniert nicht. Die Adresse zu meinen Server ist aber die richtige.

    Hast du es vielleicht gelöst?

  4. Leon sagt:

    Da bin ich wieder 🙂
    ich habe meinen Fehler gefunden. Ich müßte in der syncserver.ini datei den wert allow_new_users und force_wsgi_environ auf true setzten und es ging sofort.

    Also für alle anderen die auf die Anleitung stoßen sollten die meisten dinge erklärt sein. Für mich ist es jetzt die beste die ich bis jetzt gelesen habe 🙂

    Danke Matthias 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.