darkhttpd(1)
| darkhttpd(1) | General Commands Manual | darkhttpd(1) |
NAME
darkhttpd - HTTP 1.1 web server for static content
SYNOPSIS
darkhttpd /path/to/wwwroot flags
DESCRIPTION
--port number (default: 8080, or 80 if running as root)
--addr ip (default: all)
--ipv6
--daemon (default: don't daemonize)
--pidfile filename (default: no pidfile)
--maxconn number (default: system maximum)
--log filename (default: stdout)
--syslog
--index filename (default: index.html)
--no-listing
--mimetypes filename (optional)
--default-mimetype string (optional, default: application/octet-stream)
--uid uid/uname, --gid gid/gname (default: don't privdrop)
--chroot (default: don't chroot)
--no-keepalive
--single-file
--hide-dotfiles
--forward host url (default: don't forward)
--forward-all url (default: don't forward)
--forward-https
--no-server-id
--timeout secs (default: 30)
--auth username:password
--header 'Header: Value'
EXAMPLES
How to run darkhttpd
Serve /var/www/htdocs on the default port (80 if running as root, else 8080):
darkhttpd /var/www/htdocs
Serve `~/public_html` on port 8081:
darkhttpd ~/public_html --port 8081
Only bind to one IP address (useful on multi-homed systems):
darkhttpd ~/public_html --addr 192.168.0.1
Serve at most 4 simultaneous connections:
darkhttpd ~/public_html --maxconn 4
Log accesses to a file:
darkhttpd ~/public_html --log access.log
Chroot for extra security (you need root privs for chroot):
darkhttpd /var/www/htdocs --chroot
Use default.htm instead of index.html:
darkhttpd /var/www/htdocs --index default.htm
Add mimetypes - in this case, serve .dat files as text/plain:
$ cat extramime text/plain dat $ darkhttpd /var/www/htdocs --mimetypes extramime
Drop privileges:
darkhttpd /var/www/htdocs --uid www --gid www
Use acceptfilter (FreeBSD only):
kldload accf_http darkhttpd /var/www/htdocs --accf
Run in the background and create a pidfile:
darkhttpd /var/www/htdocs --pidfile /var/run/httpd.pid --daemon
Serve only one file instead of a whole directory:
darkhttpd ~/public_html/index.html --single-file
Web forward (301) requests for some hosts:
darkhttpd /var/www/htdocs --forward example.com http://www.example.com
--forward secure.example.com https://www.example.com/secure
Web forward (301) requests for all hosts:
darkhttpd /var/www/htdocs --forward example.com http://www.example.com
--forward-all http://catchall.example.com
Arbitrary custom response headers (in this case, allow all cross-origin requests):
darkhttpd /var/www/htdocs --header 'Access-Control-Allow-Origin: *'
Commandline options can be combined:
darkhttpd ~/public_html --port 8080 --addr 127.0.0.1
To see a full list of commandline options, run darkhttpd without any arguments:
darkhttpd
How to run darkhttpd in Docker
First, build the image.
docker build -t darkhttpd .
For example, the following would serve files from the current user's dev/mywebsite directory on http://localhost:8080/
docker run -p 8080:80 -v ~/dev/mywebsite:/var/www/htdocs:ro darkhttpd
AUTHORS
darkhttpd/1.17, copyright (c) 2003-2025 Emil Mikulic.
The man page was created by Ulysses Apokin <ulysses@altlinux.org>, based on darkhttpd --help and README.md.
| 2025-09-10 |
