/docker-firefox-syncserver

Firefox Sync Server Docker image

Primary LanguageDockerfileMIT LicenseMIT

Latest Version Build Status Docker Stars Docker Pulls
Become a sponsor Donate Paypal

⚠️ Abandoned project

This project is not maintained anymore and is abandoned. Feel free to fork and make your own changes if needed.

About

Firefox Sync Server Docker image.

Note

Want to be notified of new releases? Check out 🔔 Diun (Docker Image Update Notifier) project!


Features

  • Run as non-root user
  • Multi-platform image
  • Traefik as reverse proxy and creation/renewal of Let's Encrypt certificates (see this template)

Build locally

git clone https://github.com/crazy-max/docker-firefox-syncserver.git
cd docker-firefox-syncserver

# Build image and output to docker (default)
docker buildx bake

# Build multi-platform image
docker buildx bake image-all

Image

Registry Image
Docker Hub crazymax/firefox-syncserver
GitHub Container Registry ghcr.io/crazy-max/firefox-syncserver

Following platforms for this image are available:

$ docker run --rm mplatform/mquery crazymax/firefox-syncserver:latest
Image: crazymax/firefox-syncserver:latest
 * Manifest List: Yes
 * Supported platforms:
   - linux/amd64
   - linux/arm/v6
   - linux/arm/v7
   - linux/arm64
   - linux/386
   - linux/ppc64le
   - linux/s390x

Environment variables

  • TZ: The timezone assigned to the container (default UTC)
  • PUID: Process UID (default 1000)
  • PGID: Process GID (default 1000)
  • FF_SYNCSERVER_ACCESSLOG: Display access log (default false)
  • FF_SYNCSERVER_LOGLEVEL: Log level output (default info)
  • FF_SYNCSERVER_PUBLIC_URL: Must be edited to point to the public URL of your server (default http://localhost:5000).
  • FF_SYNCSERVER_SECRET: This is a secret key used for signing authentication tokens. It should be long and randomly-generated.
  • FF_SYNCSERVER_ALLOW_NEW_USERS: Set this to false to disable new-user signups on the server. Only request by existing accounts will be honoured (default true).
  • FF_SYNCSERVER_FORCE_WSGI_ENVIRON: Set this to true to work around a mismatch between public_url and the application URL as seen by python, which can happen in certain reverse-proxy hosting setups (default false).
  • FF_SYNCSERVER_SQLURI: Defines the database in which to store all server data (default sqlite:///data/syncserver.db).
  • FF_SYNCSERVER_FORWARDED_ALLOW_IPS: Set this to * or an IP range if you use an Nginx reverse proxy (optional).

💡 FF_SYNCSERVER_SECRET_FILE can be used to fill in the value from a file, especially for Docker's secrets feature.

Volumes

  • /data: Contains SQLite database if FF_SYNCSERVER_SQLURI is untouched

⚠️ Note that the volumes should be owned by the user/group with the specified PUID and PGID. If you don't give the volume correct permissions, the container may not start.

Ports

  • 5000: Gunicorn port

Usage

Docker Compose

Docker compose is the recommended way to run this image. You can use the following docker compose template, then run the container:

docker-compose up -d
docker-compose logs -f

Command line

You can also use the following minimal command:

$ docker run -d -p 5000:5000 --name firefox_syncserver \
  -e TZ="Europe/Paris" \
  -e FF_SYNCSERVER_SECRET="5up3rS3kr1t" \
  -v $(pwd)/data:/data \
  crazymax/firefox-syncserver:latest

Notes

Use with MySQL database

Set FF_SYNCSERVER_SQLURI=pymysql://user:password@mysql_server_ip/db_name

Use with PostgreSQL database

Set FF_SYNCSERVER_SQLURI=postgresql://user:password@postgresql_server_ip/db_name

Upgrade

Recreate the container whenever I push an update:

docker-compose pull
docker-compose up -d

Contributing

Want to contribute? Awesome! The most basic way to show your support is to star the project, or to raise issues. You can also support this project by becoming a sponsor on GitHub or by making a Paypal donation to ensure this journey continues indefinitely!

Thanks again for your support, it is much appreciated! 🙏

License

MIT. See LICENSE for more details.