Considerando um projeto pessoal de pequeno porte, é possível adotar abordagens distintas para a sua configuração. Pode utilizar uma máquina única e implementar a instalação do Docker, o que permitirá executar os três projetos em containers separados, proporcionando um maior controle e isolamento das aplicações individualmente. Com essa abordagem, cada aplicação pode ser executado em um ambiente isolado, facilitando a gestão e evitando possíveis conflitos entre eles.
Pode instalar diretamente na máquina o gestor da base de dados, as linguagens de programação e o servidor web, sem a utilização do Docker.
Isso pode ser adequada para projetos de menor escala, sendo que em grandes projetos muitas vezes requerem uma arquitetura mais complexa, onde as diversas partes da aplicação são separadas em diferentes containers, o que permite melhor escalabilidade e facilita a manutenção do projeto no longo prazo.
Caso a sua máquina precise de mais recursos, poderá instanciar mais maquinas e fazer um balancemento de carga, poderá utilizar o nginx para isso, assim é mais recomendado utilizar mais maquinas uma para cada coisa pois se precisar de fazer o balanceamento de carga de por exemplo da aplicação back-end não terá de adicionar o front-end e a base de dados a essa máquina.