mirror of
https://github.com/omar-polo/gmid.git
synced 2024-09-17 16:30:27 +02:00
56 lines
1.4 KiB
Markdown
56 lines
1.4 KiB
Markdown
# gmid
|
|
|
|
> dead simple, zero configuration Gemini server
|
|
|
|
gmid is a simple and minimal Gemini server. It requires no
|
|
configuration whatsoever so it's well suited for local development
|
|
machines.
|
|
|
|
Care has been taken to assure that gmid doesn't serve files outside
|
|
the given directory, and it won't follow symlinks. Furthermore, on
|
|
OpenBSD, gmid is also `pledge(2)`ed and `unveil(2)`ed: the set of
|
|
pledges are `stdio rpath inet`, with the addition of `proc exec` if
|
|
CGI scripts are enabled, while the given directory is unveiled with
|
|
`rx`.
|
|
|
|
|
|
## Features
|
|
|
|
- IRI support (RFC RFC3987)
|
|
- dual stack: can serve over both IPv4 and IPv6
|
|
- CGI scripts
|
|
- (very) low memory footprint
|
|
- small codebase, easily hackable
|
|
|
|
|
|
## Planned features
|
|
|
|
- virtual hosts
|
|
|
|
|
|
## Drawbacks
|
|
|
|
- not suited for very busy hosts. If you receive an high number of
|
|
connection per-second you'd probably want to run multiple gmid
|
|
instances behind relayd/haproxy or a different server.
|
|
|
|
|
|
## Building
|
|
|
|
gmid depends a POSIX libc and libtls. It can probably be linked
|
|
against libretls, but I've never tried.
|
|
|
|
See [INSTALL.gmi](INSTALL.gmi) for more info, but the build is as
|
|
simple as
|
|
|
|
make
|
|
|
|
The Makefile isn't able to produce a statically linked executable
|
|
(yet), so for that you have to execute by hand
|
|
|
|
make
|
|
cc -static *.o /usr/lib/lib{crypto,tls,ssl}.a -o gmid
|
|
strip gmid
|
|
|
|
to enjoy your ~2.3M statically-linked gmid.
|