In the last week I took some time to setup my own jabber server.
I decided to have a look at ejabberd. Seems to be nice. The initial config was done without a problem. Then I tried to enable some additional stuff and then the docs started to be not clear enough. It seems you have to configure additional host names if you want to add e.g. the echo service and an ICQ transport. I tried first with just the name of the system, but this did not work out as expected. Now I have several DNS entries to the same system, just to be able to run a XMPP server with some additional features . The default settings of the transports are also to listen on localhost, instead of a real interface of the machine.
Not really userfriendly, and the docs do not explicitly tell that you have to have those additional entries (it is somehow told implicitly, but if you go this way for the first time, it may not be obvious).
To configure access via an web frontend (via the http_bind/bochs extension), the docs are also not very clear. It is easy to overlook that you have to make a change in the listen part and in the modules part. After getting everything right, all seems to work good. I already have several users and it seems that they are satisfied. The only “bad” thing is that pidgin does not seem to give a nice UI to add your ICQ (or whatever transport you have configured additionally) account. While pidgin can do ICQ, people may use the webinterface at some locations, so it would be nice if pidgin would support this better.