I've had a little snikket (prosody docker, xmpp) sever running for a year. monacles or cheogram are just fine, playing games with the fam in the chats is really cool.
dino or gajim on desktop.
calls work well, but android doesn't treat it as an actual phone call (home assistant automations based on phone state won't work)
and I've just now gotten direct messaging tied into home assistant, so i can use it for general notifications. it'd be awesome to get encryption though.
omemo is a bit of a pain, but they've all caught on.
but yeah i mean, very little hassle
certainly brought my audiobookshelf to its knees when i decided that that lxc was gonna go ahead and be the jellyfin server also