Firefox Sync Server 1.5 - SynoCommunity/spksrc GitHub Wiki

Intro

You can use Firefox Sync Server to synchronize your bookmarks, passwords, settings, history, add-ons and tabs with Firefox on other computers. Firefox Sync Server 1.5 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/token/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

  1. 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/token/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.
  1. 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 changing services.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, server sync localhost:8132 check
  • Add a new frontend: name sync, default backend ffsync and copy the binds and options 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 the https frontend, which runs on port 5443 internally.)
  • Add a new association: frontend sync, backend ffsync, condition if { hdr_beg(HOST) -i sync. }.

Firefox Sync changes

  • Edit /usr/local/ffsync/var/ffsync.ini, and change public_url to public_url = https://sync.example.com:8133/
  • Set force_wsgi_environ = true instead of false.
  • 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/token/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/

Sources: