Cloud Storage & Upload Limits
ClientCove stores resource files either locally on your WordPress server or in the cloud. For any portal that serves large files — videos, design assets, high-resolution images, or big PDFs — or a busy, high-traffic library, cloud storage is the right choice. DigitalOcean Spaces is our recommended and officially supported cloud provider, chosen for its straightforward setup and predictable, low pricing.
Storage Providers
ClientCove is built on an S3-compatible storage layer, so it can technically talk to any S3-compatible bucket. In practice we support and recommend one cloud provider — DigitalOcean Spaces — because it is the easiest to configure and the most cost-effective. AWS S3 and Google Cloud Storage are capable back ends, but they are not part of our supported, tested configuration.
| Provider | Identifier | Support Status | Best For |
|---|---|---|---|
| DigitalOcean Spaces | spaces | ✅ Recommended & supported | Nearly every ClientCove deployment — simple setup, predictable low pricing, S3-compatible API |
| Local | local | ✅ Supported | Small portals, low file counts, quick start with no external account |
| AWS S3 | s3 | ⚠️ Capable, not supported | Teams with existing AWS infrastructure who accept self-service configuration |
| Google Cloud Storage | gcs | ⚠️ Capable, not supported | Teams with existing GCP infrastructure who accept self-service configuration |
Choose the active provider in Settings → Storage.
"Capable, not supported" means ClientCove can connect to AWS S3 and Google Cloud Storage, but we do not test, document, or troubleshoot those integrations. If you run into an issue on S3 or GCS, our support team will ask you to reproduce it on DigitalOcean Spaces. For a smooth, supported experience, use Spaces.
Direct Upload vs Through-PHP
How a file gets from the user's browser to storage depends on the provider:
| Mode | Trigger | Behavior | Practical Limit |
|---|---|---|---|
| Direct upload | Cloud provider active (spaces, s3, or gcs) | The browser uploads straight to the bucket through a signed URL and never touches PHP | Effectively unlimited — the provider's own limits apply (for example, a 5 GB single-part ceiling on Spaces and S3) |
| Through-PHP | Local provider active | Files are POSTed to wp-admin/async-upload.php, and PHP writes them to disk | Capped by upload_max_filesize and post_max_size — typically around 64 MB on shared hosts |
ClientCove decides automatically. The Resources page exposes the choice as JavaScript config:
window.resourceManagerConfig = {
directUpload: true, // true when cloud is active
storageProvider: 'spaces' // or 's3' / 'gcs' / 'local'
}
Configuring a Cloud Provider
- Go to Settings → Storage.
- Select a provider. We recommend DigitalOcean Spaces.
- Enter the credentials for that provider:
- DigitalOcean Spaces (recommended): access key, secret key, region, bucket name, and an optional CDN endpoint.
- AWS S3 (capable, not supported): access key ID, secret access key, region, and bucket.
- Google Cloud Storage (capable, not supported): service account JSON key and bucket.
- Choose Public or Private as the default visibility for new uploads.
- Save.
ClientCove runs a connection test after you save. Resolve any reported errors before continuing.
Upload Size Limits
Local mode (through-PHP)
Determined by your PHP and web server config:
| Setting | Typical Default | What It Affects |
|---|---|---|
upload_max_filesize | 2–64 MB | Max single file size |
post_max_size | 8–64 MB | Max total request size |
memory_limit | 128–256 MB | PHP memory available during upload |
Nginx client_max_body_size | 1 MB (default) | Max request body size at the proxy |
Increase any of these in php.ini, .htaccess, or your hosting control panel. For Nginx, edit the server block.
Cloud mode (direct upload)
| Provider | Support Status | Single-part Max | Multi-part Max |
|---|---|---|---|
| DigitalOcean Spaces | ✅ Recommended & supported | 5 GB | 5 TB |
| AWS S3 | ⚠️ Capable, not supported | 5 GB | 5 TB |
| Google Cloud Storage | ⚠️ Capable, not supported | 5 TB | 5 TB |
ClientCove automatically uses single-part uploads for files under 100 MB and switches to multi-part uploads for anything larger.
Public vs Signed URLs
Each file is stored with a visibility flag:
Public files
Use fast, cacheable public URLs. Best for:
- Brand kit images
- Color palette swatches
- Public marketing PDFs
- Anything you'd be comfortable posting on a website
Private files
Use short-lived signed URLs that ClientCove regenerates on every download request. Best for:
- Client deliverables
- Contracts and legal documents
- Sensitive design files
- Anything that should not be hot-linkable
Signed URLs typically expire 1 hour after generation. The portal regenerates them transparently when a user clicks download.
Migrating Existing Files
Switching providers (e.g. local → Spaces) does not automatically migrate existing files. Old files keep working from their original location; only new uploads go to the new provider.
To consolidate:
- Configure the new provider
- Run Settings → Storage → Migrate Existing Files (when present)
- Monitor progress — large libraries can take hours
- After verification, optionally delete originals from the old location
Always test a provider switch on a staging copy first. Failed migrations leave files in mixed locations, which is recoverable but tedious.