PD MinIO S3 for Blesta

PD MinIO S3 — Sell S3-Compatible Storage on Your Own Server from Blesta

Sell S3-compatible object storage on your own MinIO server — provisioned, metered and billed in Blesta

Made and supported by Projektif Digital Ltd. Runs inside PD Modules, the panel every module installs into.

Object Storage

PD MinIO S3 lets a hosting company sell S3-compatible object storage from its own MinIO server. Your customer orders a package in Blesta, a private bucket and a scoped access key are created on your MinIO server once the invoice is paid, and your customer manages their storage from the Blesta client area: connection details, usage, buckets, share links and ready-made setups for the tools they already use. You set the price, you keep the margin, and the data stays on your own hardware.

It is built for hosts who already run MinIO, or want to, and would rather sell storage as a recurring package than leave the capacity idle: no per-GB cloud bill, no hand-made buckets, and no support ticket every time a customer needs a new key.

Why hosts choose PD MinIO S3

Your hardware, your margin. Storage is provisioned on the MinIO server you run, so customer data never leaves your infrastructure and there is no cloud bill behind each customer. The module is a flat subscription, with no per-GB fees to us.

Every paid order sets itself up. Blesta provisions the paid service and the module creates a dedicated bucket and a dedicated user for that customer. A service you add to a client from their profile is provisioned the same way.

Customers cannot reach each other. Each customer's key is limited by a MinIO policy to that customer's own bucket or buckets. The isolation is enforced by the MinIO server itself, not just by the module.

Quotas that behave. Choose per package whether going over quota only warns (the default) or pauses uploads. Downloads and deleting keep working either way, so a customer over quota can always get their data out. Storage is sold in quota tiers, and raising a customer's plan lifts a pause at once.

Nothing is deleted by accident. Cancelling a service revokes access immediately but keeps the data through a retention window you choose. Even after the window, nothing is deleted until you approve the purge.

Fewer tickets. Customers reveal and rotate their own keys, create their own buckets and watch their own usage, so most day-to-day storage questions never reach you.

How it works

  1. Create an admin key on your MinIO server. Use the mc client to create a user with the admin policy. The key is stored encrypted and never shown to customers.
  2. Connect it. Under Settings, Company, Modules, add the endpoint and key as an account. Test Connection checks every connected account, names any that fail, and changes nothing on your server.
  3. Create a package. One click generates the order options (Storage Quota, Max Buckets and Versioning) for the package, with your own prices.
  4. Your customer orders. Once Blesta provisions the paid service, their bucket and key are created and their storage page is ready.
Package settings: choose the MinIO server, quota mode, defaults and which features customers get
Package settings: choose the MinIO server, quota mode, defaults and which features customers get

What you get in Blesta

Selling and pricing

  • Generated package options: Storage Quota from 10 GB to 5 TB or unlimited, Max Buckets, and object versioning
  • Rebuilding the options keeps the choices existing customers already made
  • Soft or hard quota mode per package, and a default quota for packages with no quota option
  • Upgrades and downgrades through Blesta's own flow, with data preserved
  • Usage is measured daily and shown to the customer against their quota; Blesta has no usage-based billing, so storage is sold in quota tiers
  • Your own bucket name prefix, so customers' buckets carry your brand
  • More than one MinIO account if you need them

Safe lifecycle

  • Suspend as read-only (the default) so customers can still download, or as fully disabled; unsuspending restores the previous access
  • Cancelling a service revokes the key at once and keeps the data for 7, 14, 30, 60 or 90 days, or deletes it straight away if you choose
  • Purging is manual by default: nothing is deleted until you approve it, and an immediate purge needs the bucket name typed to confirm
  • A cancelled service can be re-activated before its purge, with fresh keys and the data intact
  • Large buckets are emptied across several runs, with progress in Activity

Running it day to day

  • A Clients & Storage view of every service with its state, access mode, quota and last usage reading
  • Change a service to read and write, read-only or disabled without touching the customer's keys or data
  • Rotate a customer's keys, or collect their usage on demand
  • A read-only reconcile that flags buckets with no service, or services whose bucket has gone
  • A health report, and an activity log of every provisioning, lifecycle and usage task
  • Quota emails at 80% and 100%, which you can switch off or copy to your administrators

What your customers get

  • Connection details in one place: endpoint, bucket, access key and secret key, with copy buttons
  • Their own keys: reveal the secret key when they need it, and rotate in one click; the old key stops working immediately
  • Ready-made setups for the AWS CLI, rclone, s3cmd, Cyberduck and WinSCP, cPanel backups and WordPress backup plugins, with their details filled in, plus SDK examples for developers
  • Usage at a glance: a usage bar, file count and a 30-day history
  • Buckets: create extra buckets up to their plan, and delete one only after typing its name
  • Versioning and clean-up rules per bucket
  • Share links: expiring download or upload links, from one hour to seven days, without giving anyone their keys
  • Recent activity in plain words, and a clear banner when storage is suspended or over quota

Bucket management, share links and storage settings are each a switch on the package. Turn one off and it disappears from the customer's page. The pages follow your Blesta client theme and are fully translatable.

Security built in

  • Your MinIO admin key is stored encrypted, and leaving the box blank when you later edit the account keeps it.
  • Every customer gets their own user and their own bucket, with a policy that names only that bucket.
  • Customers cannot change their own bucket policies, and cross-bucket features are not offered to them.
  • A customer never sees a raw provider error, only a clear message.
  • Nothing is installed on your MinIO server and no daemon runs: the module talks to MinIO through its S3 and admin APIs.

