-
Notifications
You must be signed in to change notification settings - Fork 11
FAQ
Common questions about R2-Manager-Worker.
R2-Manager-Worker is a web application for managing Cloudflare R2 buckets with enterprise-grade authentication. It provides features that aren't available in the Cloudflare dashboard, like bulk operations, signed URLs for file sharing, and a modern user interface.
The Cloudflare dashboard has limited R2 management capabilities. R2-Manager-Worker provides:
- Bulk bucket deletion with progress tracking (v1.3.0)
- Bulk file operations (download multiple files as ZIP)
- File move/copy between buckets
- Signed URL generation for easy file sharing
- Modern, responsive UI
- GitHub SSO authentication
- Self-hosted control over your data
Yes! The application itself is open-source (MIT license). You only pay for Cloudflare services:
- R2 storage and operations (free tier available)
- Workers execution (generous free tier)
See Cloudflare pricing for details.
No, you can use the free workers.dev subdomain provided by Cloudflare. However, a custom domain provides:
- Professional appearance
- Better control over routing
- Custom branding opportunities
First-time setup takes approximately 30-45 minutes:
- 10 minutes: Clone and install dependencies
- 15 minutes: Configure Cloudflare resources
- 10 minutes: Set up Cloudflare Access authentication
- 5 minutes: Deploy to production
Subsequent deployments take < 2 minutes.
Yes! You can have separate deployments for:
- Development (using
workers.dev) - Staging (using a staging subdomain)
- Production (using your main domain)
Each environment needs its own:
- Worker deployment
- R2 bucket
- Cloudflare Access application
The Free plan works great for most use cases! However, file upload limits vary by plan:
- Free/Pro: 100MB per file
- Business: 200MB per file
- Enterprise: 500MB per file
Yes! Security features include:
- Zero Trust authentication - All requests authenticated by Cloudflare Access
- HTTPS only - All traffic encrypted via TLS
- JWT validation - Tokens verified on every API call
- Upload verification - MD5 checksum verification ensures data integrity
- Signed URLs - Download links use HMAC signatures
- No stored credentials - No passwords stored anywhere
By default, only users authenticated via your configured identity provider (GitHub) can access the application. You can restrict this further by:
- Limiting to specific GitHub organizations
- Allowing only specific email addresses
- Using group-based policies
Yes! Cloudflare Access supports many identity providers:
- GitHub (configured by default)
- Azure AD
- Okta
- OneLogin
- Generic SAML
- Generic OIDC
Update your Cloudflare Access configuration to use a different provider.
Most endpoints require authentication. The following are public:
-
/site.webmanifest- PWA manifest -
/favicon.ico- Favicon - Static assets (with Bypass policy)
- Signed file downloads (signature validated)
The application supports a wide range of file types commonly used in R2 buckets:
- Documents (PDF, Word, Excel, PowerPoint, TXT, Markdown, CSV)
- Images (JPG, PNG, GIF, WebP, AVIF, HEIC, SVG, BMP, PSD)
- Videos (MP4, MOV, WebM, AVI, MKV, WMV, FLV, MPEG, 3GP, OGG)
- Audio (MP3, WAV, FLAC, AAC, M4A, OGG, OPUS)
- Archives (ZIP, RAR, 7Z, TAR, GZ)
- Fonts (TTF, OTF, WOFF, WOFF2, EOT)
- Code files (JS, TS, Python, Java, CSS, HTML, JSON, YAML, SQL, etc.)
- Databases (SQLite, Parquet)
- And many more!
See Development Guide - File Type Categories for complete list with size limits.
The application supports up to 500MB per file, but Cloudflare enforces plan-based limits:
- Free/Pro: 100MB maximum
- Business: 200MB maximum
- Enterprise: 500MB maximum
Files are automatically chunked in 10MB pieces for reliability.
Not directly through the UI. However, you can:
- ZIP the folder locally
- Upload the ZIP file
- Extract on your end when needed
Or use the Cloudflare API or tools like rclone for folder uploads.
Use the Signed URL feature:
- Hover over a file (Grid view) or click the link icon
- Or click "Copy Link" button (List view)
- The signed URL is copied to your clipboard
- Share the link with anyone who needs access
The URL includes a signature that validates the download request without requiring authentication.
Yes! File renaming was added in v1.0.2. Right-click on any file and select "Rename" from the context menu.
Yes! Bulk bucket deletion is available:
- Select buckets by clicking the checkbox in the top-left corner of each bucket card
- Click "Delete Selected" in the bulk action toolbar
- Review the confirmation modal showing all buckets and total file counts
- Confirm deletion and track progress with the progress bar
All files within each bucket are automatically deleted (force delete) before the bucket is removed.
The application includes automatic retry logic:
- Failed chunks are retried up to 3 times
- If upload fails completely, you can retry manually
- Partial uploads are cleaned up automatically
Bucket renaming isn't a native R2 operation. The application:
- Creates a new bucket
- Copies all objects to the new bucket
- Deletes the old bucket
For large buckets, this can take several minutes. Rate limiting delays are built-in to avoid API throttling.
Force delete iterates through all objects in the bucket and deletes them individually. For buckets with thousands of objects:
- 100 objects ≈ 30 seconds
- 1,000 objects ≈ 5 minutes
- 10,000 objects ≈ 50 minutes
The Worker includes 500ms delays between batches to respect API rate limits.
Bulk deletion processes buckets sequentially (one at a time), not in parallel:
- Empty bucket ≈ 5-10 seconds
- Bucket with 100 files ≈ 30-60 seconds
- Bucket with 1,000 files ≈ 5-8 minutes
Progress is displayed in real-time with a progress bar showing "Deleting bucket X of Y". If one bucket fails, the operation continues with the remaining buckets.
Not significantly - rate limiting is necessary to avoid hitting Cloudflare API limits. For very large buckets, consider:
- Using the Cloudflare API directly
- Using tools like
rclonefor bulk operations - Breaking operations into smaller batches
Click the theme toggle button in the header (next to the Logout button) to cycle through:
- System - Automatically follows your OS/browser theme preference
- Light - Force light mode
- Dark - Force dark mode
Your preference is saved and persists across sessions.
Yes! When in "System" mode (the default), the application automatically detects and follows your operating system's theme preference. If you change your OS theme while the app is open, it updates instantly.
Yes! The theme system uses CSS custom properties (variables) that can be customized:
- Fork the repository
- Edit
src/styles/themes.css - Modify color values for light/dark themes
- Deploy your customized version
See the Development Guide for technical details.
Absolutely! Contributions are welcome:
- Fork the repository
- Create a feature branch
- Make your changes
- Open a Pull Request
See Contributing Guidelines for details.
Yes! The UI is built with vanilla CSS and React. You can:
- Edit styles in
src/app.css - Modify components in
src/ - Add custom branding
- Change colors and layout
Custom branding via environment variables is on the roadmap.
Definitely! The codebase is well-structured for extensions:
- Add new API endpoints in
worker/index.ts - Add UI components in
src/ - Extend the API client in
src/services/api.ts
Check the Development Guide for details.
Common causes:
-
TEAM_DOMAINdoesn't includehttps:// -
POLICY_AUDdoesn't match Application Audience Tag - GitHub account not allowed in Access policy
- JWT cookie not being set
See Troubleshooting for detailed solutions.
Check that:
- Bucket name in
wrangler.tomlmatches exactly (case-sensitive) -
ACCOUNT_IDsecret is correct - API token has R2 Storage permissions
- Bucket actually exists:
npx wrangler r2 bucket list
- Documentation: Check the wiki
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Troubleshooting: Troubleshooting Guide
Costs depend on your usage. Typical costs for small-to-medium usage:
Workers:
- Free tier: 100,000 requests/day
- Beyond: $0.50 per million requests
R2 Storage:
- Free tier: 10GB storage
- Beyond: $0.015 per GB/month
Example:
- 1,000 daily users
- 10GB storage
- = Likely $0/month on free tier
No hidden costs! All pricing is transparent:
- Workers and R2 have generous free tiers
- No data transfer fees between Cloudflare services
- No fees for API requests within Cloudflare network
See Cloudflare pricing for details.
Similarities:
- Bucket and object management
- Web-based interface
- API integration
Differences:
- R2-Manager-Worker: Self-hosted, edge deployment, Zero Trust auth
- AWS Console: Hosted by AWS, integrated with AWS ecosystem
- R2 advantages: No egress fees, global performance, simpler auth
Not directly. The application is built specifically for Cloudflare R2. However:
- R2 is S3-compatible
- Could potentially be adapted for S3
- Would require changes to authentication and API calls
See the Roadmap for planned features:
- Audit logging
- Role-based access control
- File versioning
- Offline upload queue
- Custom branding
Yes! Feature requests are welcome:
- Open a discussion
- Submit an issue
- Describe your use case and requirements
Have a question not answered here? Ask in Discussions or open an issue.
- Home - Documentation overview
- Quick Start Guide - Get up and running in minutes
- Installation & Setup - Complete deployment guide
- Configuration Reference - Environment variables and settings
- Upgrade Guide - Database schema migrations
- Bucket Management - Create, rename, delete buckets
- Object Lifecycles - Automate expiration and IA transitions ⭐ NEW
- Local Uploads - Faster uploads via nearby edge storage ⭐ NEW
- Job History - Track bulk operations with audit trail ⭐ NEW
- Webhooks - Configure HTTP notifications for events ⭐ NEW
- AI Search - Semantic search with Cloudflare AI
- S3 Import - Migrate from AWS S3 to R2 ⭐ NEW
- Cross-Bucket Search - Search across all buckets with filters
- File Operations - Upload, download, move, copy, delete files
- Folder Management - Organize files hierarchically
- Signed URLs & Sharing - Generate secure shareable links
- Advanced Filtering - Filter by extension, size, and date
- Development Guide - Local setup and development workflow
- API Reference - Complete endpoint documentation
- Architecture Overview - Technical stack and design
- Authentication & Security - Zero Trust implementation
- JWT Validation - JWT token validation and verification
- Troubleshooting - Common issues and solutions
- FAQ - Frequently asked questions
- Roadmap - Planned features and enhancements