SVR.JS - a web server running on Node.js
It's free as in freedom, scalable, secure, and configurable.
- Static file serving (even above 2GB)
- Directory listing serving
- Protection against path traversal
- Content-Range support (for non-HTML static files; also for HTML files from SVR.JS 3.15.1)
- Serving from web root different than SVR.JS installation directory
- HTTPS support
- HTTP/2 support
- Built-in block list
- Protection against HTTP authentication brute force attacks (from SVR.JS 3.4.8; enabled by default)
- Ability to hide server version
- OCSP stapling support (from SVR.JS 3.4.9)
- Configurability via config.json file
- Expandability via server-side JavaScript and mods
- Ability to serve non-standard error pages
- URL rewriting engine
- Event driven architecture powered by Node.js, along with clustering.
- Brotli, gzip and Deflate HTTP compression (Brotli supported since SVR.JS 3.4.11)
- SNI (Server Name Indication) support
- ETag support (from SVR.JS 3.6.1)
- Reverse proxy functionality (requires reverse-proxy-mod SVR.JS mod)
- Forward proxy functionality (requires forward-proxy-mod SVR.JS mod)
- HTTP basic authentication
- CGI (Common Gateway Interface) support (requires RedBrick mod)
- SCGI (Simple Common Gateway Interface) support (requires OrangeCircle mod)
- JSGI (JavaScript Gateway Interface) support (requires YellowSquare mod)
- PHP support (PHP-CGI with RedBrick mod or PHP-FPM with GreenRhombus mod)
- Logging
- Ability to display IP addresses, from which originally request was made (from reverse proxies; via X-Forwarded-For)
To build SVR.JS, you need Node.js 18.0.0 or newer.
Before building SVR.JS, install the npm packages using this command:
npm install
After installing the packages, build SVR.JS with this command:
npm run build
After running the command, you will get bundled SVR.JS script, around with built-in utilities and assets in the dist
directory. You will also get a zip archive in out
directory, that can be installed using SVR.JS installer. Additionally, you will get the SVR.JS Core package contents in the core
directory, which you can publish by running npm publish
in the core
directory.
To install SVR.JS you just built from the source code, you can install it via SVR.JS installer for GNU/Linux or manually.
If you want to install SVR.JS manually, you can read the server documentation.
If you want to install via SVR.JS installer for GNU/Linux, run this command:
curl -fsSL https://downloads.svrjs.org/installer/svr.js.installer.linux.20240509.sh > /tmp/installer.sh && sudo bash /tmp/installer.sh
You will be then prompted about the type of installation. Choose option “2” to install SVR.JS from the zip archive, and type in the path to the zip archive (hint: it is in the out
directory).
After typing the path, you may be prompted to install dependencies via GNU/Linux distribution’s package manager. Proceed with the installation of dependencies.
After installation, SVR.JS should be listening at http://localhost.
You can read the SVR.JS documentation to get information on how to use SVR.JS.
- To build SVR.JS along with the default page and the zip archive, run
npm run build
. - To build the default page, run
npm run build:page
. - To test SVR.JS itself, run
npm run dev
. This removes existing configuration. - To run the development server for the default page (built with Astro), run
npm run dev:page
. - To check SVR.JS code and default page for errors with ESLint, run
npm run lint
. - To fix and beautify SVR.JS code and default page with ESLint and Prettier, run
npm run lint:fix
. - To run SVR.JS from the "dist" folder, run
npm start
. - To perform unit tests with Jest, run
npm test
.
See SVR.JS contribution page for details.
This project is licensed under the MIT/X11 License - see the LICENSE file for details.