A little corner of the Empire on the web.

29 April, 2010

Mozilla Weave Minimal Server Setup on Windows

So I've been following Mozilla's Weave project for while, and kept meaning to have a play with it. It's one of their experimental labs projects which recently came out of beta with a 1.0 release. Essentially it's a Firefox add-in that syncs and backs up a whole load of your settings and data back to a central server, including your bookmarks (and I have a lot!), saved passwords, preferences, history and open tabs. If, like me, you use more than one PC in more than one location then it's great knowing that Firefox is always setup how you like it wherever you are.

There are two parts to Weave; the Weave Firefox add-on (Weave is also available as an add-on for Mozilla's Fennec mobile browser), and the Weave server.

Most people install the add-on and sync their data back to Mozilla's Weave server, there's nothing wrong with that, all of your data is encrypted on your PC before it's sent to Mozilla's web server, so it's all secure and they have no way to access your private information. However you can also download the code for the Weave server and set it up on your own machine. Now, being that I have my own Windows Home Server* that's on 24/7 and accessible both within my home network and across the world via the internet I didn't really see the point in using someone else's server!

So I looked into it, and there are two options for installing your own Weave server there's the full server, which is a complex install and has all sorts of components that are only needed if you're going to act as a Weave server for many thousands of clients, or there's the Minimal Weave server, which has an incredibly simple server install (provided your machine already has all of the pre-reqs) and yet still implements the full Weave 1.0 API. Linux PCs are very likely already going to have most of the pre-reqs already installed (Apache web server and PHP for the Minimal server), Windows machines very likely won't.

I decided that as my Weave server is only ever going to be used by me, and possibly a few family members in the future, the simple install option sounded best! Particularly after I'd looked into it, and seen just how much effort was needed to install a full Weave server on a WHS box!

(Instructions on how to install an older version of the full Weave server on WHS are available on WeGotServed's wiki. note that this is for an outdated Weave version and won't SSL encrypt your traffic)

* A great little Tranquil PC SQA-5H series 1 server running MS Windows Home Server.


Stage 1: Setting up Weave Minimal server on Windows Vista

I don't like to mess up my server too much, it has a job to do, and does it well. I have a number of WHS add-ins installed, but have done the minimal amount of messing around on the server directly (and as a Microsoft certified server admin, this is against my nature ;). So to work it out, step one was to set Weave up on my Vista desktop, which luckily already happened to have a copy of Apache running, and I really don't care if this box gets messed up in the process!
Step by step instructions for how I did it are below.

Installing and configuring all required software for the Weave Minimal server:

  1. Download and install the Apache 2.2 web server (I cheated here as I already had Apache set up and working on my PC, stage 2 coming in a few days will have more detail for this step). Apache download page.
  2. Test Apache, point your web browser at http://localhost/ and make sure that you can see the Apache welcome page.
  3. Stop the Apache server -
    • Either using the Stop item in your Start menu under Apache HTTP Server -> Control Apache Server
    • Or by double-clicking the Apache 'feather' icon in your Windows system tray and clicking the Stop button in the Apache Service Monitor window that appears.
  4. Download and install PHP 5.2. Go to the PHP for Windows Download page scroll down to PHP 5.2 and click the Installer link under the VC6 x86 Thread Safe link. Run the installer, it will ask you the following questions after you Accept the licensing agreement:
    • Where to install PHP to, just accept the default that it offers you.
    • Select the web server you wish to setup: Select Apache 2.2.x Module.
    • Apache Configuration Directory, click Browse and go to C:\Program Files\Apache Software Foundation\Apache2.2\conf\
    • Ensure that the following Extensions are selected:
      • Extensions -> Multi-Byte Strings
      • Extensions -> PDO -> SQLite
      • Extensions -> SQLite
  5. Download the Weave Minimal server files from tobyelliott.wordpress.com/2009/09/11/weave-minimal-server/ unzip them using Winzip (or any other similar tool, Windows' built-in unzip tool can't unzip .tgz files) into a new folder called weave_minimal in the following folder: C:\Program Files\Apache Software Foundation\Apache2.2\htdocs
  6. Open Apache's configuration file via Start -> All Programs -> Apache HTTP Server... -> Configure Apache Server -> Edit the Apache httpd.conf... and add the following line to it at the bottom:
    Alias /weave "C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\weave_minimal\index.php"
  7. Start Apache
    • Either using the Start item in your Start menu under Apache HTTP Server -> Control Apache Server
    • Or by double-clicking the Apache 'feather' icon in your Windows system tray and clicking the Start button in the Apache Service Monitor window that appears.
  8. In Firefox go to http://localhost/weave/1.0/blah/info/collection if everything has worked you should see an "Authentication Required" box pop up, enter "blah" for the username and type anything as the password. The box will pop up again, just click Cancel, don't worry about this. You'll see a "File not found" web page, don't worry this is normal. Now if you go to the weave_minimal folder that you created earlier you should see a new file called weave_db this means that you now have your very own, working Weave server - well done!
  9. All that remains now is to create your user account(s) on the server and set up Firefox to talk to the server!

Setting up user accounts on the Weave server

Go to your weave_minimal folder that you created earlier in Windows Explorer, hold down the shift key and click the right-mouse button on a blank bit of the window, you should see a menu entry that says "Open Command Window Here" select that. Copy and paste the following line into the new window (Right-click -> Paste):

"C:\Program Files\PHP\php.exe" create_user

You can then press "c" to create your user and enter the desired username and password. Repeat for any further user accounts that you want to set up on your server.

Setting up Weave in Firefox to sync with your new server

  1. Install the Weave Browser SyncFirefox add-on from the Firefox add-ons website.
  2. Restart Firefox
  3. When Firefox starts up again it should take you straight to the Weave settings screen in Firefox's Options. Select Use a custom server from the drop-down menu. Fill out the boxes as below:
    • Server URL: http://localhost/weave/
    • User Name: The username you created earlier
    • Password: The password you created earlier
    • Click Sign In
  4. You'll be asked to type in a secret passphrase, you need to make a not of and remember this, it is a bit like a second password and is used to encrypt your data in Firefox before it is sent to the Weave server. You'll need to enter this and your user name and password when you set another copy of Firefox to sync with your Weave.
  5. If everything went well you should get a successful login and the Weave status at the bottom of your Firefox windows should show that it is successfully syncing
  6. Well done!
Next Steps

The server that we set up above is OK as a test server but is only accessible by Firefox on your one PC (or by other copies of Firefox on your home network if you enter the Server URL Weave's settings as your http://yourPCname/weave/ but it's not accessible over the internet at all. That's deliberate, the Minimal server doesn't encrypt your username and password as you login to Weave, these are sent over the network in clear text, not something you want to do over the internet.

Next time I'll be setting up Weave on my Windows Home Server box and taking advantage of the free dynamic domain name and free SSL encrypted connection that you get with WHS to allow me to connect to my Weave server over the internet using an SSL encrypted connection, so that my username and password are encrypted as they travel across the internet, and safe from anyone snooping.


Music that got me through this: The Orb - "The Orb's Adventures Beyond the Ultraworld, deluxe edition" playing on my Logitech Squeezebox Boom, classic, calming ambient house - just what I need.


Edited 16/5/2010 to correct the PHP version used.

7 comments:

  1. this is exactly what ive been looking for but i ran into a problem.

    when i install php and you said to specify where apache is etc, it does not have that option at all. it has "iis fastcgi", "other cgi", and "do not setup a web server". for reference i was installing: php-5.2.13-nts-Win32-VC6-x86.msi

    ReplyDelete
  2. I'll need to double-check when I get home, but I did have exactly the same thing as you when I first installed PHP 5.3. You should be able to select "Other CGI" and it'll put the necessary DLLs in place, but that didn't work for me which is why I dropped down to 5.2 which seemed to have all the right files and settings.

    The important thing is that PHP should put a file called "php5apache2_2.dll" into the folder that you installed PHP into. If that is there then it's just a case of copying a few lines into Apache's "httpd.conf" to load it.

    ReplyDelete
  3. ya i tried 5.3 as well, same problem. also i do choose "other cgi". and when its done i do not have any php5apache* dll anywhere on my system. i previously had apache installed already, and even reinstalled it before this step. i dont know whats going on here. :|

    ReplyDelete
  4. Sorry it's taken me this long to get back to you, but a whole load of stuff has come up in between, and I didn't get a chance to look into this.

    It appears that I was using the VC6 thread safe version of PHP 5.2.13. I've gone back and retried with the non-thread-safe versions and can't get the Apache integration working. I've edited my post above with that info now.

    Really sorry if you've wasted time trying to follow my incorrect instructions.

    ReplyDelete
  5. thanks for the continuing help. that worked that time. now on step 8 im getting a 403 forbidden error on that url. ive triple checked all of the paths are correct everywhere and that everything has been followed. any ideas? :|

    ReplyDelete
  6. never mind, i got it figured out. everything is working now. thanks a ton for the very helpful tutorial!

    ReplyDelete
  7. Glad to hear my guide helped you out in the end. Have fun with Weave!

    ReplyDelete