Particle Hunter

Self-hosted firefox sync server

Firefox Sync is a powerful feature that allows you to keep your bookmarks, history, and other data in sync across all of your devices. It’s a great way to ensure that your favorite websites and browsing habits are always with you, no matter where you are.

If you’re a privacy-conscious user like me, you may be hesitant to rely on Mozilla’s servers to store your data. Fortunately, it’s possible to run your own Firefox Sync server, giving you complete control over where your data is stored and how it is accessed.

In this blog post, I will walk you through the steps for setting up your own Firefox Sync server. This installation method is going to be docker based, so you will need to have docker installed on your server. If you don’t have docker installed, you can follow the instructions here to install it. You can find instructions for doing this on the Install Docker-Engine. Also you will need to install docker-compose, this is also available on the Install docker-compose.

Alternatively, you can use the following shell script to install docker and docker-compose on your server:


apt-get update -y
apt-get install -y apt-transport-https ca-certificates curl software-properties-common

sudo mkdir -p /etc/apt/keyrings

curl -fsSL | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

apt-get update -y

apt-get install docker-ce docker-ce-cli docker-compose-plugin -y

Next, create a file called docker-compose.yml in a new directory on your server. This file will contain the configuration for your Firefox Sync server. In this file you will need to add the following configuration:

version: "3.2"

    image: crazymax/firefox-syncserver:latest
    container_name: firefox
      - target: 5000
        published: 5000
        protocol: tcp
      - "/home/<user>/firefox-sync/data:/data"
      - "/home/<user>/firefox-sync/firefox.env"
    restart: always


This configuration will create a docker container that will run the Firefox Sync server. It will also create a volume that will store the data for the server. You will need to replace the with your username on the server. You can also change the port that the server is running on, if you want to. One important thing is that you will need to pass a .env file to the container. This file will contain the configuration for the server. You can find an example of this file in the following code



The explnation for each of these variables is as follows:

Once you’ve created your docker-compose.yml file and added your firefox.env file, you can start your Firefox Sync container by running the following command:

docker-compose up -d

This will pull the crazymax/firefox-syncserver image from the Docker Hub, create a new container using the configuration in your docker-compose.yml file, and start the container in the background. After your container is up and running, you can configure your Firefox browser to use your new Sync server. This can be done by going to the Sync settings in Firefox and entering the URL for your server. To do this you will need to modify identity.sync.tokenserver.uri in about:config . First you will need to go to about:config and then search for identity.sync.tokenserver.uri and change the value to the URL of your server. You can find the default value for this variable to be:

You will need to change this value to the URL of your server. Adjust the URL to match the domain name of your server. For example, if your server is running at https://<server>.<domain>, you will need to change the value to:


Once you’ve done that, you’ll be able to start syncing your data to your own server. You can then use the same account on all of your other devices to keep your data in sync across all of them.

#firefox #Servers #self-hosted #firefox sync server