Eigener Firefox Sync Server
Ihr nutzt auf mehreren Geräten wie PC, Handy und Tablet Mozilla Firefox? Mit dem Firefox Sync haltet ihr Lesezeichen, Chronik, Offene Tabs, Add-ons, Zugangsdaten und Einstellungen auf allen Geräten synchron.
Ich zeige euch wie ihr einen eigenen Firefox Sync Server unter Debian 9 mit Apache 2.4 aufsetzen könnt, ohne dabei eure persönlichen Daten bei Mozilla abzulegen.
Punkt 1: Debian 9 vorbereiten
Zuerst installieren wir die nötigen Pakete.
1 | apt-get install python-dev git-core python-virtualenv g++ apache2 libapache2-mod-wsgi make |
Punkt 2: Syncserver klonen und bauen
Wir wechseln nach /opt
, klonen das Github Repository und bauen den Sync Server.
1 2 3 4 | cd /opt git clone https://github.com/mozilla-services/syncserver cd syncserver make build |
Punkt 3: Sync Server Konfiguration
Wir erstellen uns ein Secret.
1 2 | localhost:/opt/syncserver# head -c 20 /dev/urandom | sha1sum 38ae4684a8eff0664a03806fb93073f0e2635a5c - |
Dieses Secret (in diesem Beispiel: 38ae4684a8eff0664a03806fb93073f0e2635a5c
) übernehmen wir in Zeile 32 unserer Konfiguration.
Die public_url
passt ihr bitte auf die spätere Ziel-Adresse an, die auch in der Apache2 Konfiguration hinterlegt wird (Zeile 14).
In Zeile 23, sqluri
, legen wir den Ort unserer SQLite Datenbank fest
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | [server:main] use = egg:gunicorn host = 0.0.0.0 port = 5000 workers = 1 timeout = 30 [app:main] use = egg:syncserver [syncserver] # This must be edited to point to the public URL of your server, # i.e. the URL as seen by Firefox. public_url = https://sync.adminforge.de/ # By default, syncserver will accept identity assertions issued by # any BrowserID issuer. The below restricts it to accept assertions # from just the production Firefox Account servers. If you are hosting # your own account server, put its public URL here instead. identity_provider = https://accounts.firefox.com/ # This defines the database in which to store all server data. sqluri = sqlite:////opt/syncserver/syncserver.db # This is a secret key used for signing authentication tokens. # It should be long and randomly-generated. # The following command will give a suitable value on *nix systems: # # head -c 20 /dev/urandom | sha1sum # # If not specified then the server will generate a temporary one at startup. secret = 38ae4684a8eff0664a03806fb93073f0e2635a5c # Set this to "false" to disable new-user signups on the server. # Only requests by existing accounts will be honoured. # allow_new_users = false # Set this to "true" to work around a mismatch between public_url and # the application URL as seen by python, which can happen in certain reverse- # proxy hosting setups. It will overwrite the WSGI environ dict with the # details from public_url. This could have security implications if e.g. # you tell the app that it's on HTTPS but it's really on HTTP, so it should # only be used as a last resort and after careful checking of server config. force_wsgi_environ = false |
Punkt 4: Apache 2.4 konfigurieren
Wir erstellen uns einen Firefox Sync Benutzer und setzten die Rechte.
1 2 | useradd -d /opt/syncserver/ -l -r -U ffsync chown -R ffsync:ffsync /opt/syncserver/ |
Bitte passt eure Domain im virtuellen Host entsprechend an.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <IfModule mod_ssl.c> <VirtualHost *:443> ServerName sync.adminforge.de DocumentRoot /opt/syncserver SSLEngine on SSLCertificateFile /etc/ssl/private/sync.adminforge.de_ecc/fullchain.cer SSLCertificateKeyFile /etc/ssl/private/sync.adminforge.de_ecc/sync.adminforge.de.key SSLCertificateChainFile /etc/ssl/private/sync.adminforge.de_ecc/ca.cer WSGIProcessGroup ffsync WSGIDaemonProcess ffsync user=ffsync group=users processes=2 threads=25 python-path=/opt/syncserver/local/lib/python2.7/site-packages/ WSGIPassAuthorization On WSGIScriptAlias / /opt/syncserver/syncserver.wsgi CustomLog /var/log/apache2/access_sync.adminforge.de.log combined ErrorLog /var/log/apache2/error_sync.adminforge.de.log LogLevel warn <Directory /opt/syncserver> Require all granted Options -Indexes </Directory> </VirtualHost> </IfModule> |
WICHTIG: Nutzt unbedingt SSL! Ich erkläre in diesem Artikel wie ihr einfach an ein Let’s Encrypt Zertifikat kommt: Let’s Encrypt via acme.sh für Apache und Nginx
Punkt 5: vHost aktivieren und Apache neu starten
1 2 | a2ensite sync.adminforge.de.conf systemctl restart apache2.service |
Punkt 6: Firefox einrichten
- Öffnet Firefox und gebt in der Adressleiste
about:config
ein, bestätigt den Warnhinweis. - Sucht nach
identity.sync.tokenserver.uri
. Es sollte ein Eintrag erscheinen. - Ändert mit Doppelklick den Wert auf eure Sync Server-Adresse:
https://sync.adminforge.de/token/1.0/sync/1.5
- Startet Firefox neu.
Nun könnt ihr im Menü rechts oben auf „Bei Sync anmelden“ klicken, dort dann auf „Anmelden“ und auf „Konto erstellen“ gehen.
Punkt 7: Neue Benutzer verbieten
Nachdem ihr euren Benutzer auf den Firefox Sync Server losgelassen habt, sperren wir weitere Benutzer.
Dazu einfach allow_new_users
in der Konfiguration einkommentieren (auf false setzen).
1 | allow_new_users = false |
Punkt 8: Updates
Updates führen wir wie folgt durch. Sollte es ein Update gegeben haben muss der Webserver neu gestartet werden.
1 2 3 4 5 | cd /opt/syncserver git stash # to save any local changes to the config file git pull # to fetch latest updates from github git stash pop # to re-apply any local changes to the config file make build # to pull in any updated dependencies |
PS: Das Konto selbst liegt auf den Mozilla Servern, die Daten auf eurem eigenen! Ich finde das ist der relevante Part.
Viel Spaß beim Syncen!
Das Betreiben der Dienste, Webseite und Server machen wir gerne, kostet aber leider auch Geld. Unterstütze unsere Arbeit mit einer Spende. |
Super Anleitung, vielen Dank!
Kann man denn auch die Daten aus seinem Firefox-Account löschen ohne den Account selbst zu löschen?
Du meinst die Daten die nun bereits bei Mozilla liegen? Ja das geht dazu gibt es ein Script. Ganz unten wird das beschrieben https://github.com/mozilla-services/syncserver/
$ pip install PyFxA
$ python ./bin/delete_user_data.py user@example.com
Bei „Punkt 1: Debian 9 vorbereiten“ fehlt
make
noch.Danke, habe ich hinzugefügt
Für alle die das ganze auf nem Plesk System nachbauen. Der Anleitung kann man soweit folgen, natürlich sollte man die Pfade anpassen. Allerdings der vHost (Punkt 4) etwas ab:
–>
< IfModule wsgi_module >
WSGIProcessGroup psaserv
WSGIDaemonProcess psaserv user=domainuser group=psaserv processes=2 threads=25 python-path=/var/www/vhosts/domain.de/sync.domain.de/local/lib/python2.7/site-packages/
WSGIPassAuthorization On
WSGIScriptAlias / /var/www/vhosts/domain.de/sync.domain.de/syncserver.wsgi
< /IfModule >
<–
Das ifModule scheint hier notwendig zu sein. Ohne ging es bei mir nicht.
hier brauchte es noch $ sudo chown ffsync:www-data syncserver.db
Ubuntu 16.04.4 LTS
Simply wonderful
Danke für super Anleitung! Ist es möglich, dass denselben Server mehrere Personen nutzen? Und so das alle separat laufen?
Ja klar, jeder Firefox User hat ein Konto welches auf dem Sync Server auch getrennt ist.
Vielen Dank, das könnte was werden. Heute Abend bastel ich mir das nicht mehr aber:
„PS: Das Konto selbst liegt auf den Mozilla Servern, die Daten auf eurem eigenen! Ich finde das ist der relevante Part.“
Das ist zwar einerseits richtig, aber andererseits: Das Konto mit Vollzugriff liegt weiterhin bei Mozilla, mithin bei Schnorcheldiensten. Eine zusätzliche Absicherung ist mithin vonnöten. Grübel. Idee1 aus der Hüfte: nginx davor als reverseproxy mit eigener Auth z.B.?
Ich antworte mir selber 🙂
https://developer.okta.com/blog/2018/08/28/nginx-auth-request
Hat alles bestens funktioniert, nur hat Mozilla mit v79 zumindest unter Android about:config abgeschaltet und damit auch die Möglichkeit, einen eigenen Syncserver einzutragen. Einen PC habe ich erst in drei Wochen im Zugriff, da könnte man ggf. was mit der prefs.js machen.
Ich sehe z.Z. nur die Möglichkeit, bei der funktionierenden v68 zu bleiben und Auto-Updates so gut es geht zu verhindern:
https://www.technipages.com/enable-disable-automatic-updates-in-firefox
Still Using Firefox.