Introduction
Storage Pools
Storage Pools are the central distribution platform for ServersCTL. Publish backups, configuration files and deployment packages from browsers, agents or external software, then compare, version, schedule and deploy them safely across your infrastructure.
EveryStorage Pools hold things you care about in production:
OpenLiteSpeed site and vhost backups.
cPanel account backups.
MariaDB / MySQL dumps.
HAProxy, nginx, PHP, SSL, cron, firewall, and other configuration files.
Browser uploads and deployment packages.
Each pool is a named, regional destination with its own quota, S3 credentials, and object browser. Storage is account-scoped: one login can have multiple pools (for example London Recovery and Toronto DR). Pools are not tied to a single server pool—you can send or restore from a Storage Pool isto an account-wide resource and can be used by any compatibleenrolled Servermember Poolin youyour own.account Thiswhen allowscompatibility rules allow.
The product thinks in objects (for example example.com vhost, all-databases dump, nginx site config), not raw folder paths. Repeated backups created on one server to be restored or distributed to another server without requiring both servers to belong toof the same pool.site become new versions under the same object.
Where to find Storage Pools
Location
What canyou beget
Left sidebar → Storage Pools
Account overview and list of all pools
/app/storage-pools
Storage Pools automaticallyoverview organise(usage, supportedrecent objectobjects, types,live including:activity)
/app/storage-pools/new
Create a new pool (region + capacity + name)
/app/storage-pools/{pool}
Objects — browse, upload, discover, deploy, restore
/app/storage-pools/{pool}/activity
Live incoming/outgoing jobs
/app/storage-pools/{pool}/credentials
S3 endpoint and keys for WHM/cPanel/scripts
/app/storage-pools/{pool}/settings
Slug, region, quota breakdown
The sidebar footer also shows aggregate storage used / quota across all pools.
Plans, costs, and quota
Storage capacity is billed at the account level. Each Storage Pool has its own assigned quota slice of that account capacity.
Included with Pro
Plan
Base storage
Community
0 bytes — you must purchase add-on capacity before backups can upload
Pro (active subscription)
5 GiB included
14-day trial
Same as Pro while trial is active
When you create a Storage Pool, you can apply the Included 5 GiB (Pro) capacity option once per account (until that entitlement is fully claimed). The create wizard shows how much included storage is still available.
Cloud Backup Storage add-ons (monthly)
If you need more space, purchase a Cloud Backup Storage add-on. Prices are per month; checkout uses the region of the pool or vault you are protecting.
Capacity
Monthly price
10 GiB
$4
50 GiB
$12
100 GiB
$20
250 GiB
$40
500 GiB
$65
How add-ons combine with Pro: add-on bytes add to your account quota. A Pro account with a 10 GiB add-on has 15 GiB total (5 GiB included + 10 GiB add-on), not 10 GiB replacing the included amount.
Where to buy add-ons: the Cloud Backup Storage tier picker appears when:
OpenLiteSpeedwebsitesA backup or upload is blocked for insufficient quota
You use the replication wizard Cloud Backup Storage step
Legacy pool Storage flows that still surface the tier cards
Purchases go through Stripe Checkout (Account billing). Upgrading an existing storage subscription changes the current Stripe item with proration instead of creating a duplicate subscription.
What counts toward quota
Final stored objects and configurationbackup filesarchives
Temporary upload staging while a large backup is still assembling (hidden from the object browser but counted until complete)
Active upload reservations while an agent backup is in progress
When the quota is full, new uploads fail with a clear insufficient storage message until you delete objects or buy more capacity.
Feature access by plan
Action
Community
Pro / active trial
Browse & download objects
Yes
Yes
Run backups into storage
Only with purchased quota
Yes (with quota)
Browser upload
Locked
Yes (max 5 GiB per file)
Delete objects
Locked
Yes
Restore to server
Locked
Yes (compatible targets)
Deploy config to server
Locked
Yes
Configuration Discovery
Locked
Yes
Deployment Wizard
Locked
Yes
Regions and endpoints
When you create a Storage Pool, you choose a region (physical vault cluster). Pick the region closest to your servers and restore targets for lower latency.
Billing regions (Stripe)
Add-on checkout is priced per vault region:
Region key
Label shown in billing
eu-west
EU West
ca-east
CA East
sgp-central
SG Central
Additional regions may appear in the create wizard, marked Coming soon.
Your pool’s hostname
Each pool gets a dedicated endpoint on serversctl.com storage infrastructure:
{pool-slug}.{region}.storage.serversctl.com
Example: slug london-recovery in EU West → london-recovery.eu-west.storage.serversctl.com
Use this hostname for:
WHM / cPanel → Additional Destinations → S3 Compatible
S3 backup tools and scripts
Agent off-site backup authentication
Credentials for the pool are under Storage Pools → {pool} → Credentials.
Create your first Storage Pool
Open Storage Pools in the left sidebar.
Click Create Storage Pool (or go to /app/storage-pools/new).
Step 1 — Region: select an available region (healthy clusters show S3 endpoint).
Step 2 — Capacity:
Included 5 GiB (Pro) — free, uses your Pro entitlement (shown only while remaining).
Paid tiers — 10 GiB through 500 GiB monthly options (when checkout is enabled for your account).
Step 3 — Name: give the pool a clear name (for example Frankfurt Recovery). The wizard suggests a name from the region.
Click Create Storage Pool.
You land on the pool Objects page. Activation provisions vault space, DNS, TLS, and S3 credentials for that pool.
Tip: use separate pools for separate purposes (production backups vs config baselines vs a second geography). Always secure your account backupswith Two-Factor authentication.
Navigation overview
Account overview (/app/storage-pools)
Total usage across pools
Per-pool backupscards (region, used %, recent activity)
Links
Per-pool tabs
Tab
Purpose
Objects
Main work surface — browse, upload, discover, deploy, restore, delete
Activity
Live jobs only (running backups, uploads, Send To, deploy, restore)
Credentials
S3 URL, bucket/slug, access key, secret — for WHM and automation
Settings
Read-only pool metadata (slug, region, quota, default flag)
Objects and versions
Object browser layout
Objects are grouped intelligentlyby source server first (member folders), not dumped in a flat list.
Top level: folders per source member (hostname / site name).
Inside a member: service folders such as Backups, OpenLiteSpeed, MariaDB, NGINX, WordPress, SSL, Cron, Firewall, PHP, cPanel, Services.
Inside a service folder: individual objects.
Backups from a server stay under that server’s folder, then Backups — so an old site backup does not create a second root folder for the domain name.
Search flattens the tree and supportshows versioningmatching whereobjects appropriate,across helpingthe keep Storage Pools organised as they grow.pool.
TypicalObject workflowrow actions
Button
When it appears
What it does
Open
Always
Version history, metadata, compare, download
Deploy
Object is deployable (for example OLS vhost config, discovered .conf)
Push config to compatible members
Restore
Object is a restorable backup snapshot
Guarded restore on compatible members
Row menu adds Send latest to inbox, Deploy latest, Restore latest, Download, Delete (Pro).
Versions
AEach Storageobject Poolhas sitsone ator more versions (v1, v2, …). Version states include active, archived, and deprecated. Deploy and restore the centredefault ofto yourthe infrastructurelatest workflows.active version unless you pick another in the UI.
ServerOpen │an Publishobject /to:
Backups,See uploadsall versions with size, date, and generatedsource fileschannel are(agent publishedbackup, WHM S3, browser upload, discovery, and so on)
View file — inline text preview for configs (binary/archives prompt download instead)
Compare — diff against the previous version (text) or metadata/size for archives
Download a specific version
Send, Deploy, or Restore a specific version
Getting data into a Storage Pool.Pool
1. Member backups (recommended)
From there,any enrolled server’s member tabs:
Source
Typical path
OpenLiteSpeed → Backups
Full / site / web backup jobs
MariaDB → Backup
Database dump
cPanel → account backup
WHM pkgacct style packages
Backups tab
Snapshot backups
When the job supports it, you choose the destination Storage Pool before the job runs. Progress appears under Activity (incoming lane).
Agent backups flow: check quota → collect → dump/package → upload → confirm stored. Install a current agent (v204+ recommended) for step-by-step byte progress.
2. WHM / cPanel S3 destination
Open Storage Pools → {pool} → Credentials.
Copy S3 endpoint, bucket (your pool slug), access key, and secret.
In WHM: Backup → Additional Destinations → S3 Compatible.
Set endpoint to your pool hostname, bucket to slug, path as documented on the Credentials page.
Run WHM backups — they canland as objects in that pool.
Quota is enforced on the vault; over-quota uploads receive 507 Insufficient Storage.
3. Browser upload (Pro)
Open pool Objects.
Click Upload.
Select file(s) — large files upload in 16 MiB chunks (max 5 GiB per file).
After upload, publish: attach as a new version of an existing object, keep as a separate object, or cancel.
4. Configuration Discovery (Pro)
Baseline server configs without running a full backup:
On Objects, click Run Discovery.
Pick one member to scan (account-wide member list).
Choose categories (HAProxy, nginx, OpenLiteSpeed, PHP, SSL, MariaDB, cPanel, cron, firewall, apps, and more) or select all.
Options: include SSL private keys (off by default), include system package units under /lib/systemd/system (off by default), force fresh baseline (ignore agent cache).
Confirm — a read-only scan runs on that member only. Discovered text files become objects; unchanged files do not create new versions.
Live progress shows on the Objects page until complete. Requires agent v208+ for discovery (older agents may still be downloaded,selectable; comparedthe againstjob previousreports versions,the restored,real sentresult).
Privacy: anotherapplication server,configs or(WordPress, Laravel, Docker Compose, and similar) store redacted copies — passwords and secrets are stripped. Redacted objects show Secrets redacted and cannot be deployed directlyback intoto production.
Regional5. storageTrack Changes (daily discovery)
EachOn Storagea Poolmember folder row menu → Track Changes:
Enables a daily scheduled discovery for that member and pool.
Folder shows Tracked daily.
Only changed files create new versions (agent v219+ cache).
6. Agent CLI upload (large files)
On the server (agent v195+):
sudo /usr/local/bin/balctl_heartbeat.py --send-to-storage /path/to/file-or-folder
The agent packages the path, checks quota, uploads as an Agent upload object. Useful when browser limits are awkward.
7. Protection replication
Protection jobs (cPanel / OpenLiteSpeed standby) can replicate into vault storage tied to your account quota. If space is createdinsufficient, the replication wizard prompts for Cloud Backup Storage add-ons.
Send To, Deploy, and Restore
Send To inbox
Delivers a copy to a member’s storage inbox (/var/lib/balctl/storage-inbox/) without changing production files. Use for inspection or manual steps.
Open object or version → Send To (or row menu).
Select one or more target members.
Confirm — progress appears in Activity (outgoing).
Deploy
Writes configuration to production paths on selected members. The agent:
Backs up the current file under /tmp/balctl-storage-deploy/
Writes allowlisted paths only
Validates and reloads services where supported
Rolls back on failure
OpenLiteSpeed vhost deploy uses a guarded vhost path. Discovered configs deploy to the same member or another member with matching OS/service (agent v215+).
Click Deploy on a deployable object, or Deployment Wizard for multiple objects.
Pick version if prompted.
Select compatible targets (incompatible members are shown but blocked).
Review paths, optional reload OpenLiteSpeed, optional advanced path override.
Deploy now or schedule (wizard).
A live deploy spotlight shows progress per target member.
Restore
For backup objects linked to a snapshot (OLS site/web/full, cPanel account, database dumps):
Click Restore on object or version.
Select compatible members (OLS backups → OLS members, cPanel → cPanel, and so on).
Confirm — guarded restore runs on each target; Activity tracks progress.
Restore replaces production data for that backup scope — use with care.
Deployment Wizard
Objects → Deployment Wizard (Pro, when deployable/restorable objects exist):
Source member — same grouping as the object browser.
Objects — pick deploy and/or restore objects (one action type per run).
Targets — compatible members only.
Paths (deploy) or Confirm (restore).
Schedule (deploy only) — now or future time.
Activity tab
Shows live work only — not historical logs.
Lane
Examples
Incoming
Running backups, browser/S3 uploads, discovery archiving
Outgoing
Send To, deploy jobs, restore jobs
Refreshes every few seconds. Completed or failed jobs disappear from Activity; the finished object remains in Objects.
Credentials and S3 setup
Storage Pools → {pool} → Credentials
Field
Use
Endpoint
S3 URL for WHM, rclone, restic, etc.
Bucket
Pool slug
Access key / Secret
Authentication
Regenerate keys from the panel if compromised. Keys are scoped to your account and pool.
WHM tips:
Use the regional endpoint hostname shown for your pool.
Do not point WHM at a shared global server name — each pool has its own hostname and vault assignment.
Ensure server egress IP is allowed (same network rules as agent heartbeat where applicable).
Settings
Settings shows:
Slug — used in URLs and S3 bucket name
Region — vault cluster
Quota / Included — capacity assigned to this pool
Default pool — whether this pool is the account default for new uploads
Rename and delete pool flows (if exposed in UI) respect active usage — check quota and objects before removing a pool.
Deleting objects
Pro: select objects with checkboxes → Delete selected, or delete from row menu / object details.
Deletion removes the logical object and version history from your storage. There is no way to recover a file after deletion.
Troubleshooting
“Insufficient storage” / backup won’t start
Check sidebar storage used / quota.
Delete old objects or purchase a Cloud Backup Storage add-on.
Pro: confirm you have not exhausted the included 5 GiB without add-ons.
Large jobs reserve space before upload — wait for stuck jobs to expire (up to 24h) or cancel the job.
Upload button disabled
Community plan — upgrade to Pro or buy storage quota.
Trial ended — subscribe to Pro.
Deploy / Restore target greyed out
Target member lacks the right stack (for example cPanel backup → non-cPanel server).
Object is redacted or not deployable/restorable.
Refresh members by reopening the modal (panel refreshes account member list).
Discovery stuck or slow
Member must be online with agent check-in.
Watch the progress panel — phases are agent-reported (v219+).
Force fresh baseline re-uploads everything and takes longer.
WHM S3 backup fails
Verify endpoint, bucket, keys from Credentials.
Confirm quota headroom.
Check vault region matches what you purchased in Stripe.
Objects missing after backup “succeeded”
Large archives may still be assembling — watch Activity until Confirm stored.
Look inside the correct member → Backups folder.
Use Search by filename or domain.
Glossary
Term
Meaning
Object
A named thing in a specificpool region(site andbackup, receivesconfig itsfile, owndump)
Version
A Additionalpoint-in-time Backuprevision Destinations,of toan writeobject
Artefact
Internal platform type (OLS vhost, cPanel account, etc.) — you see the friendly object name
Publish
Finalize an upload into the Storageobject Pool using standard S3-compatible APIs.catalog
ASend singleTo
Copy to bemember storedinbox inwithout differentproduction regions or separated for organisational purposes.changes
Storage quotas
Storage Pools use account-based storage quotas.Deploy
StorageWrite usage is shared across your account, while each Storage Pool provides its own regional endpoint, object catalogue and deployment workflows.
Why use Storage Pools?
Storage Pools are designedconfig to become the central location for infrastructure objects across ServersCTL.
Instead of managing backups, configuration files and deployment packages separately, everything is stored in one place where it can be:
ThisRestore
Replay a backup repository—theysnapshot becomeon a compatible server
Discovery
Read-only inventory of config files into the centralpool