When you need a web server in a hurry.
https://unix4lyfe.org/darkhttpd/
When you need a web server in a hurry.
Features:
inetd or ucspi-tcp.www root.Security:
/../ sniffing.Limitations:
Simply run make:
makeIf cc is not on your PATH as an alias to your C compiler, you may need to specify it. For example,
CC=gcc makeServe /var/www/htdocs on the default port (80 if running as root, else 8080):
./darkhttpd /var/www/htdocsServe ~/public_html on port 8081:
./darkhttpd ~/public_html --port 8081Only bind to one IP address (useful on multi-homed systems):
./darkhttpd ~/public_html --addr 192.168.0.1Serve at most 4 simultaneous connections:
./darkhttpd ~/public_html --maxconn 4Log accesses to a file:
./darkhttpd ~/public_html --log access.logChroot for extra security (you need root privs for chroot):
./darkhttpd /var/www/htdocs --chrootUse default.htm instead of index.html:
./darkhttpd /var/www/htdocs --index default.htmAdd mimetypes - in this case, serve .dat files as text/plain:
$ cat extramime
text/plain dat
$ ./darkhttpd /var/www/htdocs --mimetypes extramimeDrop privileges:
./darkhttpd /var/www/htdocs --uid www --gid wwwUse acceptfilter (FreeBSD only):
kldload accf_http
./darkhttpd /var/www/htdocs --accfRun in the background and create a pidfile:
./darkhttpd /var/www/htdocs --pidfile /var/run/httpd.pid --daemonServe only one file instead of a whole directory:
./darkhttpd ~/public_html/index.html --single-fileWeb 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/secureWeb forward (301) requests for all hosts:
./darkhttpd /var/www/htdocs --forward example.com http://www.example.com \
--forward-all http://catchall.example.comArbitrary 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.1To see a full list of commandline options, run darkhttpd without any arguments:
./darkhttpdFirst, build the image.
docker build -t darkhttpd .Then run using volumes for the served files and port mapping for access.
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 darkhttpdEnjoy.
make testIf that isn't working for you, and you're on FreeBSD, you may need to run something closer to the following:
ASAN_OPTIONS=" " PYTHON=python3.11 make testNo open issues yet, or sync has not completed.