Blob


1 # gmid
3 > dead simple, zero configuration Gemini server
5 gmid is a simple and minimal Gemini server. It requires no
6 configuration whatsoever so it's well suited for local development
7 machines.
9 Care has been taken to assure that gmid doesn't serve files outside
10 the given directory, and it won't follow symlinks. Furthermore, on
11 OpenBSD, gmid is also `pledge(2)`ed and `unveil(2)`ed: the set of
12 pledges are `stdio rpath inet`, with the addition of `proc exec` if
13 CGI scripts are enabled, while the given directory is unveiled with
14 `rx`.
17 ## Features
19 - IRI support (RFC RFC3987)
20 - dual stack: can serve over both IPv4 and IPv6
21 - CGI scripts
22 - (very) low memory footprint
23 - small codebase, easily hackable
26 ## Planned features
28 - virtual hosts
31 ## Drawbacks
33 - not suited for very busy hosts. If you receive an high number of
34 connection per-second you'd probably want to run multiple gmid
35 instances behind relayd/haproxy or a different server.
38 ## Building
40 gmid depends a POSIX libc and libtls. It can probably be linked
41 against libretls, but I've never tried.
43 See [INSTALL.gmi](INSTALL.gmi) for more info, but the build is as
44 simple as
46 make
48 The Makefile isn't able to produce a statically linked executable
49 (yet), so for that you have to execute by hand
51 make
52 cc -static *.o /usr/lib/lib{crypto,tls,ssl}.a -o gmid
53 strip gmid
55 to enjoy your ~2.3M statically-linked gmid.