Repolode
svenstaro

svenstaro/miniserve

A single-binary Rust CLI that instantly serves files and directories over HTTP, with optional auth, uploads, and TLS.

Stars
7,922
Forks
401
Open issues
93
Last commit
24 days ago

What is it?

miniserve is a small command-line tool for sharing files over HTTP without setting up a proper web server. You point it at a directory or a single file, and it starts serving it with a browsable listing, or serves a chosen index file instead. It ships as one self-contained binary, available for Linux, macOS, Windows, and via Cargo, Homebrew, Docker, and Podman.

Beyond basic serving, it covers common ad-hoc needs: username/password authentication (plain or SHA-256/SHA-512 hashed), file and folder uploads, directory creation, file deletion when enabled, and on-the-fly tar, tar.gz, or zip downloads of folders. It can also run over TLS, add custom response headers, serve SPAs with fallback routing, and expose a read-only WebDAV endpoint.

It is built on Rust and the Actix web framework. The project positions itself against ad-hoc alternatives such as Python's built-in HTTP server and netcat, noting better MIME type handling and easier setup on Windows.

Key features

  • 01Serves a directory or a single file with a browsable listing and optional custom index file.
  • 02Supports username/password auth, including SHA-256 and SHA-512 hashed passwords.
  • 03Allows file uploads, directory creation, and optional deletion, restricted to chosen paths.
  • 04Downloads folders as tar, tar.gz, or zip archives generated on the fly.
  • 05Offers TLS, custom response headers, SPA fallback routing, and read-only WebDAV.
  • 06Includes search filtering, QR code display, light/dark themes, and shell completions.

Use cases

  • Quickly sharing a large ISO or folder with someone on the same network.
  • Serving a static site or single-page app build locally for testing.
  • Letting a phone upload photos to a laptop through a browser.
  • Running a password-protected file share on a home server or daemon via systemd.

Quick start

  1. 1

    Get the miniserve binary (the README links to Crates.io and Docker Hub)

  2. 2

    Serve a directory

    miniserve linux-distro-collection/

Things to know

  • Zip archive generation is done in memory, so large directories can cause out-of-memory errors.
  • TLS is only available for supported architectures.

In collections

Topics

FAQ

What is miniserve?
A single-binary Rust CLI that instantly serves files and directories over HTTP, with optional auth, uploads, and TLS. miniserve is a small command-line tool for sharing files over HTTP without setting up a proper web server. You point it at a directory or a single file, and it starts serving it with a browsable listing, or serves a chosen index file instead. It ships as one self-contained binary, available for Linux, macOS, Windows, and via Cargo, Homebrew, Docker, and Podman.
Is miniserve free to use? What license does it have?
miniserve is open source under the MIT license. Check the license terms before using it in commercial products.
Is miniserve still maintained?
Actively maintained. The last commit to miniserve was on Oct 1, 2026.
What can I use miniserve for?
Quickly sharing a large ISO or folder with someone on the same network. Serving a static site or single-page app build locally for testing. Letting a phone upload photos to a laptop through a browser. Running a password-protected file share on a home server or daemon via systemd.
How do I install miniserve?
Get the miniserve binary (the README links to Crates.io and Docker Hub) Serve a directory: miniserve linux-distro-collection/
Where can I get miniserve?
The source code and installation instructions are on GitHub: https://github.com/svenstaro/miniserve

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects