Im using the ansible matrix playbook with synapse for 3 users and a bunch of bridges. I choose this because I used to setup my docker container and everything myself up but i absolutely dont want any downtime on my communications just because a config is not perfectly setup. If im out and about i want to still be reached. The playbook makes it really simple and takes care of everything i want. Even things like sliding sync are setup with one line added to the config. https://github.com/spantaleev/matrix-docker-ansible-deploy
Synapse runs absolutely fine for me. But im only hosting for a few users