I've had a private Matrix server for me and a few family members for years now. It doesn't federate, and I'm afraid to try, because I run it on a potato computer and I've heard horror stories of Synapse federation consuming hundreds of gigabytes of space.
It's generally been stable and performant and really nice to use. The only problem is encryption: Element seems to forget keys sometimes and need to resync. And Matrix's whole e2ee system is arcane nonsense to anyone who's not extremely technical. Every time that happens, it's a long tech support call.
The solution is to just not use encryption on chatrooms, which is fine, but DMs have to be encrypted so it still comes up sometimes.