HowTo: Firefox Sync Server from Mozilla self hosted

Ich habe nun schon so einiges ueber einen selbstgehosteten Sync-Service fuer Firefox geschrieben:

  1. Firefox Lesezeichen ueberall – Selfmade!
  2. Howto: Der eigene Weave Minimal Server / Firefox Sync
  3. Update des eigenen Firefox Sync Servers

Nachdem ich seit neustem Besitzer eines Google Nexus 4 bin und gerne Firefox Sync auch unter Android benutzen moechte, war ich gezwungen mein aktuelles Setup zu aktualisieren auf die Originalimplementierung von Mozilla. Vorher wurde mir auf meinem Handy immer von Firefox gesagt, dass diese Version von Sync nicht mehrere Geraete unterstuetzt.

Ich bin auf diese Anleitung gestossen und unter Debian sieht das ganze wie folgt aus:

Installation

Installation von Paketen:

$ aptitude install python-virtualenv sqlite3 mercurial

Einrichten eines Benutzeraccounts:

$ adduser --system --home /opt/ffsync --shell /bin/false --group ffsync

Erstellen der benoetigten Verzeichnisse:

$ su ffsync
$ cd /opt/ffsync
$ mkdir {data,tmp}
$ chmod 775 tmp
$ hg clone https://hg.mozilla.org/services/server-full
$ cd server-full
$ make build

Konfiguration

Editieren und Anpassen der folgenden Konfigurationsdateien:

sync.wsgi

os.environ['PYTHON_EGG_CACHE'] = '/opt/ffsync/tmp/python-eggs'

developement.ini

[handler_syncserver_errors]
args = (‘/opt/ffsync/tmp/sync-error.log’,)

etc/sync.conf

[storage]
sqluri = sqlite:////opt/ffsync/data/sync.db
 
[auth]
sqluri = sqlite:////opt/ffsync/data/sync.db
 
[nodes]
fallback_node = http://sync.example.net/

Ich habe hier nun noch die Rechte fuer den Ordner gesetzt:

$ chown -R ffsync.www-data /opt/ffsync

Apache

Zum Schluss noch Apache einrichten um darueber alles laufen zu lassen. Dafuer:

$ aptitude install libapache2-mod-wsgi

Und einen entsprechenden vhost erstellen:

<VirtualHost *:80>
    ServerName sync.example.net
    ServerAdmin webmaster@example.net
    DocumentRoot /opt/ffsync/server-full
 
    CustomLog /var/log/apache2/ffsync_access.log combined
    ErrorLog /var/log/apache2/ffsync_error.log
 
        Order deny,allow
        Allow from all
 
    WSGIProcessGroup ffsync
    WSGIDaemonProcess ffsync user=ffsync group=ffsync processes=2 threads=25
    WSGIPassAuthorization On
    WSGIScriptAlias / /opt/ffsync/server-full/sync.wsgi
</VirtualHost>

Nach einem Neustart von Apache konnte ich dann das Geraet trennen und anschliessend mich neu mit dem Server verbinden. Achtet auf den Slash am Ende der URL. Es wurde alles automatisch synchronisiert. Auch die Synchronisation mit Firefox auf meinem Android Handy klappte problemlos.

Zum Schluss habe ich noch die Funktion deaktiviert, mit der sich neue Benutzer selbststaendig anmelden koennen. Dafuer in der /opt/ffsync/server-full/etc/sync.conf noch in der auth Sektion die entsprechende Option einkomentieren

[auth]
allow_new_users = false

Danke nochmal an OpenShots an dieser Stelle fuer die Anleitung :-)

Update des eigenen Firefox Sync Servers

Nach einem Update von meinem Firefox auf die Version 5 konnte ich mich nicht mehr mit meinem eigenen Firefox Sync Server verbinden – wie ich die Einrichtung in diesem Blogpost damals beschrieben hatte. Abhilfe schaffte ein Update, und das ging:

