Configure storage
You need a storage provider before you can create backups. OEC.SH stores your backups (database dump + filestore) in cloud storage that you control.
Pick a provider
| Provider | Cost | Egress fees | Best for |
|---|---|---|---|
| Cloudflare R2 | $0.015/GB/mo | Free | Most users (recommended) |
| AWS S3 | $0.023/GB/mo | $0.09/GB | Enterprise, multi-region |
| Backblaze B2 | $0.005/GB/mo | $0.01/GB | Long-term archival |
| MinIO | Your infra cost | Free | Self-hosted, GDPR |
| SFTP/FTP | Your infra cost | Free | Legacy systems |
Cloudflare R2 is the simplest choice. Zero egress fees means downloading backups doesn't cost extra.
Set up Cloudflare R2 (recommended)
1. Create a bucket in Cloudflare
- Log into your Cloudflare dashboard (opens in a new tab)
- Go to R2 in the sidebar
- Click Create Bucket
- Name it (e.g.,
oecsh-backups) - Note your Account ID from the R2 overview page
2. Generate API credentials
- In the R2 dashboard, click Manage R2 API Tokens
- Click Create API Token
- Give it Object Read & Write permission
- Copy the Access Key ID and Secret Access Key immediately - you won't see the secret again
3. Add it to OEC.SH
- Go to Settings > Storage
- Click Add Storage Provider
- Fill in:
- Name: Something descriptive (e.g., "R2 Production Backups")
- Provider: Cloudflare R2
- Bucket: Your bucket name
- Account ID: From Cloudflare
- Access Key / Secret Key: From step 2
- Click Test Connection to verify
- Check Set as Default so backups use this automatically
- Click Save
Done. You can now create backups.
Other providers
The setup is similar for all providers - add credentials, test the connection, save.
AWS S3: You'll need an IAM user with s3:GetObject, s3:PutObject, s3:DeleteObject permissions and a bucket in your preferred region.
Backblaze B2: Create an Application Key with read/write access to your bucket. Use the Application Key ID as the access key.
MinIO: Point to your MinIO endpoint (include http:// or https:// and port). Works like S3.
SFTP/FTP: Use your server's hostname, username, and password. SFTP (port 22) is more secure than FTP (port 21).
See the detailed guides for each provider in the Storage section.
Common issues
"Invalid credentials" - Double-check your access key and secret key. Watch for extra spaces when pasting.
"Bucket not found" - Verify the bucket name is spelled correctly and exists in your provider's dashboard.
"Access denied" - Your API token may not have write permissions. Check the token's scope in your provider's settings.
"Connection timeout" - Make sure outbound HTTPS (port 443) isn't blocked by a firewall. For SFTP/FTP, check that the appropriate port is open.
Next steps
- Create a project - Connect your Git repo and pick an Odoo version
- Deploy an environment - Get Odoo running