Moreover, even if everybody is a scrooge who can't just eat a negligible annual cost without worrying about it, you don't need everybody. You just need a few extra nodes to provide redundancy for you. Which could be your sister and your best friend and your father in law rather than some strangers you have to pay in a way that requires you to file weird tax paperwork.
You have a cafe/small business owner who already owns a smartphone: that device has a decent chunk of data plan allowance, CPU and memory.
They'd like a small site to promote their business online; so they install the web server app and it allows them to add, edit and publish basic content - a few images, some blog posts, etc.
Self-hosting like this means they don't have to sign up for a monthly subscription, their users aren't subject to any tracking (assuming there's none embedded in the content generated by the app), and service provision scales until they need to upgrade to a dedicated host.
The questions about radio and battery usage are totally valid, so perhaps those need more consideration (user superkuh has some suggestions there).
In short: the resources and capacity already exist and we've already paid for them. The question is whether we can re-use those rather than being sold more of the same.
Imagine a collection of independent storage pools managed by various entities that control access, e.g. the IT guy of your family, your employer, some free software collective, some small business association. You join one (or more than one) based on a referral or personal relationship or whatever criteria they want to use. Then you have an account with a quota in excess of what any ordinary person is going to require but which doesn't allow Bob to dump 500TB of garbage into the pool without first negotiating with the administrators.
At which point the altruistic donations, i.e. the idle capacity of the devices of everyone in the pool, are enough to handle everybody's non-abusive workloads.
Discoverability and routing is certainly a question too. Something like ngrok could help there, with good network sandboxing on the user's local device.
There'd no doubt be times when the site would become popular enough that a single smartphone wouldn't be suitable and load-balancing the requests could be required.
ngrok only works because there's a company willing to proxy someone's traffic for free. In that sense "using ngrok" doesn't solve the issue, it only pushes the problem to someone else.
Sometimes you have to make do with what's available currently while preparing the future possibilities.
Phones are not servers.
Even ignoring this issue, it would open your phone up to getting DDoSed by strangers on the internet.