OK, this got sorted out. There is a domain allow list set inside Rocket.Chat. There was confusion on where a user's email address comes from. It comes from the Users view and not from the Email view. The email view is used only by the mail server.
Crux of the issue is that the indices name generated are too long. @alex-adestech pointed out to me that this issue only sorted out in MongoDB 4.4 and not even MongoDB 4.2. Searching through the rocket.chat issue tracker I saw only person hit this and nobody replied. Search further, I found that Rocket.Chat doesn't even support MongoDB 4.2. The releases page mentions the versions they test with - https://github.com/RocketChat/Rocket.Chat/releases. This got me wondering why we hit this issue. Well, the answer it turns out is that Cloudron generates 32 byte mongodb database names for apps. This in turn ends up affecting the length of the index.
I have made a fix now for Cloudron 5.6 that generates shorter names. (We have had to do something similar for apps using MySQL as well in the past).
@YurkshireLad The memory recommendation is the absolute minimum memory below which the app won't run reliably. Like even with 1 user, it won't run properly below that recommendation.
The amount of memory required to host 100 users... is hard to know. Usually, the answer to this depends on the how all these users user Rocket.Chat. If they use simultaneously and if they use it from multiple devices etc. Cloudron will give you a notification (email) if an app is running out of memory. So, you can just take it slow and increase the app's memory limit as you go. You can also look into the upstream project's memory recommendation for 100 users.
The answer depends on how many students are there in a class. mongo db also needs to be scaled up according to the number of instances you install. I don't have a specific recommendation but I would put atleast 2GB per app install. From what I have seen, rocketchat is not that CPU intensive, so 16 core should be OK for ~10-15 installs.
Ideally, if you can just contribute your changes upstream, then we can pull it down from there in the next release. Please see https://rocket.chat/docs/contributing/translating/ . Alternately, I can tell you how to build rocket.chat package from Cloudron source package until your changes are merged (it's very easy).