Zulip is a powerful, open source group chat application. Written in Python and using the Django framework, Zulip supports both private messaging and group chats via conversation streams.
Zulip also supports fast search, drag-and-drop file uploads, image previews, group private messages, audible notifications, missed-message emails, desktop apps, and much more.
Further information on the Zulip project and its features can be found at https://www.zulip.org
You can run a Zulip server for a small site on a system with 2G of RAM, but for production use with more than a few dozen users, we recommend a system with 4GB of RAM or more.