block / block/buzz

buzz-media: hardcoded path-style S3 addressing rules out virtual-hosted-style providers (e.g. Railway Buckets)

Open
#3,273 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.