Все предложенные варианты имеют право на жизнь.
Но я за контейнеризацию, т.к. плюсы размещения в контейнере очевидны, вся конфигурация приложения при следовании лучшим практикам находится в одном месте, например:
/opt/docker-compose/
в котором есть список ваших приложений, например:
nginx-reverse/
certbot/
nodejs-front/
nodejs-back/
something-else/
Такая компоновка обеспечит более легкий деплоймент в пайплайне (ci/cd), да и ручной перенос с хостинга на хостинг. Локальное тестирование тоже проще осуществить.