Getting started


Getting started with HTTP/2

Out of the box HTTP/2 nextgen technology with Read Write Serve's dynamic modular architecture and JavaScript plugins is crazy/cool!
latency, multiplexing, prioritization, RFC 7540, RFC 7541, HTTP methods, HTTP headers, modular architecture, declarative language configuration, extensible plugins, middleware

Use Cases

Fulfilling your most demanding needs

Use the Read Write Serve HTTP/2 Server to fulfill all your most demanding requirements.
static Web server, Web hosting provider, REST API, Service Oriented Architecture, SOA, Internet of Things, IoT, Content Management System, CMS, Frictionless Blue Server, BLUEPHRASE


Everything you need, plus all the goodies you know you want!

65 Reasons why the Read Write Serve HTTP/2 Server is in your future — it's packed with all the features you need from a high performance HTTP/2 server.
efficiency, scalability, standardization, configurability, encryption, permissions, URL rewrites, content negotiation, caching, cross origin requests, range requests, BLUEPHRASE files, logging, JavaScript extensibility


Here's the best reason for using Read Write Serve

The Read Write Serve HTTP/2 server has an extensible architecture allowing you to develop chainable JavaScript plugins that work within the request/response cycle.
extensibility, plugins, HTTP methods, work order methods, plugin tasks, processing patterns



So many cool features, it's crazy!

Access the full spectrum of Read Write Tools RWSERVE features — services, headers, monitoring, http/2, security, customizing — from these high-level Venn-like diagrams.


The Answer to the Ultimate Question of Life, The Universe, and Everything

A tidy pie for answering your Read Write Tools RWSERVE questions while: A) evaluating, B) preparing, C) securing, D) operating, E) customizing, F) extending the server.
evaluating, preparing, securing, operating, customizing, extending


HTTP/2 server — are you ready?

Rate yourself on 1) tech savvy, 2) app requirements, and 3) language readiness to evaluate whether Read Write Tools RWSERVE is a good fit for your next project.
tech savvy, app requirements, language readiness

Download HTTP/2 Server

Grab all the goodness — in your favorite package flavor!

HTTP/2 server with modular JavaScript plugins, available for Linux in PKG and DEB formats: CentOS / Fedora / RedHat / Ubuntu / Debian
Read Write Serve, RWSERVE, download, Fedora, RedHat, CentOS, Ubuntu, Debian, rpm, pkg, tar.gz, rwserve, HTTP/2 server, Read Write Tools


The joy of tech!

Everything you ever wanted to know about Read Write Tools RWSERVE HTTP/2, * but were afraid to ask.


More requests / more responses

A quick-pick index to all the Read Write Serve HTTP/2 Server configuration notes.


Too Long; Didn't Read

HTTP/2 server with modular JavaScript plugins — plus — all the goodies you know you want!
Read Write Serve, RWSERVE, push prioritization,parti-homed hosting via SNI,information headers,stateful roles,MIME-type text/blue,HTTP/2,custom 404 error pages,Role Based Access Control,IP whitelisting/blacklisting,resource path mapping,JavaScript modules,Node.js handlers,SEO-friendly URL rewrites



Considerations when evaluating RWSERVE

These documents will help you learn about the Read Write Tools HTTP/2 server: possible use cases, notable features, limitations and extensibility.
overview, use cases, features, limitations, extensibility


Getting everything in the right place

These documents describe: how and where the different parts of the server software are installed, the declarative syntax used in configuring the server, and the required configuration settings for a minimal web server.
downloading, prerequisites, installing, troubleshooting, standard directories, configuration syntax, config hierarchy, file permissions, cluster, server, server name indication, hosts, merged configurations, modules, path patterns, registration


Safely making resources available with the server

These documents describe: working with the file system to properly set permissions on server software, forbidding public access to resources, blocking usage by bad actors, and using the server's role-based access control module.
file permissions, forbidden, ip access, rbac, user accounts, auth handler, stateful roles, cookies


Setting up and running a static web server

These documents describe: configuring HTTP/2 request and response headers, request method processing steps, status codes, error handling, and monitoring facilities.
accept types, allow, cache control, content-encoding, content-length, content negotiation, content types, mime-types, etag, timestamps, range, delete method, get method, put method, options method, patch method, post method, trace method, custom errors, information headers, status codes, systemd, logging, counters, user agent, restrictions


Setting up dynamic web server features

These documents describe how to enable built-in modules for: dynamic BLUEPHRASE processing with HTTP/2 speculative push prioritization, rewriting SEO-friendly URLs using resource masks, using CORS to relax browser some-origin policies, and splitting the resource request into more usable pieces.
BLUE PROCESSOR, push priority, resource masks, cross origin, raw path


Using JavaScript to extend the server's capabilities

These documents describe how to use JavaScript to write plugin modules to handle the work order during the request/response cycle, and how to selectively route incoming requests to the plugin.
RWSERVE, JavaScript plugins, work order, router



Required reading for every webmaster

These notes provide essential information necessary to successfully configure the RWSERVE HTTP/2 server.
Read Write Serve, RWSERVE, cluster, hosts, modules, server, SNI, restrictions


Parallel processes to handle simultaneous requests

This note describes the server's ability to handle concurrent requests through a single address and port.
cluster, concurrent requests, simultaneous requests, round-robin, cluster-size, considerations, queue-related delays


Required configuration settings for named hosts

This note describes the required settings needed by the server to configure an HTTP/2 socket, TLS certificates, the paths to documents and caches, acceptable mime-types, and allowed methods.
hosts, document-root, tls, private-key, certificate, encoding-cache, dynamic-cache, landing-page


Determining which steps are active during the request-response cycle

This note describes how the server is modularized and how it can be configured to behave differently by enabling and disabling individual modules.
modules, ip-access, forbidden, RBAC, cross-origin, accept-language, content-encoding, etag, cache-control, user-agent, resource-masks, router, push-priority, information-headers, custom-errors, counters


Required settings for each server

This note lists the required entries in the server section that every configuration file must have.
RWSERVE, server settings, IP address, port, SNI, cluster size, registration, customer-number, access-key


Automatic HTTP/1.1 fallback

This note describes how the server and browser agree on whether to use HTTP/2 or HTTP/1.1.
TLS, ALPN, Application Layer Protocol Negotiation, HTTP/2, HTTP/1.1

Server Name Indication

Allowing one IP address to serve multiple hostnames

This note describes how the server makes use of the Server Name Indication (SNI) protocol to allow more than one HTTPS hostname per IP address.
SNI, Server Name Indication, TLS, SSL, ip-address, port, hostname, tls, IETF RFC 3546

Cipher Suites

Choosing the right set of cipher algorithms for your users

This note describes the cipher algorithms that are available for use with the server, and how to configure custom cipher suites.
cipher suites, TLS


Setting limits

This note describes miscellaneous restrictions that can be placed on the server.
RWSERVE, restrictions, content-length-limit, PUT limit, server-version, rw-content-length-limit



Background info and general guidelines

These notes provide background information and general guidelines for RWSERVE configuration files, including: syntax, hierarchical structure, common patterns, and idioms.
RWSERVE, guidelines, background information, syntax, merged configurations, hierarchy, path patterns, timestamps

Configuration Syntax

Getting started with BLUEPHRASE

This note describes the syntax used within server configuration files.
RWSERVE, configuration syntax, version pragma, include pragma, comments, sections, subsections, single-line entries, sourcerefs, attributes

Merged Configurations

Common settings for multiple named hosts

This note describes how the server and host sections can be configured with merged settings to avoid repetition when configuring multiple hosts.
server section, host section, merge attribute, join, override, reduce, repetition

Config Hierarchy

A bare-bones look at configuration settings

