S3 Media Storage
brūhi Cloud can store and stream audio files directly from S3-compatible object storage providers. This allows you to host multi-terabyte media libraries without filling your server’s local hard drive.
Supported Cloud Storage Providers
Section titled “Supported Cloud Storage Providers”| Provider | S3-Compatible | Notes |
|---|---|---|
| AWS S3 | Standard Native | Official Amazon S3 storage (s3.amazonaws.com) |
| Cloudflare R2 | Yes | Zero egress fees; recommended for high-volume radio stations |
| MinIO | Self-Hosted | Run your own private object storage server |
| Backblaze B2 | Yes | Low-cost cloud object storage |
Configuration
Section titled “Configuration”You can connect your S3-compatible storage bucket either dynamically via the Admin Dashboard UI or via Environment Variables in .env.
Option 1 — In the Admin Dashboard (Recommended)
Section titled “Option 1 — In the Admin Dashboard (Recommended)”- Navigate to Admin Settings → Storage & Cloud in the web dashboard.
- Select your provider (AWS S3, Cloudflare R2, MinIO, or Custom S3-Compatible).
- Enter your Endpoint URL, Bucket Name, Region, Access Key ID, and Secret Access Key.
- Click Save Storage Settings. Changes take effect immediately without needing to restart the container.
Option 2 — Via Server Environment Variables (.env)
Section titled “Option 2 — Via Server Environment Variables (.env)”Alternatively, configure your credentials in ~/bruhi-cloud/.env:
S3_ENDPOINT_URL=https://your-account-id.r2.cloudflarestorage.comS3_ACCESS_KEY=your-access-key-idS3_SECRET_KEY=your-secret-access-keyS3_BUCKET=bruhi-media-libraryS3_REGION=autoProvider-Specific Notes
Section titled “Provider-Specific Notes”- Cloudflare R2: Set
S3_REGION=autoand use your Cloudflare account R2 endpoint URL (https://<account-id>.r2.cloudflarestorage.com). - MinIO: Use your self-hosted MinIO URL (e.g.,
http://minio:9000orhttps://minio.yourdomain.com) and setS3_REGION=us-east-1. - AWS S3: Leave
S3_ENDPOINT_URLblank or specify your AWS regional endpoint (e.g.,https://s3.us-east-1.amazonaws.com). - Backblaze B2: Use the S3 endpoint provided in your B2 bucket settings (e.g.
https://s3.us-west-004.backblazeb2.com).
S3 Media Browser in Dashboard
Section titled “S3 Media Browser in Dashboard”Once configured, the S3 Media Browser tab automatically appears in the Content Library workspace:
- Folder Navigation: Browse audio tracks organized by bucket folder prefixes.
- Metadata Inspection: View track duration, bitrate, sample rate, and tags.
- Instant Preview: Listen to tracks directly in your browser.
- Queue & Cart Assignment: Add S3 tracks directly to player queues, playlists, or Cart Wall soundboard pads.
- Track Deletion: Remove tracks from your cloud bucket with automatic database cleanup.
Direct Cloud Streaming & Security
Section titled “Direct Cloud Streaming & Security”- Presigned Streaming: brūhi Cloud generates temporary presigned URLs when loading tracks for browser playback. Audio streams directly from S3 to your browser, preventing server bandwidth bottlenecks.
- Private Buckets: Your S3 bucket does not need to be public. Credentials remain securely stored on your brūhi server.
CORS Configuration
Section titled “CORS Configuration”If you encounter audio playback issues, ensure your S3 bucket’s CORS policy permits requests from your brūhi domain:
[ { "AllowedOrigins": ["https://radio.yourdomain.com"], "AllowedMethods": ["GET", "HEAD"], "AllowedHeaders": ["*"] }]Mixing Local & S3 Media
Section titled “Mixing Local & S3 Media”brūhi Cloud seamlessly supports hybrid setups:
- Local files uploaded directly to the server volume and cloud S3 files can be mixed in the same playlist or schedule block with zero transition delay.