What the lab is for
This is not a demo rack. Real services on the home network depend on it staying up, which makes the mistakes and fixes more honest than a throwaway test environment.
The main rule I impose on the setup is simple: if the environment cannot be rebuilt from the repo in under an hour, it does not count as managed infrastructure. That pushes me toward clean separation between config, state, and service boundaries.
Mostly it gives me a place to break things that actually matter and have to be fixed properly.
Outcome: A containerized setup that gets rebuilt fast when something breaks. The rebuild constraint is the whole point because it keeps the config clean.