I've been running a Jabber server for friends and family for a few years now. I've gone between using OpenFire on OS X and Linux to 3rd party hosted solutions to ejabberd. One of the main reasons I am writing this was because I saw something on Ars Technica about setting up your own private chat server. While I was currently using the iChat Server which comes built into Mac OS X Server, my Xserve has been on the fritz for the last couple weeks (I think the NIC on the logic board is becoming unsoldered which causes connections to come and go) and I was looking for a replacement.
The Ars Technica article kind of prodded me to start looking for another solution since my poor Xserve was on it's last legs. The article uses Prosody as the server daemon which I had never heard of, but looked worthy as a replacement. After having a fair amount of issues getting the right Lua libraries installed, I finally gave up and started looking for another solution. I came across http://www.getvines.org which looked really promising and quite slick.
Vines is Ruby based and supported everything I wanted, server-to-server chat as well as had TLS support. It even included a nice web interface as a chat client incase you didn't have a Jabber client installed. I spent about 2-3 hours trying to get this to work but found there was a bit of a learning curve involved with getting it to work properly. The documentation also appears to be a bit out of date as well and I got no response when I attempted to reach out to the developer on Twitter. The issues on their GitHub respository also appeared to be unattended to for quite some time. Once I finally wrapped my head around how it worked and tested it with my girlfriend, it was essentially un-usable. It took about 1 minute and 30 seconds for a message to go from one person to the other. I checked into all the configurations and settings again but I saw nothing that would have caused it to delay messaging between users. Of course nothing in GitHub issues, Google, or on the Vines site hinted as to what was causing this, so I was back to the drawing board.
The next Jabber server I tried was ejabberd, another popular one. It also supports TLS and server-to-server chatting. It required very little effort to get running and when testing between users it worked great. The only issue I had was getting my StartSSL SSL certificate working, but that was due to lack of documentation. Fortunately a quick Google search turned up this site and I was up and running with my SSL certificate in no time at all. It also has a decent (but still stuck in 1995) web front-end which I can use to easily manage adding users to the server.
For all this testing, compiling, installing, poking, and prodding, I used a Droplet from DigitalOcean. I think they're definitely going to be my go to company when I need a quick Linux environment for testing and even for production servers. I literally switched to and from Ubuntu and CentOS, and reinstalled (multiple times) the operating system, all within 30 seconds to a minute. They've got a great infrastructure and even offer instances all over the globe! If anyone is looking for a provider check out DigitalOcean! I should even note I used a tutorial from DigitalOcean to get ejabberd running on my Droplet.
If anyone wants to add me on Jabber, my address is firstname.lastname@example.org