I use around 10 browser profiles, each of which has its own set of bookmarks, plugins, self-enforced rules, etc. I want to synchronise browsing history, bookmarks, plugins using a single account. They are managed with a dedicated Firefox account, but I was wondering if I can self host accounts so that I can synchronise stuff over my VPN, and I don’t have to do mail verification every time I create a new profile. But I can’t find much on how online.
I know syncserver-rs but that is not enough. The accounts are still registered with Mozilla’s server.
Yes I did for many many years. There are two parts of it, one is the accounts themselves like the identity and the other part is the part which syncs the objects. I don’t host the account myself, I just use mozillas account server, because I don’t see much benefit for me and it’s quite complicated to do.
Bach then I wrote a long article about how to do it with the old python version: https://jeena.net/firefox-sync-15 but that version is obsolete because it was written in Python 2.x which had it’s end of life a coupple of years ago.
Now there is the rust version. The problem is that the rust version is even more complicated to set up. Therefor I created a docker-compose so people could do it in a easy way, and it collected quite many github-stars: https://github.com/jeena/fxsync-docker/
This is the one which I am still using, but it’s also a older version from last year. It uses the docker images Mozilla releases. There is a problem https://github.com/jeena/fxsync-docker/issues/3 with the newer version and configuring it to run with your own MariaDB instance instead of google-spanner which Mozilla uses.
To fix this a guy took inspiration from my git-repo and did a lot of work building his own docker images with the configuration changed so it uses MariaDB instead of spanner: https://github.com/porelli/firefox-sync
Sadly I didn’t have time yet to check out his version, but it looks very promising.
The accounts server is also part of the same repo, it’s called tokenserver https://github.com/mozilla-services/syncstorage-rs/tree/master/tokenserver-auth but yeah good luck getting that up and running.
I don’t think you can sync all those items anyway. I use Mozilla’s sync, and it doesn’t sync all my settings or extensions.
Last time I checked, some people were using syncthing to sync the whole profile folder, but I feel like that’s just a recipe for profile corruption. I don’t know if it works cross-platform either.
It syncs my extensions, except for mobile the ones that aren’t available (obviously)
Yes. But it was a while ago (pre Rust) when I ran my own accounts server. I only self-host sycserver-rs now.
That being said, I’m pretty sire the mail verification is built in, so even if you self host accounts you’d have to make modifications.
Can you do something with syncserver-rs alone? Even after I log in with Mozilla account and setting sync server URL to point to mine, nothing appears in the database.
Yea, it works for me, but there were no great guides. If nothing is in the DB, try checking HTTP error codes, or setting the
RUST_LOG
totrace
(which gives you a log line for every item synced).A problem I had that seemed like nothing was saving was the nginx proxy wasn’t doing things right, and I couldn’t tell. Using the local IP worked, and after making some nginx config tweaks I got it working.
I ended up making suggestions here based on my experience: https://github.com/porelli/firefox-sync
I didn’t exactly use that repo, but started with it and use their images. Their nginx config works, though.
Thank you!
Let me know if it works out for you, if not I can try to help.
As far as I know from my own attempt, you can’t easily self host the accounts part, only the syncserver
An the Syncserver still runs on Python2 with multiple known vulnerabilities.
There is a new Syncserver written in Rust, but it seems in continous half finished state or so.
Yeah, the new one was seemingly always just shy of being ready to use
Not for years. It’s Rust now.Doh, should have kept reading 😆 Rust is used in production now.
Maybe they referred to the Rust version.
You can, it’s just more complex.
That why I said ‘easily’, there’s no ready to go solution you could just plop into a compose file
no help to you, but my god is it convoluted and complex; every year or so I look up if there’s been some change in that regard and every time I stop reading halfway through the setup instructions. maybe next year…