This note provides a summary of the keywords used in host settings and server settings, and the hierarchy used to configure RWSERVE.
RWSERVE, configuration hierarchy, server settings, host settings, keywords, hierarchy

Path Patterns

Specification of path-pattern globbing rules

This note documents the rules used by the server for all configuration entries that use the path-pattern idiom.
path-patterns, globstar, asterisk, question mark, wildcard, GRAVE-ACCENT delimiters


Using file modification dates during update and caching operations

This note documents where and how timestamps are used by the server, and their role in file updates and caching.
if-modified-since, if-unmodified-since, last-modified, cache control, etag, IETF RFC 7231, IETF RFC 5905


Some things just aren't possible

The HTTP/2 Server has a few limitations that you should be aware of.
upgrade, 101 switching protocols, CONNECT, proxy server, http, https, SSL, TLS



Modules and protocols to restrict use of resources

These notes provide information and guidelines for restricting access to resources using path patterns, IP addresses, and resource based access control.
RWSERVE, security, ip address, cookies, auth, stateful roles, path patterns, RBAC, Resource Based Access Control

Auth Handler

Sending login/logout requests to the server

This note describes how the server handles POST requests to login and logout of the Role Based Access Control mechanism.
RWSERVE, authorization, login, logout, user, password, rw-rbac-unsupported-method, rw-rbac-unsupported-content-type, rw-rbac-unsupported-action, rw-rbac-missing-credentials, rw-rbac-forbidden, rw-rbac-internal-error


Maintaining state between browser requests

This note describes the cookie protocol used by the server to maintain state between browser requests.
RWSERVE, _cookieMap, set-cookie, decodeURIComponent, RBAC, Role Based Access Controls


Preventing public access to hidden files and special directories

This note describes how to block hidden files and special directories from being requested by the server.
forbidden, hidden files, special directories, path-pattern, rw-forbidden, GRAVE-ACCENTS, SOLIDUS, ASTERISK

IP Access

Whitelisting and blacklisting by IP address

This note describes how to configure the server to restrict incoming requests from selected IP addresses.
IP address, allow, deny, whitelist, blacklist, IP4, CIDR notation, rw-ip-access


Using role based access controls to restrict resource usage

This note describes the Role Based Access Control (RBAC) mechanism of the server. Access to resources are allowed or denied based on resource patterns and request methods matched against user-assigned roles.
RBAC, Role Based Access Control, roles, allow, deny, anonymous, rw-rbac-no-matching-role, rw-rbac-no-resource-rule, cipher-secret, max-idle

Stateful Roles

Safely propagating user access roles between session requests

This note documents how roles are propagated from one request to the next without accessing the server's authorization file every time.
roles, RBAC, AES-192, symmetric-key encryption, cipher-secret, max-idle, rw-rbac-forged, rw-rbac-remote-address, rw-rbac-expired, rw-rbac-renewal

User Accounts

Creating role based user accounts to access resources

This note describes how user credentials are created through an external CLI utility. Passwords are SHA256 hashed using a nonce. Passwords are not discoverable or recoverable.
RWSERVE, addrole, SHA256, nonce, passwords, anonymous, shaDigest, RBAC



In-depth configuration rules for HTTP request/response cycle

These notes provide information on how to configure the server to properly inform user-agents of the kinds of content the server is able to provide.
RWSERVE, content negotiation, language, types, allow, cache, charsets, encoding, negotiation, etag, MIME, range

Accept Language

Declaring acceptable languages

This note describes how the server handles the browser's accept-language request header, enabling search engines to match the visitor's preferred language to the website's natural written language.
language negotiation, path-pattern, accept-language, content-language, rw-language-not-acceptable, rw-language-not-configured, IETF RFC 5646

Accept Types

Declaring acceptable types of file content

This note describes how the server handles the browser's accept-types request header to allow the browser and server to agree on their understanding of what the inner contents of each file contains.
accept-types, content negotiation, media-type, MIME-type, content-type, filename extension, IETF RFC 6838, rw-no-acceptable-type


