Mozilla Sync Server - SynoCommunity/spksrc GitHub Wiki
Intro
You can use Mozilla Sync Server to synchronize your bookmarks, passwords, settings, history, add-ons and tabs with Firefox on other computers. Mozilla Sync Server is compatible with Firefox 29 and later, and can also be used on mobile clients (Firefox 33 and up for Android) and forks (e.g. Iceweasel).
Synology package installation
During installation, the wizard will ask you to enter the MySQL root password and a user password. These will be used to create a MySQL database on your Synology, which will store the synced data.
In the next step, a public URL will be asked. This will usually take the form of a domain name, e.g sync.example.com
.
A DNS record should exist to resolve the provided name to the IP of your Synology.
After installation, the service will be available as: * http://sync.example.com:8132/1.0/sync/1.5
.
For testing purposes, entering that URL in a browser should show the following text:
{"status": "error", "errors": [{"location": "body", "name": "", "description": "Unauthorized"}]}
Configuring your Firefox Browser
Desktop clients
- To configure Firefox to talk to your new Sync server, go to “about:config”. Search for “services.sync.tokenServerURI” and change its value to the URL mentioned above:
services.sync.tokenServerURI: http://sync.example.com:8132/1.0/sync/1.5
- For Firefox 42 and later the preference is called
identity.sync.tokenserver.uri
. The old preference name is still supported but will be reset when the user signs out from Sync.
- Open the menu in Firefox, and click
Sign in to Sync
. Follow the instructions to create a Firefox account, and select which items you want to sync. Additional clients can be configured by first changingservices.sync.tokenServerURI
to the same value, and signing in with the credentials of the existing account.
Android clients
The following explains how to configure Firefox for Android How to connect Firefox for Android to self-hosted Firefox Account and Firefox Sync servers.
SSL
SSL is currently not directly supported by the package due to technical limitations. A reverse proxy, such as HAProxy (available as a package from SynoCommunity) can be used to secure data transfer.
SSL configuration with HAProxy
Note: for DSM 6.x you don't need haproxy, do: Control Panel / Application Portal / Reverse Proxy - it can handle a lot of stuff that haproxy would do - by configuring it similar to below config.
We start with the following assumptions:
- The Sync service is run on port 8132, as default.
- You want the service to be available internally and externally via the domain name
sync.example.com
. - You want the service to be available internally and externally over the same port. Because 443 is not available, in this example, port 8133 will be used.
HAProxy changes
- Add a new backend: name
ffsync
, serversync localhost:8132 check
- Add a new frontend: name
sync
, default backendffsync
and copy thebinds
andoptions
content from the https frontend. Change the port to:8133
. (Note that this step is needed if you want to be able to access the sync service on the same port internally and externally with an otherwise default setup of HAProxy. Otherwise, you may use thehttps
frontend, which runs on port 5443 internally.) - Add a new association: frontend
sync
, backendffsync
, conditionif { hdr_beg(HOST) -i sync. }
.
Firefox Sync changes
- Edit
/usr/local/ffsync/var/ffsync.ini
, and changepublic_url
topublic_url = https://sync.example.com:8133/
- Set
force_wsgi_environ = true
instead offalse
. - Restart the Firefox Sync package. The service should now be available internally.
Firefox Browser changes
Change services.sync.tokenServerURI
to https://sync.example.com:8133/1.0/sync/1.5
Router/Firewall changes
If you have the internal firewall of your Synology enabled, allow port 8133. You should also allow port 8133 on your router/firewall setup to provide access externally.
Manual configuration and troubleshooting
The configuration file can be found at /usr/local/ffsync/var/ffsync.ini
. In the same location, a log file is stored, providing minimal logging (starting/stopping the package and errors).
Your browser will store error logs. These are accessible via about:sync-log
.
To enable success logs, go to “about:config” and set the following preference to true:
- services.sync.log.appender.file.logOnSuccess
(Common) errors
When the server log shows the following error The public_url setting doesn't match the application url.
, this is usually caused when the value for tokenServerURI
on the client does not match the value for public_url
in the configuration file. You might need to restart your client after changing the configured values.
If about:sync-log error logs show:
Failed to fetch the cluster URL: ({details:(new TokenServerClientServerError("Authentication failed."[..])
check that services.sync.clusterURL
is set to http://sync.example.com:8132/storage/1.5/1/