ext_http_server
An extended version of Python's http.server that turns a simple static file
server into one supporting HTTPS, HTTP Basic authentication, server-to-client
rate limiting, and resumable downloads via HTTP Range requests.
Requirements
ext_http_server supports Python 3.10 through 3.14.
Installation
Install the ext_http_server command with uv:
uv tool install ext_http_server
Generate a certificate
Generate a self-signed certificate, writing the private key and certificate
together into cert.pem (the single file --cert expects). This uses a modern
ECDSA P-256 key, which every common TLS client supports (Ed25519 keys are
newer but are rejected by some clients, including the LibreSSL-based curl that
ships with macOS as of June 2026):
openssl req -x509 -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -noenc -keyout cert.pem -out cert.pem -days 365 -subj "/CN=localhost"
Running ext_http_server
If you have files you want to serve in /tmp/path/to/files/ run the following
to serve them up with a max outgoing throughput of 16KBps:
ext_http_server --cert cert.pem -d /tmp/path/to/files -r16 -a foo:bar
Or run it once without installing:
uvx ext_http_server --cert cert.pem -d /tmp/path/to/files -r16 -a foo:bar
By default, you will be able to access the webserver at
https://localhost:8000. To authenticate, use the
username foo and the password bar as indicated by the -a foo:bar
argument. Note that multiple -a arguments can be added to add more than one
user.
Release files for ext_http_server 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ext_http_server-1.0.1.tar.gz | 31.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ext_http_server-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 38.1 kB
Release files / ext_http_server-1.0.1.tar.gz
| Download URL | ext_http_server-1.0.1.tar.gz |
|---|---|
| Size | 31.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1d1d02401a88e6a7787ce38cf93d4dcfeb57e85e95e45d7acc83598f0544ab2e
|
|
BLAKE2b-256 checksum How to use checksums |
550fc4138a44e727f895bf2cc0a6841c0ebcdb8d025fb6191e0ba5970051ee02
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / ext_http_server-1.0.1-py3-none-any.whl
| Download URL | ext_http_server-1.0.1-py3-none-any.whl |
|---|---|
| Size | 7.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
631878d1a55d71d2d97644b5b9efe715d6776a649749d0c11d18b524bad3d515
|
|
BLAKE2b-256 checksum How to use checksums |
60dcd5e926371c482f7e7973fe0fdaddaeeb20dfb2c8114cebba85f6e46892e1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|