A lot of people recommend Docker, but I will go further and say to specifically use Docker compose.
That way all the configuration is in a file that you can backup/restore. Updating is really easy, and you will never forget one of the random flags you need to set.
- PiHole - you can use the custom DNS to route domain names to you npm
- npm (Nginx proxy manager) - allows easy access to all your services hosted on one box
To add a couple of issues with Dynamic Libraries, and why someone would choose Static Libraries:
Like a lot of things, there are tradeoffs, and there is no universal correct choice.