rekalogika/file-server
A file server for Laravel that streams files from local or remote storage through controlled HTTP endpoints, with access control, range requests, caching headers, and clean URLs. Deliver private downloads, images, and media without exposing storage paths.
FileInterface object and returns a time-limited, unguessable URL — which is exactly the "secure download link" primitive behind most file-handling features. Use it as the reference design when scoping that work, even if you don't install it.[READ-ONLY] mirror marker, and an ecosystem score near zero, the package is evidence of a pattern, not a validated vendor choice. The PM decision it should trigger is "adopt the approach, own the implementation."rekalogika/* family is Symfony-leaning (PSR-based file abstraction, middleware-style serving). On Laravel, treat it as design input; the native equivalents (URL::temporarySignedRoute, signed route middleware, Flysystem adapters, S3 presigned URLs) carry the same product semantics with first-party support.Consider the approach — and possibly the package — when:
FileInterface) is already in the stack — this is a companion piece, not a standalone win.Look elsewhere when:
URL::temporarySignedRoute() plus signed middleware, or Storage::temporaryUrl() for S3-compatible disks, covers the same ground with first-party maintenance, documentation, and hiring familiarity. A 1-star, 0-dependent dependency handling sensitive files is a poor trade against built-in primitives.Recommended stance: use as a pattern reference and, if you adopt anything, vendor a small amount of code behind an internal interface so the package is replaceable in one file. Do not make it a load-bearing dependency without a spike and a documented exit path.
To executives (one paragraph): We're evaluating how we serve private files — contracts, invoices, customer documents — without making them public or routing every download through our application servers. This package is a compact, MIT-licensed implementation of the standard answer: generate a link that expires, so access is time-bound and revocable rather than permanent. It's a useful blueprint, but it has essentially no adoption (1 star, no dependent projects) and it's a read-only mirror, so it's not a vendor we can lean on. Recommendation: adopt the pattern, build it on our existing framework primitives, and keep the design portable so we can change storage providers without touching product behavior. This is a small, low-cost decision with a clear security upside.
To engineering leads: The package demonstrates a clean separation — a FileInterface abstraction plus a resource server that mints temporary URLs — which decouples delivery from storage. That separation is worth copying. The dependency itself is not: single-maintainer, unmaintained-looking, zero downstream users, and Symfony-leaning while we're on Laravel. I'd propose we implement the same contract internally using temporarySignedRoute / Storage::temporaryUrl, encapsulate it behind one interface, and use this repo as the design doc. Rough cost: a day or two for the core path plus tests; the package saves us at most a day and costs us an unowned security surface.
To security/compliance: Expiring, unguessable URLs reduce exposure versus public buckets or permanent links, and avoid long-lived storage credentials in application code. However, the package has no independent security review, no CVE history, and no downstream population to surface issues — so any adoption requires our own audit. Also note that signed URLs are bearer tokens: they leak through referrer headers, logs, and chat, and expiry is the only mitigation. We should pair the pattern with short TTLs, per-file authorization at mint time, and access logging.
How can I help you explore Laravel packages today?