
Cloudflare Containers Hit GA, Indian VPS Bills Still Win
The Workers platform now runs full Docker images, but at standard-3 prices a Bengaluru SaaS pays 14x more than an Oracle ARM box.
Containers are billed for every 10ms that they are actively running. Idle containers only pay for memory and disk.
- GA on 13 April 2026 was real. Active-CPU billing is real. 15,000 concurrent lite instances per account is real. None of it makes a CF Container cheaper than an Oracle ARM Always Free VM for an alwa…
- A standard-3 instance running 24x7 lands at roughly USD 158 per month before egress. The same workload on a paid Hetzner CAX31 is EUR 15.99. On Oracle Ampere A1 Always Free it is zero.
- Cold starts sit in the one to three second band. Acceptable for a webhook fanout. Unacceptable as a primary API surface for a paying SaaS audience in Bengaluru.
- Move the spiky 10 percent of your workload, not the boring 90. Hybrid wins. Full migration is a vanity move.
The founder runs a 14-person field-ops SaaS out of an HSR Layout co-working desk. Last Wednesday he stared at his Hetzner invoice. INR 2,400 every month since November. Next.js, PocketBase, cron worker, Redis cache, all on one CAX21 box.
He had just read the Cloudflare Agents Week recap. Containers hit GA on 13 April 2026. Region:Earth. Pay only when the CPU burns cycles. By 11:47 he had a wrangler config and a question. Was the Hetzner bill obsolete?
It is not. Here is the math, the carve-outs, and the migration debt nobody is writing down.
What Actually Shipped at GA
Cloudflare put Containers into public beta in late June 2025. The nine-month run-up shipped four things that mattered for GA on 13 April 2026.
Active-CPU pricing. Billed in 10 ms slices, only when the CPU burns cycles. Idle containers pay only for memory and disk. Genuinely different from a VPS where CPU is paid for whether it runs or not.
Higher resource ceilings. Standard-4 tops at 4 vCPU, 12 GiB RAM, 20 GB disk. Covers most Node, Python, Go workloads small teams ship. JVM-heavy stacks still out of bounds.
Service bindings by hostname, Docker Hub support, SSH for debugging, persistent code interpreters under the Sandbox SDK. Platform is real, not a demo.
What did not ship: no built-in autoscaling, no load balancing primitives, no GPU, no persistent disk, no swap, no guaranteed uptime on any single instance. Documented constraints in the Cloudflare FAQ, not opinions.
The Pricing Math, in Rupees
Here is the per-second rate sheet straight off the Cloudflare Containers pricing page.
| Resource | Rate | Workers Paid Included |
|---|---|---|
| vCPU | USD 0.000020 per vCPU-second | 375 vCPU-minutes/month |
| Memory | USD 0.0000025 per GiB-second | 25 GiB-hours/month |
| Disk | USD 0.00000007 per GB-second | 200 GB-hours/month |
| Egress (NA, EU) | USD 0.025 per GB | 1 TB/month |
| Egress (other) | USD 0.04 per GB | 500 GB/month |
The Workers Paid plan is USD 5 per month and is the floor. Egress from India falls under the "other" tier at USD 0.04 per gigabyte after the included 500 GB.
Convert an always-on workload to a monthly bill. A standard-3 instance, 2 vCPU and 6 GiB RAM, running every second of a 730-hour month, lands near USD 158 before egress. Roughly INR 13,200. The Hacker News thread on the same calculation pegged it at "USD 51.84 vCPU plus USD 103.68 memory plus USD 2.90 disk."
The same shape on Hetzner CAX31, 4 vCPU and 8 GiB RAM, costs EUR 15.99 a month from April 2026. Roughly INR 1,500. On Oracle Ampere A1 Always Free, 4 OCPU plus 24 GiB RAM, the cost is zero as long as the region has capacity.
Workload by Workload, Who Wins
This is the table that should sit on every Indian operator's desk before they touch wrangler.
| Workload | CF Containers monthly | Oracle ARM Always Free | Winner |
|---|---|---|---|
| Next.js front, 50K MAU, idle 80 percent | INR 8,000 to 12,000 | INR 0 | Oracle ARM |
| PocketBase backend, 24x7 | INR 12,000 to 15,000 | INR 0 | Oracle ARM |
| Cron worker, runs 6 mins/hour | INR 350 to 500 | INR 0 (same box) | Oracle ARM |
| Headless Chromium fleet, bursty 200 req/min | INR 2,000 to 4,000 | INR 1,500 plus pain | CF Containers |
| FFmpeg transcode jobs, ad hoc | INR 800 to 1,800 | INR 1,500 fixed | CF Containers |
| Sandboxed user code execution | INR 3,000 to 6,000 | INR 1,500 plus security debt | CF Containers |
| Long-running ML inference daemon | INR 18,000 plus no GPU | INR 0 to 4,500 | Oracle ARM |
| Global-routed API | INR 4,000 to 8,000 plus egress | INR 1,500 plus latency | CF Containers |
The pattern is obvious. Cloudflare wins where the workload is spiky, parallel, geographically spread, short-lived. Oracle ARM and Hetzner win where the workload is steady, single-region, stateful, boring. Most Indian SaaS workloads are the second kind.
Where the CF Stack Loses
Three things will trip any operator who migrates without thinking.
Ephemeral disk on every sleep. The CF FAQ is explicit. When an instance sleeps, the next start has a fresh disk from the image. Fine for stateless API workers. Disqualifier for SQLite-backed apps, PocketBase, anything writing local files between requests.
No swap. Out of memory means immediate restart. On a CAX21 with a 4 GiB swapfile, a temporary spike survives. On a CF Container, the same spike kills the process. Profile peak RAM before you migrate or expect restart loops.
No region pinning that helps you in India. Containers deploy to "Region:Earth," with Cloudflare picking the warm location closest to the request. CF has PoPs in Mumbai, Chennai, Delhi serving Indian users in under 50 ms. But the container itself may not land in Mumbai. For an India-only audience the latency edge over a Bengaluru Oracle ARM box is small. The cost premium is large.
The Migration Debt Nobody Quotes
If your current stack is Next.js plus PocketBase plus a cron worker on Coolify, here is the real dev cost to move.
PocketBase stays. Persistent disk requirement. CF Containers cannot host it. Keep Coolify on Oracle ARM or pay for managed Postgres. Either way the "one bill" pitch dies.
Next.js can move. Standalone output plus a Dockerfile is two hours. Sessions and auth must move to KV, R2, or D1. Another day if you use server-side sessions.
The cron worker fragments. Workers Triggers handle the schedule. The actual job, if it needs more than 30 seconds of CPU or RAM above 128 MiB, runs in a Container. Two systems to monitor where there was one.
Wrangler config, GitHub Actions deploy, secrets, log aggregation, all net new. Budget five to eight working days plus a week of dual-running. That is INR 60,000 to INR 1,20,000 of engineering time to save, in the best case, INR 800 a month. Payback period over a decade. The deploy pipeline carries its own hidden meter too: a busy multi-repo setup will quietly burn through GitHub's free Actions minutes before the cycle resets, and the cheapest fix there is also to move the build off GitHub-hosted runners.
The Bengaluru Verdict
The HSR Layout founder kept his Hetzner box. He bought the Workers Paid plan anyway. He moved exactly two things to Cloudflare Containers.
The Puppeteer fleet that scrapes 14 vendor portals every morning for inventory reconciliation. Used to crash the Hetzner box every other Tuesday. Now runs on standard-2 instances for INR 1,800 a month, parallel, never crashes.
The customer-uploaded image transcode pipeline. Used to backlog when three users uploaded at once. Now fans across containers and clears in under 30 seconds per file.
Total CF bill: INR 4,200. Hetzner: still INR 2,400. Combined infra cost up about 75 percent. Product meaningfully more reliable. The hybrid pattern looks like this. Not migration. Augmentation.
Decide in 30 Minutes
Run this checklist before you write any wrangler config.
- Pull
htopon your VPS. Average CPU below 20 percent and steady RAM means idle-heavy. Stay on Oracle ARM or Hetzner. - Grep for
fs.writeFile,sqlite,pocketbase, localredis. Any local disk dependency stays on the VPS regardless. - List jobs that are bursty, parallel, stateless, under 30 seconds. Those are CF Container candidates. Nothing else.
- Multiply candidate jobs by daily runs, average CPU seconds, average RAM. If a single workload crosses INR 3,000 a month on CF, a dedicated VPS for that job may be cheaper.
- If 95 percent of your users are in India, the Mumbai PoP advantage is mostly already yours via CF Pages and Tunnels.
CF Containers reaching GA was not the death of the Indian VPS. It was the arrival of a sharper knife. Use it on the workloads that bleed your VPS dry. Leave the rest where the math wins. The same instinct applies to the rest of the stack: spend on the layer your audience actually touches, which for a lot of Indian content properties means the Bing index rather than Google, not the layer the deck says you should.
The INR 2,400 Hetzner bill is not obsolete. It is the foundation. The five-dollar Workers Paid plan is the surgery suite.
More from the same beat.
I Burned 90% Of GitHub's Free CI Minutes. Here's The Escape.
A real multi-repo empire eats 2000 free Actions minutes a month. When you hit zero, deploys stop firing silently. The fix is not paying per minute.
- A multi-repo solo operator will exhaust 2000 free Actions minutes a month, not might, will. I hit 1800 of 2000 across one account with three active content repos, no macOS or Windows multiplier, ju…
Bing Sends One Of My Sites 85% Of Its Traffic. Google Sends 0.2%.
Every Indian operator I know optimises for Google. For a real audience segment, the traffic is on Bing, and Bing's index now feeds ChatGPT Search.
- On one jobs-and-exam site I run, the Bing network is roughly 85 percent of organic traffic and Google organic is four sessions a week, 0.2 percent. The audience, govt-exam and job aspirants on Wind…
Anthropic Prompt Caching, The Lever Indian Operators Are Leaving On The Table
10 percent of input cost on cache hits, 25 percent of base on a five-minute TTL write. Most Indian shops are not designing for it. Here is the working playbook.
- On Opus 4.7 a 200K token cached system prompt at base price of 15 dollars per million costs 3,000 to write the first time, 300 per subsequent hit. At ten exchanges per session that is a 6,300 dolla…