{"id":13441497,"url":"https://github.com/mozilla-services/syncserver","last_synced_at":"2025-05-15T11:05:18.374Z","repository":{"id":14016505,"uuid":"16718250","full_name":"mozilla-services/syncserver","owner":"mozilla-services","description":"Run-Your-Own Firefox Sync Server","archived":false,"fork":false,"pushed_at":"2023-08-30T22:23:58.000Z","size":204,"stargazers_count":1932,"open_issues_count":68,"forks_count":149,"subscribers_count":69,"default_branch":"master","last_synced_at":"2025-04-14T17:00:00.043Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"vaklinov/zcash-swing-wallet-ui","license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mozilla-services.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2014-02-11T03:32:53.000Z","updated_at":"2025-04-13T12:59:11.000Z","dependencies_parsed_at":"2024-01-07T00:08:40.093Z","dependency_job_id":"75f2fa62-ded7-4e10-b09d-3b444b91b619","html_url":"https://github.com/mozilla-services/syncserver","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mozilla-services%2Fsyncserver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mozilla-services%2Fsyncserver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mozilla-services%2Fsyncserver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mozilla-services%2Fsyncserver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mozilla-services","download_url":"https://codeload.github.com/mozilla-services/syncserver/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248923721,"owners_count":21183951,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T03:01:34.732Z","updated_at":"2025-04-14T17:00:15.893Z","avatar_url":"https://github.com/mozilla-services.png","language":"Python","readme":"Run-Your-Own Firefox Sync Server\n================================\n\n.. image:: https://circleci.com/gh/mozilla-services/syncserver/tree/master.svg?style=svg\n   :target: https://circleci.com/gh/mozilla-services/syncserver/tree/master\n\n.. image:: https://img.shields.io/docker/automated/mozilla-services/syncserver.svg?style=flat-square\n   :target: https://hub.docker.com/r/mozilla/syncserver/\n\n**Note that this repository is no longer being maintained**.\n\nThe Firefox Sync Server has been rewritten in Rust, and the new project can be found here:\n   https://github.com/mozilla-services/syncstorage-rs\nUse this at your own risk, and\nwith the understanding that it is not being maintained, work is being done on its replacement,\nand that no support or assistance will be offered.\n\nThis is an all-in-one package for running a self-hosted Firefox Sync server.\nIt bundles the \"tokenserver\" project for authentication and the \"syncstorage\"\nproject for storage, to produce a single stand-alone webapp.\n\nComplete installation instructions are available at:\n\n   https://mozilla-services.readthedocs.io/en/latest/howtos/run-sync-1.5.html\n\n\nQuickstart\n----------\n\nThe Sync Server software runs using **python 2.7**, and the build\nprocess requires **make** and **virtualenv**.  You will need to have the\nfollowing packages (or similar, depending on your operating system) installed:\n\n- python2.7\n- python2.7-dev\n- python-virtualenv\n- gcc and g++\n- make\n- libstdc++\n- libffi-dev\n- mysql-dev\n- musl-dev\n- ncurses-dev\n- openssl-dev\n\nTake a checkout of this repository, then run \"make build\" to pull in the\nnecessary python package dependencies::\n\n    $ git clone https://github.com/mozilla-services/syncserver\n    $ cd syncserver\n    $ make build\n\nTo sanity-check that things got installed correctly, do the following::\n\n    $ make test\n\nNow you can run the server::\n\n    $ make serve\n\nThis should start a server on http://localhost:5000/.\n\nNow go into Firefox's `about:config` page, search for a setting named\n\"tokenServerURI\", and change it to point to your server::\n\n    identity.sync.tokenserver.uri:  http://localhost:5000/token/1.0/sync/1.5\n\n(Prior to Firefox 42, the TokenServer preference name for Firefox Desktop was\n\"services.sync.tokenServerURI\". While the old preference name will work in\nFirefox 42 and later, the new preference is recommended as the old preference\nname will be reset when the user signs out from Sync causing potential\nconfusion.)\n\nFirefox should now sync against your local server rather than the default\nMozilla-hosted servers.\n\nFor more details on setting up a stable deployment, see:\n\n   https://mozilla-services.readthedocs.io/en/latest/howtos/run-sync-1.5.html\n\n\nCustomization\n-------------\n\nAll customization of the server can be done by editing the file\n\"syncserver.ini\", which contains lots of comments to help you on\nyour way.  Things you might like to change include:\n\n    * The client-visible hostname for your server.  Edit the \"public_url\"\n      key under the [syncerver] section.\n\n    * The database in which to store sync data.  Edit the \"sqluri\" setting\n      under the [syncserver] section.\n\n    * The secret key to use for signing auth tokens.  Find the \"secret\"\n      entry under the [syncserver] section and follow the instructions\n      in the comment to replace it with a strong random key.\n\n\nDatabase Backend Modules\n------------------------\n\nIf your python installation doesn't provide the \"sqlite\" module by default,\nyou may need to install it as a separate package::\n\n    $ ./local/bin/pip install pysqlite2\n\nSimilarly, if you want to use a different database backend you will need\nto install an appropriate python module, e.g::\n\n    $ ./local/bin/pip install PyMySQL\n    $ ./local/bin/pip install psycopg2\n\n\nRunner under Docker\n-------------------\n\n`Dockerhub Page \u003chttps://hub.docker.com/r/mozilla/syncserver\u003e`_\n\nThere is experimental support for running the server inside a Docker\ncontainer. The docker image runs with UID/GID 1001/1001.\nBuild the image like this::\n\n    $ docker build -t syncserver:latest .\n\nThen you can run the server by passing in configuration options as\nenvironment variables, like this::\n\n    $ docker run --rm \\\n        -p 5000:5000 \\\n        -e SYNCSERVER_PUBLIC_URL=http://localhost:5000 \\\n        -e SYNCSERVER_SECRET=\u003cPUT YOUR SECRET KEY HERE\u003e \\\n        -e SYNCSERVER_SQLURI=sqlite:////tmp/syncserver.db \\\n        -e SYNCSERVER_BATCH_UPLOAD_ENABLED=true \\\n        -e SYNCSERVER_FORCE_WSGI_ENVIRON=false \\\n        -e SYNCSERVER_DEBUG_ENABLED=true \\\n        -e PORT=5000 \\\n        mozilla/syncserver:latest\n\n    or\n\n    $ docker run --rm \\\n        -p 5000:5000 \\\n        -e SYNCSERVER_PUBLIC_URL=http://localhost:5000 \\\n        -e SYNCSERVER_SECRET_FILE=\u003cPUT YOUR SECRET KEY FILE LOCATION HERE\u003e \\\n        -e SYNCSERVER_SQLURI=sqlite:////tmp/syncserver.db \\\n        -e SYNCSERVER_BATCH_UPLOAD_ENABLED=true \\\n        -e SYNCSERVER_FORCE_WSGI_ENVIRON=false \\\n        -e PORT=5000 \\\n        -v /secret/file/at/host:\u003cPUT YOUR SECRET KEY FILE LOCATION HERE\u003e  \\\n        mozilla/syncserver:latest\n\nDon't forget to `generate a random secret key \u003chttps://mozilla-services.readthedocs.io/en/latest/howtos/run-sync-1.5.html#further-configuration\u003e`_\nto use in the `SYNCSERVER_SECRET` environment variable or mount your secret key file!\n\nAnd you can test whether it's running correctly by using the builtin\nfunction test suite, like so::\n\n    $ /usr/local/bin/python -m syncstorage.tests.functional.test_storage \\\n        --use-token-server http://localhost:5000/token/1.0/sync/1.5\n\nIf you'd like a persistent setup, you can mount a volume as well::\n\n    $ docker run -d \\\n        -v /syncserver:/data \\\n        -p 5000:5000 \\\n        -e SYNCSERVER_PUBLIC_URL=http://localhost:5000 \\\n        -e SYNCSERVER_SECRET=\u003cPUT YOUR SECRET KEY HERE\u003e \\\n        -e SYNCSERVER_SQLURI=sqlite:////data/syncserver.db \\\n        -e SYNCSERVER_BATCH_UPLOAD_ENABLED=true \\\n        -e SYNCSERVER_FORCE_WSGI_ENVIRON=false \\\n        -e PORT=5000 \\\n        mozilla/syncserver:latest\n\nMake sure that /syncserver is owned by 1001:1001\n\n\n`Docker Compose \u003chttps://docs.docker.com/compose\u003e`_ can also be used for structured deployments::\n\n    version: '3.7'\n    services:\n        syncserver:\n            container_name: syncserver\n            image: mozilla/syncserver:latest\n            volumes:\n                - /syncserver:/data\n            ports:\n                - 5000:5000\n            environment:\n                SYNCSERVER_PUBLIC_URL: 'http://localhost:5000'\n                SYNCSERVER_SECRET: '\u003cPUT YOUR SECRET KEY HERE\u003e'\n                SYNCSERVER_SQLURI: 'sqlite:////data/syncserver.db'\n                SYNCSERVER_BATCH_UPLOAD_ENABLED: 'true'\n                SYNCSERVER_FORCE_WSGI_ENVIRON: 'false'\n                PORT: '5000'\n            restart: always\n\nRemoving Mozilla-hosted data\n----------------------------\n\nIf you have previously uploaded Firefox Sync data\nto the Mozilla-hosted storage service\nand would like to remove it,\nyou can use the following script to do so::\n\n    $ pip install PyFxA\n    $ python ./bin/delete_user_data.py user@example.com\n\n\nQuestions, Feedback\n-------------------\n\n- Matrix: https://wiki.mozilla.org/Matrix#Getting_Started\n- Mailing list: https://mail.mozilla.org/listinfo/services-dev\n","funding_links":[],"categories":["HarmonyOS","\u003ca id=\"tag-internet\" href=\"#tag-internet\"\u003eInternet\u003c/a\u003e","Python","others","Software","Apps"],"sub_categories":["Windows Manager","Bookmarks and Link Sharing","Syncing"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmozilla-services%2Fsyncserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmozilla-services%2Fsyncserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmozilla-services%2Fsyncserver/lists"}