static-file-server/README.md

124 lines
3.0 KiB
Markdown
Raw Normal View History

2017-06-23 14:29:46 +00:00
# static-file-server
2018-09-05 17:47:39 +00:00
## Introduction
Tiny, simple static file server using environment variables for configuration.
Install from any of the following locations:
- Docker Hub: https://hub.docker.com/r/halverneus/static-file-server/
- GitHub: https://github.com/halverneus/static-file-server
## Configuration
### Environment Variables
Default values are shown with the associated environment variable.
2018-09-05 17:47:39 +00:00
2017-06-23 15:49:41 +00:00
```bash
# Enable debugging for troubleshooting. If set to 'true' this prints extra
# information during execution. IMPORTANT NOTE: The configuration summary is
# printed to stdout while logs generated during execution are printed to stderr.
DEBUG=false
2019-02-05 08:41:15 +00:00
# Optional Hostname for binding. Leave black to accept any incoming HTTP request
# on the prescribed port.
HOST=
2019-02-05 08:41:15 +00:00
2017-06-23 15:49:41 +00:00
# If assigned, must be a valid port number.
PORT=8080
2019-02-05 08:41:15 +00:00
# Automatically serve the index file for a given directory (default). If set to
# 'false', URLs ending with a '/' will return 'NOT FOUND'.
SHOW_LISTING=true
2019-02-05 08:41:15 +00:00
2017-06-23 15:49:41 +00:00
# Folder with the content to serve.
FOLDER=/web
2019-02-05 08:41:15 +00:00
# URL path prefix. If 'my.file' is in the root of $FOLDER and $URL_PREFIX is
# '/my/place' then file is retrieved with 'http://$HOST:$PORT/my/place/my.file'.
URL_PREFIX=
2019-02-05 08:41:15 +00:00
# Paths to the TLS certificate and key. If one is set then both must be set. If
# both set then files are served using HTTPS. If neither are set then files are
# served using HTTP.
TLS_CERT=
TLS_KEY=
2019-02-05 08:41:15 +00:00
# List of accepted HTTP referrers. Return 403 if HTTP header `Referer` does not
# match prefixes provided in the list.
# Examples:
# 'REFERRERS=http://localhost,https://...,https://another.name'
# To accept missing referrer header, add a blank entry (start comma):
# 'REFERRERS=,http://localhost,https://another.name'
REFERRERS=
```
### YAML Configuration File
YAML settings are individually overridden by the corresponding environment
variable. The following is an example configuration file with defaults. Pass in
the path to the configuration file using the command line option
('-c', '-config', '--config').
2018-07-29 18:58:29 +00:00
```yaml
debug: false
2019-02-05 08:41:15 +00:00
folder: /web
2018-07-29 18:58:29 +00:00
host: ""
port: 8080
2019-02-05 08:41:15 +00:00
referrers: []
2018-07-29 18:58:29 +00:00
show-listing: true
tls-cert: ""
tls-key: ""
2019-02-05 08:41:15 +00:00
url-prefix: ""
```
Example configuration with possible alternative values:
```yaml
debug: true
folder: /var/www
port: 80
referrers:
2019-02-05 08:41:15 +00:00
- http://localhost
- https://mydomain.com
```
2018-07-29 18:58:29 +00:00
## Deployment
### Without Docker
2018-09-05 17:47:39 +00:00
2018-07-29 18:58:29 +00:00
```bash
PORT=8888 FOLDER=. ./serve
```
2018-09-05 17:47:39 +00:00
Files can then be accessed by going to http://localhost:8888/my/file.txt
### With Docker
2018-09-05 17:47:39 +00:00
2018-07-29 18:58:29 +00:00
```bash
docker run -d \
-v /my/folder:/web \
-p 8080:8080 \
halverneus/static-file-server:latest
2018-07-29 19:00:00 +00:00
```
2018-09-05 17:47:39 +00:00
2018-07-29 18:58:29 +00:00
This will serve the folder "/my/folder" over http://localhost:8080/my/file.txt
2017-06-23 15:49:41 +00:00
Any of the variables can also be modified:
2018-09-05 17:47:39 +00:00
2018-07-29 18:58:29 +00:00
```bash
docker run -d \
-v /home/me/dev/source:/content/html \
-v /home/me/dev/files:/content/more/files \
-e FOLDER=/content \
-p 8080:8080 \
halverneus/static-file-server:latest
2017-06-23 15:49:41 +00:00
```
### Getting Help
2018-09-05 17:47:39 +00:00
2018-07-29 18:58:29 +00:00
```bash
./serve help
# OR
docker run -it halverneus/static-file-server:latest help
```