Setting up Google Wave (FedOne) server for federation

There are already plenty of tutorials which will show you how to set up FedOne Google Wave server to federate with Google’s sandbox version of wave server for developers. I’m not going repeat them here. However I will highlight this one which I found most useful, follow by some of my own observations, during my endeavour.In a nutshell, you first need to set up an XMPP server, as the FedOne wave reference server is implemented as an external component to the XMPP server. The XMPP server you should be looking to install needs to be XEP-0114 compatible (with Jabber Component Protocol). I’m using OpenFire, but there are others that you can use too like ejabberd.Before you install the XMPP server, perhaps it is worth knowing beforehand which platform you are planning to run your servers on (e.g. Windows or Linux), and whether you want both the XMPP and FedOne wave servers to run on the same machine. Personal experience told me that it is very slow running servers or clients from Windows command prompt. And you need to run the FedOne wave server using the Windows command prompt. Just to give you an idea, compiling FedOne wave server on Windows command prompt took me more than 5 mins compared to less than 1 min on Linux terminal. If you are interested in looking at screen dumps from the FedOne wave server real-time, then that will slow down the performance of your wave client too. I have run text-based wave console client on Windows command prompt as well and again it is very slow. I almost see no live character transmission coming from the wavesandbox! It is that bad. I guess if you are not playing with the console client then you are probably okay. But in any case for development purposes I would not recommend installing the FedOne wave server on Windows.Next you set up the FedOne wave server. As far as I can remember this is pretty straightforward. I set mine up on a separate machine from the OpenFire XMPP server. But you can run both on the same machine. After setting up the FedOne wave server, you can test your wave server using the console client that comes with the server package.Your FedOne wave server is not ready for federation yet. You need to first add some DNS records to your DNS server, as is explained in this wiki. Basically you want external users or servers to be able to find your Fedone wave server via DNS. Note that this exercise is more straightforward if your DNS is maintained by third party DNS service provider like DynDNS. Otherwise it can be a pain hosting your own DNS server, particularly if you don’t have full access to or own everything like your domain, firewall, gateway, and requiring authorisations from IT staff etc. If that is the case, it will be wise that you also understand the requirements of the wave server for federation before proceeding with the DNS set up, as that might save you some time.Once you have set up the DNS records, you can check if they are working correctly by using dig, a command line tool for querying DNS name servers for desired DNS records. For example here is how to check if the SRV records for your XMPP service has been set up.# dig +short -t SRV _xmpp-server._tcp.example.comAnd the response for my case is:10 0 5269 wave.example.comIf your FedOne wave server is on a private network and needs to use Network Address Translation (NAT) to communicate with the outside world, you will need to set up port forwarding for port 5269 from your gateway to your FedOnewave server, and of course, open a hole on the firewall of the gateway for that port 5269 too. You can check if all these are working by initiating a telnet session to your wave server:# telnet 5269When you are connected, key in something and press enter, you will be informed that the connection is now closed by the foreign host, which is what you would expect.Finally you have the CA certificates to sort out before you are allowed to federate with Google Wave sandbox server. Note that the sandbox server does not accept self-certified certificates so you will have to get one from a third party. Certificates issued by StartSLL are accepted by the sandbox server and it is free, for up to 1 year. It works well for me, apart from the inconvenience of applying for a certificate too soon (one day after I bought a domain). They require that your domain to be active for at least a couple of days (for my case I got mine when I applied 2 days later). If you don’t own the domain, you need to find out who has access to these emails accounts:, and Because StartSSL will only send authentication code to one of the above three email addresses, to confirm that you own the domain. If your service provider owns these addresses, then you may be in for a tough time. Quicker to just buy your own domain for a few quid a year if you are only planning to try out FedOne wave server or do development work for federation. Here is a wiki on how to get CA-issued certificate and how to check if the certs are all ready to go.That’s it, you should be able to fire up your FedOne wave console client and add users/developers with Google Wave sandbox account. If you don’t already have a sandbox account, it may be a good time to apply now, while you are setting up the rest of the stuff, as who knows how long it takes before you are given one.Hope you all find this blog useful.