I work with a mutual aid group that currently handles communications with Signal. This is acceptable from a security and privacy perspective, but severely lacking from a discoverability and reference perspective.
I’m looking for a text chat (it’s okay if it also supports voice and or video, but we don’t really need that) that is kinda similar to Slack or Discord regarding rooms, but that can be self hosted (obviously). Our general workflow is to allow new volunteers to join our “General chat” and then either be invited or join via open link any of the working groups they fancy. What I’m hoping for is a software that can allow us to have all those working groups in a side bar to increase engagement with some of the more behind the scenes options. I’d also love to have the ability to easily retain posts or bookmarks so we can build up quick references where we actually communicate. I haven’t found a clean way to handle the general chat for 2 reasons: 1) we would like to keep it open in such a way that anyone who wants to can join, and 2) there’s currently over 800 people and we regularly add more.
All told that makes the bulleted requirements for what I’m hoping for be:
- text chat software
- rooms/channels
- ability to pin posts
- ability to add arbitrary bookmarks or links
- ability to have rooms either public or private
- ability to have at least one room anyone can join without prior approval or invite
- ability to support at least 1000 users (not necessarily concurrent client connections–that can probably be about 50)
- ideally the communications can be encrypted
What I don’t need but might be nice:
- voice
- video
- file share
- polling
- reminders
- plugins
We value data ownership extremely highly hence looking for self hosting options over Slack or Discord. It’s okay if the general chat exists in a separate server so long as the main server with all the other rooms can federate with it somehow.
We do have some people with IT experience, and I am software engineer of over a decade so technical barriers in setting it up shouldn’t be an issue, but account creation and use for volunteers needs to be dead simple.
If anyone knows of something like this (or even a FOSS tool we may be able to extend functionally to fit the last 1 or 2 bullet points) I would love to hear your suggestions.
Thanks so much!
I think Matrix offers most of the functions you need, “Discord but selfhostable and with E2EE” is pretty much what the Matrix devs are going for. Though it kinda has issues with ease-of-use, performance and stability, so TBH I doubt it’s going to work for you.
Yeah, Element on Matrix was the most promising thing I’d seen so far, but the ease of use and the community edition being capped at 100 peeps were the most concerning aspects for me. I might dig into it some more and see what a couple other volunteers think of it.
The 100 users for the Community edition is more of a suggestion and is not a hard cap, according to this answer: https://github.com/element-hq/ess-helm/issues/1027
E2EE with large groups is a hassle because you have to do messy key changing protocols every time somene leaves the chat (since you want to invalidate their keys when they leave). If you don’t mind the server (self hosted) seeing the plaintext that’s a lot simpler. Tbh I’ve simply used nextcloud chat or irc for stuff like this. I can’t really recommend nextcloud for various reasons but it was easy for me to set up a chat when I wanted one, since I already had a nextcloud server. Matrix is supposed to be the post-IRC IRC so I’d check into it, but I haven’t used it so far. I’m of the impression that Matrix isn’t E2EE (the server can see the private stuff) but maybe I’m wrong. I think Signal tries to be E2EE but has other problems, including that MLS (the E2EE mechanism) inherently requires a client app instead of being usable with just a browser.
I think Signal tries to be E2EE but has other problems, including that MLS (the E2EE mechanism) inherently requires a client app instead of being usable with just a browser.
I’m having trouble imagining what in Signal’s implementation of the Double Ratchet, or any part of RFC9420 Message Layer Security, would inherently require a client app. Perhaps you mean that there is no readily available browser-implemented API for carefully managing secrets? Even in that situation, all the libraries needed to implement the RFC can be compiled as WebAssembly or to JavaScript (with the assumption that the browser and OS are outside a malicious actor’s capabilities) and ran that way.
To be clear, I’m not suggesting Signal is perfect, and papers about problems found in Signal and other apps are readily found, like this one from last month. But with that said, it does appear that OP’s described use-case involving hundreds of users in group chats is very much not what Signal was designed for,.
https://github.com/fluxerapp/fluxer
not sure about the security tbh. but it’s very discord like
zulip seemed really nice and mature last i checked, it was the best option i could find last time i seeked a replacement for some small discord group i’m part of.
Hello,
I believe Matrix would be the most suitable candidate for your use case. The protocol supports both public and private (invite-only) rooms. It also has spaces, which are collections of rooms that helps with organisation (and yes they do exist in the sidebar). Voice/video calls can be done through Element Call which is integrated in many clients, and are usually quite performant. Pinned messages and polls are natively supported, and there exist various bots for reminders and other little neat features (see the Maubot plugins).
Matrix is also federatable like email, so you can extend your community to people on other servers in the network, too. Be sure to employ moderation tooling though, of which the ecosystem has plenty of and are improving every day. I also recommend testing out non-Element clients (such as Sable, Cinny, or SchildiNext) to see which one fits best with your organisation.
In another comment, you have mentioned the limit of 100 users. I believe this only applies for the Element Server Suite freemium solution, and so I ask, why not use another open source solution? My suggestion would be Continuwuity, a homeserver written in Rust with a very active community behind it. Continuwuity is generally considered much more lightweight than alternatives, and have been seen supporting sub-500 users just fine on a machine with 8 gigs of memory.
There’s some other QoL features of Continuwuity you may be interested in, like auto-joining to a room after account creation, or registration via admin-issued tokens. It can also integrate with your favorite single-sign-on solution via OIDC as well. So yeah, feel free to ask more about it here, or take the next steps in the support room!
There exists other solutions as well, but I think they are not the best candidates for few reasons. XMPP (i.e. the protocol behind Snikket) is more lightweight, but its clients still generally lack support for group calls, pinned messages, and polls. Fluxer may have a better UI, but it is not federated from the ground up which can lead to problems. I don’t think Nextcloud Talk offers federation either(?), but I believe Nextcloud to be a quite heavy, “bells and whistles included” software suite in general which may be too much for your use case.
Don’t know if Snikket pass all your requirements, but have a look:
Take a look at Mattermost as well. https://github.com/mattermost/mattermost
The free edition of Mattermost is artificially crippled [1]. Amongst other things, only the most recent 10k messages will be displayed, older messages will be hidden (borderline ransomware). They took a bad turn when they decided to start LARPing as a US defense contractor company (I mean look at this homepage [2], wtf). I wouldn’t recommend it for a new deployment.


