I Run 25 Websites, 10 Databases, and a Fleet of Apps for $0

Share
I Run 25 Websites, 10 Databases, and a Fleet of Apps for $0

I just pulled an honest inventory of everything I have running on the internet. Here’s the count.

Twenty-five websites and apps. Fifteen small always-on programs doing background work. Ten databases. Eight buckets of stored files: photos, video, generated images. A few real-time apps, the kind where the screen updates live. Fourteen domain names.

Some of it is real products with real users. Some is personal. Some I forgot was still up.

The bill to host all of it is zero.

The only money that leaves my account is for the domain names, and even those I keep cheap. Everything else runs on free plans. Not trials. Not “free until someone actually visits.” Free, at real scale, for years.

That sounds impossible because almost every other way of doing this charges you for exactly this. So let me walk through all of them, with real 2026 prices, and then show you the setup that costs nothing.

Option 1: the stack everyone reaches for

If you learned to ship in the last few years, you probably reached for some version of this: Next.js (a popular React framework) hosted on Vercel (the company that makes Next.js and hosts it in one click), with Supabase (a hosted Postgres database with logins and file storage bolted on) underneath.

It’s a great stack. It’s also the one that bills you.

Two catches carry the whole thing.

Vercel’s free plan forbids commercial use. The moment a project makes money, or is even for a business, you owe $20 a month. A good chunk of what I run is commercial, so on Vercel that would be Pro, non-negotiable.

Supabase is where it quietly balloons. The $25 Pro plan covers one active database’s compute. Every additional database runs its own dedicated compute instance, starting around $10 a month each. I run ten databases. On Supabase that isn’t $25, it’s $25 plus nine more instances at roughly $10, so about $115 a month before storage and bandwidth. The free plan won’t rescue you either: it caps you at two projects and puts them to sleep after a week of quiet.

Option 2: go straight to a big cloud

Maybe you skip the friendly wrappers and go to the source: AWS (Amazon), Google Cloud, or Azure (Microsoft). This is where serious companies run. It is not where a person with twenty-five side projects should run, and here’s the honest reason why.

The big clouds don’t sell you a plan. They sell you a few hundred individual services billed by the unit, and you assemble your own stack from them. There’s no “$20 covers it” tier.

You rent a database instance here, a function runtime there, storage over here, and a bill assembles itself from parts. Doing that well is a genuine skill, which is why “cloud cost engineer” is a job.

Three specific traps make them a bad fit for small stuff:

The free tier expires. Amazon’s free tier mostly lasts twelve months, then switches to full price. A few pieces stay free forever (AWS gives you a million function calls a month indefinitely), but the databases, the ones that actually cost money, start billing after year one.

Databases have a floor. To keep a single small database running around the clock, you rent an instance with a monthly minimum. Cheapest real options run about $15 a month on AWS, about $9 on Google Cloud, about $5 on Azure. Fine for one. I have ten. That’s roughly $50 to $150 a month in database rent alone, for databases that mostly sit idle.

Egress is the tax nobody reads. Egress is the fee you pay every time data leaves the cloud: every image loaded, every video streamed, every file downloaded. The big three all charge it, and the rate barely differs: about $0.09 a gigabyte on AWS, $0.12 on Google Cloud, $0.087 on Azure, after a small free slice.

It sounds tiny until an app gets popular, and then it’s the line item that eats the budget. It is the single most hated fee in cloud computing, and all three charge it.

The big clouds are extraordinary machines. They’re also built for teams with a finance department, and the complexity itself is a cost.

Option 3: the budget shared host

At the other end sits Hostinger, and the whole bargain-hosting aisle it represents. Their ads shout $3.79 a month for unlimited websites, a year of a free domain, 24/7 expert support, and more, which looks like it beats everything, including free. But once you read the terms, it doesn’t.

That price only exists if you pay for four years up front, in one charge. Pay month to month and it’s $18.99 from day one. And the four-year rate is the introductory rate, so when it renews you’re at roughly $16.99 a month for the same thing. The low number is bait, same as GoDaddy’s one-cent domains. (All of these numbers were collected at time of publishing).

The deeper issue is what you’re actually renting: one shared server, a single modest computer you share with strangers. When your neighbors get busy, you get throttled. Databases are included, which is a genuine point in its favor, but the box is built to run a WordPress site or two.

It is not a place to run twenty-five separate apps, fifteen background programs, and live real-time services. Wrong shape entirely. For one simple brochure site, it’s fine. For a fleet, it falls over.

Option 4: what I actually use

I build my sites with Astro (a framework that compiles your project down to plain HTML files, so most pages are just static files with nothing running behind them) and put everything on Cloudflare. Astro is less machinery (and debugging) than Next.js, but that’s a side benefit that I could write a whole another article about (stay tuned).

