PD MinIO S3 for WHMCS

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

Sell S3-compatible object storage on your own MinIO server — provisioned, metered and billed from your billing system

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 in your WHMCS cart, a private bucket and a scoped access key are created on your MinIO server within moments, and your customer manages their storage from your 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 product 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 order sets itself up. When an order becomes active, the module creates a dedicated bucket and a dedicated user for that customer. Nobody on your team touches it.

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, so even a key that leaked has no access to anyone else's data.

Quotas that behave. Choose per product 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 and free up space. Raise their plan and uploads resume at once.

Nothing is deleted by accident. Terminating 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, set clean-up rules 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 stays on your billing server and is never shown to customers.
  2. Connect it. Add the endpoint and key once. Test Connection makes a read-only check that both MinIO's admin API and its S3 API are reachable, and changes nothing on your server.
  3. Create a product. One click generates the cart options (Storage Quota, Max Buckets and Versioning) that customers choose at checkout. You review the prices.
  4. Your customer orders. Their bucket and key are created and their storage page is ready. WHMCS keeps billing as usual.
Product Module Settings: quota mode, defaults, client features and the cart options panel on one WHMCS page
Product Module Settings: quota mode, defaults, client features and the cart options panel on one WHMCS page

What you get in WHMCS

Selling and pricing

  • Generated cart options: Storage Quota from 10 GB to 5 TB or unlimited, Max Buckets, and object versioning
  • Show or hide any option per product; hidden options fall back to the product's defaults, and your prices are kept
  • Rebuilding the options keeps the choices existing customers already made, and removing them never affects existing services
  • Soft or hard quota mode per product, and a default quota for products with no quota option
  • Upgrades and downgrades through WHMCS's normal flow, with data preserved in both directions
  • Daily usage readings written into WHMCS's disk-usage fields, ready for its native usage display and overage billing
  • Your own bucket name prefix, so customers' buckets carry your brand

Safe lifecycle

  • Suspend as read-only (the default) so customers can still download, or as fully disabled; unsuspending restores the previous access
  • Terminate 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
  • Large buckets are emptied across several runs, with progress in Activity
  • Re-activating a terminated service before its purge restores access with fresh keys and the data intact

Running it day to day

  • Clients & Storage lists every service with its client, state, access mode, quota and last usage reading, searchable and filterable
  • 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 compares your MinIO server with WHMCS and flags buckets that have 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
Clients & Storage: every customer's bucket with its state, access mode, quota and usage
Clients & Storage: every customer's bucket with its state, access mode, quota and usage
Retention: terminated storage counting down to purge, held until you approve
Retention: terminated storage counting down to purge, held until you approve

What your customers get

  • Connection details in one place: endpoint, bucket, access key and secret key, with copy buttons, in your client area
  • 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 AWS SDK for PHP and s3api examples for developers
  • Usage at a glance: a usage bar, file count and a 30-day graph, and a Refresh button to measure again straight away
  • Buckets: create extra buckets up to their plan, and delete one only after typing its name
  • Versioning and clean-up rules per bucket, including clearing stalled partial uploads
  • 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
The customer's storage page in your client area: endpoint, usage and recent activity
The customer's storage page in your client area: endpoint, usage and recent activity
Usage: storage used against the quota, with a 30-day history
Usage: storage used against the quota, with a 30-day history

Each of bucket management, share links and storage settings is a switch on the product. Turn one off and it disappears from the customer's page. The pages render on WHMCS's Six, Twenty-One and Nexus themes and are fully translatable.

Security built in

  • Your MinIO admin key lives only on the WHMCS server record, and is never sent to customers or shown in the client area.
  • 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. Clean-up rules offer only what MinIO can honour, so a rule is never refused.

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

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

Questions

Whose MinIO server is used?

Yours. You connect your own MinIO server, and every customer bucket is provisioned on it. You run the hardware, set your sell price in WHMCS, 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 WHMCS 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 WHMCS'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?

That depends on the quota mode you set: soft (the default) only warns the customer at 80% and 100%; hard pauses new uploads. Either way downloads and deletes 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 (Manual, the default), and an immediate purge needs the bucket name typed to confirm.

Can customers upgrade or downgrade?

Yes, through the standard WHMCS upgrade/downgrade flow. Quota changes apply with data preserved in both directions; downgrading below current usage never deletes anything (with a hard quota it pauses uploads until they are back under).

What do I need on my WHMCS server?

PHP 8.2+ and a working WHMCS 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.

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.