Skip to content

Simplistic file server supporting serving files on multiple domains

Notifications You must be signed in to change notification settings

johanbook/file-domain-server

Repository files navigation

file-domain-server

version docker pulls vulnerabilities

file-domain-server is a simplistic Nodejs HTTP file server that serves different folders depending on the HTTP Host header. It is mainly intended to run on an internal network with its own DNS server.

The project aims to be minimal production dependency.

Get started

The server can be run either via a Nodejs runtime or through Docker.

Folder structure

Create an asset folder, named build by default. In this folder create one folder for each domain that should be served. These folders should contain the files served on the respective domains. For example:

build
build/localhost
build/localhost/favicon.ico
build/localhost/index.html
build/mybusiness.com
build/mybusiness.com/favicon.ico
build/mybusiness.com/index.html
build/mybusiness.com/script.js
build/mybusiness.com/styles.css
build/mycat.com
build/mycat.com/favicon.ico
build/mycat.com/index.html
build/mycat.com/script.js

Using Nodejs

Install and run the server using

npm ci --production
ROOT_FILE_PATH=/path/to/folder node src

Using Docker

The server can be run through Docker by mounting in the served directory as a volume. To the serve the build folder in the current directory, run

docker run \
	--detach \
	--publish 8080:8080 \
	--restart unless-stopped \
	--volume ${PWD}/build/:/app/build/ \
	johanbook/file-domain-server:latest

The Docker images are available for multiple architectures, including armv7.

Configuration

The following can be configured as environment variables:

  • ACCESS_LOGS if access logs are showed (default false).
  • DEFAULT_INDEX_FILE name of file served on paths ending with a trailing slash (default index.html).
  • FALLBACK_FILE name of file served as a fallback if requested file is not found. Set to index.html to enable client-side routing or to e.g. error.html to display an error page (note that response still returns a 200 status code). It is undefined by default and no fallback file will be served.
  • LOG_LEVEL used log level. Available values are debug, info, warning and error (default info).
  • PORT the port the server should listen on (default 8080).
  • ROOT_FILE_PATH root directory of served file tree (default build).

Documentation

For documentation on technologies, security aspect and similar, see the contributions file.

Contributing

For contributions and development procedures, see the contributions file.

About

Simplistic file server supporting serving files on multiple domains

Topics

Resources

Security policy

Stars

Watchers

Forks

Packages

No packages published