Run-Your-Own Firefox Sync Server

Overview

Run-Your-Own Firefox Sync Server

https://circleci.com/gh/mozilla-services/syncserver/tree/master.svg?style=svg https://img.shields.io/docker/automated/mozilla-services/syncserver.svg?style=flat-square

This is an all-in-one package for running a self-hosted Firefox Sync server. It bundles the "tokenserver" project for authentication and the "syncstorage" project for storage, to produce a single stand-alone webapp.

Complete installation instructions are available at:

https://mozilla-services.readthedocs.io/en/latest/howtos/run-sync-1.5.html

Quickstart

The Sync Server software runs using python 2.7, and the build process requires make and virtualenv. You will need to have the following packages (or similar, depending on your operating system) installed:

  • python2.7
  • python2.7-dev
  • python-virtualenv
  • gcc and g++
  • make
  • libstdc++
  • libffi-dev
  • mysql-dev
  • musl-dev
  • ncurses-dev
  • openssl-dev

Take a checkout of this repository, then run "make build" to pull in the necessary python package dependencies:

$ git clone https://github.com/mozilla-services/syncserver
$ cd syncserver
$ make build

To sanity-check that things got installed correctly, do the following:

$ make test

Now you can run the server:

$ make serve

This should start a server on http://localhost:5000/.

Now go into Firefox's about:config page, search for a setting named "tokenServerURI", and change it to point to your server:

identity.sync.tokenserver.uri:  http://localhost:5000/token/1.0/sync/1.5

(Prior to Firefox 42, the TokenServer preference name for Firefox Desktop was "services.sync.tokenServerURI". While the old preference name will work in Firefox 42 and later, the new preference is recommended as the old preference name will be reset when the user signs out from Sync causing potential confusion.)

Firefox should now sync against your local server rather than the default Mozilla-hosted servers.

For more details on setting up a stable deployment, see:

https://mozilla-services.readthedocs.io/en/latest/howtos/run-sync-1.5.html

Customization

All customization of the server can be done by editing the file "syncserver.ini", which contains lots of comments to help you on your way. Things you might like to change include:

  • The client-visible hostname for your server. Edit the "public_url" key under the [syncerver] section.
  • The database in which to store sync data. Edit the "sqluri" setting under the [syncserver] section.
  • The secret key to use for signing auth tokens. Find the "secret" entry under the [syncserver] section and follow the instructions in the comment to replace it with a strong random key.

Database Backend Modules

If your python installation doesn't provide the "sqlite" module by default, you may need to install it as a separate package:

$ ./local/bin/pip install pysqlite2

Similarly, if you want to use a different database backend you will need to install an appropriate python module, e.g:

$ ./local/bin/pip install PyMySQL
$ ./local/bin/pip install psycopg2

Runner under Docker

Dockerhub Page

There is experimental support for running the server inside a Docker container. The docker image runs with UID/GID 1001/1001. Build the image like this:

$ docker build -t syncserver:latest .

Then you can run the server by passing in configuration options as environment variables, like this:

$ docker run --rm \
    -p 5000:5000 \
    -e SYNCSERVER_PUBLIC_URL=http://localhost:5000 \
    -e SYNCSERVER_SECRET= \
    -e SYNCSERVER_SQLURI=sqlite:////tmp/syncserver.db \
    -e SYNCSERVER_BATCH_UPLOAD_ENABLED=true \
    -e SYNCSERVER_FORCE_WSGI_ENVIRON=false \
    -e SYNCSERVER_DEBUG_ENABLED=true \
    -e PORT=5000 \
    mozilla/syncserver:latest

or

$ docker run --rm \
    -p 5000:5000 \
    -e SYNCSERVER_PUBLIC_URL=http://localhost:5000 \
    -e SYNCSERVER_SECRET_FILE= \
    -e SYNCSERVER_SQLURI=sqlite:////tmp/syncserver.db \
    -e SYNCSERVER_BATCH_UPLOAD_ENABLED=true \
    -e SYNCSERVER_FORCE_WSGI_ENVIRON=false \
    -e PORT=5000 \
    -v /secret/file/at/host:  \
    mozilla/syncserver:latest

