buzz-media: hardcoded path-style S3 addressing rules out virtual-hosted-style providers (e.g. Railway Buckets)
- Dominant language
- Rust
- Stars
- 32.7k
- Forks
- 4.3k
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 253
Description
## Problem
`buzz-media` hardcodes path-style S3 addressing. In `crates/buzz-media/src/storage.rs` the bucket client is always built with `.with_path_style()`, and there is no configuration to turn it off.
This rules out S3-compatible providers that only support virtual-hosted-style URLs. The concrete case I hit: Railway Buckets (their managed object storage) is virtual-hosted-style only, so a Railway self-host cannot use the platform's native storage and must run a MinIO service instead.
## Proposal
Add a `BUZZ_S3_FORCE_PATH_STYLE` env var (default `true`, preserving current behavior for MinIO and existing deployments). When set to `false`, skip `.with_path_style()` so the client uses virtual-hosted-style addressing.
Small change: one field on `MediaConfig`, one conditional in `Storage::new`, docs for the new variable per CONTRIBUTING. Happy to PR it if this direction is acceptable.
## Dupes checked
No existing issue or PR covers addressing style. Closest related S3-compat work: #2618 (RustFS as default backend), #2470 (GCS interop), #3002 (Ceph RGW ETags), which suggests the S3 compatibility matrix is an active concern.
Contributor guide
Assessment
This issue has not been assessed yet.