We end up talking on Riot instead of hangouts roughly 1x / month, and I've had no troubles with it so far (except that the matrix server seems to want to use way more memory than I think it "should", so I have it running in a loop that restarts the server whenever the OOM killer kills it. It gets killed fairly regularly (>1x / hour) and I don't really notice it while using Riot).
edit: I don't use the e2e encryption stuff. I have an SSL cert and if chat messages are encrypted as far as the server (which I control), that's fine with me.
I launch my instance like this: SYNAPSE_CACHE_FACTOR=0.01 synctl restart /etc/matrix-synapse/homeserver.yaml
I run synapse on a machine with 1.5GB of total RAM and have had zero memory issues since limiting the memory usage with the above command.
while : ; do SYNAPSE_CACHE_FACTOR=0.01 python -B -m synapse.app.homeserver -c homeserver.yaml ; sleep 20 ; done
I'm not even using runit or anything; I set it up like this several months ago and haven't bothered touching it since because it's been relatively solid and reliable.Even at a "cache factor" of 0.01, my tiny DO droplet is still swapping and eventually the homeserver gets OOM killed.