Firefox Sync Server
This page is about special operations required in order to install Mozilla Sync Server.
Newer versions of Mozilla Firefox feature bookmarks, passwords and browsing history synchronization between all your computers and devices. Mozilla Foundation provides a public Sync server, but you can host your own one if you want.
If you intend to use your server with itinerant clients, you should install it on an Internet reachable computer.
All installation instructions are commands relying on the superuser privileges, so open a terminal and type:
$ su - Password: #
Mozilla Sync Server depends on Python 2 during installation. Arch Linux provides Python 3 as default Python version so there are special tweaks needed before running Mozilla Sync Server setup. Setup process creates an isolated Python environment in which all necessary dependencies are downloaded and installed. Afterwards, running the server only relies on the isolated Python environment, independently of the system-wide Python.
Mozilla Sync Server setup needs Python 2.6 or newer. In default configuration,
/usr/bin/python is a symbolic link to
/usr/bin/python3 whereas Python 2 is
Before running setup, we must check the link and change it if necessary:
# cd /usr/bin # ls -l python lrwxrwxrwx 1 root root 7 5 sept. 07:04 python -> python3 # ln -sf python2 python
Installation instructions (adapted from Mozilla Howto, Copyright 2010 Mozilla Foundation, CC BY-SA 2.5):
# mkdir -p /opt/weave # cd /opt/weave # hg clone https://hg.mozilla.org/services/server-full ... source repository cloning messages ... # cd server-full # make build ... many build messages, including harmless warnings ... ... end of the successful build messages: Building the app Checking the environ [ok] Updating the repo [ok] Building Services dependencies Getting server-core [ok] Getting server-reg [ok] Getting server-storage [ok] [ok] Building External dependencies [ok] Now building the app itself [ok] [done]
Check the end of the build messages, they should state "[done]". Otherwise, look at the first error messages, they give you hints on the problem and how to solve it.
Python initial state restoration
# cd /usr/bin # ln -sf python3 python
Configuration files are used to define where databases and logs will be created.
We will place databases in
/opt/weave/data and log files in
/var/log/weave, so we must create the directories.
# mkdir /opt/weave/data /var/log/weave
At least two configuration files must be changed in
/opt/weave/server-full in order to reflect these choices:
development.ini, locate the line:
args = ('/tmp/sync-error.log',)
and change it to:
args = ('/var/log/weav/sync-error.log',)
etc/sync.conf, locate the line:
sqluri = sqlite:////tmp/test.db
and change it to:
sqluri = sqlite:////opt/weave/data/sync.db
This statement appears twice in the file, around line 12 and around line 24. Both should be modified.
Near line 15, we bump the disk quota from 5 to 25 MB:
quota_size = 25600
Near line 28, the fallback node URL must reflect our server's name (here
fallback_node = http://localhost:5000/
fallback_node = http://server-name.domain-name:5000/
It is a good practice to run daemons as an unprivileged user. We will create the group
weave and the user
sync for that purpose.
# groupadd weave # useradd -d /opt/weave -g weave -r -s /bin/bash sync
This new user must have read and write access on every file in
# chown -R sync:weave /opt/weave/* # chown -R sync:weave /var/log/weave