Create a package (Packages > Add) using the S3 Object Storage Provision Module (MinIO & RustFS). All storage-specific settings live on the package's Module tab.
Module fields
- Bucket Quota — the bucket's hard size limit (
ki / mi / gi / ti, e.g. 100gi). 0 or empty = unlimited.
- Bucket Visibility — Public or Private anonymous access applied at provisioning (clients can change it later).
- Free Tier Storage (GiB) — informational allowance for legacy plans.
- Free Tier Egress (GiB) — included egress for unlimited-quota plans (quota'd plans automatically include 3× the quota as free egress).
- Billing Per Use — master switch for bandwidth (egress) overage billing on this package.
- Price Per Extra Egress GiB — the egress overage price.
- Bill Unlimited Disk Usage — master switch for disk overage billing; applies only to buckets whose quota is unlimited/unset.
- Price Per Extra Storage GiB-month — the disk overage price (above the included 1 TiB per month).
The two-key rule
Metered billing only happens when both switches are on:
- The company-wide toggle in the Usage Billing plugin settings ("Calculate egress billing values" / "Calculate disk billing values"), and
- The package's own field ("Billing Per Use" / "Bill Unlimited Disk Usage").
This lets you sell flat-rate and metered plans side by side on the same servers. Prices always come from the package fields — there is no global price.
How the amounts are computed
- Egress:
(egress − included allowance) ÷ GiB × price. Included = 3× quota, or the Free Tier Egress field when there is no quota. Ingress is never billed.
- Disk: average GiB-month above 1024 GiB (1 TiB) free, × price. Only for unlimited buckets — if a quota is set while disk billing is on, nothing is billed and the month is flagged for admin review instead.
Quota upgrades
Add configurable options for the quota to let clients upgrade their bucket size themselves; the module applies the new quota immediately when the option changes.