If you're trying to run more than one application on a server you probably ought to install dependencies in such a way that different applications can use different versions. Either using a toolchain-specific version manager such as nodenv (or nvm or asdf), or a more general tool like Docker.
It's pretty reasonable for projects to require a specific language version. Especially in this case as 16 is still the latest LTS version of Node.js.
EDIT: They even say "Ghost can work with other operating systems, node versions, and databases (particularly those supported by Knex) - but as a small team, we only document and support one narrow stack that we know works really well."
Can't really see how you can fault that.