What tech stack would you suggest for a self hosted solution that will be easiest to contain and manage by customers?
It doesn't matter. Create a docker image and be happy with your customer happy.
I will not be your happy customer if you try to shovel a docker container at me.
Docker is just the glue. If it can be deployed through Docker, it can be deployed without it, if you prefer. So yes, you'll probably be happy too. Deploy the way you want.
Okay... I actually don't mind if it's part of the CI/CD or deployment process, but it's not going to be running in prod or especially in local dev.
This. It really depends what you're building. People saying WordPress don't know what exactly you're making so they shouldn't presume WordPress would even work for your use case. For example you could be making the next Google Analytics alternative like Plausible, doesn't mean you'd use WordPress.
There's a couple aspects of your customer and/or solution that would impact what your options are.
If the architecture of your solution can be containerized into a single docker image, as @MatheusFreitas suggested in another comment, this would definitely be the ideal.
I've personally been enjoying working with the tech stack for Next.js (React.js + Node) https://nextjs.org/and hosting on Vercel https://vercel.com. Vercel provides a pretty intuitive continuous deploy mechanism where you can connect your repository account to your Vercel account to enable automatic deployments. I could see a case where you develop an app for Vercel and then just have your customer clone your apps repo and configure the deploy on Vercel (all of which could be done within an hour maybe)
However, if the architecture of your solution depends on multiple cloud infrastructure components (i.e AWS S3, Lambda, RDS, etc) interacting with each other, then your tech stack might want to include infrastructure as code through something like Terraform https://www.terraform.io/ or Serverless https://www.serverless.com/. By shipping application defined infrastructure as code within your deliverable, you can fast-track time to deployment within a different cloud provider account, to reduce deployment time for your customer's dev team.
With these scenarios in mind, a self-hosted solution does seem to motivate the development of a monolithic, centralized application. However this approach goes against best engineering principles of modularization of components. These play at odds in this case and should of course be considered on a case-by-case basis to determine how much in each direction it makes sense to go.
Somewhat of a tangent, but it might be worthwhile to consider how other open-source SaaS offerings make themselves available as a self hosted solution. The Ghost blogging platform comes to mind, they have good documentation on the different methods they offer for self-hosting (https://ghost.org/docs/install/), some of which or all may apply to what you're trying to do. Their self-hosted solution involves a Node.js application and a MySQL database if I remember correctly.
I think it really depends on architecture of the self hosted application and the components that it relies on .. of course in addition to the who the customer is
IMO It really depends on who your customer is and what infra do they have. If they’re on AWS / GCP / Azure then yes some docker image / docker compose is best. But otherwise maybe a single executable (like compiled Go code) is better.
wordpress
You cannot go wrong with WordPress way - PHP/MySQL. Depends on who your customers are though.