Code‎ > ‎


Installing the open source Google Wave prototype server.


The open source Wave Federation Prototype Server is delivered as a Java application. Installation comprises installing the server code and (optionally) configuring federation with XMPP.

Server installation

Getting Java

You need Java 6. See Getting Java.

Building the code

The prototype server is currently distributed on in source code form. Obtain the source for the project:

$ hg clone wave-protocol
$ cd wave-protocol
$ ant

(The last build rule currently reports a series of gwt error and warning messages that look alarming but can be ignored. As of Oct 29, things should build cleanly without gwt error and warning messages.)

If the build is successful you should see:
Total time: NN minutes MM seconds

Running the server

Copy the to, then edit to configure it to your setup. The example file explains the configuration options. You can ignore all those concerning federation and certificates for now.

Run the server with

$ ./

Running the client

The configuration in is used by the client too, so nothing extra should be necessary to run the console client.

$ ./ <username>

See the instructions here about how to use the console client.

Running the webclient

Once you have followed the instructions on this page about how to get the server running you should be able to reach the web client by going to: http://localhost:9898 when running locally or by contacting port 9898 on the machine running the server. Note that if you have changed the websocket server port in your settings you should use that port instead.

Federation configuration (optional)

The server conforms to XEP-0114, the Jabber Component Protocol. The first step in running the Federation Prototype Server is to install an XMPP server that is XEP-0114 compatible.

Follow the instructions below for your server of choice:

There are many XEP-0114 compatible XMPP servers and we don't have instructions for all of them. Please contribute instructions if you have them for a server we don't have listed.

See the explanation of DNS, SRV records, and ports.

Configure Your XMPP Server

The FedOne server runs as a separate process that communicates with the XMPP server. For that communication to take place the XMPP server has to be notified of which port the FedOne extension will be using and also will need a shared secret for security purposes. In your XMPP server enable external components on port 5275 and a default shared secret of your own choosing. The extesion should be named wave.<domain-name> where<domain-name> is the domain name of your XMPP server. You will also need to enable Server Dialback for server to server communication. Each type of XMPP server is configured differently, so look to their specific installation instructions for details.


The following changes are not required for the wave extension to work, but are good practices if you are running a public facing XMPP server.

  • Disbale inband account registration.
  • Disable anonymous login
  • Enable server-server compression
  • Disable file proxy transfer

Wave Extension Installation

To run the extension you will need some of the parameters you used to set up the XMPP server. They are the extension port, the extension shared secret, the server name, and finally the component name which is "wave".

The wave server requires a set of certificates used for signing deltas. Please see the certificates page for help generating these.

Copy the to, then edit to configure it to your setup. The arguments passed to the server are:

When you're done editing the script, run to verify that the certificates are configured correctly:

$ ./

If that runs successfully then run the server:

$ ./


Connection Refused

On startup you may encounter this error:

couldn't connect to XMPP server:org.xmpp.component.ComponentException: Connection refused
Aug 26, 2009 6:16:30 PM org.waveprotocol.wave.examples.fedone.ServerMain run
INFO: Starting server

When the Federation extension starts up it looks for the XEP-0014 compatible XMPP server to talk to, which is does by first looking up its name in DNS. If you happen to be running behind a NAT and the Federation extension and the XMPP server are on the same server then you want the domain name to resolve to locally. The way to do this is to add that name lookup into your /etc/hosts file. If your domain name then add the following two lines to your /etc/hosts file:

Java is a registered trademark of Sun Microsystems, Inc.