Blob


1 .\" Copyright (c) 2021, 2022, 2023, 2024 Omar Polo <op@omarpolo.com>
2 .\"
3 .\" Permission to use, copy, modify, and distribute this software for any
4 .\" purpose with or without fee is hereby granted, provided that the above
5 .\" copyright notice and this permission notice appear in all copies.
6 .\"
7 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10 .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11 .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14 .Dd April 27, 2024
15 .Dt GMID 8
16 .Os
17 .Sh NAME
18 .Nm gmid
19 .Nd Gemini server
20 .Sh SYNOPSIS
21 .Nm
22 .Bk -words
23 .Op Fl fhnVv
24 .Op Fl c Ar config
25 .Op Fl D Ar macro Ns = Ns Ar value
26 .Op Fl P Ar pidfile
27 .Ek
28 .Sh DESCRIPTION
29 .Nm
30 is a simple and minimal gemini server that can serve static files,
31 talk to FastCGI applications and act as a gemini reverse proxy.
32 .Pp
33 .Nm
34 rereads the configuration file when it receives
35 .Dv SIGHUP
36 and reopens log files when it receives
37 .Dv SIGUSR1 .
38 .Pp
39 The options are as follows:
40 .Bl -tag -width 14m
41 .It Fl c Ar config
42 Specifies the configuration file.
43 The default is
44 .Pa /etc/gmid.conf .
45 .It Fl D Ar macro Ns = Ns Ar value
46 Define
47 .Ar macro
48 to be set to
49 .Ar value
50 on the command line.
51 Overrides the definition of
52 .Ar macro
53 in the config file if present.
54 .It Fl f
55 Do not daemonize.
56 Stay and log in the foreground.
57 .It Fl h , Fl -help
58 Print the usage and exit.
59 .It Fl n
60 Check that the configuration is valid, but don't start the server.
61 If specified two or more time, dump the configuration in addition to
62 verify it.
63 .It Fl P Ar pidfile
64 Write daemon's pid to the given location.
65 .Ar pidfile
66 will also act as lock: if another process is holding a lock on that
67 file,
68 .Nm
69 will refuse to start.
70 .It Fl V , Fl -version
71 Print the version and exit.
72 .It Fl v
73 Verbose mode.
74 .El
75 .Sh EXAMPLES
76 To run
77 .Nm
78 a configuration file and a X.509 certificate must be provided.
79 A self-signed certificate, which are commonly used in the Geminispace,
80 can be generated using for e.g.\&
81 .Xr openssl 1 :
82 .Bd -literal -offset indent
83 # openssl req \-x509 \-newkey rsa:4096 \-nodes \e
84 \-keyout /etc/ssl/private/example.com.key \e
85 \-out /etc/ssl/example.com.pem \e
86 \-days 365 \-subj "/CN=example.com"
87 # chmod 600 /etc/ssl/example.com.crt
88 # chmod 600 /etc/ssl/private/example.com.key
89 .Ed
90 .Pp
91 Then
92 .Nm
93 can be started with
94 .Bd -literal -offset indent
95 # gmid -c /etc/gmid.conf
96 .Ed
97 .Sh SEE ALSO
98 .Xr gemexp 1 ,
99 .Xr gg 1 ,
100 .Xr gmid.conf 5
101 .Sh ACKNOWLEDGEMENTS
102 .Nm
103 uses the
104 .Dq Flexible and Economical
105 UTF-8 decoder written by
106 .An Bjoern Hoehrmann .
107 .Sh AUTHORS
108 .An -nosplit
109 The
110 .Nm
111 program was written by
112 .An Omar Polo Aq Mt op@omarpolo.com .
113 .Sh CAVEATS
114 .Bl -bullet
115 .It
116 All the root directories are opened during the daemon configuration;
117 if a root directory is deleted and then re-created,
118 .Nm
119 won't be able to serve files inside that directory until a reload.
120 This restriction only applies to the root directories and not their
121 content.
122 .It
123 a %2F sequence is indistinguishable from a literal slash: this is not
124 RFC3986-compliant.
125 .It
126 a %00 sequence is treated as invalid character and thus rejected.
127 .El