1PUBLIC-INBOX-CONFIG(5)     public-inbox user manual     PUBLIC-INBOX-CONFIG(5)
2
3
4

NAME

6       public-inbox-config - public-inbox config file description
7

SYNOPSIS

9       ~/.public-inbox/config
10

DESCRIPTION

12       The public-inbox config file is parseable by git-config(1).  This is a
13       global configuration file for mapping/discovering all public-inboxes
14       used by a particular user.
15

CONFIGURATION FILE

17   EXAMPLE
18               [publicinbox "test"]
19                       inboxdir = /home/user/path/to/test.git
20                       ; multiple addresses are supported
21                       address = test@example.com
22                       ; address = alternate@example.com
23                       url = http://example.com/test
24                       newsgroup = inbox.test
25
26                       ; backwards compatibility with public-inbox pre-1.2.0,
27                       ; "inboxdir" takes precedence over "mainrepo"
28                       mainrepo = /home/user/path/to/test.git
29
30   VARIABLES
31       publicinbox.<name>.address
32               The email address of the public-inbox.  May be specified more
33               than once for merging multiple mailing lists (or migrating to
34               new addresses).  This must be specified at least once, the
35               first value will be considered the primary address for
36               informational purposes.
37
38               Default: none, required
39
40       publicinbox.<name>.inboxdir
41               The absolute path to the directory which hosts the public-
42               inbox.  This must be specified once.
43
44               This was previously known as "mainrepo", which remains
45               supported, but "inboxdir" takes precedence.
46
47               Default: none, required
48
49       publicinbox.<name>.url
50               The primary URL for hosting the HTTP/HTTPS archives.
51               Additional HTTP/HTTPS URLs may be specified via
52               "$GIT_DIR/cloneurl" as documented in gitweb(1)
53
54               Default: none, optional
55
56       publicinbox.<name>.newsgroup
57               The NNTP group name for use with public-inbox-nntpd(1).  This
58               may be any newsgroup name with hierarchies delimited by ".".
59               For example, the newsgroup for <mailto:meta@public-inbox.org>
60               is: "inbox.comp.mail.public-inbox.meta"
61
62               It also configures the folder hierarchy used by
63               public-inbox-imapd(1).
64
65               Omitting this for a given inbox will prevent the inbox from
66               being served by public-inbox-nntpd(1) and/or
67               public-inbox-imapd(1).
68
69               Default: none, optional
70
71       publicinbox.<name>.watch
72               See public-inbox-watch(1)
73
74       publicinbox.<name>.watchheader
75               See public-inbox-watch(1)
76
77       publicinbox.<name>.listid
78               The rfc2919 <https://tools.ietf.org/html/rfc2919> header
79               without angle brackets for public-inbox-mda(1) deliveries and
80               public-inbox-watch(1).
81
82               For public-inbox-watch users, this is a shortcut for specifying
83               "publicinbox.$NAME.watchheader=List-Id:<foo.example.com>"
84
85               For public-inbox-mda users, this may be used to avoid recipient
86               matching via "ORIGINAL_RECIPIENT" environment variable.
87
88               This may be specified multiple times for merging multiple
89               mailing lists into a single public-inbox, only one "List-Id"
90               header needs to match.
91
92               Default: none
93
94       publicinbox.<name>.imapmirror
95               This may be the full IMAP URL of an independently-run IMAP
96               mirror.
97
98               Default: none
99
100       publicinbox.<name>.nntpmirror
101               This may be the full NNTP URL of an independently-run mirror.
102               For example, the https://public-inbox.org/meta/ inbox is
103               mirrored by Gmane at
104               "nntp://news.gmane.io/gmane.mail.public-inbox.general"
105
106               Default: none
107
108       publicinbox.<name>.indexlevel
109               The indexing level for public-inbox-index(1)
110
111               "basic" only requires DBD::SQLite(3pm) and provides all NNTP
112               functionality along with thread-awareness in the WWW interface.
113
114               "medium" requires Search::Xapian(3pm) to provide full-text term
115               search functionality in the WWW UI.
116
117               "full" also includes positional information used by Xapian to
118               allow for searching for phrases using quoted text.  (e.g.
119               "looking for a complete sentence")
120
121               Default: "full"
122
123       publicinbox.<name>.boost
124               Control indexing order for public-inbox-extindex(1), with ties
125               broken by config file order.  This only affects indexing and
126               does not affect messages which are already indexed.
127
128               Default: 0
129
130       publicinbox.<name>.indexSequentialShard
131               See "publicInbox.indexSequentialShard" in public-inbox-index(1)
132
133       publicinbox.<name>.httpbackendmax
134               If a digit, the maximum number of parallel git-http-backend(1)
135               processes to allow for cloning this particular inbox.
136
137               If an alphanumeric value starting with a lowercase alphabetic
138               character is specified, the inbox will use a "NAMED LIMITER"
139               which can be shared by multiple inboxes.
140
141               Default: 32 (using a default limiter shared by all inboxes)
142
143       publicinbox.<name>.coderepo
144               The nickname of a "coderepo" section associated with the inbox.
145               May be specified more than once for M:N mapping of code repos
146               to inboxes.  If enabled, diff hunk headers in patch emails will
147               link to the line numbers of blobs.
148
149               Default: none
150
151       publicinbox.<name>.replyto
152               May be used to control how reply instructions in the PSGI
153               interface are displayed.
154
155               ":none=dead inbox" may be specified to denote an inactive list
156               ("dead inbox" may be replaced with another phrase).
157
158               A list of comma-delimited email addresses may be specified.
159               This can be useful for dedicated inboxes for bot emails, but
160               discussion happens on a separate mailing list/inbox.
161
162               Mirrors of existing centralized mailing lists may use ":list"
163               here to redirect mail only to the configured inbox address.
164               The use of ":list" is discouraged for new mailing lists, as it
165               leads to centralization.
166
167               Default: :all
168
169       publicinbox.css
170               The local path name of a CSS file for the PSGI web interface.
171               May contain the attributes "media", "title" and "href" which
172               match the associated attributes of the HTML <style> tag.
173               "href" may be specified to point to the URL of an remote CSS
174               file and the path may be "/dev/null" or any empty file.
175               Multiple files may be specified and will be included in the
176               order specified.
177
178       publicinboxmda.spamcheck
179               This may be set to "none" to disable the use of SpamAssassin
180               spamc(1) for filtering spam before it is imported into git
181               history.  Other spam filtering backends may be supported in the
182               future.
183
184               Default: spamc
185
186       publicinboxwatch.spamcheck
187               See public-inbox-watch(1)
188
189       publicinboxwatch.watchspam
190               See public-inbox-watch(1)
191
192       publicinbox.imapserver
193               Set this to point to the hostname(s) of the
194               public-inbox-imapd(1) instance.  This is used to advertise the
195               existence of the IMAP endpoint in the PublicInbox::WWW HTML
196               interface.
197
198               Default: none
199
200       publicinbox.nntpserver
201               Same as "publicinbox.imapserver", but for the hostname(s) of
202               the public-inbox-nntpd(1) instance.
203
204               Default: none
205
206       publicinbox.<name>.feedmax
207               The size of an Atom feed for the inbox.  If specified more than
208               once, only the last value is used.  Invalid values (<= 0) will
209               be treated as the default value.
210
211               Default: 25
212
213       publicinbox.<name>.hide
214               A comma-delimited list of listings to hide the inbox from.
215
216               Valid values are currently "www" and "manifest".
217
218               Default: none
219
220       coderepo.<nick>.dir
221               The path to a git repository for "publicinbox.<name>.coderepo"
222
223       coderepo.<nick>.cgitUrl
224               The URL of the cgit instance associated with the coderepo.
225
226               Default: none
227
228       publicinbox.cgitrc
229               A path to a cgitrc(5) file.  "repo.url" directives in the
230               cgitrc will be mapped to the nickname of a coderepo (without
231               trailing slash), and "repo.path" directives map to
232               "coderepo.<nick>.dir".  Use of this directive allows admins of
233               existing cgit installations to skip declaring coderepo sections
234               and map inboxes directly to code repositories known to cgit.
235
236               Macro expansion (e.g. $HTTP_HOST) is not yet supported.
237
238       publicinbox.cgitbin
239               A path to the "cgit.cgi" executable.  The PublicInbox::WWW
240               interface can spawn cgit as a fallback if the
241               publicinbox.cgitrc directive is configured.
242
243               Default: /var/www/htdocs/cgit/cgit.cgi or
244               /usr/lib/cgit/cgit.cgi
245
246       publicinbox.cgitdata
247               A path to the data directory used by cgit for storing static
248               files.  Typically guessed based the location of "cgit.cgi"
249               (from "publicinbox.cgitbin", but may be overridden.
250
251               Default: basename of "publicinbox.cgitbin",
252               /var/www/htdocs/cgit/ or /usr/share/cgit/
253
254       publicinbox.mailEditor
255               See public-inbox-edit(1)
256
257       publicinbox.indexMaxSize =item publicinbox.indexBatchSize =item
258       publicinbox.indexSequentialShard
259               See public-inbox-index(1)
260
261       publicinbox.wwwlisting
262               Enable a HTML listing style when the root path of the URL '/'
263               is accessed.  Valid values are:
264
265               •       all - Show all inboxes
266
267               •       404 - Return a 404 page.  This is useful to allow
268                       customization with Plack::App::Cascade(3pm)
269
270               •       match=domain - Only show inboxes with URLs which belong
271                       to the domain of the HTTP request
272
273               Default: 404
274
275       publicinbox.grokmanifest
276               Controls the generation of a grokmirror-compatible gzipped JSON
277               file at the top-level of the PSGI interface.  You generally do
278               not need to change this from the default.
279
280               Valid values are:
281
282               •       match=domain - Only include inboxes with URLs which
283                       belong to the domain of the HTTP request.  This is
284                       compatible with virtual hosting where several domains
285                       come from the same host.
286
287               •       all - All inboxes are present in "manifest.js.gz",
288                       regardless of domain.  Only use this if you're serving
289                       HTTP requests in a domain-agnostic manner.
290
291               •       404 - "manifest.js.gz" will only contain an empty JSON
292                       array.  This does NOT affect
293                       "$INBOX_URL/manifest.js.gz", which will always contain
294                       all git repos used by the inbox at $INBOX_URL
295
296               Default: "match=domain"
297
298       publicinbox.<name>.obfuscate
299               Whether to obfuscate email addresses in the PublicInbox::WWW
300               HTML interface.
301
302               Default: false
303
304       publicinbox.noObfuscate
305               A space-delimited list of well-known addresses and domains that
306               should not be obfuscated when "publicinbox.$NAME.obfuscate" is
307               true (e.g., "public@example.com" and "@example.com").  This may
308               be specified more than once, in which case the values are
309               merged.
310
311               Default: none
312
313       extindex.<name>.topdir
314               The directory of an external index.  See
315               public-inbox-extindex(1) for more details.
316
317       extindex.<name>.url
318               Identical to "publicinbox.<name>.url", but for external indices
319
320       extindex.<name>.coderepo
321               Identical to "publicinbox.<name>.coderepo", but for external
322               indices.  Code repos may be freely associated with any number
323               of public inboxes and external indices.
324
325   NAMED LIMITER (PSGI)
326       Named limiters are useful for preventing large inboxes from
327       monopolizing (or overloading) the server.  Since serving git clones
328       (via git-http-backend(1) can be memory-intensive for large inboxes, it
329       makes sense to put large inboxes on a named limiter with a low max
330       value; while smaller inboxes can use the default limiter.
331
332       "RLIMIT_*" keys may be set to enforce resource limits for a particular
333       limiter (BSD::Resource(3pm) is required).
334
335       Default named-limiters are prefixed with "-".  Currently, the "-cgit"
336       named limiter is reserved for instances spawning cgit via
337       "publicinbox.cgitrc"
338
339       publicinboxlimiter.<name>.max
340               The maximum number of parallel processes for the given limiter.
341
342       publicinboxlimiter.<name>.rlimitCore
343       publicinboxlimiter.<name>.rlimitCPU
344       publicinboxlimiter.<name>.rlimitData
345               The maximum core size, CPU time, or data size processes run
346               with the given limiter will use.  This may be comma-separated
347               to distinguish soft and hard limits.  The word "INFINITY" is
348               accepted as the RLIM_INFINITY constant (if supported by your
349               OS).
350
351               See setrlimit(2) for more info on the behavior of RLIMIT_CORE,
352               RLIMIT_CPU, and RLIMIT_DATA for you operating system.
353
354       EXAMPLE WITH NAMED LIMITERS
355
356               ; big inboxes which require lots of memory to clone:
357               [publicinbox "big1"]
358                       inboxdir = /path/to/big1
359                       address = big1@example.com
360                       httpbackendmax = big
361               [publicinbox "big2"]
362                       inboxdir = /path/to/big2
363                       address = big2@example.com
364                       httpbackendmax = big
365
366               ; tiny inboxes which are easily cloned:
367               [publicinbox "tiny1"]
368                       inboxdir = /path/to/tiny1
369                       address = tiny1@example.com
370               [publicinbox "tiny2"]
371                       inboxdir = /path/to/tiny2
372                       address = tiny2@example.com
373
374               [publicinboxlimiter "big"]
375                       max = 4
376
377       In the above example, the "big1" and "big2" are limited to four
378       parallel git-http-backend(1) processes between them.
379
380       However, "tiny1" and "tiny2" will share the default limiter which means
381       there can be 32 git-http-backend(1) processes between them.
382

ENVIRONMENT

384       PI_CONFIG
385               Used to override the default "~/.public-inbox/config" value.
386

CONTACT

388       Feedback welcome via plain-text mail to <mailto:meta@public-inbox.org>
389
390       The mail archives are hosted at <https://public-inbox.org/meta/> and
391       <http://4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/meta/>
392
394       Copyright 2016-2021 all contributors <mailto:meta@public-inbox.org>
395
396       License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
397

SEE ALSO

399       git(1), git-config(1), public-inbox-daemon(8), public-inbox-mda(1),
400       public-inbox-watch(1), grokmirror
401       <https://git.kernel.org/pub/scm/utils/grokmirror/grokmirror.git>
402
403
404
405public-inbox.git                  1993-10-02            PUBLIC-INBOX-CONFIG(5)
Impressum