I've been running my own Synapse instance (the server-side part of Matrix) for a few months now, private, just for friends and family.
Server-side set-up and maintenance is a bit finicky but not bad if you are comfortable with Linux server admin-stuff.
Client-side is very polished, although still somewhat unintuitive for non-techie folk, but not horrible and getting better every month.