How a user-agent can discover the allowable methods

This note describes how a user-agent can discover the allowable methods, and how the server responds to methods it can not handle.
methods, allow, OPTIONS, RBAC, IETF RFC 7231

Cache Control

Understanding request and response headers related to caching

This note describes how browsers communicate with the server to make optimal use of documents and resources that have previously been received.
caching, conditional request, etag, last-modified, if-modified-since, if-match, if-none-match, rw-no-cache-control, rw-if-match, rw-if-none-match, IETF RFC 7234


Declaring which character set to use with documents, style sheets, and text files

This note describes how character set declarations can be added to response headers for documents, style sheets, and text files.
UTF-8, ISO-8859-1, Windows-1252, Shift_JIS, BIG5, EUC-KR, IETF RFC 2978, IETF RFC 6838

Content Encoding

Saving bandwidth and increasing throughput using compression

This note describes how to configure the server to compress files while in transit between the server and browser.
file compression, accept-encoding, content-encoding, gzip, deflate, Ethernet MTU

Content Length

Specifying the size of the payload

This note documents how the content-length header is determined and used in the exchange between browser and server.
content-length, payload byte count

Content Negotiation

Balancing what's acceptable with what's possible

This note describes how browsers and servers proclaim their ability to handle different file formats, allowing the browser to request and receive only files that it is able to understand.
RWSERVE, content negotiation, accept-type, content-type, MIME-types, rw-no-acceptable-type, IETF RFC 6838

Content Types

Mapping filename extensions to MIME types

This note describes how to map filename extensions to MIME-types to declare which filename extensions are used by the server and what their inner contents contain.
content-type, media-type, MIME-type, filename extension, IETF RFC 6838


Better caching with fewer false positives

This note documents how Etags are created and processed by the server. Use of Etag headers is encouraged for reliable caching with fewer false positives.
etag, reliable caching, resource version, if-match, if-none-match, SHA1 hash, rw-if-match, rw-if-none-match

MIME Types

Using MIME types to control the behavior associated with filename extensions

This note provides information about MIME-type configuration: associating filename extensions; declaring character sets; declaring encoding algorithms; and declaring content negotiation.
media-type, MIME-type, content-type, filename extension, accept-types, charset, content-encoding, IETF RFC 2978, IETF RFC 6838


How to download partial content

This note documents the range request header and the server's implementation of the range protocol to get selected parts of a file.
range, if-range, accept-range, content-range, startByte, endByte, byteCount, multipart/byteranges, IETF RFC 7233



Enlisting the browser's help in policy enforcement

These documents describe the response headers sent by the server to the browser to establish enforceable policies. Policies are used by the browser to prevent bad actors from misusing a website's resources, and for sending reports of troublesome events back to the server.
policies, policy enforcement, reporting

Content Security Policy

Enlist the browser's help in security enforcement

Let your browser know your intentions. Enlist its help in enforcing your safe coding practices. Use the content-security-policy to fine tune where your document gets its resources.
content security policy, browser enforcement

Feature Policy

Stop accidental and nefarious use of device features

Keep your browser on your side. Prevent apps from accidentally gaining access to unauthorized mobile device features. Stop bad actors from elevating privileges without your consent.
feature policy, mobile security threat, browser enforcement

Network Error Logging

It's late. Do you know what your website is up to?

Enlist the browser's support in keeping your website up and running. Get notifications when DNS, TLS or HTTP errors unexpectedly occur for your visitors.
network error logging, browser reports, DNS, TLS, HTTP

Referrer Policy

Prevent outsiders from tracking your visitor's every move

Establish a policy for the browser to follow when assembling 'referer' request headers, limiting what's revealed when requesting resources cross-domain or under protocol switching scenarios.
referrer policy, response header, referer header

Report To

Tell the browser where to send policy reports

