====== Ein umfangreich(er)es Tutorial zum Aufsetzen des "offiziellen" Python Firefox Sync Servers ======
Als Server verwendet der Autor ein Debian Squeeze.
Das Tutorial vervollständigt das offizielle Tutorial [[http://docs.services.mozilla.com/howtos/run-sync.html]], da einige Schritte übernommen wurden ist der Inhalt CC-SA 2.5 .
Getestet hat der Autor das MYSQL backend, dieser Weg der Konfiguration ist wahrscheinlich anspruchsvoller als der mit SQlite, letzteres Backend wird also (vorerst) nicht beschrieben, bis es jmd. hinzufügt. Der Autor hofft, dass euch nichts an dem Artikel fehlt und es euch deshalb nicht so geht wie bei dem offiziellen TuT, welches bei einer Datenbank in /tmp mit der Doku aufhört.
Wer sich PostgreSQL als Backend wünscht: [[http://blog.davekoelmeyer.co.nz/2011/12/11/set-up-firefox-sync-to-connect-to-a-postgresql-database/]]
**Update** Mozilla hat in der Woche nach dem erstellen dieses Tutorials ein bisschen Doku nachgetragen. Zwar ist sie immer noch nicht vollständig aber immerhin sind mal mögliche weitere parameter gelistet. Wer ein größeres Setup plant, sollte auf jeden Fall die offizielle mit beachten. Sie behandelt auch memcached sql backends und Ähnliches.
===== Laufzeitumgebung einrichten =====
* Dependencies installieren
sudo aptitude install python-dev mercurial sqlite3 python-virtualenv libmysqlclient-dev libapache2-mod-wsgi
* Serverumgebung einrichten (Mozilla richtet ein eigenes Py-Environment ein)
hg clone https://hg.mozilla.org/services/server-full
cd server-full
make build
bin/easy_install Mysql-Python
* useradd sync; groupadd sync; gpasswd -a sync sync
* MYSQL-User "weave" anlegen, Datenbank "weave" anlegen (gelingt schnell mit webfrontend (z.B. phpMA, adminer) oder wer es kann per Hand)
* Nutzer "weave" alle Rechte an DB "weave" geben, keiner anderen
* Apache2 mod_wsgi laden: a2enmod mod_wsgi
===== Konfiguration =====
* mv development.ini sync.ini
* in ''sync.ini'' muss debug auf //False// gesetzt werden
* Die Datei ''etc/sync.conf'' muss angepasst werden. Ein Beispiel:
[global]
clean_shutdown = false
[captcha]
use = true
public_key = RECAPTCHA_PUB_KEY
private_key = RECAPTCHA_PRIV_KEY
use_ssl = true
[storage]
backend = syncstorage.storage.sql.SQLStorage
sqluri = mysql://weave:PASSWORT@loccalhost/weave
standard_collections = false
use_quota = true
quota_size = 5120
pool_size = 100
pool_recycle = 3600
reset_on_return = true
display_config = true
create_tables = true
[auth]
backend = services.auth.sql.SQLAuth
sqluri = mysql://weave:PASSWORT@localhost/weave
#sqluri = sqlite:////tmp/test.db
pool_size = 100
pool_recycle = 3600
create_tables = true
fallback_node = http://127.0.0.1:5000/
[smtp]
host = localhost
port = 25
sender = weave@mozilla.com
[cef]
use = true
file = syslog
vendor = mozilla
version = 0
device_version = 1.3
product = weave
* Das Datenbank-Schema wird in der Standard-Konfiguration selbsttätig angelegt (''create_tables = true''), ungleich wie in einer älteren Version Anfang 2011
==== Permissions anpassen ====
Da wir in der folgenden virtualhost-conf den Nutzer, bzw die Gruppe des wsgi-scripts auf sync setzen und es unter diesen Berechtigungen ausführen lassen, können wir diesen Nutzer auch den gesamten Ordner "geben".
chown -R sync:sync $DOCROOT/ffsync
Danach entziehen wir //others// alle Berechtigungen, sollten noch welche existieren:
chmod -R u=rwX,g=rwX,o= $DOCROOT/ffsync/
==== Fallback Lokal Server starten ====
FFSync benötigt aus welchem Grund auch immer, sofern man einen public server betreibt, einen lokalen "Fallback Node", der mit der sync.ini Konfiguriert wird. (Ohne diesen bekommt man im schlimmsten Fall ohne irgendwelche Fehlermeldungen keinen Sync hin)
''$FFSYNC_DIR/bin/paster serve sync.ini''
Nun muss dieser Prozess allerdings für die gesamte Laufzeit des Apache am Laufen gehalten werden, eine Lösung mithilfe der daemontools und passendem Beispiel gibt's [[.:daemontools:start|hier]]
==== Apache-Vhost Konfiguration ====
Ein Beispiel für eine CFG mit SSL wäre folgende Konfiguration, **das Installationsverzeichnis ist $DOCROOT/ffsync**:
ServerAdmin webmaster@localhost
DocumentRoot /var/www
Options FollowSymLinks
AllowOverride None
WSGIProcessGroup sync
WSGIDaemonProcess sync user=sync group=sync processes=2 threads=25
WSGIPassAuthorization On
WSGIScriptAlias /ffsync /var/www/ffsync/sync.wsgi
Order allow,deny
Allow from all
AllowOverride None
AddHandler cgi-script .cgi
AddHandler wsgi-script .wsgi
Alias /user/1.0 /var/www/ffsync/1.0/index.php
Alias /user/1 /var/www/ffsync/1.0/index.php
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ff_sync.crt # CHANGE
SSLCertificateKeyFile /etc/ssl/private/ff_sync.key # CHANGE
SSLOptions +StdEnvVars
SSLOptions +StdEnvVars
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
Möglicherweise muss man zusätzlich zu dem Directory-Eintrag enthaltenen Extension-Registrierung für .wsgi im //ffsync//-Ordner auch noch einen solchen Eintrag in der ///etc/apache2/httpd.conf//
tätigen:
* AddHandler wsgi-script .wsgi
===== Client einrichten =====
* Einstellungen->Sync Neuen Account erstellen, ausfüllen
* Server URL: https://example.com/ffsync**/**
===== Links =====
* [[http://blog.davekoelmeyer.co.nz/2011/12/03/setting-up-a-local-firefox-sync-server/]]
* [[http://docs.services.mozilla.com/howtos/run-sync.html]]