I work on a company and built a self hosted server of Mattrix with Synapse and Postre to test it but I want to limit the users and the rooms. I want the users on the company to have a General chatroom, one room for every department and private messages without beeing able to send files privately. I like discord a lot but we have a policy to selfhost anything if possible to prevent in any way data leaks. With Mattrix we could limit the connections to VPN only if the user is not on our office but I cannot seem to limit user capabilities to create rooms for itself.

Is there something I am doing wrong or is there any alternative that has the same functionalities that discord has (text, video and file sharing with extense ways to limit each user by roles) that can be selfhosted and used as a business chat/intranet?