
webserva
A user configurable and simple HTTP server
Features
- Serve a folder as a website
- Hostname and path redirects
- Configurable statusCode, behaviour and destination
- Dynamic reloading of configuration
- Set headers
- History mode for single page apps, with templating
- Paths can be gated by basic auth, headers and query parameters
- Configuration that has richness like a Kubernetes resource definition
Why?
I wanted to satisfy these requirements:
- safely configure the webserver within the web root
- don't require a Docker build to customise the web server configuration
- save time
- enable rootless configuration
Installation
Install with Go
go install gitlab.com/bobymcbobs/webserva@latest
webserva
launch with Podman/Docker
podman run -it --rm -p 8080:8080 -v "$PWD:$PWD" --workdir "$PWD" registry.gitlab.com/bobymcbobs/webserva:latest
verify a container image with cosign
cosign verify \
--certificate-identity-regexp 'https://gitlab.com/BobyMCbobs/webserva//.gitlab-ci.yml@(refs/heads/main|refs/tags/.*)' \
--certificate-oidc-issuer-regexp 'https://gitlab.com' \
-o text \
registry.gitlab.com/bobymcbobs/webserva:latest
Use cases
Local web development
Launch webserva in the directory of the built/rendered/source of a website locally.
As a base layer
Serving a website as a container image
FROM registry.gitlab.com/bobymcbobs/webserva:latest
COPY public /var/run/ko
see deployment.
Serving a single page app
Use history mode to serve a single page app. Check out templating configuration.
Self-serve dotfile config
Using .webserva.yaml web root, configure the runtime of the web server. Check out dotfile configuration.
Documentation
Docs are located in the docs folder, as well as on GitLab pages.
License
Copyright 2026 Caleb Woodbine.
This project is licensed under the AGPL-3.0 and is Free Software.
This program comes with absolutely no warranty.