Skip to content

Releases

BlazeServe 1.0.0

Choose a tag to compare

@github-actions github-actions released this 08 Nov 11:20

BlazeServe 1.0 is a rewrite of the file server in Rust. It serves large static files over HTTP/1.1 and HTTP/2, and the same program also downloads and uploads them from the command line. The options and web addresses are the same as 0.x, apart from the changes listed under Upgrading.

What you get

  • Large files without drama. Downloads stream in small chunks, so memory stays flat however big the file is. Byte ranges, conditional requests and precompressed .br and .gz files work as browsers and download tools expect.
  • blaze get and blaze put. Resumable transfers, with parallel segments for big downloads. If the file changes on the server, the download starts over instead of mixing two versions.
  • Safe uploads. Off until you set --max-upload-mb and a password. Files are staged, checked and then published, and nothing is overwritten unless the request carries a matching If-Match tag.
  • Folders as ZIP. Download any folder as a streamed ZIP at /__zip__.
  • HTTPS and HTTP/2. TLS 1.2 or newer through rustls, with a clear error if the certificate and key do not match.
  • Ready for production. Health and readiness endpoints, Prometheus metrics, optional OpenTelemetry export, JSON logs, request IDs, rate limits and a connection limit.
  • Checks before you serve. blaze doctor ./site looks at the folder, the port and your system, and blaze benchmark measures throughput.
  • Runs anywhere. Linux, macOS and Windows, as a single binary, a Python package, a Rust crate or a small container image that runs as a non-root user.

Install

pip install blazeserve
cargo install blazeserve
docker run --rm -p 8000:8000 -v "$PWD:/data:ro" ghcr.io/whoisjayd/blazeserve:1.0.0

Prebuilt binaries for Linux (x86_64 and ARM64, glibc and musl), macOS (Intel and Apple Silicon) and Windows are attached below, with a SHA256SUMS file to check them.

Then try:

blaze serve ./site

Upgrading from 0.x

Read Upgrading from 0.x before you update. The short version:

  • The Python functions and classes from 0.x are gone. Use blazeserve.Server and blazeserve.main.
  • Uploads are off by default. --max-upload-mb 0 used to mean unlimited. Now it means off.
  • Paths are decoded once, and connections are limited by --max-connections.
  • The alert BlazeServeHighActiveConnections is now BlazeServeHighActiveRequests, and two new connection metrics were added.
  • The container image is built from scratch, has no shell and no built-in health check. Use /__live__ and /__ready__ from your orchestrator.

Anonymous usage report

BlazeServe sends a small anonymous usage report by default. You can turn it off, and the telemetry guide lists exactly what it contains.

Documentation

Start with the README and the guides in docs. If something does not work, run blaze doctor and see the troubleshooting guide.