A browser can send reports to you when something out-of-the-ordinary happens while visitors access your website.
report-to, content-security-policy violations, network-error-logging, application/reports+json

Policy Reports

Process and log incoming policy reports

How to designate your server as a policy report handler for incoming security and error reports.
policy-reports, report-to, content-security-policy, network-error-logging



Providing visibility into the server's goings on

These notes provide information on how to monitor the server for both usual and unusual communication patterns.
RWSERVE, monitoring, counters, custom errors, information headers, logging, status codes, user agent


Real time monitoring with simple counters

This note describes the counter module, how to enable it, how to retrieve real-time server statistics, its limitations, and security implications.
RWSERVE, counters module, method, user-agent, content-type, content-length, status-code, logging, router, RBAC, devops, real-time insight, website traffic

Custom Errors

Helping the user to understand what went wrong

This note describes how to configure the server to show custom error messages when an HTTP request fails.
custom-errors, status codes, GRAVE-ACCENT, 404

Information Headers

Adding helpful context to the response

This note describes the information-headers module and how it can provide contextual information to make standard HTTP status codes more meaningful.
information header, status codes, troubleshoot, content, rw- prefix, V1, V2


Monitoring and capturing what's going on

This note describes the options available for fine-grain control over the server's logging operations.
logging, systemd, config, request, staging, information, response, error, filtering, abbreviations, formatting


Analyze your server logs

This note explains how to use the Analytics CLI to monitor your RWSERVE logs.
analytics, logging, monitoring, errors, requests, responses

Status Codes

Explaining the conditions that trigger status codes

An explanation of what conditions trigger each status code in an HTTP/2 response.
status codes, http2, OK, created, no content, partial content, found, see other, not modified, bad request, forbidden, not found, method not allowed, not acceptable, conflict, length required, precondition failes, URI too long, unsuppoerted media type, range not satisfiable, internal server error, not implemented

User Agent

Defining server behaviour for web crawlers

This note describes how the server can be configured to handle special use cases when it detects that a web crawler is making requests.
user-agent, browser, crawler, bot, masquerade, safari, chrome, noserver, nopush, rw-user-agent-noserve, rw-user-agent-nopush



Making the server do things your way

These notes provide information on how the server can handle the request/response cycle in ways that go beyond the mimimum requirements of HTTP.
BLUEPHRASE, BLUE PROCESSOR, cross origin, dynamic modules, resource masks, push priority, raw path, router


Processing requests for BLUEPHRASE documents

This note describes how the server handles requests for documents with content type text/blue.
BLUEPHRASE, text/blue, push-priority,router, HTTP/2, nopush, dynamic-cache, linkmap, pragma, include, enclosure, use, processor options, push processing, pushAllowed, rw-blue-unsupported-method, rw-blue-cache-add, rw-blue-cache-stale, rw-blue-cache-dependency,rw-blue-cache-hit,rw-blue-invalid-option

Cross Origin

Relaxing the same-origin policy

This note describes how to configure the server to relax the strict same-origin policy imposed by browsers regarding the use of resources from other domains, also known as the CORS protocol.
CORS, origin, cross-origin, same-origin, access-control-allow-origin, access-control-allow-credentials, access-control-allow-headers, access-control-allow-methods, access-control-expose-headers, access-control-max-age

Resource Masks

Rewriting masked resources using replacement patterns

This note describes a way to rewrite resource request paths. Strings containing capture groups are used as request patterns that match incoming paths to rewrite rules. Replacement strings are used to specify how to reassemble the capture group values into masked replacement paths.
rewrite resource, request patterns, replacement strings, named capture group, resource pattern, masked replacement path, variable substitution, location, 302

Preload Push

Requesting early arrival of special resources

This note describes how to use the HTTP 'link' request header to retrieve resources earlier, using HTTP/2 push.
HTTP/2 PUSH, link, preload

Push Priority

Assign relative weights to speculative push requests

