From a462f720114cfa6e7e9c4b7dc0e19cae03188190 Mon Sep 17 00:00:00 2001 From: DannyArends Date: Sun, 22 Mar 2026 08:43:57 +0000 Subject: [PATCH 1/7] README --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 2a7d71c..00732a6 100644 --- a/README.md +++ b/README.md @@ -9,13 +9,13 @@ DaNode is a web server written in the [D programming language](https://dlang.org ### Main features -- Host websites in **ANY** language that writes to *stdout* +- Host websites in **ANY** language that has a *stdout* - HTTPS: SNI, TLS 1.2+, ACME auto-renewing certificates via [OpenSSL](https://www.openssl.org/) - Minimal Code, CPU, and RAM footprint - Static file serving: ETag, gzip, range requests, SSE, keep-alive, conditional GET -- Streaming multipart uploads - large files written directly to disk -- Per-domain config: CGI control, redirects, directory access -- Per-IP rate limiting and configurable request/upload size limits +- Streaming multipart uploads directly to disk +- Per-domain: CGI control, redirects, directory access +- Per-IP rate limiting and configurable request / upload size limits - Native APIs: PHP, Python, D, R - or [add your own](api/) ### Get DaNode From d19338e9481ed294230a299c30de4a5b4a6ab57f Mon Sep 17 00:00:00 2001 From: DannyArends Date: Sun, 22 Mar 2026 08:49:30 +0000 Subject: [PATCH 2/7] README --- README.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 00732a6..3c28c76 100644 --- a/README.md +++ b/README.md @@ -10,12 +10,15 @@ DaNode is a web server written in the [D programming language](https://dlang.org ### Main features - Host websites in **ANY** language that has a *stdout* -- HTTPS: SNI, TLS 1.2+, ACME auto-renewing certificates via [OpenSSL](https://www.openssl.org/) -- Minimal Code, CPU, and RAM footprint -- Static file serving: ETag, gzip, range requests, SSE, keep-alive, conditional GET -- Streaming multipart uploads directly to disk -- Per-domain: CGI control, redirects, directory access -- Per-IP rate limiting and configurable request / upload size limits +- Minimal footprint - code, CPU and RAM +- HTTPS with SNI, TLS 1.2+ and ACME auto-renew +- Streams large file uploads directly to disk +- Static files support ETag, gzip and range requests +- Server-Sent Events (SSE) for real-time streaming +- Per-domain configuration via a simple [web.config](www/localhost/web.config) +- Keep-alive, conditional GET and per-IP rate limits +- Configurable via [server.config](www/server.config) + - Native APIs: PHP, Python, D, R - or [add your own](api/) ### Get DaNode From 4600e8ae2a465744d9c20009ef7be300d4d43591 Mon Sep 17 00:00:00 2001 From: DannyArends Date: Sun, 22 Mar 2026 08:49:40 +0000 Subject: [PATCH 3/7] README --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 3c28c76..0fc3dc0 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,6 @@ DaNode is a web server written in the [D programming language](https://dlang.org - Per-domain configuration via a simple [web.config](www/localhost/web.config) - Keep-alive, conditional GET and per-IP rate limits - Configurable via [server.config](www/server.config) - - Native APIs: PHP, Python, D, R - or [add your own](api/) ### Get DaNode From 5c9f99287a910da53df38378147b73ef93ae0180 Mon Sep 17 00:00:00 2001 From: DannyArends Date: Sun, 22 Mar 2026 08:51:20 +0000 Subject: [PATCH 4/7] README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0fc3dc0..02eab62 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ DaNode - A secure, small footprint web server written in D master: [![D](https://github.com/DannyArends/DaNode/actions/workflows/d.yml/badge.svg?branch=master)](https://github.com/DannyArends/DaNode/actions/workflows/d.yml) licence: [![license](https://img.shields.io/github/license/DannyArends/DaNode.svg?style=flat)](https://github.com/DannyArends/DaNode/blob/master/LICENSE.txt) -DaNode is a web server written in the [D programming language](https://dlang.org/) that hosts websites written in **ANY** language that can output to *stdout*. It supports multiple domains, SSL via [ImportC](https://dlang.org/spec/importc.html) with support for [Server Name Indication](https://en.wikipedia.org/wiki/Server_Name_Indication) (SNI) and [ACME](https://en.wikipedia.org/wiki/Automatic_Certificate_Management_Environment) automatic certificate renewal. +DaNode is a web server written in the [D programming language](https://dlang.org/) that can host websites written in **ANY** language that can output to *stdout*. It supports multiple domains, SSL via [ImportC](https://dlang.org/spec/importc.html) with support for [Server Name Indication](https://en.wikipedia.org/wiki/Server_Name_Indication) (SNI) and [ACME](https://en.wikipedia.org/wiki/Automatic_Certificate_Management_Environment) automatic certificate renewal. *Battle tested in production for over 12 years, including hosting my own [personal website](https://www.dannyarends.nl/).* From a42dfd6115328b6865bc77554b5f49917167b6b8 Mon Sep 17 00:00:00 2001 From: DannyArends Date: Sun, 22 Mar 2026 08:51:50 +0000 Subject: [PATCH 5/7] README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 02eab62..5b1f697 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ DaNode - A secure, small footprint web server written in D master: [![D](https://github.com/DannyArends/DaNode/actions/workflows/d.yml/badge.svg?branch=master)](https://github.com/DannyArends/DaNode/actions/workflows/d.yml) licence: [![license](https://img.shields.io/github/license/DannyArends/DaNode.svg?style=flat)](https://github.com/DannyArends/DaNode/blob/master/LICENSE.txt) -DaNode is a web server written in the [D programming language](https://dlang.org/) that can host websites written in **ANY** language that can output to *stdout*. It supports multiple domains, SSL via [ImportC](https://dlang.org/spec/importc.html) with support for [Server Name Indication](https://en.wikipedia.org/wiki/Server_Name_Indication) (SNI) and [ACME](https://en.wikipedia.org/wiki/Automatic_Certificate_Management_Environment) automatic certificate renewal. +DaNode is a web server written in the [D programming language](https://dlang.org/) that can host websites in **ANY** language that can output to *stdout*. It supports multiple domains, SSL via [ImportC](https://dlang.org/spec/importc.html) with support for [Server Name Indication](https://en.wikipedia.org/wiki/Server_Name_Indication) (SNI) and [ACME](https://en.wikipedia.org/wiki/Automatic_Certificate_Management_Environment) automatic certificate renewal. *Battle tested in production for over 12 years, including hosting my own [personal website](https://www.dannyarends.nl/).* From 8177578100f2c077a5222eb27667de459ed7d6a1 Mon Sep 17 00:00:00 2001 From: DannyArends Date: Sun, 22 Mar 2026 08:55:01 +0000 Subject: [PATCH 6/7] README --- README.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/README.md b/README.md index 5b1f697..1ec5adf 100644 --- a/README.md +++ b/README.md @@ -12,12 +12,8 @@ DaNode is a web server written in the [D programming language](https://dlang.org - Host websites in **ANY** language that has a *stdout* - Minimal footprint - code, CPU and RAM - HTTPS with SNI, TLS 1.2+ and ACME auto-renew -- Streams large file uploads directly to disk - Static files support ETag, gzip and range requests -- Server-Sent Events (SSE) for real-time streaming -- Per-domain configuration via a simple [web.config](www/localhost/web.config) -- Keep-alive, conditional GET and per-IP rate limits -- Configurable via [server.config](www/server.config) +- Streams large file uploads directly to disk - Native APIs: PHP, Python, D, R - or [add your own](api/) ### Get DaNode From 18d8c5daa007d95d4088bcb27b635f10ea99ec91 Mon Sep 17 00:00:00 2001 From: DannyArends Date: Sun, 22 Mar 2026 08:58:57 +0000 Subject: [PATCH 7/7] README --- README.md | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 1ec5adf..977fd74 100644 --- a/README.md +++ b/README.md @@ -91,12 +91,13 @@ nohup authbind danode/server -b 100 -v 0 > server.log 2>&1 & Start the server with a backlog (-b) of 100 simultaneous connection (per port), and less log output (-v 0). ``` ---port -p # HTTP port to listen on (integer) ---backlog -b # Backlog of clients supported simultaneously per port (integer) ---certDir # Location of folder with SSL certificates (string) ---keyFile # Server private key location (string) ---wwwRoot # Server www root folder holding website domains (string) ---verbose -v # Verbose level, logs on STDOUT (integer) +--port -p # HTTP port to listen on (integer) +--backlog -b # Backlog of clients supported simultaneously per port (integer) +--ssl # Location of SSL certificates folder (string) +--sslKey # Server private key filename (string) +--accountKey # Let's Encrypt account key filename (string) +--wwwRoot # Server www root folder holding website domains (string) +--verbose -v # Verbose level, logs on STDOUT (integer) ``` ### server.config @@ -138,13 +139,13 @@ touch www/domain.xxx/web.config ``` Add the following configuration settings to the web.config file, if you want to use scripting languages such as PHP, you have to manually allow the execution of cgi file. -Add the following lines in your web.cofig file to redirect to the index.php file, and +Add the following lines in your web.config file to redirect to the index.php file, and allow the webserver to execute the php script, and redirect the incomming requests to the index.php page: ``` -allowcgi = yes -redirecturl = index.php +allowcgi = yes +redirect = index.php ``` ### Update the hosts file @@ -164,12 +165,6 @@ Then add the following lines to this hostfile using your favourite editor: Save the file with these lines added, then open a browser and navigate to: http://www.domain.xxx, you should now see the content of your php / html file. -### Supported back-end languages - -Languages with supported APIs: PHP, PYTHON, D, R - -See: [api/README.md](api/README.md) - ### Contributing Want to contribute? Great! Contribute to this repo by starring ⭐ or forking 🍴, and feel