The real reason is cost. Every piece I need has a direct Cloudflare equivalent, and each one is free at the scale I actually use.

Two rows change the whole equation.

“Unlimited visitors” on Pages is the one people don’t believe. Most hosts start metering the second you get popular. Cloudflare doesn’t count heads on a static site. A page of mine could get a million views tomorrow and the number stays zero.

And look at the R2 row: no egress fees. That’s the same download tax that AWS, Google, Azure, and Supabase all charge, set to zero. For anything that serves a lot of images or video, that single difference is worth more than everything else combined, and it’s the one cost that would otherwise grow every time something of mine succeeds.

The rule that keeps the number at zero

That doesn’t mean everything ever is free on Cloudflare.

Some of my systems do heavy, constant work, the kind that needs a machine running around the clock. Instead of renting that in the cloud, I let it run on my Mac at home (could also easily be a Mac Mini). Keep it simple, especially for personal automations.

What lives on Cloudflare is the stuff people need to reach from anywhere: the sites, the data, the files, the live apps. The heavy lifting nobody touches directly stays home.

If a piece of work is truly free on Cloudflare, move it there. If it would cost money, keep it local (unless you want to pay). And your AI can certainly tell you when to do what.

The head-to-head

Here’s my actual footprint, priced on every option. These are starting list prices for always-on, commercial projects at my scale. A hobbyist with two toy projects could stay free on some of these, but that isn’t what I’m running.

Every other option has either a per-database floor, an egress meter, or a shared box that buckles under a real fleet. Cloudflare has none of those. Same work, same scale, and the only option where growth doesn’t raise the bill is the free one.

That’s the real kicker. On every paid option, the more popular a project gets, the more egress it burns and the higher the bill climbs. On Cloudflare it stays flat at zero. Success is the thing that punishes you everywhere else and costs nothing with this setup.

The people this actually costs: startups with no users

Here’s who gets hurt worst, and it isn’t the big companies who can afford it. It’s a two-person startup building their first version, before a single user has signed up.

They reach for AWS or Google Cloud on day one, because that’s what “real” companies use and it feels responsible. So now they’re paying database rent, and load-balancer rent, and a dozen little metered services, to serve an app that nobody is visiting yet. They’re burning three or four hundred dollars a month to host a prototype with zero traffic. I’ve watched teams do it, spending their tiny runway on infrastructure built for a scale they’re nowhere near.

An early product with no users has almost no real hosting needs. It’s a handful of pages and a database that barely gets touched. That’s the exact shape the free tiers are built for. The moment to move to a big cloud is when scale is an actual problem you have, not a costume you put on hoping to grow into it. Paying enterprise prices to look like an enterprise is the most common and most avoidable money leak in early building.

Start free. Graduate when something actually forces you to. Most things never will.

You pay for domains no matter what, so pay less

Here’s the one cost you can’t dodge. A domain name, the readable address like example.com, costs money on every option above, because none of them give away names. So the only question is who you buy from, and that choice matters a lot.

GoDaddy is the one to avoid. The trick is a rock-bottom first year ($0.01 for a year!) that jumps wildly based on the domain + a steady drip of add-on offers at checkout.

Cloudflare sells names at wholesale with zero markup and free privacy, which is why I keep mine there.

There’s also a convenience reason to keep the name where the sites live.

If your domain is registered somewhere else and you host on Cloudflare, connecting the two means a name server dance: you log into the registrar, repoint the domain’s name servers (the setting that says which company answers “where does this address go?”) to Cloudflare’s, then wait somewhere between minutes and a full day for that change to spread across the internet before your site loads on its real address.

It works, people do it constantly, but it’s a fiddly step that trips up beginners and occasionally breaks email in the process. Register the name at Cloudflare and there’s no dance. It’s already pointed at your stuff, and a new site goes live on its domain in seconds.

So the honest headline: infrastructure, free. The only thing you truly buy is the name, and even that you can buy at cost. There’s also an optional $5-a-month Cloudflare tier if you want the heavier tools, but you don’t need it to start. Everything I do is on the free plan.

Why this works

None of this is a loophole. Cloudflare makes its money from enterprises moving serious traffic. To get them in the door, it hands everyone else a genuinely generous free tier, and your small project rides on infrastructure built for companies a thousand times its size. They want you building on it.

The other options are all easier to start with, which is exactly how the bill sneaks up. Vercel plus Supabase is a beautiful five-minute setup that a little commercial success turns into thousands a year. The big clouds are where you end up when you outgrow that, and they price like it. GoDaddy hooks you with a one-cent first year.

The version I run takes slightly more thought up front. In return I have twenty-five sites live right now, I forget half of them exist, and not one costs me anything to keep online. So I never take anything down, and I never think twice about shipping the next idea.

Build the thing. Hosting stopped being the hard part a long time ago.

I promise this isn’t sponsored by Cloudflare (but it could be).