rshs 0.9.2

A lightweight HTTP + WebDAV file server
Documentation

crates.io Build & Test MIT

A WebDAV server that Just Works — zero config, litmus 100%. Built in Rust for speed and correctness, packaged as a single Docker image for easy deployment.

Features

  • Browser + WebDAV hybrid — HTML directory listings for humans, WebDAV protocol for mounting (Finder, Explorer, davfs).
  • Fast and lightweight — dispatch ~42µs (GET); 10MB read at 835 MiB/s, 1000-file directory listing in 1.7ms, PROPFIND 200 files in 1.1ms. Full benchmark report
  • Zero config, one command — no config files, daemons, or runtime dependencies beyond Docker. Just mount a volume and go.
  • Litmus 102/102 — full RFC 4918 Class 2 compliance: locks, copy/move, conditional If headers, dead properties. All five suites pass.
  • TLS + HTTP/2 — built-in HTTPS with automatic HTTP/2 negotiation.
  • Optional Basic Auth — per-user credentials with persistent shadow files (SHA-512 crypt).

Installation

docker pull docker.io/mogeko/rshs:latest
# or
docker pull ghcr.io/mogeko/rshs:latest

Quick Start

# Serve ./data on port 8080
docker run --rm -p 8080:8080 -v ./data:/mnt/data mogeko/rshs

# With TLS (default port 8443)
docker run --rm -p 8443:8443 \
  -v ./certs:/certs -v ./data:/mnt/data \
  mogeko/rshs --tls-cert /certs/cert.pem --tls-key /certs/key.pem

# With authentication
docker run --rm -p 8080:8080 -v ./data:/mnt/data \
  mogeko/rshs --user admin:secret123

Open http://localhost:8080 in a browser, or mount as WebDAV:

# Linux (davfs2)
sudo mount -t davfs http://localhost:8080 /mnt/webdav
# macOS (Finder)
Cmd+K`http://localhost:8080`
# Windows (Explorer)
Map Network Drive → `http://localhost:8080`

Documentation

Document Description
Usage Guide Full usage, auth, shadow files, CLI
Docker Compose Docker Compose deployment
Podman Quadlet Podman Quadlet deployment
Kubernetes K8s deployment, PVC, Ingress
Benchmark Report Performance benchmarks (56 benchmarks, 6 suites)
Litmus Test Report WebDAV conformance test results

Environment Variables

Variable Description Default
RSHS_ROOT_DIR Root directory to serve .
RSHS_HOST Bind address 0.0.0.0
RSHS_PORT Bind port (8080 plain, 8443 with TLS)
RSHS_TLS_CERT TLS certificate file path (PEM)
RSHS_TLS_KEY TLS private key file path (PEM)
RSHS_USERS user:pass;... auth pairs
RSHS_SHADOW_FILE Shadow file path
RSHS_LOCK_TIMEOUT Default WebDAV lock timeout in seconds (default: 300) 300
RSHS_LOG Log filter (e.g. debug, rshs[status=500]=trace)
RSHS_LOG_STYLE Log output style auto

License

MIT License. See LICENSE for details.