Revolt is self-hostable. It isn't E2EE but if you're controlling the users anyways transport encryption should be enough since you have control over the data anyway.
I tried to set this up recently but failed. I wish there was a up to date noob friendly guide for this. IIRC some containers, mongodb was one of them, didn't go healthy.
I never actually tried myself, but it seems like the documentation certainly could be improved. I saw that they provide a Docker compose, so perhaps that could be of help if you didn't use that the last time around. They are currently in the process of cleaning up the projects to make things more maintainable and easier to get an overview, so let's hope things might improve a bit. I think for me personally, this certainly seems like the most promising Discord replacement because it feels like a set and get solution for non-techy people trying to switch instead of relearning everything like with Matrix.