For when you really just want to serve some files over HTTP right now!
miniserve is a small, self-contained cross-platform CLI tool that allows you to just grab the binary and serve some file(s) via HTTP. Sometimes this is just a more practical and quick way than doing things properly.
miniserve linux-distro-collection/
miniserve linux-distro.iso
miniserve --auth joe:123 unreleased-linux-distros/
miniserve --random-route -i 192.168.0.1 /tmp
# Serving path /private/tmp at http://192.168.0.1/c789b6
miniserve -i 192.168.0.1 -i 10.13.37.10 -i ::1 -- /tmp/myshare
miniserve --sort=natural /tmp/myshare # (default behaviour)
# 1/
# 2/
# 3
# 11
miniserve --sort=alpha /tmp/myshare
# 1/
# 11
# 2/
# 3
miniserve --sort=dirsfirst /tmp/myshare
# 1/
# 2/
# 11
# 3
miniserve --reverse /tmp/myshare
# 11
# 3
# 2/
# 1/
On Linux: Download miniserve-linux
from the releases page and run
chmod +x miniserve-linux
./miniserve-linux
On OSX: Download miniserve-osx
from the releases page and run
chmod +x miniserve-osx
./miniserve-osx
On Windows: Download miniserve-win.exe
from the releases page and run
miniserve-win.exe
With Cargo: If you have a somewhat recent version of Rust and Cargo installed, you can run
cargo install miniserve
miniserve
For convenience reasons, miniserve will try to bind on all interfaces by default (if no -i
is provided).
It will also do that if explicitly provided with -i 0.0.0.0
or -i ::
.
In all of the aforementioned cases, it will bind on both IPv4 and IPv6.
If provided with an explicit non-default interface, it will ONLY bind to that interface.
You can provide -i
multiple times to bind to multiple interfaces at the same time.
This is mostly a note for me on how to release this thing:
Cargo.toml
and run cargo update
.git commit
and git tag -s
, git push
.cargo publish