WPHammer
Log in

Storage Providers

Database backups and time capsules require an S3-compatible storage provider. WPHammer stores provider credentials per team as StorageProviderCredential records, linked to the corresponding Forge storage provider.

Supported providers

WPHammer supports six storage provider types:

Provider Notes
Amazon S3 Standard AWS S3 buckets
DigitalOcean Spaces Endpoint auto-generated from region if not set
Hetzner Object Storage Hetzner's S3-compatible storage
OVH Object Storage OVH's S3-compatible offering
Scaleway Object Storage Scaleway's S3-compatible storage
Custom Any S3-compatible endpoint

Credential fields

Each StorageProviderCredential stores:

Field Description
forge_storage_provider_id Links to the Forge storage provider
provider Provider type (s3, spaces, hetzner, ovh, scaleway, custom)
region Storage region (e.g., us-east-1, nyc3)
bucket Bucket name
directory Optional base directory within the bucket
endpoint Custom endpoint URL (auto-generated for DigitalOcean Spaces)
access_key S3 access key (encrypted)
secret_key S3 secret key (encrypted)

Credentials are unique per team and Forge provider ID — each team can have one credential per Forge storage provider.

DigitalOcean Spaces endpoint

For DigitalOcean Spaces, the endpoint is automatically resolved from the region using the getResolvedEndpointAttribute accessor. If a region like nyc3 is configured without an explicit endpoint, the model generates https://nyc3.digitaloceanspaces.com. You can still set a custom endpoint to override this behavior.

Managing providers

Storage providers are configured from the storage settings page (teams/settings/storage). Only users with the canManageTeam permission (Owner and Admin) can manage storage providers, as enforced by the TeamPolicy@manageStorageProviders method.

From the settings page, you can create, edit, and delete storage provider credentials for any supported provider type.

Backup readiness

A server's isBackupReady() method checks both that a forge_storage_provider_id is set on the server and that matching StorageProviderCredential exists for the team. Backup operations will not start unless both conditions are met.

Snapshots are the exception — they store data locally on the server and do not require a storage provider.

Related