This note describes how to configure HTTP/2 speculative push protocol with weighted priorities for external resources associated with BLUEPHRASE source documents.
push-priority, HTTP/2 speculative push, linkmap, BLUE PROCESSOR, weights, push, nopush, path-pattern


Developing Plugins

Handling requests with application-specific code

This note describes how the server can be customized to handle application-specific needs using plugin modules written in JavaScript.
router, plugins, dynamic handler, custom handler, workOrder, requestHeaders, incomingPayload, remoteAddress, _queryString, _parameterMap, _cookieMap, outgoingPayload, outgoingFilename, doNotFulfill, responseHeaders

Work Orders

Accessing request/response data from a plugin

This note provides guidance on how to make use of the data structures provided to plugins during the request/response cycle.
workOrder, requestHeaders, incomingPayload, remoteAddress, _queryString, _parameterMap, _cookieMap, _formDataMap, _multipartFormData, outgoingPayload, outgoingFilename, doNotFulfill, responseHeaders

Multipart Entry

Accessing multipart form data

This note describes the properties of a single entry within a multipart/form-data payload.
multipartEntry, _multipartFormData, workOrder

Processing Sequence

Plugin developer responsibilities

This note describes the request/response processing sequence from the plugin developer's perspective. The responsibilities incumbent upon the developer are outlined for plugins following typical patterns.
processing sequence, plugins, chainable processing, response-body processing, empty-body processing, static file processing, terminal processing

Raw Path

Splitting the resource request into more usable pieces

This note describes the steps taken by the server to split the raw request path into a resource path, a query string, and key-value parameters.
raw path, resource path, query string, parameters, canonicalization, restrictions, _resourcePath, _queryString, _parameterMap, rw-resource-path-illegal, rw-resource-path-length

WWW Form Data

Splitting simple form data into key/value pairs

This note describes how and when the server processes request bodies that are encoded as type application/x-www-form-urlencoded

Multipart Form Data

Splitting multipart binary form data into separate entries

This note describes how and when the server processes request bodies that are encoded as type multipart/form-data


Shunting the request/response cycle through custom handlers

This note describes how the server is configured to route dynamic resource requests.
router, dynamic routing, static routing, custom handler, path-pattern, rw-router-missing-module, rw-router-syntax-error, rw-router-unknown-error, rw-router-not-forwarded

Plugin Catalog

Enhance your app with ready-to-go plugins

This is a catalog of the plugins developed by Read Write Tools for the HTTP/2 Server. All of these are available on NPM and Github.
RWSERVE, plugin catalog, rwserve, plugin sdk, custom header, visitor count, lowercase, brute force, lorem ipsum, nodemailer, MySQL REST



Processing steps for each request method

These notes provide information on the sequence of steps taken when processing each incoming HTTP method.
RWSERVE, HTTP methods, delete, get, head, put, options, patch, post, trace


Declaring which HTTP methods are acceptable and applicable

This note describes the different configuration options that govern which HTTP methods are acceptable and applicable at the host level, and how to limit methods on resources that match a path-pattern.
RWSERVE, methods, HEAD, GET, PUT, DELETE, POST, PATCH, OPTIONS, TRACE, router, rbac, cross-origin, rw-method-not-allowed, 403


Side effects when deleting files from the server

This note provides supplementary information about the server's implementation of the standard HTTP DELETE method and its side effects.
RWSERVE, DELETE method, side effects, WebDAV, AJAX, rw-request-file-deleted, rw-request-dir-deleted, rw-blue-file-deleted, rw-blue-map-deleted, rw-blue-dir-deleted, rw-encoding-file-deleted, rw-encoding-dir-deleted, rw-request-file-not-deleted, 204, 409, IETF RFC 7231

GET Method

Retrieving files from the server

This note provides supplementary information about the server's implementation of the standard HTTP GET method to retrieve a resource.
RWSERVE, GET method, retrieve, HTML, query-string, content-length, content-type, last-modified, content-encoding, content-language, cache-control, server, IETF RFC 7231

