Ask HN: XMPP/Jabber self hosting
Does anyone have experience with a modern XMPP server? I found a list of server software at http://xmpp.org/xmpp-software/servers/, however I'd like to hear some experiences before selecting one.
Does anyone have experience with a modern XMPP server? I found a list of server software at http://xmpp.org/xmpp-software/servers/, however I'd like to hear some experiences before selecting one.
[+] [-] structural|11 years ago|reply
I ended up with a Prosody install primarily for two reasons: 1) Memory consumption/stability 2) Authentication support
The XMPP server hosts up to 700-800 simultaneous users and is located on a machine that provides many other services. With both ejabberd and openfire at this scale, memory consumption was in the several hundred megabyte range and (specifically ejabberd) typically had CPU load of 10-20% of a core.
The prosody setup I ended up using was significantly more lightweight and was simple to set up with server authenticating logins against TLS-enabled LDAP.
In the past, ejabberd was avoided because of serious security issues with the software, but in the past few years it looks like they've gotten their act together somewhat. That said, there's still some recent CVEs, you would want to pay attention to this if deploying ejabberd in any public-facinc infrastructure. As an example, ejabberd used to _require_ storing all passwords in plaintext, claiming that this was "more secure" than the alternatives (ref: https://www.ejabberd.im/plaintext-passwords-db)
[+] [-] hackerboos|11 years ago|reply
If you are new to XMPP then I'd recommend Prosody, very approachable and written in Lua if I recall correctly.
[+] [-] mike-cardwell|11 years ago|reply
[+] [-] bruo|11 years ago|reply
[+] [-] thallian|11 years ago|reply
I run it on a much smaller scale with imap authentication and it works flawlessly.
[+] [-] xorcist|11 years ago|reply
The main strengths are that it is very simple and lightweight, and uses less resources. The drawbacks is that it is simple and lightweight, so anything more complicated for corporate deployments is something you often have to roll up your sleeves and implement yourself.
I was scared to run it at first because it is written in Lua, which is an unknown language to me. However, I must say it is quite an elegant language. I could get an authentication plugin running after looking at an existing one, and I trusted it enough to run in production internally for a small team (and it turned out to work well for us).
Edit: Be sure to get a real certificate (startssl is fine), if you intend to use s2s. During the past year or two, most public servers has started to care.
[+] [-] Torgo|11 years ago|reply
By general consensus, the XMPP community set May 19, 2014 as a deadline for mandatory encryption:
https://lwn.net/Articles/599647/
[+] [-] preillyme|11 years ago|reply
It's a port of eJabberd and brings it up to ErlangOTP standards.
https://www.erlang-solutions.com/products/mongooseim-massive...
[+] [-] agwa|11 years ago|reply
I don't recommend ejabberd, unless perhaps you need to cluster. It consumes a lot of memory, which is undesirable on a VPS, and once I managed to get an ejabberd server into such a weird state that it required dropping to its REPL and writing Erlang to fix it (fortunately I have a friend who knows Erlang)!
[+] [-] deeviant|11 years ago|reply
Source: Last company I worked for used XMPP as the data channel to and form our data center and IoT/SCADA devices, I oversaw the project of upgrading from a much older version of ejabberd (which used erlang strings) and the much newer community edition ejabberd(which uses binary strings).
You can also write a custom module and use ejabberd solely for it's XMPP wire protocol and excellent routing features, but immediately export incoming data from the server to other processes in your stack without ejabberd ever even parsing the incoming XML(in this case we wrote a rabbitMQ ejabberd module which allowed ejabberd to interact with our data center flawlessly), which is what we did and at that point, a single XMPP server was able to handle our entire traffic. Although we obviously used a cluster and HA load balancer for scalability and redundancy.
[+] [-] rakoo|11 years ago|reply
[+] [-] smacktoward|11 years ago|reply
[+] [-] jwise0|11 years ago|reply
I've heard good things about Prosody, but haven't compared the two of them directly.
It is said that ejabberd supports XEP-0136 (server-side message archiving), but since it's not a default (at least, I don't think), I haven't turned it on yet. One of these days I will give that a try.
[+] [-] __david__|11 years ago|reply
The nice thing about running my own server is that when I talk to other people that have accounts there (basically my extended family and some selected friends), I'm pretty confident about privacy, even if OTR isn't being used—I only export SSL/TLS enabled ports and the machine is in my house, not a datacenter.
[+] [-] rasengan|11 years ago|reply
[+] [-] MrQuincle|11 years ago|reply
A nice C++ client library is by the way http://swift.im/swiften/.
[+] [-] foupfeiffer|11 years ago|reply
[+] [-] coned88|11 years ago|reply
[+] [-] deeviant|11 years ago|reply
I also had the pleasure working with ProcessOne via the Business edition ejabberd support, as well as commissioning them to build few custom modules that would have taken my C++(embedded team)/C#(back-end team) centric team much more time and money to build ourselves. So ejabberd is a great way to both get your feet wet(open source community version), then scale up in a big way with professional support(commercially licensed business version) should it be needed.
Note: I am not affiliated with ProcessOne in any way. Just had a pleasant experience working with them, and greatly enjoy their product.
[+] [-] haidrali|11 years ago|reply
1- Tigase 2- Jabbered 2 3- Openfire
I have also heard of Ejabbered a lot but that is in erlang ( which i don't like ) My top priority is always Tigase ( the only bad thing about it is you really need to dig into it to manage because there isn't lots of support available in term of blogs tutorials etc) Hope it will help you in choosing your preferred one ....
[+] [-] haidrali|11 years ago|reply
[+] [-] lasermike026|11 years ago|reply
I'll have to take a look at prosody.
[+] [-] praveenster|11 years ago|reply
[+] [-] structural|11 years ago|reply
If you want to do this for real, what you end up doing is implementing your own server backend that receives XMPP messages and then sends out push notifications to a mobile client. Generally a pain in the rear, but do-able. Getting your own iOS developer key & dealing with app store approval for stuff like this is probably the hardest part (for shops that aren't already doing mobile development). There are 3rd-party services that help bridge this gap: examples are https://pushover.net/ or https://boxcar.io/
If you're okay with a hosted solution and don't really want to deal with development or deploying a XMPP solution yourself, many of our clients have had good success with Slack (https://slack.com/)
[+] [-] bgaluszka|11 years ago|reply
[+] [-] raooll|11 years ago|reply
Disclaimer:- I personally work on chat server and personally prefer moongooseim to be one of the best available right now.
[+] [-] andrewjwu|11 years ago|reply
[+] [-] cookrn|11 years ago|reply
[0] http://www.getvines.org/ [1] https://github.com/negativecode/vines
[+] [-] geeknik|11 years ago|reply
Check your score on xmpp.net if you haven't already. ;)
[+] [-] pinktacobender|11 years ago|reply
used it on an old project. written in JAVA, not my favorite, but super easy to use and highly extensible.
[+] [-] mschirrmeister|11 years ago|reply
I picked it because of its clustering features and ldap support.
[+] [-] gdamjan1|11 years ago|reply
For ex, if I switch from 3G to Wifi on my mobile (or just loose connectivity) the server still thinks I'm online and will send messages over the TCP socket (that hasn't timeouted yet).
[+] [-] doppioslash|11 years ago|reply
[+] [-] debacle|11 years ago|reply