Object Storage in India: S3-Compatible Storage Explained (2026)
"Just use S3" gets thrown around a lot, but most Indian site owners have never actually needed object storage until their VPS disk starts filling up with user uploads, or their WordPress media library hits a few GB and page backups start timing out. Here's what object storage actually is, when it's worth adding, and when your existing VPS disk is genuinely fine.
Object storage vs. your VPS disk, in one line
- VPS disk (NVMe) is a filesystem attached to one server — fast, but tied to that server's lifecycle and included storage limit
- Object storage is accessed over HTTP via an API (the S3 protocol) — files live independently of any single server and scale to any size without you resizing a disk
- You pay for what you store and transfer, not a fixed disk allocation baked into your VPS plan
Common use cases for object storage
Offloading WordPress media libraries
App file uploads at scale
Backups and archives
CDN origin for static assets and video
Connecting to object storage
Because it speaks the S3 API, any S3-compatible client works without modification:
- rclone — configure a remote with your endpoint, access key, and secret key, then sync folders with
rclone sync /var/backups remote:mybucket - s3cmd — quick CLI for one-off uploads: `s3cmd put file.zip s3://mybucket/`
- boto3 (Python) — point `boto3.client('s3', endpoint_url=...)` at your storage endpoint and use the standard AWS SDK calls your app already knows
- aws-sdk / @aws-sdk/client-s3 (Node) — same idea, just override the endpoint from the default AWS one
Don't forget CORS if the browser uploads directly
If your frontend uploads files straight to the bucket using a presigned URL (rather than routing through your backend), the bucket needs a CORS policy allowing your domain to `PUT`/`POST`. A typical policy:
- 1. AllowedOrigins: your site's domain (avoid `*` in production)
- 2. AllowedMethods: GET, PUT, POST
- 3. AllowedHeaders: `*` (or restrict to Content-Type, Authorization)
- 4. Test with a browser upload before shipping — a missing CORS rule fails silently with a generic network error in devtools
Illustrative pricing
| Storage used | Approx. rate | Monthly cost |
|---|---|---|
| 50 GB | ~₹1.5–2/GB | ₹75–100 |
| 250 GB | ~₹1.5–2/GB | ₹375–500 |
| 1 TB | ~₹1.5–2/GB | ₹1,500–2,000 |
Illustrative rates for budget Indian object storage; actual pricing varies by provider and typically also includes a per-GB outbound bandwidth charge beyond a free allowance.
When you don't need it
If your WordPress site's media library is under a few GB, or your app's uploads are small and infrequent, your VPS's NVMe disk (already included — 40GB on Spark X1 up to 200GB on Pro X5) is simpler, faster to access, and free of an extra bill. Add object storage when disk usage growth is unpredictable, when you need files accessible independent of one server, or when backup/snapshot times start creeping up because of media file bloat.
Quick Summary
- 1 Object storage = API-accessed, S3-compatible, independent of any one server
- 2 Good fits: media offload, app uploads, backups, CDN origin
- 3 Connect via rclone, s3cmd, boto3, or the AWS SDK — no code rewrite needed
- 4 Set CORS correctly before enabling direct browser uploads
- 5 Small sites are fine on included VPS disk — add object storage when growth is unpredictable
Need more room to grow?
Start with a Hoststack VPS with generous NVMe storage, and add object storage only once your media or backup footprint actually needs it.
View VPS Plans