]> Sergey Matveev's repositories - godlighty.git/blob - doc/index.texi
777bd7d661b2423c89fe6adb42e0039c874b6029
[godlighty.git] / doc / index.texi
1 \input texinfo
2 @settitle godlighty
3
4 @copying
5 Copyright @copyright{} 2021-2024 @email{stargrave@@stargrave.org, Sergey Matveev}
6 @end copying
7
8 @node Top
9 @top godlighty
10
11 @command{godlighty} is
12 @url{https://www.gnu.org/philosophy/free-sw.html, free software}
13 highly-customizable HTTP, HTTP/2, HTTPS server written on pure Go.
14
15 Why yet another web-server? Because all others suck even for my simple
16 ordinary needs: they use hateful OpenSSL, lack documentation, has
17 complex configuration format, lack some features, hard to extend with.
18
19 @itemize
20
21 @item Rather minimalistic pure-Go web-server with few number of
22 dependencies, producing single statically linked executable. Maximal
23 reuse of native libraries capabilities.
24
25 @item Modern, reliable, secure and fast TLS 1.3 implementation with
26 ChaCha20-Poly1305, session resumption and SNI.
27
28 @item If built with @url{http://www.gostls13.cypherpunks.ru/, gostls13},
29 then @url{http://www.gost.cypherpunks.ru/, GOST} TLS 1.3 cryptography
30 will be fully supported, with ability to use GOST-based X.509
31 certificates if client announces its knowledge of GOST algorithms (with
32 the fallback to ordinary ECDSA/EdDSA ones).
33
34 @item HTTP/1.1, @url{https://en.wikipedia.org/wiki/HTTP%2F2, HTTP/2}
35 (only when negotiated during ALPN) and keepalives support. Graceful
36 shutdowns.
37
38 @item @code{gzip} and @url{https://facebook.github.io/zstd/, Zstandard}
39 compression on-the-fly.
40
41 @item @code{Range}, @code{ETag} (based on file/directory's
42 @code{ctime}), @code{Last-Modified} and corresponding precondition
43 handlers are fully used.
44
45 @item Auto-generated directory listings and
46 read-only @url{https://en.wikipedia.org/wiki/WebDAV, WebDAV} support.
47
48 @item Per-domain HTTP basic authorization and TLS client authentication.
49
50 @item If corresponding @file{.meta4} files are found, it is parsed and
51 additional @code{Link}s with @code{Digest}s headers are generated
52 automatically, based on that @url{http://www.metalinker.org/, Metalink}
53 file.
54
55 @item Very friendly to @url{http://cr.yp.to/daemontools.html, daemontools}.
56 Can drop (UID, GID, groups) privileges.
57
58 @end itemize
59
60 Basically all configuration is done directly inside source code. You
61 have to recompile it every time configuration changes. Is it a problem?
62 I doubt, because Go is very fast. But it produces huge statically linked
63 executables, you say! Use @command{bsdiff}/@command{bspatch}!
64
65 It is created exclusively to drive my own websites, but if you are
66 interested, then @code{git clone git://git.stargrave.org/godlighty.git} it.
67
68 @insertcopying
69
70 @include cfg.texi
71 @include usage.texi
72
73 @bye