Vielleicht hat es schon jemand bemerkt:

Firefox hat eine neue Sync-Technik eingeführt. Die besteht eigentlich aus zwei Teilen:

  • Firefox Accounts
  • Firefox Sync

Da ich bisher meine Daten über Owncloud und das mozilla-sync-Plugin laufen ließ, stehe ich nun vor dem Problem, dass das neue Syncprotokoll (1.5) (noch?) nicht von mozilla-sync unterstützt wird.

Da ich aber doch ganz gerne meine Daten bei mir haben will, bzw. wenigsten auf meinem eigenen Server im Internet muss ich mich nach etwas anderem umschauen.

Die neue Firefox Account Technik und das Zusammenspiel der Komponenten ist im Blogbeitrag von Dan Callahan recht überschaubar beschrieben. Er geht auch darauf ein, dass Owncloud eingebunden werden soll. Genauere technische Details finden sich in diesem Blogbeitrag bzw. im github-repo

Als Einstieg zur Umsetzung des neuen Protokolls empfiehlt sich die Mozilla Services Documentation-Seite. Dort wird z.B. erklärt, wie ein eigener Firefox 1.5 Sync Server eingerichtet wird, dazu später mehr.

Nachdem ich viele Kommentare und Fehler gelesen habe, komme ich zu folgenden verschiedenen Lösungsideen:

  1. alles auf meinem eigenen Server einrichten (original Firefox-Code)
  2. nur den Sync-Einrichten
  3. Sync-legacy mit Firefox 29 Nutzen. Also das alte Syncprotokoll ist weiterhin verfügbar.

Punkt 1 habe ich verworfen, da das Einrichten des Firefox Account Servers unglaublich mühselig und nicht dokumentiert ist. Wer möchte kann auf github sich das mal anschauen… Es braucht aber auch noch den fxa-content-server und was mit dem browserid-verifier ist ist mir nicht ganz klar… Ich gebe zu, dass ich die oben verlinkten technischen Details nicht durchgelesen habe 🙁

Punkt 2 geht recht einfach:

  • auf einem beliebigen Server (habs auf nem raspberry-pi und dem vServer probiert) macht man einfach, was auf dieser Seite steht.

OK, ich schreibs hier kurz auf deutsch hin, was ich gemacht habe:

  1. sudo apt-get install python-dev git-core python-virtualenv
  2. In einem beliebigen privaten Ordner das git-repo herunterladen
  3. git clone https://github.com/mozilla-services/syncserver
  4. in diesen Ordner wechseln mit cd syncserver und dort
  5. make build eingeben
  6. nun gibt es darin den Ordner local/bin und dort die Datei pserve. Dies ist der Sync-Server 🙂
  7. im /syncserver-Ordner gibt es die syncserver.ini-Datei. Diese solle man sich genau anschauen und bearbeiten. Hierbei kommt es natürlich darauf an, wie man dies später einsetzen will.
  8. Als erstes sollte
    public_url = http://localhost:5000/ 
    
    angepasst werden
  9. außerdem werden die Daten bisher nur im RAM gespeichert. Um sie an geeigneter Stelle zu speichern, sollte eine sqlite reichen
    sqluri = sqlite:////path/to/database/file.db
    
    Hierbei kann jede beliebige Datenbank angesprochen werden, sie z.B. auch:
    
    sqluri = pymysql://username:password [at] db [dot] example [dot] com/sync
    
    Allerdings wird nicht beschrieben, wie diese Datenbank auszusehen hat :-( vermutlich wird sie selber initiiert)
  10. Der server wird im syncserver-Verzeichnis mit 
    $ local/bin/pserve syncserver.ini
    Starting server in PID 29951.
    serving on 0.0.0.0:5000 view at http://127.0.0.1:5000
    
    gestartet.
  11. in Firefox gibt man nun die Sync-Adresse (siehe public:url bei Punkt 8) unter about:config ein:
    services.sync.tokenServerURI: http://127.0.0.1:5000/token/1.0/sync/1.5
  12. hiermit soll der Sync über den eigenen Sync-Server laufen. einen Firefox Account benötigt man trotzdem noch. Auch ist mir nicht klar, wie ich verifizieren kann, dass die Daten auf meinem Server landen…

Nun zum interessanteren Punkt 3:

Der alte Syncaccout bleibt bei einem Update erhalten. Also z.B. mit Firefox 26 den Account anlegen und dann updaten: Account bleibt erhalten.

Es soll auch noch mehrere nicht getestete Möglichkeiten geben:

  1. in about:config den neuen Schlüssel (wenn es ihn nicht gibt!) services.sync.username mit irgendeinem Inhalt anlegen. Jetzt soll der alte Sync  Dialog wieder erscheinen.
  2. oder (auch in about:config services.sync.fxaccounts.enabled = false. Dies soll aber nur vor  Firefox 30 gehen.

Beide Versionen muss ich erst testen, bevor ich mehr sage.

Mein Firefox-Syncserver ist jetzt über nginx-proxy konfiguriert wie auf der Seite beschrieben:

in syncserver.ini:

[server:main]
use = egg:gunicorn
host = 127.0.0.1
port = 5000
workers = 2
timeout = 60

und für nginx:

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/;
                }

}

Soweit erst mal zu dem Thema. Updates folgen.