I get it may sound complicated to use DreamCompute and you’re right: it is
You may want to try to use the experimental UI on https://cloud.dreamhost.com if you prefer to reduce the amount of options.
There is not the way to do things almost anywhere. All depends on what your needs are, your habits, knowledge, time available, etc. If I understand you correctly, you have multiple customers and for all of them you use similar technology. It may make sense for you to build a massive infrastructure to be shared among all of your customers. This approach has the advantage that you only have to manage one environment but if anything goes wrong with the system, all your customers are affected.
Another approach is to build a set of recipes to create similar environments for each customer, using things like Ansible or Terraform. This requires you to learn more tools but it gives you more flexibility. It’s all about choices, there is no right-wrong.