diff --git a/static-web-server/config.toml b/static-web-server/config.toml new file mode 100644 index 0000000..ef530f5 --- /dev/null +++ b/static-web-server/config.toml @@ -0,0 +1,149 @@ +[general] + +#### Address & Root dir +host = "::" +port = 12345 +root = "/var/my-website/public" + +#### Logging +log-level = "error" + +#### Cache Control headers +cache-control-headers = true + +#### Auto Compression +compression = true +compression-level = "default" + +#### Error pages +# Note: If a relative path is used then it will be resolved under the root directory. +page404 = "./404.html" +page50x = "./50x.html" + +#### HTTP/2 + TLS +http2 = false +http2-tls-cert = "" +http2-tls-key = "" +https-redirect = false +https-redirect-host = "localhost" +https-redirect-from-port = 80 +https-redirect-from-hosts = "localhost" + +#### CORS & Security headers +# security-headers = true +# cors-allow-origins = "" + +#### Directory listing +directory-listing = false + +#### Directory listing sorting code +directory-listing-order = 1 + +#### Directory listing content format +directory-listing-format = "html" + +#### Basic Authentication +# basic-auth = "" + +#### File descriptor binding +# fd = "" + +#### Worker threads +threads-multiplier = 1 + +#### Grace period after a graceful shutdown +grace-period = 0 + +#### Page fallback for 404s +# page-fallback = "" + +#### Log request Remote Address if available +log-remote-address = false + +#### Log real IP from X-Forwarded-For header if available +log-forwarded-for = false + +#### IPs to accept the X-Forwarded-For header from. Empty means all +trusted-proxies = ['127.0.0.1','::1'] + +#### Redirect to trailing slash in the requested directory uri +redirect-trailing-slash = true + +#### Check for existing pre-compressed files +compression-static = true + +#### Health-check endpoint (GET or HEAD `/health`) +health = false + +#### List of index files +# index-files = "index.html, index.htm" +#### Maintenance Mode + +maintenance-mode = false +# maintenance-mode-status = 503 +# maintenance-mode-file = "./maintenance.html" + +### Windows Only + +#### Run the web server as a Windows Service +# windows-service = false + + +[advanced] + +#### HTTP Headers customization (examples only) + +#### a. Oneline version +# [[advanced.headers]] +# source = "**/*.{js,css}" +# headers = { Access-Control-Allow-Origin = "*" } + +#### b. Multiline version +# [[advanced.headers]] +# source = "/index.html" +# [advanced.headers.headers] +# Cache-Control = "public, max-age=36000" +# Content-Security-Policy = "frame-ancestors 'self'" +# Strict-Transport-Security = "max-age=63072000; includeSubDomains; preload" + +#### c. Multiline version with explicit key (dotted) +# [[advanced.headers]] +# source = "**/*.{jpg,jpeg,png,ico,gif}" +# headers.Strict-Transport-Security = "max-age=63072000; includeSubDomains; preload" + + +### URL Redirects (examples only) + +# [[advanced.redirects]] +# source = "**/*.{jpg,jpeg}" +# destination = "/images/generic1.png" +# kind = 301 + +# [[advanced.redirects]] +# source = "/index.html" +# destination = "https://static-web-server.net" +# kind = 302 + +### URL Rewrites (examples only) + +# [[advanced.rewrites]] +# source = "**/*.{png,ico,gif}" +# destination = "/assets/favicon.ico" +## Optional redirection +# redirect = 301 + +#[[advanced.rewrites]] +#source = "/allanime.xml" +#destination = "/var/my-website/allanime.xml" + +### Virtual Hosting + +# [[advanced.virtual-hosts]] +## But if the "Host" header matches this... +# host = "sales.example.com" +## ...then files will be served from here instead +# root = "/var/sales/html" + +# [[advanced.virtual-hosts]] +# host = "blog.example.com" +# root = "/var/blog/html" diff --git a/static-web-server/sws.container b/static-web-server/sws.container new file mode 100644 index 0000000..8d27878 --- /dev/null +++ b/static-web-server/sws.container @@ -0,0 +1,25 @@ +[Unit] +Description=Static Web Server Container + +[Container] +Pod=nginx-proxy.pod +ContainerName=my-website +Image=ghcr.io/static-web-server/static-web-server:latest + +# Enable auto-update container +AutoUpdate=registry + +# pass this to attach it to container +Environment=SERVER_ROOT=/var/my-website/public +Environment=SERVER_CONFIG_FILE=/etc/config.toml + +Volume=%h/my-website:/var/my-website +Volume=./config.toml:/etc/config.toml + +[Service] +Restart=always +TimeoutStartSec=300 + +[Install] +WantedBy=default.target +