Don't forget to generate a random secret key to use in the SYNCSERVER_SECRET environment variable or mount your secret key file!

And you can test whether it's running correctly by using the builtin function test suite, like so:

$ /usr/local/bin/python -m syncstorage.tests.functional.test_storage \
    --use-token-server http://localhost:5000/token/1.0/sync/1.5

If you'd like a persistent setup, you can mount a volume as well:

$ docker run -d \
    -v /syncserver:/data \
    -p 5000:5000 \
    -e SYNCSERVER_PUBLIC_URL=http://localhost:5000 \
    -e SYNCSERVER_SECRET= \
    -e SYNCSERVER_SQLURI=sqlite:////data/syncserver.db \
    -e SYNCSERVER_BATCH_UPLOAD_ENABLED=true \
    -e SYNCSERVER_FORCE_WSGI_ENVIRON=false \
    -e PORT=5000 \
    mozilla/syncserver:latest

Make sure that /syncserver is owned by 1001:1001

Docker Compose can also be used for structured deployments:

version: '3.7'
services:
    syncserver:
        container_name: syncserver
        image: mozilla/syncserver:latest
        volumes:
            - /syncserver:/data
        ports:
            - 5000:5000
        environment:
            SYNCSERVER_PUBLIC_URL: 'http://localhost:5000'
            SYNCSERVER_SECRET: ''
            SYNCSERVER_SQLURI: 'sqlite:////data/syncserver.db'
            SYNCSERVER_BATCH_UPLOAD_ENABLED: 'true'
            SYNCSERVER_FORCE_WSGI_ENVIRON: 'false'
            PORT: '5000'
        restart: always

Removing Mozilla-hosted data

If you have previously uploaded Firefox Sync data to the Mozilla-hosted storage service and would like to remove it, you can use the following script to do so:

$ pip install PyFxA
$ python ./bin/delete_user_data.py [email protected]

Questions, Feedback

Comments
  • Sync breaks in Firefox 80

    Sync breaks in Firefox 80

    Is it possible that this setup with a custom sync server just breaks in FF 80? I have it working on older installs, but as soon as I update it keeps asking me to sign in again and according to the sync logs it gets a 401 from my token server.

    opened by darkphoenix 35
  • nginx/syncserver 503 error / connection_error/ verify_failure

    nginx/syncserver 503 error / connection_error/ verify_failure

    Following this guide (in german), after getting the auth server running, I'm having a problem running the sync server. It is set up behind a nginx ssl reverse proxy, just as the auth and auth-api server (which both seem to work fine). The sync server only shows this in his output (line breaks inserted for readability):

    $ make serve
    ./local/bin/pserve ./syncserver.ini
    /home/mozillasync/syncserver/local/local/lib/python2.7/site-packages/tokenserver/verifiers.py:47:
    FutureWarning: The BrowserID certificate format has not been finalized and may change in
    backwards-incompatible ways.  If you find that the latest version of this module cannot verify a valid
    BrowserID assertion, please contact the author.
      super(LocalVerifier, self).__init__(**kwargs)
    Starting server in PID 29076.
    !!!
    !!! WARNING: This command is deprecated.
    !!! 
    !!!     You should now use the `--paste` option. Ex.:
    !!! 
    !!!         gunicorn --paste development.ini
    !!!     
    !!!
    
    INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): myurl.com
    INFO:mozsvc.metrics:{"code": 503, "request_time": 0.19293904304504395,
    "remoteAddressChain": ["myexternalip", "127.0.0.1"],
    "agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:35.0) Gecko/20100101 Firefox/35.0",
    "token.assertion.connection_error": 1, "token.assertion.verify_failure": 1,
    "tokenserver.assertion.verify": 0.18337583541870117,
    "path": "https://myurl.com/token/1.0/sync/1.5", "method": "GET"}
    

    The "INFO" messages repeat every time a sync seems to run. Is this related to the browserid check? I thought I had configured the browserID verification appropriately:

    [browserid]
    backend = tokenserver.verifiers.LocalVerifier
    audiences = *
    

    The ngnix log has this in the error log:

    2015/01/26 00:27:40 [error] 2334#0: *388 connect() failed (111: Connection refused) while connecting to upstream, client: 91.119.55.0, server: mydomain, request: "GET /token/1.0/sync/1.5 HTTP/1.1", upstream: "http://127.0.0.1:5000/token/1.0/sync/1.5", host: "mydomain"
    

    I'm at a loss at how to proceed. What do the errors refer? Any additional logs I could check? Sorry if this is not the correct place to report this, if so could you point me to the correct one?

    Any help is much appreciated!

    opened by codeling 23
  • Docker container not syncing with 2FA account

    Docker container not syncing with 2FA account

    After setting up Firefox sync server, I could not sync with it because I get the error Failed to fetch the cluster URL: Error: user is not verified

    These are the steps I took:

    1. Set up Firefox sync server with Docker on Lubuntu following the instructions from the README:
    $ git clone https://github.com/mozilla-services/syncserver.git && cd syncserver
    $ docker build -t syncserver:latest .
    $ docker run --restart=unless-stopped --name=syncserver -d -v /opt/syncserver:/data -p 5000:5000 -e SYNCSERVER_PUBLIC_URL=http://firefox.domain.com -e SYNCSERVER_SECRET=53b1023a45a4446e15be9b6c0041724f9c2a354d -e SYNCSERVER_SQLURI=sqlite:////tmp/syncserver.db -e SYNCSERVER_BATCH_UPLOAD_ENABLED=true -e SYNCSERVER_FORCE_WSGI_ENVIRON=false -e PORT=5000 syncserver:latest
    $ sudo chmod 1001:1001 /opt/syncserver
    
    1. Ran test from the README, which exited with
    Ran 60 tests in 147.371s
    OK (skipped=6)
    
    1. Created Nginx reverse proxy on another machine:
    server {
        server_name firefox.domain.com;
        listen 443;
        listen [::]:443;
        <SSL certs here>
            location / {
            proxy_pass http://192.168.x.x:5000;
            proxy_set_header Host $http_host;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_redirect off;
            proxy_read_timeout 120;
            proxy_connect_timeout 10;
        }
    }
    

    I was able to access it from firefox.domain.com, where it said it works!

    1. In about:config, I changed identity.sync.tokenserver.uri to https://firefox.domain.com/token/1.0/sync/1.5

    Every time I try to sync from Firefox on Ubuntu, I get this in about:sync-log: PrivateBin

    I also tested it without the reverse proxy, and it still gave the same error.

    Any help is appreciated. Thanks in advanced!

    UPDATE: After signing out and going back in, I now get this error: PrivateBin.

    opened by andrewkdinh 19
  • ConnectionError due to bad handshake to BrowserID server at api.accounts.firefox.com

    ConnectionError due to bad handshake to BrowserID server at api.accounts.firefox.com

    Hi,

    my Firefox Sync Server instance stopped working yesterday evening. I updated my installation to the most recent version of the git master branch. make build and make test ran without problems.

    When I try to initiate a sync from a client, the following shows up in the error log of the server:

    [Thu Jan 04 11:34:57.307531 2018] [wsgi:error] [pid 12056] ERROR:tokenserver:Unexpected verification error
    [Thu Jan 04 11:34:57.307700 2018] [wsgi:error] [pid 12056] Traceback (most recent call last):
    [Thu Jan 04 11:34:57.307817 2018] [wsgi:error] [pid 12056]   File "/srv/software/mozilla-syncserver/local/lib/python2.7/site-packages/tokenserver/views.py", line 85, in valid_assertion
    [Thu Jan 04 11:34:57.307830 2018] [wsgi:error] [pid 12056]     assertion = verifier.verify(assertion)
    [Thu Jan 04 11:34:57.307837 2018] [wsgi:error] [pid 12056]   File "/srv/software/mozilla-syncserver/local/lib/python2.7/site-packages/tokenserver/verifiers.py", line 73, in verify
    [Thu Jan 04 11:34:57.307845 2018] [wsgi:error] [pid 12056]     data = super(LocalVerifier, self).verify(assertion, audience)
    [Thu Jan 04 11:34:57.307880 2018] [wsgi:error] [pid 12056]   File "/srv/software/mozilla-syncserver/local/lib/python2.7/site-packages/browserid/verifiers/local.py", line 96, in verify
    [Thu Jan 04 11:34:57.307925 2018] [wsgi:error] [pid 12056]     cert = self.verify_certificate_chain(certificates, now=now)
    [Thu Jan 04 11:34:57.307935 2018] [wsgi:error] [pid 12056]   File "/srv/software/mozilla-syncserver/local/lib/python2.7/site-packages/browserid/verifiers/local.py", line 135, in verify_certificate_chain
    [Thu Jan 04 11:34:57.307989 2018] [wsgi:error] [pid 12056]     root_key = self.supportdocs.get_key(root_issuer)
    [Thu Jan 04 11:34:57.307999 2018] [wsgi:error] [pid 12056]   File "/srv/software/mozilla-syncserver/local/lib/python2.7/site-packages/browserid/supportdoc.py", line 63, in get_key
    [Thu Jan 04 11:34:57.308005 2018] [wsgi:error] [pid 12056]     supportdoc = self.get_support_document(hostname)
    [Thu Jan 04 11:34:57.308011 2018] [wsgi:error] [pid 12056]   File "/srv/software/mozilla-syncserver/local/lib/python2.7/site-packages/browserid/supportdoc.py", line 58, in get_support_document
    [Thu Jan 04 11:34:57.308016 2018] [wsgi:error] [pid 12056]     raise error
    [Thu Jan 04 11:34:57.308022 2018] [wsgi:error] [pid 12056] ConnectionError: Failed to GET https://api.accounts.firefox.com/.well-known/browserid. Reason: ('bad handshake: SysCallError(0, None)',)
    

    The TLS connection to api.accounts.firefox.com apparently can't be established. I tried to connect to the URL manually from the server system and the TLS connection seems to work fine.

    I have no idea how to further trace/debug this error and whether this is caused by my environment or by a bug in the Firefox Sync Server itself. Any help is appreciated.

    Thank you in advance!

    opened by DigNative 19
  • fxa-self-hosting. syncserver fails

    fxa-self-hosting. syncserver fails

    I set up fxa-self-hosting after this page. https://github.com/michielbdejong/fxa-self-hosting

    But the start of the syncserver always fails with the following message, what doesn't work? HTTPError: 404 Client Error: Not Found for url: https://xxx.xxxxxxxxxt.xx/.well-known/fxa-client-configuration

    Thanks in advance

    opened by misterhsp 18
  • Authentication fails with cause

    Authentication fails with cause "invalid-generation" with commit 72d618f

    The latest commit seems to have broken authentication on my syncserver.

    From about:sync-log:

    1495882087010   Common.TokenServerClient    DEBUG   Beginning BID assertion exchange: https://XXX/token/1.0/sync/1.5
    1495882087011   Services.Common.RESTRequest DEBUG   GET request to https://XXX/token/1.0/sync/1.5
    1495882087011   Services.Common.RESTRequest TRACE   HTTP Header accept: application/json
    1495882087011   Services.Common.RESTRequest TRACE   HTTP Header authorization: ***** (suppressed)
    1495882087011   Services.Common.RESTRequest TRACE   HTTP Header x-client-state: XXX
    1495882087020   FirefoxAccounts DEBUG   writing secure storage: ["kA","kB"]
    1495882088114   Services.Common.RESTRequest TRACE   onStartRequest: GET https://XXX/token/1.0/sync/1.5
    1495882088115   Services.Common.RESTRequest TRACE   Channel for GET https://XXX/token/1.0/sync/1.5 returned status code 0
    1495882088115   Services.Common.RESTRequest DEBUG   GET https://XXX/token/1.0/sync/1.5 401
    1495882088115   Services.Common.RESTRequest TRACE   GET body: {"status": "invalid-generation", "errors": [{"location": "body", "name": "", "description": "Unauthorized"}]}
    1495882088115   Common.TokenServerClient    DEBUG   Got token response: 401
    1495882088115   Common.TokenServerClient    INFO    Server-reported error: {"location":"body","name":"","description":"Unauthorized"}
    1495882088116   Sync.BrowserIDManager   ERROR   Authentication error in _fetchTokenForUser: {"details":{"now":"2017-05-27T10:48:08.115Z","message":"Authentication failed.","cause":"invalid-generation","response_body":"{\"status\": \"invalid-generation\", \"errors\": [{\"location\": \"body\", \"name\": \"\", \"description\": \"Unauthorized\"}]}","response_headers":{"server":"nginx","date":"Sat, 27 May 2017 10:48:08 GMT","content-type":"application/json; charset=UTF-8","content-length":"109","x-weave-timestamp":"1495882088.41","x-timestamp":"1495882088","x-firefox-spdy":"h2"},"response_status":401,"name":"TokenServerClientServerError"},"source":"tokenserver"}
    1495882088117   Sync.Status DEBUG   Status.login: success.login => error.login.reason.account
    1495882088117   Sync.Status DEBUG   Status.service: success.status_ok => error.login.failed
    1495882088123   Sync.BrowserIDManager   ERROR   Failed to fetch a token for authentication: {"details":{"now":"2017-05-27T10:48:08.115Z","message":"Authentication failed.","cause":"invalid-generation","response_body":"{\"status\": \"invalid-generation\", \"errors\": [{\"location\": \"body\", \"name\": \"\", \"description\": \"Unauthorized\"}]}","response_headers":{"server":"nginx","date":"Sat, 27 May 2017 10:48:08 GMT","content-type":"application/json; charset=UTF-8","content-length":"109","x-weave-timestamp":"1495882088.41","x-timestamp":"1495882088","x-firefox-spdy":"h2"},"response_status":401,"name":"TokenServerClientServerError"},"source":"tokenserver"}
    1495882088527   Sync.Resource   DEBUG   mesg: GET fail 401 https://XXX/storage/1.5/1/info/collections
    1495882088527   Sync.Resource   DEBUG   GET fail 401 https://XXX/storage/1.5/1/info/collections
    1495882088528   Sync.Resource   WARN    GET request to https://XXX/storage/1.5/1/info/collections failed with status 401
    1495882088529   Sync.Service    INFO    Logging out
    1495882088532   browserwindow.syncui    DEBUG   observed: weave:service:logout:finish
    1495882088533   browserwindow.syncui    DEBUG   observed: weave:service:logout:finish
    1495882088533   browserwindow.syncui    DEBUG   observed: weave:service:logout:finish
    1495882088534   Sync.SyncScheduler  DEBUG   Next sync in 3600000 ms.
    1495882088534   Sync.ErrorHandler   INFO    Got 401 response; resetting clusterURL.
    1495882088534   Sync.ErrorHandler   DEBUG   New mid-sync 401 failure. Making a note.
    1495882088534   Sync.ErrorHandler   INFO    Attempting to schedule another sync.
    1495882088534   Sync.Service    ERROR   Aborting sync: failed to get collections.
    

    The client is Firefox/53.0.3 (Intel Mac OS X 10.12) FxSync/1.55.0.20170518000419.desktop. The client prompts to reauthenticate, then produces the error above and immediately asks to reauthenticate again.

    The server is running via nginx+uwsgi on Debian Jessie.

    If I revert back to commit 7fe5c0f everything works again and if I then checkout 72d618f again, I get the same error again, so it must be commit 72d618f which breaks it.

    opened by julienschmidt 18
  • build error: Package 'setuptools' requires a different Python: 2.7.12 not in '>=3.5'

    build error: Package 'setuptools' requires a different Python: 2.7.12 not in '>=3.5'

    I am trying to build the most recent version of master (9ef2fb9928a19e807634af01b01b8292ba6e3e05 as of now) of this repository by issuing make test, but I am facing a dependency error:

    Requirement already satisfied: setuptools in ./local/lib/python2.7/site-packages (from pyramid==1.5.3->-r requirements.txt (line 3)) (45.0.0)
    ERROR: Package 'setuptools' requires a different Python: 2.7.12 not in '>=3.5'
    Makefile:27: recipe for target 'local/COMPLETE' failed
    make: *** [local/COMPLETE] Error 1
    
    opened by DigNative 17
  • Docker container

    Docker container

    A nice to have would be an up to date Docker image to make deployment and testing easier. Perhaps also an AMI? Maybe we should look at http://www.packer.io/ or something for this kind of thing.

    opened by vmunix 16
  • Bookmars are not synced anymore to\from mobile platforms.

    Bookmars are not synced anymore to\from mobile platforms.

    Environments: Firefox for iOS(27.0(18428)), Firefox Preview(Nightly 200720, build #22020612) FF Release(78) on macOS and Windows 10x64 FXA stage version : 1.180.0

    Steps to reproduce:

    1. Set-up the FXA server to Stage on every platform(https://accounts.stage.mozaws.net)
    2. Login with same valid FXA on multiple platforms(Windows, macOS, Android and iOS)
    3. Add some bookmarks on any every platform and force a Sync everywhere

    Expected results: Bookmarks are synced across all platforms

    Actual results: On mobile platforms , bookmarks are not synced at all(from desktop to mobile, from mobile to desktop, from mobile to mobile).

    NOTES: Not reproducible with production FXA server Between desktop platforms , bookmarks syncing is working as expected

    opened by vcarciu 15
  • public url of in mod_wsgi returned wrong

    public url of in mod_wsgi returned wrong

    Hi there.

    I just setup sync server 1.5 from this repository following the Tutorial: https://docs.services.mozilla.com/howtos/run-sync-1.5.html#howto-run-sync15 apache2 2.2.22-13+deb7u3 libapache2-mod-wsgi 3.3-4+deb7u1

    This will almost certainly cause authentication failures! public_url setting is: https://domain.de:5000 application url is: https://domain.de

    But sporadically i get errors about mismatching urls and on that device synching won't work. I imagine, that the non-matching urls cause the request to fail with firefox accounts server. The public_url is the one i also use to access the server: services.sync.tokenServerURI https://domain.de:5000/token/1.0/sync/1.5 public_url: https://domain.de:5000 but the application url is shown as: application url: https://domain.de the port is stripped for some reason.

    Changing th public_url i get: This will almost certainly cause authentication failures! public_url setting is: https://domain.de application url is: https://domain.de:5000

    Is this a configuration problem or a bug? Which is equally wrong and not working just the other way around.

    opened by WhiteHatTux 14
  • syncserver does not start correctly after last commits

    syncserver does not start correctly after last commits

    Since the last commits to 1.9.0, syncserver does not start correctly here. The following error occurs at startup. What is wrong?

    ERROR:syncstorage.storage:Error while scanning package 'syncstorage.storage.spanner' Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/venusian/init.py", line 230, in scan import(modname) File "/usr/local/lib/python2.7/dist-packages/syncstorage/storage/spanner.py", line 19, in from google.api_core.exceptions import Aborted, AlreadyExists ImportError: No module named google.api_core.exceptions

    Thanks...

    opened by misterhsp 12
  • Dockerfile: Expose port 5000

    Dockerfile: Expose port 5000

    Exposing the port is very helpful on the latest version of Synology's Docker integration into their DiskStation Manager (DSM). Once you expose the port, you can easily set up a reverse proxy on it.

    Other Docker-based products might also benefit from it. Therefore I'm contributing this change here.

    Signed-off-by: Thomas Karl Pietrowski [email protected] (github: thopiekar)

    opened by thopiekar 0
  • firefox sync server behind reverse proxy

    firefox sync server behind reverse proxy

    I posted this on the mozilla forum, but hopefully I can get a faster response here.

    I'm hosting this on unraid as a docker. If I set sync server up on the local network, it works. I use this public address in the docker container http://localhost:5000 and the about:config server as identity.sync.tokenserver.uri = http://localhost:5000/token/1.0/sync/1.5.

    Now if I switch to my reverse proxy (swag), I use this public address in the docker container http://firefox.mydomain.com/ and the about:config server as identity.sync.tokenserver.uri = http://firefox.mydomain.com:5000/token/1.0/sync/1.5. It does not sync. I get an error if I use that url in the browser link. If I make it http://firefox.mydomain.com/token/1.0/sync/1.5 (taking out the port number), my browser displays a json page. But if I remove the port number in the about:config and make it identity.sync.tokenserver.uri = http://firefox.mydomain.com/token/1.0/sync/1.5, it logs me out of my firefox account. It says the account is disconnected requiring me to login. If I do, I get booted out again.

    The reverse proxy is passing through port 5000, so that is why not specifying it returns a valid browser page. The about:config seems to need the port specified to work. Otherwise I'm getting logged off. Is there a workaround to this?

    opened by mlause 1
  • Question about the installation.

    Question about the installation.

    Hello,

    • I"m recently come to Librewolf (who have removed some nasty telemetry and other forced services (pocket etc) witch is why like many other we have leaved Firefox back in the day), and since i actually self host 90% of the service i use i want to do so for Firefox to.

    So my questions :

    • Is any up to date, documentation to self host all the stack ? (Firefox Account, Sync server (and any other module this can have)), and have someone created a docker (up to date) witch contain all at once ?

    Additional info :

    • I'm not interested on self hosting only data, because i want to cut all tie to main Firefox domain witch does not support DNSSEC, and i do want to control all my data), and i do not trust Mozilla anymore (since the last telemetry/tracking found in their installer recently).

    • I do know their doc on it but it is quite messy (on purpose ?) and absolutely not clear on how to do thing properly.

    • Their dock image do not have any description so it's also messy (and i want to deploy these services properly to minimize any misconfiguration.

    Thanks for you answer.

    opened by BirdInFire 0
  • Python Error When Doing “make build”

    Python Error When Doing “make build”

    Hello,

    When trying to install the Mozilla Sync Server, I’ve got issues when doing “make build”.

    It give me an error concerning Python2 which is depreciated. I’d install Python3.9 on my machine running Ubuntu Server 20.04 LTS but, still having the issue when trying to run “make build”.

    This is what I’ve got:

    make build

    Install the latest Python 2 compatible setuptools manually:

    https://github.com/mozilla-services/syncserver/issues/239

    which python2 python2.7 python | head -n 1 -m virtualenv --python=which python2 python2.7 python | head -n 1 ./local --no-setuptools /usr/bin/python2: No module named virtualenv make: *** [Makefile:29: local/COMPLETE] Error 1

    I do know some other peoples here who getting the same issues but, even after ready their posts, I’m still not able to find out the solution concerning my specific situation.

    Thank-you in advance for the help.

    Guillaume

    opened by guillaumesoucy94 2
  • Firefox tokenserver certificate validation failed

    Firefox tokenserver certificate validation failed

    Hello, I am running the latest docker version of syncserver.

    When I try to sync a browser, I see this in the docker logs..

    Has anyone ran into this issue before?

    syncserver

    It looks like the syncserver fails to validate the FF token server because of a wrong expected certificate.

    opened by IvanCharcos 1
Owner
Mozilla Services
see also http://blog.mozilla.com/services
Mozilla Services
Run CodeServer on Google Colab using Inlets in less than 60 secs using your own domain.

Inlets Colab Run CodeServer on Colab using Inlets in less than 60 secs using your own domain. Features Optimized for Inlets/InletsPro Use your own Cus

null 2 Dec 30, 2021
Better firefox bookmarks script for rofi

rofi-bookmarks Small python script to open firefox bookmarks with rofi. Features Icons! Only show bookmarks in a specified bookmark folder Show entire

null 32 Nov 10, 2022
firefox session recovery

firefox session recovery

Ahmad Sadraei 5 Nov 29, 2022
Install Firefox from Mozilla.org easily, complete with .desktop file creation.

firefox-installer Install Firefox from Mozilla.org easily, complete with .desktop file creation. Dependencies Python 3 Python LXML Debian/Ubuntu: sudo

rany 7 Nov 4, 2022
Integration between the awesome window manager and the firefox web browser.

Integration between the awesome window manager and the firefox web browser.

contribuewwt 3 Feb 2, 2022
An application to see if your Ethereum staking validator(s) are members of the current or next post-Altair sync committees.

eth_sync_committee.py Since the Altair upgrade, 512 validators are randomly chosen every 256 epochs (~27 hours) to form a sync committee. Validators i

null 4 Oct 27, 2022
run-js Goal: The Easiest Way to Run JavaScript in Python

run-js Goal: The Easiest Way to Run JavaScript in Python features Stateless Async JS Functions No Intermediary Files Functional Programming CommonJS a

Daniel J. Dufour 9 Aug 16, 2022
Its a simple and fun to use application. You can make your own quizes and send the lik of the quiz to your friends.

Quiz Application Its a simple and fun to use application. You can make your own quizes and send the lik of the quiz to your friends. When they would a

Atharva Parkhe 1 Feb 23, 2022
2 Way Sync Between Notion Database and Google Calendar

Notion-and-Google-Calendar-2-Way-Sync 2 Way Sync Between a Notion Database and Google Calendar WARNING: This repo will be undergoing a good bit of cha

null 248 Dec 26, 2022
Sync SiYuanNote & Yuque.

SiyuanYuque Sync SiYuanNote & Yuque. Install Use pip to install. pip install SiyuanYuque Execute like this: python -m SiyuanYuque Remember to create a

Clouder 23 Nov 25, 2022
use Notepad++ for real-time sync after python appending new log text

FTP远程log同步工具 使用Notepad++配合来获取实时更新的log文档效果 适用于FTP协议的log远程同步工具,配合MT管理器开启FTP服务器使用,通过Notepad++监听文本变化,更便捷的使用电脑查看方法注入打印后的信息 功能 过滤器 对每行要打印的文本使用回调函数筛选,支持链式调用

Liuhaixv 1 Oct 17, 2021
A(Sync) Interface for internal Audible API written in pure Python.

Audible Audible is a Python low-level interface to communicate with the non-publicly Audible API. It enables Python developers to create there own Aud

mkb79 192 Jan 3, 2023
A simple service that allows you to run commands on the server using text

Server Text A simple flask service that allows you to run commands on the server/computer over sms. Think of it as a shell where you run commands over

MT Devs 49 Nov 9, 2021
The earliest beta version of pytgcalls on Linux x86_64 and ARM64! Use in production at your own risk!

Public beta test. Use in production at your own risk! tgcalls - a python binding for tgcalls (c++ lib by Telegram); pytgcalls - library connecting pyt

Il'ya 21 Jan 13, 2022
This is a method to build your own qgis configuration packages using osgeo4W.

This is a method to build your own qgis configuration packages using osgeo4W. Then you can automate deployment in your organization with a controled and trusted environnement.

Régis Haubourg 26 Dec 5, 2022
Build your own Etherscan with web3.py

Build your own Etherscan with web3.py Video Tutorial: Run it pip3 install -r requirements.txt export FLASK_APP=app export FLASK_ENV=development flask

null 35 Jan 2, 2023
Provides guideline on how to configure pre-commit hooks in your own python project

Pre-commit Configuration Guide The main aim of this repository is to act as a guide on how to configure the pre-commit hooks in your existing python p

Faraz Ahmed Khan 2 Mar 31, 2022
Simple AoC helper program you can use to develop your own solutions in python.

AoC-Compabion Simple AoC helper program you can use to develop your own solutions in python. Simply install it in your python environment using pip fr

Alexander Vollmer 1 Dec 20, 2021
Myrepo - A tool to create your own Arch Linux repository

myrepo A (experimental) tool to create your own Arch Linux repository Example We

Anton Hvornum 5 Feb 19, 2022