This article is part of an ongoing series of posts, there’s an index here.
The base operating system for this project will be Ubuntu 14.04, mainly because a lot of what we’ll need is conveniently packaged for it at appropriate versions. Not much of what is going on is going to be OS-specific though and you should be able to follow along with your own preferred platform if you want.
Here’s our key software.
Prosody
Prosody will be our XMPP server, without which we won’t get very far. It’s written in Lua, is a fairly mature and widely-used option, and under active development with a good selection of optional modules. This project will be using the “unstable” 0.10 branch of Prosody for a couple of features only available in that version, and also so this guide won’t get outdated too quickly.
Jappix
Jappix is a web-based XMPP client that will do a great deal of what we need in one easy bundle. Account registration, multi-user conferences, even voice and video chat. It’s a pretty large chunk of our end-user experience and I’m going to get pretty critical of this when we get to that point and see what we can do about fixing some of it.
nginx
So, why nginx and not Apache? Well this has a really simple answer. I’ve never really used nginx before, and have been looking for a project to use to check it out. I’ll probably spend a fair bit of time with Google trying to figure out some pretty basic things as a result, but you’ll never know that because I’ll just be publishing end results and looking very professional as a result. Everyone wins. You can use Apache for your setup. I don’t think it’ll make a big difference in the end.
WordPress
We’ll use WordPress for a general web site to direct users to documentation and walk through the registration processes. We’re going to more-or-less replicate ChatMe, and they publish several WordPress modules for integration with their service, so we’ll use the same platform and make use of their work. Plus, I already know my way around it pretty well so I can practically set it up in my sleep.
Other Resources
We’ll need to get a SSL certificate for our server, and we’ll use StartSSL for that, because hey, it’s free and this is certainly going to be a budget project. We’ll also need a domain name, and DNS hosting. I have my own small reseller business (yeah, highly shameless plug there) from which I’ll use one of the domains I already have kicking around and just the basic DNS management packaged with that.
Next up; setting up Prosody because until we have our XMPP server, we’re not going to get very far.
Building a Public XMPP Service
[…] up, I’ll go into the initial “shopping list” of software I’ll be using, and start configuring the […]
Fayabomb
Nice project. Why do you use 0.10 ? What are the features Prosody doesnt have in next versions? MUC ? Archiving ?
Moreover, did you think about using an other server (Tigase, openfire, ejabberd) ?
Mike Barnes
The main missing piece in the 0.9 series right now is a working websockets module. It’s been moved into the 0.10 core from the separate modules project already, and the last published version doesn’t seem to work past 0.9.4. It’s not a critical piece, but one I really want. Also if I document a 0.9 setup this late in its life, I’ll just need to come back and update it when 0.10 releases in the near future.
I’m going with Prosody right now because I’m copying chatme.im’s setup fairly closely for this run. I’ll possibly write up some stuff on other servers later.