tar -czf 2011-07-06-weave.tar.gz weave/
wget http://people.mozilla.com/%7Etelliott/weave_minimal.tgz
tar -xvf weave_minimal.tgz
mv weave_minimal/* weave/
chown -R www-data.www-data weave
rm weave_minimal.tgz
rmdir weave_minimal

Also nur die vorhandenen Dateien gegen die neuen austauschen und Rechte anpassen. Danach ging alles wieder problemfrei :-)

Howto: Der eigene Weave Minimal Server / Firefox Sync

Vor 1 1/2 Jahren habe ich den Artikel „Firefox Lesezeichen ueberall – Selfmade!“ geschrieben, wo ich beschrieben habe, wie man mit dem Firefoxplugin Foxmarks bzw. spaeter Xmarks und einem Apache Webserver mit mod_dav enabled seine Lesezeichen auf den eigenen Server synct und so die Kontrolle ueber die Daten behaelt.

Mozilla hat vor einiger Zeit das Weave Projekt gegruendet, dass es spaeter in Sync umbenannt hat. Fuer Firefox 3.5 aufwaerts gibts ein Firefoxplugin, ab der Version 4.0 wird die Funktionalitaet direkt in Firefox enthalten sein. Das Plugin kann Lesezeichen, Passwoerter, Einstellungen, Chronik und offene Tabs an einen Server syncen und so an verschiedenen Standorten verfuegbar machen. Grund genug sich das anzugucken und grund  fuer mich, mich von Xmarks zu verabschieden.

Voraussetzung fuer eine Installation ist, dass man einen eigenen Apacheserver irgendwo laufen hat. Wenn ich das richtig ueberblicke benoetigt man die Module

aptitude install libapache2-mod-php5 php5-sqlite

Anschliessend das weave_minimal.tgz aus diesem Blogeintrag vorletzter Absatz (Mirror) herunterladen und in ein Verzeichnis im DocumentRoot entpacken. Ich persoenlich habe mir eine eigene Subdomain gemacht und in Apache einfach fix einen neuen vhost eingerichtet. Wichtig ist nur, dass man anschliessend in der Apacheconfig einen Alias setzt:

Alias /weave /PATH/TO/DOCUMENTROOT//weave/index.php

Wobei der Pfad entsprechend der lokalen gegebenheiten anzupassen ist. Nun einmal den Apache neustarten damit die Aenderungen uebernommen werden. Als naechstes geht man mit seinem Webbrowser auf die URL: http://MYDOMAIN.TLD/weave/1.0/MYUSERNAME/info/collection wobei MYDOMAIN.TLD natuerlich mit dem eigenen Domainnamen und MYUSERNAME ein Benutzername ist. Bei der Aufforderung sich einzuloggen gibt man einfach eirgendwas ein. Die Authentifizierung schlaegt fehl aber die Datenbank wird erzeugt. Danach geht man auf den Server in das Verzeichnis in dem der entpackte Tarball liegt und legt einen Benutzer an mit dem Befehl:

php5 create_user MYUSERNAME

wobei MYUSERNAME wieder durch den gewuenschten Benutzernamen zu ersetzen ist. Weiter waehlt man sein Passwort und bestaetigt dieses. Nun ist man schon fast am Ziel. Falls noch nicht geschehen das Firefox Sync Plugin installieren und den Browser neustarten.

Wenn man nun Firefox Sync ueber den Assistenten einrichtet waehlt man als erstes aus „I Have a Firefox-Sync Account“. In dem zweiten Fenster sagt man „Eigenen Server verwenden“ und gibt die Server URL mit dem anschliessenden /weave/ ein, z.B. http://MYDOMAIN.TLD/weave/ . Der Benutzername und das Passwort sind die, die man bei dem create_user angelegt hat. Nachdem man diesen Punkt mit „Weiter“ bestaetigt hat, wird man aufgefordert seinen Sync Key einzugeben. Zuerst war ich etwas irritiert, aber es ist _nicht_ das Passwort sondern eine random Zeichenkette die die eigenen Daten auf dem Server dann verschluesselt. Ich habe hier einfach ein alternatives Passwort genommen. Mit „Weiter“ und „Fertigstellen“ Bestaetigen und voila…