For a surprising number of things, my previous desktop, running Linux, confined to my local network, is perfectly fine.
For a number of other things, a Raspberry Pi, with a dedicated disk image (ISO), confined to my local network, is fine.
Surprisingly often, a not-at-all-dynamic dynamic DNS solution gets the job done. I follow the first half of the DynDNS guide, and then hard code my preferred IP, and skip the rest. It’s inconvenient when my IP changes, but that happens a lot less often than most folks imagine. Most DNS providers have provided this to me for free after I bought my domain name from through them.
For my public personal portfolio, GitHub pages works fine.
For additional silly static sites, AWS S3 and AWS CDN get the job done for about $3 per month.
When I need to do public facing database stuff, I get a virtual private server, not from Amazon or Microsoft, who both way overcharge for small apps.