1 public-inbox (server-side) installation
2 ---------------------------------------
4 This is for folks who want to setup their own public-inbox instance.
5 Clients should use normal git-clone/git-fetch, or NNTP clients
6 if they want to import mail into their personal inboxes.
8 public-inbox is developed on Debian GNU/Linux systems and will
9 never depend on packages outside of the "main" component of
10 the "stable" distribution, currently Debian 10.x ("buster"),
11 but older versions of Debian remain supported.
13 Most packages are available in other GNU/Linux distributions
16 TODO: this still needs to be documented better,
17 also see the scripts/ and sa_config/ directories in the source tree
22 public-inbox requires a number of other packages to access its full
23 functionality. The core tools are, of course:
25 * Git (1.8.0+, 2.6+ for writing v2 inboxes)
27 * DBD::SQLite (needed for NNTP, message threading, and v2 inboxes)
29 To accept incoming mail into a public inbox, you'll likely want:
31 * MTA - postfix is recommended (for public-inbox-mda)
32 * SpamAssassin (spamc/spamd) (for public-inbox-watch/public-inbox-mda)
34 Beyond that, there is a long list of Perl modules required, starting with:
36 * Digest::SHA typically installed with Perl
39 * Email::MIME deb: libemail-mime-perl
43 * URI::Escape deb: liburi-perl
46 (for HTML/Atom generation)
48 Plack and Date::Parse are optional as of public-inbox v1.3.0,
49 but required for older releases:
51 * Plack deb: libplack-perl
53 rpm: perl-Plack, perl-Plack-Test,
54 (for HTML/Atom generation)
56 - Date::Parse deb: libtimedate-perl
59 (for broken, mostly historical emails)
61 Where "deb" indicates package names for Debian-derived distributions,
62 "pkg" is for the FreeBSD package (maybe other common BSDs, too), and
63 "rpm" is for RPM-based distributions (only known to work on Fedora).
65 Numerous optional modules are likely to be useful as well:
67 - DBD::SQLite deb: libdbd-sqlite3-perl
70 (for v2, NNTP, or gzipped mboxes)
72 - Search::Xapian deb: libsearch-xapian-perl
74 rpm: perl-Search-Xapian
77 - Net::Server deb: libnet-server-perl
80 (for HTTP/NNTP background daemons,
81 not needed as systemd services or
84 - Inline::C deb: libinline-c-perl
86 (speeds up process spawning on Linux,
87 see public-inbox-daemon(8))
89 - Plack::Middleware::ReverseProxy deb: libplack-middleware-reverseproxy-perl
90 pkg: p5-Plack-Middleware-ReverseProxy
91 rpm: perl-Plack-Middleware-ReverseProxy
92 (ensures redirects are correct when running
93 behind nginx or Varnish)
95 - Plack::Middleware::Deflater deb: libplack-middleware-deflater-perl
96 pkg: p5 -Plack-Middleware-Deflater
97 rpm: perl-Plack-Middleware-Deflater
98 (saves bandwidth on responses)
100 * highlight deb: libhighlight-perl
101 (for syntax highlighting with coderepo)
103 * xapian-compact (tool) deb: xapian-tools
106 (optional, for public-inbox-compact(1))
108 The following modules are typically pulled in by dependencies listed
109 above, so there is no need to explicitly install them:
111 - Email::MIME::ContentType deb: libemail-mime-contenttype-perl
112 pkg: p5-Email-MIME-ContentType
113 rpm: perl-Email-MIME-ContentType
114 (pulled in by Email::MIME)
116 - Email::Simple deb: libemail-simple-perl
118 rpm: perl-Email-Simple
119 (pulled in by Email::MIME)
121 * Encode deb: libperl5.$MINOR (or libencode-perl)
124 (likely installed with Perl)
126 - DBI deb: libdbi-perl
129 (pulled in by DBD::SQLite)
131 * Devel::Peek deb: libperl5.$MINOR (e.g. libperl5.24)
134 (optional for stale FD cleanup in daemons,
135 typically installed alongside Perl5)
137 - Filesys::Notify::Simple deb: libfilesys-notify-simple-perl
138 pkg: p5-Filesys-Notify-Simple
139 rpm: perl-Filesys-Notify-Simple
140 (for public-inbox-watch, pulled in by Plack)
142 - Linux::Inotify2 deb: liblinux-inotify2-perl
143 rpm: perl-Linux-Inotify2
144 (for public-inbox-watch on Linux)
146 - Filesys::Notify::KQueue pkg: p5-Filesys-Notify-KQueue
147 (for public-inbox-watch on FreeBSD)
149 - IO::Compress (::Gzip) deb: perl-modules (or libio-compress-perl)
151 rpm: perl-IO-Compress
152 (for gzipped mbox over HTTP, v2 format)
154 Uncommonly needed modules:
156 - Socket6 deb: libsocket6-perl
159 (pulled in by SpamAssassin and Net::Server,
160 only necessary if using IPv6 with
161 Plack::Middleware::AccessLog or similar
164 - Crypt::CBC deb: libcrypt-cbc-perl
166 (for PublicInbox::Unsubscribe (rarely used))
168 Optional packages testing and development:
170 - Plack::Test deb: libplack-test-perl
174 - Test::Simple deb: perl-modules-5.$MINOR
176 rpm: perl-Test-Simple
178 - XML::TreePP deb: libxml-treepp-perl
182 standard MakeMaker installation (Perl)
183 --------------------------------------
185 To use MakeMaker, you need to ensure ExtUtils::MakeMaker is available.
186 This is typically installed with Perl, but RPM-based systems will likely
187 need to install the `perl-ExtUtils-MakeMaker' package.
189 Once the dependencies are installed, you should be able to build and
190 install the system (into /usr/local) with:
195 make install # root permissions may be needed
197 When installing Search::Xapian, make sure the underlying Xapian
198 installation is not affected by an index corruption bug:
200 https://bugs.debian.org/808610
202 For Debian 8.x (jessie), this means using Debian 8.5 or later.
204 public-inbox will never store unregeneratable data in Xapian
205 or any other search database we might use; Xapian corruption
206 will not destroy critical data.
208 See the public-inbox-overview(7) man page for the next steps once
209 the installation is complete.
214 Copyright 2013-2020 all contributors <meta@public-inbox.org>
215 License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>