One product, every feature

PD MinIO S3 is one paid module with everything included. There are no tiers to compare. It works with MinIO Community and MinIO Enterprise, installs into PD Modules in one click and updates itself. Servers that offer only the S3 API, without MinIO's admin API, are not supported.

MinIO Community does not offer per-bucket CORS or storage-class tiering, so the module does not show them to your customers.

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. Data waiting to be purged stays retained.

Requirements

  • Blesta 6 or later on PHP 8.2 or later, with the ionCube Loader, and Blesta's cron running
  • Your own MinIO server (Community or Enterprise) with an admin access key, and its S3 port reachable from your Blesta server
  • PD Modules, the free control panel every PD module installs into

Questions

Whose your own MinIO server account is used?

Yours. You connect your own account, and every customer bucket is provisioned into it. You pay the provider at cost, set your sell price in Blesta, and keep the difference.

How is each customer isolated?

Every order gets its own bucket and an access key scoped to that bucket alone. One customer's credential cannot reach another's data, and your master credentials stay on your Blesta server — they are never sent to the customer or stored in the client area.

How does billing work?

A daily task measures each service's real usage and writes it into Blesta's disk-usage fields. Native overage billing, quota warnings and the client-area usage graph then work exactly as they do for hosting products — there is nothing extra to configure.

What happens when a customer hits their quota?

New uploads are blocked, but downloads always keep working, so a customer over quota can still retrieve everything they have stored. Raising their plan restores uploads immediately with all data preserved.

Is data ever deleted automatically?

Only if you choose that. By default, terminating a service revokes access instantly but keeps the bucket and its contents for a retention window you set. Purging then needs your approval and typing the bucket name to confirm — there is no single click that destroys a customer's data.

Can customers upgrade or downgrade?

Yes, through the standard Blesta upgrade/downgrade flow. Quota changes apply with data preserved in both directions; downgrading below current usage pauses uploads rather than deleting anything.

What do I need on my Blesta server?

PHP 8.1+ and a working Blesta's cron. The module talks to your own MinIO server over its standard HTTPS API — there is nothing to install on the server and no daemon to run.

How is this different from PD Object Storage?

PD Object Storage is the flagship covering Amazon S3, Cloudflare R2, MinIO and DigitalOcean Spaces in one module. This edition is the same engine focused on your own MinIO server alone — choose it if that is the only backend you sell, and move up to the flagship if you later add another.

What happens if my subscription lapses?

Nothing of yours is touched, and nothing is deleted. The module steps down in stages instead: a 14-day grace period where everything still works and you get a renewal reminder, then admin management locks while your customers carry on being served, and only after that do the customer-facing features stop — behind a neutral "temporarily unavailable, please contact support" message that never mentions licensing to your customer. Anything the module provisioned keeps running in your own account throughout, and your data and settings stay exactly where they are. Renewing restores everything immediately.

How do I get help?

Open a ticket from your client area, or use Get help inside the PD Modules panel, which attaches a diagnostic report — you see a preview of exactly what it contains, and can exclude any part of it, before anything is sent. Support is included with an active subscription; bug reports are welcome whatever your licence state.

What’s new in 0.1.79

  • A cleanup that cannot finish no longer holds up other customers' storage from being removed.
  • Option-price hints on the Products screen no longer show stray asterisks.
  • The module overview no longer suggests usage over the quota is billed; storage is sold in quota tiers.
  • The Products screen now lists exactly the options Generate builds for this provider, including the region or location choice, and no longer mentions options the provider does not offer.
  • Saving a bucket name prefix that cannot be used (it must be 2–12 letters, numbers and hyphens) now shows a message instead of quietly falling back to "storage".
  • Rebuilding the options from the Products tab keeps hidden options off the order form.
  • Collect usage now reads the service's storage as it is at that moment.
  • The Retention tab no longer says nothing is deleted without approval when purging is automatic.
  • A cancelled service can be re-activated with Uncancel.
  • Suspend and Terminate always work, whatever the state of your PD Modules licence.
  • Each storage service's provider credentials are now encrypted with your installation's own key on every platform.
  • Clean-up rules can no longer be refused by MinIO: stalled uploads are cleared by the server itself.
  • Customer actions such as revealing keys, rotating and managing buckets now work.
  • Usage now counts old file versions, and a very large bucket is never recorded as smaller than it is.
  • A service unsuspended while over its quota comes back with uploads paused and deleting still open.
  • Test Connection checks every connected account and names the one that fails.
  • Failed tasks are labelled as failed for you and your customers.
  • You can switch the 80%/100% quota emails off, or copy them to your administrators.
  • Clean-up rules now save correctly.
  • Moving a customer to a smaller plan than they already use no longer stops them deleting files to get back under it.
  • The feature list describes usage metering as it works on every platform: each customer sees their usage against their quota, with emails at 80% and 100%.
  • The Connect page explains the placeholder in its snippets only when a snippet actually shows one — normally your real key is filled in.
  • You can choose to delete a terminated service's storage immediately, instead of keeping it for a retention period.
  • Setup guidance, health checks and messages name the right screens for your billing platform.
  • Generate this module's order options for a Blesta package in one click, as on WHMCS; rebuilding them keeps the choices your existing customers made.
  • Links on this module's screens open the right client, service and product pages on every platform.

Get your website online with PD Hosting

UK hosting, domains and support from a real team. From a first site to a full server.

Terms and Conditions  ·  Privacy Policy

PD Hosting is the trading name of Projektif Digital Ltd, registered in England and Wales, company number 12482555.

PD Hosting
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.