Sync at home – Weave minimal server on microapache

Just in case you didn’t know, Firefox Sync is a very convenient service Mozilla gave to the world: you can can keep synchronized history, bookmarks, tabs and passwords between different Firefox installations, on different platforms and devices.

Even if Mozilla affirms that

Your data is always protected, so only you have access to information like your passwords and browsing history.

(and I’m pretty sure they’re not lying), people usually like to keep private data private: encrypted is good, encrypted and at home is better.

Toby Elliot (Mozilla team), some months ago released a minimal version of the “real” sync server: it lacks all the user management api, but is a full implementation of the storage part. Set up Apache (or equivalent), configure your Firefox to a custom server, repeat for every device, and you’re done. I’ve been using it for more or less two years (iPhone and Android clients included), and indeed it works rather well.

Sadly, it is now discontinued, since the php version has been dropped and now Mozilla runs a brand new python sync server. There are instructions, if you want to set up your own, however it is not for the soft hearted (especially under Windows) and the server itself seems to be a bit more resource hungry than the minimal version.

If you want to try the weave minimal server on Windows, I have packaged microapache 2.0.63 with PHP 5, weave minimal and a simple GUI to configure and manage it (built with NSIS).

weave miniman on microapache GUI
The functions are quite self explanatory: in the upper section, you can configure the servername and the listening port for apache, and install/uninstall/start/stop the server. In the lower section you can add a new user to the sync db, remove already existing users, and you can see the url to use in Firefox.

To setup Firefox: Set up Sync -> Connect to an already existing Firefox Sync accont -> I don’t have the device with me -> and then complete the form and save.

firefox 7 sync custom server setup

Limits of this first release:

  • the apache configuration has not been particularly hardened for production use, it could be a very good idea to use it behind a VPN (I use a simple ssh tunnel). If you have experience in securing apache, I would gladly receive advices about the httpd.conf
  • HTTP only. SSL support is present but not yet configured (and not really needed as long as apache is not ready for production use)
  • The GUI needs admin rights.As long as it has to interact with Windows services, there isn’t really any alternative. If I receive enough feedbacks, I could release a no-service version of the GUI.
  • Tested on XP only (should work on Vista and 7, tho).

You can download it here (less than 4MB for the whole package), just decompress the archive and run config.exe.

Sources will be released on google code after some cleaning.

What can I say… as long as Mozilla does not revamp the storage API (making the minimal server useless), I think I’ll keep running this version, at least as long as I do not find the time to make a standalone version of the python server 🙂


UPDATE: v0.11 – fix: not working on non standard HTTP/80 port.