Sell S3-compatible object storage on your own MinIO server — provisioned, metered and billed in Blesta
Sell object storage on Amazon S3, Cloudflare R2, DigitalOcean Spaces or MinIO — any mix, from one Blesta module
Made and supported by Projektif Digital Ltd. Runs inside PD Modules, the panel every module installs into.
PD Object Storage lets a hosting company sell S3-compatible object storage on Amazon S3, Cloudflare R2, DigitalOcean Spaces or your own MinIO server, in any mix, from one Blesta module. Your customer orders a package in Blesta, a private bucket and a scoped access key are created at the backend you chose for that package, and your customer manages their storage from the Blesta client area. You set the price, the provider bills you for what is stored, and the difference is your margin.
It is built for hosts who want more than one storage offer: a premium Amazon S3 package next to a lower-cost Spaces plan, an EU-resident R2 package for customers who need it, or a self-hosted MinIO plan on their own hardware, without installing and learning a different module for each.
One module, four backends. Amazon S3, Cloudflare R2, DigitalOcean Spaces and MinIO are all built in. Choose the backend per package on its Module tab, and run several side by side in one Blesta. An Amazon S3 package and a Cloudflare R2 package can be sold together, each using its own account.
One experience for your customers. Whatever sits behind the package, your customer gets the same client area: connection details, usage, buckets, share links and ready-made setups. Your team learns one module and your customers learn one screen.
Placement that cannot fail. The order form offers only the locations that suit the backend: AWS regions, DigitalOcean datacenters or Cloudflare data locations, curated so a customer is never offered a choice that will fail. Cloudflare R2's EU-only choice is a hard data-residency boundary, which is what lets you promise it to customers.
Only what the backend can do. The module offers only the features a backend supports. Cloudflare R2 does not expose object versioning, so an R2 package simply does not show the Versioning option.
Isolation the provider enforces. Each order gets its own bucket and its own scoped credential: an access key, a token or a user, depending on the backend. One customer's credential cannot reach another's data on any backend.
Nothing is deleted by accident. Cancelling a service revokes access at once but keeps the data through a retention window you choose, and nothing is purged without your approval unless you switch on automatic purging.


Bucket management, share links and storage settings are each a switch on the package. The pages follow your Blesta client theme and are fully translatable.
On Amazon S3 and MinIO, hard mode pauses uploads at 100% while downloads and deleting keep working. On DigitalOcean Spaces and Cloudflare R2, uploads are never paused: the customer is emailed at 80% and 100% and you see the overage. Downloads always work.
PD Object Storage is one paid module with all four backends and every feature included. There are no tiers to compare. If you sell only one backend, the single-provider modules offer the same engine focused on that provider. It installs into PD Modules in one click and updates itself.
If your subscription ever lapses, nothing is deleted. You get a 14-day grace period with everything working, then admin management locks while customers keep their storage, and only after that do customer features pause, behind a neutral message that never mentions licensing.
Four, all built in: Amazon S3, Cloudflare R2, MinIO, and DigitalOcean Spaces. You choose the backend per package, and you can run several backends side by side in the same Blesta — each package on its own server.
No. PD Object Storage is the single flagship covering all four backends. If you only ever sell one, the focused editions (PD AWS S3, PD Cloudflare R2, PD MinIO S3, PD DigitalOcean Spaces) offer the same engine for that one provider.
Yours. You connect your own account for each backend, and every customer bucket is provisioned into it. You pay the provider at cost, set your sell price in Blesta, and keep the difference.
Every order gets its own bucket and a credential scoped to that bucket only — an S3 access key, an R2 token, an IAM user, or a Spaces key depending on the backend. One customer's credential cannot reach another customer's data. Your master credentials never leave your Blesta server.
A daily task measures each service's real storage use and writes it into Blesta's disk-usage fields, so native overage billing, quota warnings and the client-area usage graph all work automatically — on every backend.
New uploads are blocked, but downloads always keep working — so a customer over quota can still retrieve their data. Raising their plan restores uploads immediately, with data preserved.
Only if you choose automatic purging. By default, terminating a service revokes access instantly but retains the bucket and files for a window you set (7–90 days); purging then requires your approval and typing the bucket name to confirm.
Yes, honestly. The module only offers what each backend actually supports — for example Cloudflare R2 has no object versioning, so that option and control simply aren't shown for an R2 product. Regions and data-location choices adapt too (including Cloudflare R2's EU-only residency).
Yes — through Blesta's standard upgrade/downgrade flow. Quota and bucket-count changes apply with all data preserved; downgrading below current usage pauses uploads rather than deleting anything.
PHP 8.1+ and a normal Blesta's cron. The module talks to each backend over standard HTTPS APIs — nothing else to install.