Update: Diese Anleitung bezieht sich auf den „alten“ Sync-Server (v1.1). D.h. jenen welcher schon seit Jahren benutzt werden kann und in neuen Firefox-Versionen (seit 29?) als „alt“ markiert ist. Eine Anleitung zum neuen Sync-Server (v1.5) folgt hoffentlich bald.
Diese Anleitung folgt im Prinzip Schritt für Schritt der Anleitung von Mozilla selbst (Quelle: http://docs.services.mozilla.com/howtos/run-sync.html). Der Inhalt ist jedoch auf das für meine Installation wesentliche reduziert.
Installation
Zuerst stellen wir sicher, dass die notwendigen Pakete installiert sind bzw. installieren diese:
sudo aptitude install python-dev mercurial sqlite3 python-virtualenv libapache2-mod-wsgi
Anschließend legen wir einen neuen User an, unter welchem der Sync-Service laufen darf.
Danach erstellen wir Verzeichnisse für die SQLite-Datenbank welche wir benutzen möchten (in /var) sowie ein Installationsverzeichnis für den Sync-Service (in /opt),
sudo mkdir /var/ffsync
sudo mkdir /opt/ffsync
In /opt können wir nun den Service installieren. D.h. zuerst Klonen des Quellcodes mittels Mercurial und anschließend kompilieren des selben.
cd /opt/ffsync
sudo hg clone https://hg.mozilla.org/services/server-full
cd server-full
sudo make build
Danach stellen wir noch sicher, dass die angelegten Verzeichnisse dem Sync-User gehören.
sudo chown ffsync:www-data -R /var/ffsync /opt/ffsync
Konfiguration
Nun können wir den Sync-Service konfigurieren. Dazu editieren wir die Datei /opt/ffsync/server-full/etc/sync.conf und stellen dort folgende Konfigurationen sicher:
[storage]
sqluri = sqlite:////var/ffsync/sync.db
[auth]
sqluri = sqlite:////var/ffsync/sync.db
[nodes]
fallback_node = https://sync.domain.tld/
Betrieb über Apache-Webserver
Der Service kann selbständig betrieben werden. Da ich aber bereits über einen Apache-Webserver verfüge, soll das Service über den Apache geroutet werden.
Dazu erstellen wir einen neuen Virtuellen Host in Apache:
cd /etc/apache2/sites-available
sudo vim ffsync-ssl
mit folgendem Inhalt:
<VirtualHost *:443>
ServerName sync.domain.tld
ServerAdmin webmaster@example.net
DocumentRoot /opt/ffsync/server-full
CustomLog {%APACHE}/ffsync_access.log combined
ErrorLog {%APACHE}/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
… SSL-Teile wie in anderen VHosts
</VirtualHost>
Anschließend starten wir noch den Apache neu und Firefox kann synchronisieren.
sudo service apache2 reload
Erweiterte Konfiguration und Sicherheit
Der Service steht in dieser Konfiguration für Neuregistrierungen offen. Zu Beginn ist das ja gewünscht damit wir unsere User anlegen können. Nach der Anlage meiner privaten User jedoch, sollte eine weitere Registrierung unterbunden werden.
Dazu editieren wir erneut die Datei /opt/ffsync/server-full/etc/sync.conf und fügen folgenden Abschnitt hinzu:
[auth]
allow_new_users = false
Danach ist der Service für Fremde geschlossen.