public-inbox.git  about / heads / tags
an "archives first" approach to mailing lists
blob a89c8907e4552737366d382df972f4f5b3d318ce 5757 bytes (raw)
$ git show viewdiff:INSTALL	# shows this blob on the CLI

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
 
public-inbox (server-side) installation
---------------------------------------

This is for folks who want to setup their own public-inbox instance.
Clients should use normal git-clone/git-fetch, or NNTP clients
if they want to import mail into their personal inboxes.

public-inbox is developed on Debian GNU/Linux systems and will
never depend on packages outside of the "main" component of
the "stable" distribution, currently Debian 9.x ("stretch")

Most packages are available in other GNU/Linux distributions;
and FreeBSD support can happen.

TODO: this still needs to be documented better,
also see the scripts/ and sa_config/ directories in the source tree

Requirements
------------

public-inbox requires a number of other packages to access its full
functionality.  The core tools are, of course:

* Git (1.8.0+, 2.6+ for writing v2 repositories)
* Perl 5.8+
* SQLite (needed for Xapian use)

To accept incoming mail into a public inbox, you'll likely want:

* MTA - postfix is recommended (for public-inbox-mda)
* SpamAssassin (spamc/spamd)   (for public-inbox-watch/public-inbox-mda)

Beyond that, there is a long list of Perl modules required, starting with:

* Date::Parse                   deb: libtimedate-perl
                                rpm: perl-Time-ParseDate

* Email::MIME                   deb: libemail-mime-perl
                                rpm: perl-Email-MIME

* Email::MIME::ContentType      deb: libemail-mime-contenttype-perl
                                rpm: perl-Email-MIME-ContentType

* Encode::MIME::Header          deb: libencode-perl
                                rpm: perl-Encode

* Plack                         deb: libplack-perl
                                rpm: perl-Plack, perl-Plack-Test,
                                (for HTML/Atom generation)

* URI::Escape                   deb: liburi-perl
                                rpm: perl-URI
                                (for HTML/Atom generation)

Where "deb" indicates package names for Debian-derived distributions and
"rpm" is for RPM-based distributions (only known to work on Fedora).

Numerous optional modules are likely to be useful as well:

  - Search::Xapian             deb: libsearch-xapian-perl
                               rpm: perl-Search-Xapian
                               (for NNTP service or gzipped mbox over HTTP)

  - IO::Compress::Gzip         deb: perl-modules (or libio-compress-perl)
                               rpm: perl-PerlIO-gzip
                               (for gzipped mbox over HTTP)

  - DBI                        deb: libdbi-perl
                               rpm: perl-DBI
                               (for gzipped mbox over HTTP)

  - DBD::SQLite                deb: libdbd-sqlite3-perl
                               rpm: perl-DBD-SQLite
                               (for NNTP service or gzipped mbox over HTTP)

  - Danga::Socket              deb: libdanga-socket-perl
                               rpm: perl-Danga-Socket
                               (for bundled HTTP and NNTP servers)

  - Net::Server                deb: libnet-server-perl
                               rpm: perl-Net-Server
                               (for HTTP/NNTP servers as standalone daemons,
                                not needed as systemd services)

  - Filesys::Notify::Simple    deb: libfilesys-notify-simple-perl
                               rpm: perl-Filesys-Notify-Simple
                               (for public-inbox-watch)

  - Inline::C[7]               deb: libinline-c-perl
                               (speeds up spawning of git(1) on Linux
                                (see public-inbox-daemon(8))

  - Plack::Middleware::ReverseProxy

                               deb: libplack-middleware-reverseproxy-perl
                               rpm: perl-Plack-Middleware-ReverseProxy
                               (ensures redirects are correct when running
                                behind nginx or Varnish)

  - Plack::Middleware::Deflater

                               deb: libplack-middleware-deflater-perl
                               rpm: perl-Plack-Middleware-Deflater
                               (saves bandwidth on responses)

  - Socket6                    deb: libsocket6-perl
                               rpm: perl-Socket6
                               (pulled in by SpamAssassin and Net::Server,
                                only necessary if using IPv6 with
                                Plack::Middleware::AccessLog or similar)

On Fedora systems, you'll probably also end up wanting
perl-Test-HTTP-Server-Simple, perl-Devel-Peek, and perl-IPC-Run to run the
test suite.  On Debian systems, libxml-feed-perl and libipc-run-perl
will aid in running the test suite (XML::Feed and IPC::Run respectively,
on CPAN).

standard MakeMaker installation (Perl)
--------------------------------------

Once the dependencies are installed, you should be able to build and
install the system (into /usr/local) with:

        perl Makefile.PL
        make
        make test
        make install # root permissions may be needed

When installing Search::Xapian, make sure the underlying Xapian
installation is not affected by an index corruption bug:

        https://bugs.debian.org/808610

For Debian 8.x (jessie), this means using Debian 8.5 or later.

public-inbox will never store unregeneratable data in Xapian
or any other search database we might use; Xapian corruption
will not destroy critical data.

See the public-inbox-overview(7) man page for the next steps once the
installation is complete.

Copyright
---------

Copyright 2013-2019 all contributors <meta@public-inbox.org>
License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>

git clone https://public-inbox.org/public-inbox.git
git clone http://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/public-inbox.git