You have correctly identified the core issue with open source.
Personally speaking, as inefficient as it is, I think that donations is the best way to support a self hosted open source project.
Followed by paying for licensing to be able to get support for the product.
If your project is open source any other restriction out there, you can’t really do because they can just fork and patch the software to remove the restriction.
Due to that restriction(or lack of), I’ve always personally seen most open-source projects to be more of a hobbyist or personal project then a project that someone wants to do to make money.