I'm trying to decide if this is better than Zulip. They're both open source, backed by someone trusted, and I can run it on my own server.
We started up on Zulip when it came out a few weeks back, and it's been much better and more consistent. Streams and topics take a while to get used to, but they make it easier to have public conversations with some semblance of organization. If you don't like / can't afford Slack, or if you have privacy needs that make it a non-starter, I would recommend giving Zulip a try.
I've used Slack and HipChat previously, and AFAIK the integration methods are all roughly equivalent - post a message to a URL with a token.
Depending on the Scale, I'd personally go with an own Kaiwa Fork, backed by an Erlang MongooseIM Backend and LDAP.