Ansible allows for creating "meta" config files which describe how to install, configure, and run several complicated interlocking pieces of software. The name comes from Ursula Le Guin's Hainish Cycle series which is much cooler than this peice of software. I used to use a popular ansible playbook for setting up the synapse matrix server, but I've finally just set it up the right way instead.
https://github.com/spantaleev/matrix-docker-ansible-deploy
These are the commands I use to wrangle it. Run them from inside the cloned repo after making your configs. Don't run with sudo, that's what the -K option is for.
Create new user:
ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=<your-username> password=<your-password> admin=<yes|no>' --tags=register-user -K
Ansible setup:
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all -K
Ansible start:
ansible-playbook -i inventory/hosts setup.yml --tags=start -K
Ansible check services:
ansible-playbook -i inventory/hosts setup.yml --tags=self-check -K
Ansible change config:
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start -K