Configuring S3-Compatible Storage

DeployHQ supports deploying to any S3-compatible object storage provider. This includes popular services like Cloudflare R2, Wasabi, Backblaze B2, MinIO, DigitalOcean Spaces, and Katapult Object Storage.

Adding an S3-Compatible Server

First, select S3-Compatible Storage in the server protocol selector.

Then, configure the following fields:

  • Endpoint URL: The full URL to your S3-compatible storage endpoint (see provider examples below)
  • Bucket Name: The name of your storage bucket
  • Access Key ID: Your access key for authentication
  • Secret Access Key: Your secret key for authentication
  • Path Prefix (optional): A subdirectory within your bucket where files should be uploaded

Provider Configuration Examples

Cloudflare R2

Cloudflare R2 provides S3-compatible object storage with no egress fees.

Endpoint URL format: https://<ACCOUNT_ID>.r2.cloudflarestorage.com

To find your Account ID and create API tokens: 1. Log in to your Cloudflare dashboard 2. Navigate to R2 in the sidebar 3. Your Account ID is displayed on the overview page 4. Click "Manage R2 API Tokens" to create access credentials

For detailed instructions on creating R2 API tokens, see the Cloudflare R2 documentation.

Example configuration: - Endpoint URL: https://a1b2c3d4e5f6g7h8i9j0.r2.cloudflarestorage.com - Bucket Name: my-website-assets - Access Key ID: Your R2 access key - Secret Access Key: Your R2 secret key

Wasabi

Wasabi offers hot cloud storage that is S3-compatible with predictable pricing.

Endpoint URL format: https://s3.<REGION>.wasabisys.com

Available regions: - us-east-1 - US East (N. Virginia) - us-east-2 - US East (N. Virginia) - us-central-1 - US Central (Texas) - us-west-1 - US West (Oregon) - eu-central-1 - EU (Amsterdam) - eu-central-2 - EU (Frankfurt) - eu-west-1 - EU (London) - eu-west-2 - EU (Paris) - ap-northeast-1 - AP (Tokyo) - ap-northeast-2 - AP (Osaka) - ap-southeast-1 - AP (Singapore) - ap-southeast-2 - AP (Sydney)

Example configuration: - Endpoint URL: https://s3.eu-central-1.wasabisys.com - Bucket Name: my-deployment-bucket - Access Key ID: Your Wasabi access key - Secret Access Key: Your Wasabi secret key

Backblaze B2

Backblaze B2 provides affordable S3-compatible cloud storage.

Endpoint URL format: https://s3.<REGION>.backblazeb2.com

Available regions: - us-west-004 - US West - eu-central-003 - EU Central

To get your credentials: 1. Log in to your Backblaze account 2. Go to "App Keys" under Account 3. Create a new application key with appropriate bucket access

Example configuration: - Endpoint URL: https://s3.us-west-004.backblazeb2.com - Bucket Name: my-b2-bucket - Access Key ID: Your B2 keyID - Secret Access Key: Your B2 applicationKey

MinIO

MinIO is a self-hosted S3-compatible object storage solution.

Endpoint URL format: https://<YOUR_MINIO_SERVER>:<PORT>

or for local/internal deployments: http://<YOUR_MINIO_SERVER>:<PORT>

Example configuration: - Endpoint URL: https://minio.example.com:9000 - Bucket Name: deployments - Access Key ID: Your MinIO access key - Secret Access Key: Your MinIO secret key

DigitalOcean Spaces

DigitalOcean Spaces provides S3-compatible object storage.

Endpoint URL format: https://<REGION>.digitaloceanspaces.com

Available regions: - nyc3 - New York - sfo3 - San Francisco - ams3 - Amsterdam - sgp1 - Singapore - fra1 - Frankfurt - syd1 - Sydney

Example configuration: - Endpoint URL: https://nyc3.digitaloceanspaces.com - Bucket Name: my-space-name - Access Key ID: Your Spaces access key - Secret Access Key: Your Spaces secret key

Katapult Object Storage

Katapult provides S3-compatible object storage as part of their cloud platform.

Endpoint URL format: https://<REGION>.object-storage.katapult.io

Contact Katapult support or check their documentation for available regions and credential setup.

Request Headers

Within the Request Headers section, you can configure specific metadata to send along with files matching a given pattern.

You may, for example, wish to send a Cache-Control header for all files, or a Content-Disposition header for all files of a certain type or even in a certain directory, to force them to be downloaded rather than rendered inline in the end-user's browser.

Common Header Examples

Cache control for all files: - Header Key: Cache-Control - Header Value: max-age=31536000 - Pattern: *

Force download for PDF files: - Header Key: Content-Disposition - Header Value: attachment - Pattern: *.pdf

Set content type for JSON files: - Header Key: Content-Type - Header Value: application/json - Pattern: *.json

Add as many header rules as you need within this section, starting with the Header Key and Header Value, followed by a glob pattern to match files.

Troubleshooting

Invalid Endpoint URL

Ensure your endpoint URL: - Starts with https:// (or http:// for local MinIO) - Does not include the bucket name in the URL - Does not have a trailing slash

Access Denied Errors

Verify that your access credentials have the following permissions: - s3:GetObject - s3:PutObject - s3:DeleteObject - s3:ListBucket

Connection Timeout

If you're using a self-hosted solution like MinIO, ensure: - The endpoint is accessible from the internet - Any firewalls allow connections from DeployHQ's IP addresses - The correct port is specified in the endpoint URL