Supported Backends
- SeaweedFS (default) - Apache 2.0 licensed, included in docker-compose
- AWS S3 - Amazon’s object storage service
- Cloudflare R2 - S3-compatible storage with zero egress fees
- Backblaze B2 - Affordable S3-compatible storage
- Google Cloud Storage - Via S3 interoperability
- MinIO - Self-hosted S3-compatible storage
- Any S3-compatible service
Configuration
Environment Variables
string
default:"aurora-storage"
required
S3 bucket name. Must exist before starting Aurora.
string
default:"http://seaweedfs-filer:8333"
S3 endpoint URL.
- AWS S3: Omit this variable (uses AWS SDK defaults)
- SeaweedFS:
http://seaweedfs-filer:8333(Docker) orhttp://localhost:8333(local) - Cloudflare R2:
https://<account_id>.r2.cloudflarestorage.com - MinIO:
http://minio:9000
string
default:"admin"
required
S3 access key ID
string
default:"admin"
required
S3 secret access key
string
default:"us-east-1"
S3 region. Use
auto for Cloudflare R2.boolean
default:"false"
Enable SSL/TLS for storage connections. Set to
true for production.boolean
default:"false"
Verify SSL certificates. Set to
true in production.boolean
default:"true"
Enable Redis caching for file listings
number
default:"60"
Cache TTL in seconds
SeaweedFS (Default)
SeaweedFS is a distributed object storage system included in Aurora’s docker-compose stack.Features
- Apache 2.0 licensed - No vendor lock-in
- S3-compatible API - Drop-in replacement for AWS S3
- High performance - Built for speed
- Included in docker-compose - No external dependencies
Configuration
Web UI
SeaweedFS provides web interfaces:- File Browser: http://localhost:8888
- Cluster Status: http://localhost:9333
- S3 API: http://localhost:8333
Creating the Bucket
The bucket is created automatically on first access. To create manually:AWS S3
Use AWS S3 for production deployments with AWS infrastructure.Configuration
Creating the Bucket
IAM Permissions
Create an IAM user with the following policy:Cost Optimization
- Use S3 Intelligent-Tiering for automatic cost optimization
- Enable lifecycle policies to delete old files
- Use S3 Transfer Acceleration for faster uploads (optional)
Cloudflare R2
Cloudflare R2 offers S3-compatible storage with zero egress fees.Configuration
Creating the Bucket
- Go to Cloudflare Dashboard → R2
- Click “Create bucket”
- Name your bucket:
my-aurora-bucket - Create API token:
- Navigate to R2 → API Tokens
- Create API token with “Object Read & Write” permissions
- Copy the Access Key ID and Secret Access Key
Benefits
- Zero egress fees - No charges for downloads
- S3-compatible API - Works with existing S3 tools
- Global distribution - Low latency worldwide
MinIO
Self-hosted S3-compatible storage for on-premises deployments.Configuration
Docker Compose
Add MinIO to your docker-compose:Web UI
Access MinIO console at http://localhost:9001Python API
Basic Usage
Upload from Flask Request
User-Scoped Paths
All files are automatically scoped to users:Caching
File listings are cached in Redis:File Organization
Recommended Structure
Path Traversal Protection
The storage manager prevents directory traversal attacks:Troubleshooting
Connection Errors
Bucket Not Found
Permission Denied
SSL Certificate Errors
File Size Limits
Default max file size is 100MB. To increase:Security Best Practices
Production Checklist
- Use strong credentials (not
admin/admin) - Enable SSL/TLS (
STORAGE_USE_SSL=true) - Verify SSL certificates (
STORAGE_VERIFY_SSL=true) - Use IAM roles instead of static keys (AWS)
- Enable bucket versioning
- Configure lifecycle policies for old files
- Restrict bucket access to Aurora services only
- Enable server-side encryption
- Monitor access logs
Encryption
Access Control
Migration
Switching Backends
To migrate from SeaweedFS to AWS S3:-
Sync existing files:
-
Update
.env: -
Restart Aurora:
-
Verify migration: