I anticipate my target customer will be also be cloud customers. So I have decided I'll provide them terraform code so they can deploy the infrastructure needed to run the app. I had wanted to move my dev environment from ClickOps to IAC anyway, so that has been a good motivation to do that.
Once the dust settles from the Broadcom buyout of VMware I'll probably look at create the IAC for an on-prem version too.
This might not work for you, hell it might not even work for me, but I'm going to give it a try.
Selling a hosted version has usually less friction (customer has less to do), but it also requires a lot more resources from your side (both time-wise to run/maintain the service, but it also costs you money to run it).
With my self-hosted analytics platform I decided to go self-hosted only, so the main focus now is making the installation and distribution as easy as possible. One way to do it, is to provide images to hosting providers and their marketplace, for example what I did with my DigitalOcean app: https://marketplace.digitalocean.com/apps/uxwizz
In this way, the customers can easily try the app, and install it.
The main drawback of self-hosting, currently, is that there are A LOT fewer people in your target audience. I think this will grow in the future, but at the moment, hosted services are still the easier sell.
Cloud - Pros : Easier to get started and scale if it is a self serve product. - Cost : Infra cost is added to your cost to serve customer.
With self-hosting, you also need to be sure your contract size is large enough to justify the time you'll have to put into support, which can be significant.
A good model for starting out imo is to offer cloud, but have a contact us option for self-hosting. Do self-hosting once you have a customer or two who wants it and is serious enough to pay for a contract that will cover support costs.
You retain control over the software and they have assurances the hardware is not shared
Also, better figure out early on whose job will be to get the product out (dev) and the customers in (sales).
What will your self hosted version look like? Both should be containerized and so apart from managing keys you shouldn't have a ton of overhead.