siberfx/laravel-rustfs
Connect Laravel to RustFS, the S3-compatible object storage written in Rust. The package provides a filesystem driver so you can register a RustFS disk and use Laravel's familiar Storage facade to upload, read, delete, and manage files through the same API you already use for S3.
Architecture fit
Storage facade / FilesystemManager abstraction rather than introducing a parallel storage API. That is the single most important architectural property: application code depends on Laravel contracts, not on RustFS.Integration feasibility
config/filesystems.php, environment-driven credentials, and standard Storage::disk('rustfs') calls. Teams already fluent with the Laravel S3 driver should be productive in days, not weeks.rustfs/rustfs:1.0.3): presigned POST policy enforcement and restoring an older version by copying it onto the same key. Those are the flows most likely to be relied on in production and were previously unverified.Technical risk
Content-Type or any size limit. This is a documented, tested limitation, not a bug being fixed. Client-side Content-Type in a PUT is advisory; the server will accept whatever arrives. Consequences are concrete and commercially relevant: unbounded object sizes translate directly into storage and egress cost, and content-type spoofing on a public bucket enables stored-XSS-style abuse when objects are served back.EntityTooLarge on oversize, InvalidPolicyDocument on wrong key prefix). This makes presigned POST the correct default for any browser-direct upload path where the server must hold the line on limits.Key questions
Stack fit
Storage for local and S3 disks and want a self-hosted, S3-compatible target — for data residency, cost, or on-prem requirements.Migration path
rustfs/rustfs:1.0.3 (matching CI) → staging with production-shaped buckets, lifecycle rules, and IAM → production with a documented rollback to the previous disk.Compatibility
Sequencing
rustfs/rustfs:1.0.3 in dev and CI to match the package's validated surface.Maintenance
Support
Scaling
Failure modes
Content-Disposition, a separate download domain, and response-header policy.InvalidPolicyDocument is a clear failure, but misconfigured policy conditions can produce rejections that look like client bugs. Log and surface storage error codes distinctly from application errors.Ramp-up
How can I help you explore Laravel packages today?