HEAD Method

Checking the availability of a server resource

This note provides supplementary information about the server's implementation of the standard HTTP HEAD method which is used to check resource availability.
RWSERVE, HEAD method, check availability, accept-ranges, range, content-length, IETF RFC 7231

PUT Method

Uploading files to the server

This note provides supplementary information about the server's implementation of the standard HTTP PUT method to create and update an entire resource.
RWSERVE, PUT method, WebDAV, AJAX, upload, create, update, rw-path, rw-content-type-missing, rw-content-type-not-supported, rw-content-type-mismatch, rw-content-length-missing, rw-content-length-limit, rw-if-unmodified-since, rw-if-match, rw-if-none-match, rw-content-decoding, rw-content-range, 201, 204, 406, 411, 412, 415, 501, IETF RFC 7231


Querying the server for resource capabilities

This note provides supplementary information about the server's implementation of the standard HTTP OPTIONS method to query resource capabilities, and to implement cross-origin resource sharing exceptions.
RWSERVE, OPTIONS method, query, resource capabilities, cross-origin exceptions, allow, CORS, Cross-Origin Resource Sharing, IETF RFC 7231

PATCH Method

Updating parts of a resource on the server

This note provides supplementary information about the server's implementation of the standard HTTP PATCH method, used to replace portions of a resource.
RWSERVE, PATCH method, update, replace, AJAX, content-type, content-length, content-encoding, 204, 303, 307, IETF RFC 5789

POST Method

Processing data sent to a custom handler

This note provides supplementary information about the server's implementation of the standard HTTP POST method to process data sent to the server for special handling.
RWSERVE, POST method, processing data, send data, resource handler, post-back, 204, 303, 307, IETF RFC 7231

TRACE Method

Debugging server resources

This note provides supplementary information about the server's implementation of the standard HTTP TRACE method, used for troubleshooting resource requests.
RWSERVE, TRACE method, debugging, troubleshooting, ping, sanitize headers, IETF RFC 7231

WebDav Operations

Enabling file uploads and file deletions

The server can be configured to allow static file updates using the WebDav protocol.



Supplemental information about proper server setup

These notes provide additional information about the proper installation of the RWSERVE software.
RWSERVE, installation, prerequisites, registration, standard directories, file permissions, systemd


Server dependencies

This note documents the software required by the server for successful website hosting.
RWSERVE, prerequisites, dependencies, Node.js


Legitimizing your copy of the server software

This note describes how to specify your customer number and access key in the configuration file.
RWSERVE, registration, customer number, access key

Standard Directories

The location of server files

This note provides documentation on the files and directories used by the server.
RWSERVE, standard directories, etc/rwserve, etc/systemd/system, usr/lib/node_modules/rwserve, /usr/lib/systemd/system, var/www, encoding-cache, dynamic-cache, custom-errors

File Permissions

File system enforcement of process privileges

This note describes the checks taken by the server's file system to limit the server's ability to access devices files outside its scope.
RWSERVE, file permissions, document-root, encoding-cache, dynamic-cache, readable, writable, read-write


SystemD and JournalD services

This note documents how to use the SystemD service manager to enable unattended background execution of the server software, and how to use the JournalD service to view and manage the server's logged output.
SystemD, JournalD, unit file, systemctl, start, status, stop, journalctl, ‑‑disk-space, ‑‑vacuum-size


Best practices for configuring, monitoring, and extending

This is a high performance tool, and like all such engineering efforts, you can get yourself into trouble when you try out new features. Here are some best practices to follow as you build out your server.
RWSERVE, troubleshooting, configuration syntax, modules, rwserve verify, information headers, logging, journalctl, permissions, SSL certificates, registration, developing plugins
Read Write Tools icon

Smart tech


Read Write Hub icon

Templates & Content



Rediscover HTML



The joy of tech!

🔗 🔎