Firefox Sync Server
Firefox Sync is a protocol developed by Mozilla to synchronize a browser configuration and profile between different Firefox instances which could run on different platforms (e.g. mobile and desktop). In a default configuration, the user data is encrypted and stored on Mozilla servers.
This page details on how to setup an own Firefox Sync Server and how to configure the client software to use it.
Server setup
Installation
mozilla-firefox-sync-serverAUR is available in the AUR.
Configuration
One file is available to configure a firefox sync server: /etc/webapps/mozilla-firefox-sync-server/syncserver.ini
. Most options are explained clearly in the official documentation. You might want to change two variables, the accepted domain name (public_url
) and the database backend (sqluri
):
/etc/webapps/mozilla-firefox-sync-server/syncserver.ini
public_url = https://sync.example.com sqluri = sqlite:////var/lib/mozilla-firefox-sync-server/syncserver.db
Database
Other databases can be used as backend for the firefox sync server such as MySQL or PostgreSQL instead of SQLite. In order to achieve this it is necessary to add python packages via pip.
For MySQL
/usr/share/webapps/mozilla-firefox-sync-server/local/bin/pip install PyMySQL
For PostgreSQL
/usr/share/webapps/mozilla-firefox-sync-server/local/bin/pip install psycopg2
Then appropriate databases and users must be created in the database engine that will be used.
The syncserver.ini file should also be modified to reflect the change of database and it uses the SQLAlchemy syntax.
For MySQL
/etc/webapps/mozilla-firefox-sync-server/syncserver.ini
[syncserver] sqluri = pymysql://username:password@db.example.com/sync
For PostgreSQL
/etc/webapps/mozilla-firefox-sync-server/syncserver.ini
[syncserver] sqluri = postgresql://username:password@db.example.com/sync
Example nginx and uwsgi setup
It is recommended to serve the firefox sync server with uwsgi in a production environment. In this case you have to install uwsgi-plugin-python. Create following uwsgi config file:
/etc/uwsgi/mozilla-firefox-sync-server.ini
[uwsgi] socket = /run/uwsgi/%n.sock uid = ffsync gid = ffsync chdir = /usr/share/webapps/mozilla-firefox-sync-server master = true plugins = python2 file = syncserver.wsgi
Enable and start the uwsgi@mozilla\\x2dfirefox\\x2dsync\\x2dserver
service.
An example Nginx configuration looks something like this:
/etc/nginx/sites-enabled/sync.example.com
server { server_name sync.example.com; access_log /var/log/nginx/sync.example.com.access.log; error_log /var/log/nginx/sync.example.com.error.log info; server_tokens off; client_max_body_size 15M; location / { include uwsgi_params; uwsgi_pass unix:/run/uwsgi/mozilla-firefox-sync-server.sock; } }
Client configuration
To configure desktop Firefox to talk to your new Sync server, go to about:config
, search for identity.sync.tokenserver.uri
and change its value to the URL of your server with a path of token/1.0/sync/1.5
:
identity.sync.tokenserver.uri: http://example.com/token/1.0/sync/1.5
about:sync-log
in the Firefox URL bar to get a list of logs related to Firefox Sync.