Prerequisites
- A Cloudflare account (sign up here)
- Access to R2 storage (available on free and paid plans)
Step 1: Create an R2 Bucket
Navigate to R2
- Log in to your Cloudflare Dashboard
- Click R2 in the left sidebar
- If this is your first time, you may need to enable R2 for your account
Create a new bucket
- Click Create bucket
- Enter a unique bucket name (e.g.,
zipdrop-uploads) - Select a location hint (choose the region closest to you)
- Click Create bucket
Configure bucket for public access (optional)
If you want uploaded files to be publicly accessible:
- Navigate to your bucket’s Settings tab
- Scroll to Public access
- Click Connect domain to set up a custom domain (see Custom Domain Configuration)
Without a custom domain, files will only be accessible via signed URLs or private access.
Step 2: Find Your Account ID
Locate Account ID
Your Account ID is required for ZipDrop to connect to R2.
- In the Cloudflare Dashboard, click on R2 in the sidebar
- On the right side of the page, you’ll see your Account ID displayed
- Click the copy icon to copy it to your clipboard
The Account ID is also visible in the URL:
https://dash.cloudflare.com/<ACCOUNT_ID>/r2Step 3: Generate API Tokens
ZipDrop requires an API token with read and write permissions to your R2 bucket.Create an API token
- In the Cloudflare Dashboard, navigate to R2
- Click Manage R2 API Tokens in the right sidebar
- Click Create API token
Configure token permissions
- Token name: Enter a descriptive name like
ZipDrop Upload Token - Permissions: Select Object Read & Write
- Bucket scope:
- Choose Apply to specific buckets only
- Select the bucket you created earlier
- TTL: Leave as default or set a custom expiration
- Click Create API Token
Step 4: Configure ZipDrop
Once you have your credentials, you need to configure ZipDrop:- Open ZipDrop from the menu bar
- Click the settings icon (gear icon)
- Enter your R2 credentials:
- Access Key ID: Paste the Access Key from Step 3
- Secret Access Key: Paste the Secret Access Key from Step 3
- Bucket Name: Enter your bucket name (e.g.,
zipdrop-uploads) - Account ID: Paste your Account ID from Step 2
- Public URL Base: Your custom domain URL or R2 public URL (see below)
Public URL Configuration
The Public URL Base determines how ZipDrop generates shareable links:For custom domains, see the Custom Domain Setup Guide.
Credential Validation
When you save your configuration, ZipDrop automatically validates your credentials by:- Creating a test connection to your R2 bucket
- Uploading a tiny test file (
.zipdrop-connection-test) - Verifying the upload succeeded
- Deleting the test file
- Your Account ID is correct (endpoint resolves)
- Your API credentials are valid (request is properly signed)
- Your bucket exists and has write permissions
uploader.rs:55-99 for the validation implementation:
Next Steps
After configuring R2:- Learn how credentials are securely stored
- Set up a custom domain for branded upload URLs
- Start uploading files by dragging them to the ZipDrop window
Troubleshooting
”Invalid R2 credentials” error
- Verify your Access Key ID and Secret Access Key are correct
- Ensure the API token has Object Read & Write permissions
- Check that the token is scoped to the correct bucket
”Connection failed” error
- Check your internet connection
- Verify your firewall isn’t blocking Cloudflare R2 (*.r2.cloudflarestorage.com)
- Ensure your Account ID is correct
”Bucket not found” error
- Verify the bucket name matches exactly (case-sensitive)
- Ensure the bucket exists in your Cloudflare account
- Check that the API token has access to this specific bucket