public-inbox.git  about / heads / tags
an "archives first" approach to mailing lists
blob 87aa696170d258f12ef01fa2f1e8bd8e1de42c27 5091 bytes (raw)
$ git show v1.1.0-pre1: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
 
public-inbox (server-side) installation
---------------------------------------

This is for folks who want to setup their own public-inbox instance.
Clients should see https://ssoma.public-inbox.org/INSTALL.html instead
if they want to import mail into their personal inboxes.

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
* Perl
* 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: libdatetime-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

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:

  - 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)

  - 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)

  - 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 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)


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).

(*) we hope to drop this dependency someday

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-2018 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