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:
#!/bin/bash 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 https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(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 containerd.io 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" services: firefox-syncserver: image: crazymax/firefox-syncserver:latest container_name: firefox ports: - target: 5000 published: 5000 protocol: tcp volumes: - "/home/<user>/firefox-sync/data:/data" env_file: - "/home/<user>/firefox-sync/firefox.env" restart: always volumes: firefox-syncserver:
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
TZ=America/NewYork PUID=1000 PGID=1000 FF_SYNCSERVER_PUBLIC_URL=http://<server>.<domain> FF_SYNCSERVER_SECRET=736hdojh929jdmo FF_SYNCSERVER_ALLOW_NEW_USERS=true FF_SYNCSERVER_FORCE_WSGI_ENVIRON=false
The explnation for each of these variables is as follows:
TZ: This variable specifies the time zone for the application or service. In this case, the value is set to America/NewYork, indicating that the time zone is Eastern Standard Time.
PGID: These variables specify the user and group IDs for the application or service. In this case, the values are set to 1000, indicating that the application or service will run as the user and group with IDs 1000.
FF_SYNCSERVER_PUBLIC_URL: This variable specifies the public URL for the Firefox Sync server. In this case, the value is set to http://
. , indicating that the server is accessible at the specified domain name.
FF_SYNCSERVER_SECRET: This variable specifies a secret value that is used to authenticate requests to the Firefox Sync server. In this case, the value is a long, random string of characters.
FF_SYNCSERVER_ALLOW_NEW_USERS: This variable specifies whether new users are allowed to register for the Firefox Sync server. In this case, the value is set to true, indicating that new users are allowed to register.
FF_SYNCSERVER_FORCE_WSGI_ENVIRON: This variable specifies whether the WSGI environment should be forced when running the Firefox Sync server. In this case, the value is set to false, indicating that the WSGI environment will not be forced.
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
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