Storage Settings
Settings โ Advanced โ Storage controls where LeadHub stores uploaded files โ lead attachments, avatar images, export archives, and form uploads.
Storage Driversโ
| Driver | When to Use |
|---|---|
| Local (server filesystem) | Default. Files are stored on the server's disk at storage/app/. Fine for single-server installs. |
| S3-Compatible | For cloud deployments, CDN delivery, or when the server disk is limited. Supports AWS S3, DigitalOcean Spaces, MinIO, Backblaze B2, Cloudflare R2, and any S3-compatible provider. |
Local Storageโ
This is the default. No configuration needed. Files are stored under:
/path/to/leadhub/storage/app/public/
Accessible at https://yourdomain.com/storage/... via the storage symlink set up during installation.
S3-Compatible Storageโ
Step 1 โ Choose Your Providerโ
| Provider | Notes |
|---|---|
| AWS S3 | Most common. Leave Endpoint URL blank. |
| DigitalOcean Spaces | Endpoint: https://nyc3.digitaloceanspaces.com (replace region) |
| MinIO (self-hosted) | Endpoint: your MinIO server URL |
| Backblaze B2 | Endpoint: https://s3.us-west-004.backblazeb2.com (varies by region) |
| Cloudflare R2 | Endpoint: https://ACCOUNT_ID.r2.cloudflarestorage.com |
Step 2 โ Create a Bucketโ
- In your provider's control panel, create a new bucket.
- Set the bucket to public if you want direct public access to uploaded files (recommended for avatars and form attachments).
- Note the Bucket Name and Region.
Step 3 โ Create Access Keysโ
Generate an Access Key ID and Secret Access Key with read/write permissions on the bucket.
For AWS S3:
- IAM โ Users โ Create User โ attach policy
AmazonS3FullAccess(or a scoped bucket policy). - Create Access Key โ copy both values.
Step 4 โ Configure in LeadHubโ
-
Go to Settings โ Advanced โ Storage.
-
Set Storage Disk to S3-Compatible.
-
Fill in:
Field Value Endpoint URL Leave blank for AWS S3. Set for other providers (see table above). Bucket Name Your bucket name Region AWS region code or provider region (e.g. us-east-1,nyc3)Access Key ID From Step 3 Secret Access Key From Step 3 (leave blank to keep stored secret) -
Click Test Connection to verify the settings before saving.
-
Click Save Settings.
Testing the Connectionโ
Click Test Connection โ LeadHub writes a tiny test file to the storage disk and immediately deletes it. A โ notification means the connection is working. A โ notification shows the error.
Always test before saving โ an incorrect configuration can break file uploads across the entire workspace.
Migrating from Local to S3โ
- Configure S3 settings and test the connection.
- Save the settings โ new uploads will now go to S3.
- Existing files on the local disk are not automatically migrated. Copy them manually using your provider's CLI or sync tool (e.g.
aws s3 sync storage/app/public s3://your-bucket).
Troubleshootingโ
| Problem | Solution |
|---|---|
| "Test connection failed: Access Denied" | Check that the Access Key has write permissions on the bucket |
| Files not publicly accessible | Ensure the bucket has public read ACL, or configure a CDN |
| "NoSuchBucket" error | Verify the bucket name and region are correct |
| Endpoint URL errors | For non-AWS providers, ensure the endpoint URL is correct and includes https:// |
| Secret not saving | Leave the Secret Access Key blank to keep the existing stored secret |