summaryrefslogtreecommitdiff
path: root/COMPILE.md
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2022-04-22 20:32:57 +0200
committerBadlop <badlop@process-one.net>2022-05-04 02:39:30 +0200
commitbb2cb19a5c2b3be07d44c32a3dc164d293e791c9 (patch)
treeb23ef73c161b0dc7f464d49571fe8a29ff7aba79 /COMPILE.md
parentInstallers: Add job to create draft release (diff)
Move some content from README to new COMPILE and CONTAINER files
Diffstat (limited to 'COMPILE.md')
-rw-r--r--COMPILE.md126
1 files changed, 126 insertions, 0 deletions
diff --git a/COMPILE.md b/COMPILE.md
new file mode 100644
index 00000000..5bcfaa58
--- /dev/null
+++ b/COMPILE.md
@@ -0,0 +1,126 @@
+Compile and Install ejabberd
+============================
+
+This document explains how to compile and install ejabberd
+from source code.
+
+For a more detailed explanation, please check the
+ejabberd Docs: [Source Code Installation][docs-source].
+
+[docs-source]: https://docs.ejabberd.im/admin/installation/#source-code
+
+
+Requirements
+------------
+
+To compile ejabberd you need:
+
+ - GNU Make
+ - GCC
+ - Libexpat ≥ 1.95
+ - Libyaml ≥ 0.1.4
+ - Erlang/OTP ≥ 19.3
+ - OpenSSL ≥ 1.0.0
+
+Other optional libraries are:
+
+ - Zlib ≥ 1.2.3, for Stream Compression support (XEP-0138)
+ - PAM library, for Pluggable Authentication Modules (PAM)
+ - ImageMagick's Convert program and Ghostscript fonts, for CAPTCHA
+ challenges
+ - Elixir ≥ 1.10.3, to support Elixir, and alternative to rebar/rebar3
+
+If your system splits packages in libraries and development headers,
+install the development packages too.
+
+
+Download Source Code
+--------------------
+
+There are several ways to obtain the ejabberd source code:
+
+- Source code archive from [ProcessOne Downloads][p1dl]
+- Source code package from [ejabberd GitHub Releases][ghr]
+- Latest development code from [ejabberd Git repository][gitrepo]
+
+[p1dl]: https://www.process-one.net/en/ejabberd/downloads/
+[ghr]: https://github.com/processone/ejabberd/releases
+[gitrepo]: https://github.com/processone/ejabberd
+
+
+Compile
+-------
+
+The general instructions to compile ejabberd are:
+
+ ./configure
+ make
+
+If the source code doesn't contain a `configure` script,
+first of all install `autoconf` and run this to generate it:
+
+ ./autogen.sh
+
+To configure the compilation, features, install paths...
+
+ ./configure --help
+
+
+Install in the System
+---------------------
+
+To install ejabberd in the system, run this with system administrator rights (root user):
+
+ sudo make install
+
+This will:
+
+- Install the configuration files in `/etc/ejabberd/`
+- Install ejabberd binary, header and runtime files in `/lib/ejabberd/`
+- Install the administration script: `/sbin/ejabberdctl`
+- Install ejabberd documentation in `/share/doc/ejabberd/`
+- Create a spool directory: `/var/lib/ejabberd/`
+- Create a directory for log files: `/var/log/ejabberd/`
+
+
+Build an OTP Release
+--------------------
+
+Instead of installing ejabberd in the system, you can build an OTP release
+that includes all necessary to run ejabberd in a subdirectory:
+
+ ./configure --with-rebar=rebar3
+ make rel
+
+Or, if you have Elixir available and plan to develop Elixir code:
+
+ ./configure --with-rebar=mix
+ make dev
+
+Check the full list of targets:
+
+ make help
+
+
+Start ejabberd
+--------------
+
+You can use the `ejabberdctl` command line administration script to
+start and stop ejabberd. Some examples, depending on your installation method:
+
+- When installed in the system:
+ ```
+ ejabberdctl start
+ /sbin/ejabberdctl start
+ ```
+
+- When built an OTP production release:
+ ```
+ _build/prod/rel/ejabberd/bin/ejabberdctl start
+ _build/prod/rel/ejabberd/bin/ejabberdctl live
+ ```
+
+- Start interactively without installing or building OTP release:
+ ```
+ make relive
+ ```