The pitch for managed cloud hosting is seductive: push to Git, get a URL, never think about servers again. Vercel, Netlify, Render, and Railway have all built thriving businesses on this promise, and for good reason — for solo developers and small teams who want to ship fast, the convenience is real. But once you cross a certain traffic threshold or need a backend that isn't a serverless function, the monthly bill can balloon from $0 to $200+ in a single billing cycle. This article is an honest look at when self-hosting on a cheap VPS actually wins, and when the cloud tax is worth paying.
Let's start with the math. A 2-vCPU, 4GB RAM VPS from Hetzner, OVH, or Contabo costs between $4 and $8 per month. For that price, you get a machine you fully control, on which you can run a Next.js app, a Postgres database, a Redis cache, a Plausible analytics instance, and a Mailcow mail server — simultaneously. The equivalent managed stack (Vercel Pro for the app, Neon or Supabase for Postgres, Upstash for Redis, Plausible Cloud for analytics, Fastmail for email) easily runs $80-$150/month, and that's before you factor in bandwidth overages. The catch, of course, is that you have to set it all up yourself.
The break-even point is usually around 50,000 monthly visitors or one backend service that needs long-running processes. Below that, Vercel's free tier or Hobby plan is genuinely the right call — you save time, you don't pay anything, and your deploys are fast. Above it, the calculus flips. Vercel's bandwidth pricing ($40 per 100GB on the Pro plan, $100 on the Hobby overage) is roughly 10x what a CDN like Bunny.net charges ($0.01/GB with a 14-day free tier). If your site serves a lot of static assets — images, videos, downloads — this difference alone can pay for your VPS several times over.
Self-hosting also unlocks tools that the managed platforms simply don't offer. Want to run n8n for workflow automation? A self-hosted instance on your VPS costs nothing; n8n Cloud starts at $20/month for 2,500 executions. Want Gitea instead of GitHub for private repos? Self-hosted is free; GitHub Organizations is $4/user/month. Want to ingest and search logs with OpenSearch? Self-hosted on a $10 VPS handles millions of events per day; Elastic Cloud starts at $95/month. The pattern is consistent: managed services charge a premium for the convenience of not having to think about ops, and that premium compounds with every service you add to your stack.
So when should you stick with managed cloud hosting? Three scenarios: first, if your traffic is unpredictable and bursty (a Product Hunt launch, a viral post), serverless platforms scale infinitely without you doing anything — your $5 VPS will fall over at 10x its normal load. Second, if your team has zero DevOps capacity and your deploys need to 'just work', the cloud tax buys you not having to wake up at 3 AM to restart a crashed container. Third, if you're building a quick prototype or weekend project, the speed-to-first-deploy of Vercel or Netlify is unbeatable and the free tier is generous enough that you won't pay anything.
The honest recommendation for most developers reading this: start on the managed platform that fits your stack (Vercel for Next.js, Railway for full-stack, Fly.io for containers), watch your bill like a hawk for the first three months, and the moment you cross $30/month consistently, audit which services are eating the budget. Usually it's one of: bandwidth, database rows, or function invocations. At that point, migrating just that one service to a self-hosted equivalent on a cheap VPS typically cuts the bill by 60-80% without meaningfully increasing your ops burden. Full self-hosting is a lifestyle choice; selective self-hosting is just smart engineering.