If your goal is to host services, I would recommend looking into Docker, and eventually Podman. Containerization lets you keep the configuration wherever you want, personally I use a dedicated a directory for each service.
Also, please note that a container is not a VM. It’s just a way to keep everything in one place.
Ah I see… I keep container configs in a specific directory, which contains one directory per-service, which contain all the config files + a compose.yml file to place them in the correct path in the container. I could commit everything to Git if I wanted to.
Regarding network and firewall, you could make a symlink to a versioned file and keep your config with the containers. Same for firewall rules.
I’m not sure what you mean by file sharing permissions. With containers you could give a different user to each service.
If you are worried about memory and disk usage, another option I’ve been exploring recently is using OverlayFS, which, among other things, allows you to inject a directory at a specific path. Again, this would let you keep all your configs where you fancy the best. I use it through Bubblewrap.
Anyways I realize that what I just described is far from standard… hopefully other users will suggest something less custom.