user/dev discussion of public-inbox itself
 help / color / mirror / code / Atom feed
blob aa4afb57a880f56afc22acc63ba00be28dc57a6b 5193 bytes (raw)
name: INSTALL 	 # note: path name is non-authoritative(*)

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

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

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

  - Socket6                    deb: libsocket6-perl
                               rpm: perl-Socket6
                               (for IPv6 support)

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

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>

debug log:

solving aa4afb5 ...
found aa4afb5 in https://80x24.org/public-inbox.git

(*) Git path names are given by the tree(s) the blob belongs to.
    Blobs themselves have no identifier aside from the hash of its contents.^

Code repositories for project(s) associated with this public inbox

	https://80x24.org/public-inbox.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).