NAME
ejabberd -- a distributed fault-tolerant Jabber/XMPP server
SYNOPSIS
ejabberd [options] [--] [erlang_options]
DESCRIPTION
ejabberd is a distributed fault-tolerant Jabber/XMPP server written in
Erlang.
Its main features are:
-- XMPP-compliant
-- Distributed: ejabberd can run on a cluster of machines
-- Fault-tolerant: All the information can be stored on more than one
node, nodes can be added or replaced `on the fly'
-- Built-in Multi-User Chat service
-- Built-in IRC transport
-- Built-in Publish-Subscribe service
-- Built-in Jabber User Directory service based on users vCards
-- SSL support
-- Support for internationalized user messages
OPTIONS
--node node
Specifies Erlang node at which ejabberd server will be run.
Default node is ejabberd. If the node name does not contain
symbol @ then actual node name becomes node@hostname where
hostname is short host name (usually it coincides with `hostname
-s`). If the node name contain symbol @ and its hostname part is
a FQDN then ejabberd will use so-called long names (see erl(1)
manual page and look for options -name and -sname for details).
Examples of --node option:
ejabberd Locally run ejabberd server at node ejabberd@`hostname
-s`.
ejabberd@otherhost Pretend that ejabberd server runs at
otherhost at node ejabberd@otherhost. (Note that noone can
remotely connect to this node if otherhost is resoved to other
computer IP.)
ejabberd@localhost Locally run ejabberd server at node
ejabberd@localhost. Only nodes running at the same host can
connect to this node.
ejabberd@hostname.domainname Using -name Erlang option, run
ejabberd server at long-name node ejabberd@hostname.domainname.
To be able to control this server instance hostname.domainname
must resolve (either by DNS or via /etc/hosts) to the server's
IP.
The default node can be overridden by defining ERLANG_NODE environment
variable in /etc/default/ejabberd, see below.
--config config-file
Specifies an alternate config-file to be parsed at startup,
rather than the default (/etc/ejabberd/ejabberd.cfg).
--spool spool-dir
Specifies an alternate spool-dir to store user database instead
of the default (/var/lib/ejabberd).
--log log-file
Log Jabber events to specified log-file rather than to the
default (/var/log/ejabberd/ejabberd.log).
--erlang-log sasl-log-file
Log SASL (System Application Support Libraries) events to
specified sasl-log-file rather than to the default
(/var/log/ejabberd/erlang.log).
erlang_options
Other options (and all options following --) are passed directly
to Erlang interpreter. See Erlang documentation for more details
on interpreter options. Some useful options are:
-detached
Starts the Erlang system detached from the system console.
-heart
Starts heart beat monitoring of the Erlang system.
-noinput
Ensures that the Erlang system never tries to read any
input.
CONFIGURATION FILE
The file /etc/ejabberd/ejabberd.cfg contains the main configuration.
It is initially loaded the first time ejabberd is executed, then it is
parsed and stored in a database. Subsiquently the configuration is
loaded from the database and any commands in the configuration file are
appended to the entries in the database. The configuration file
consists of a sequence of Erlang terms. Parts of lines after `%' sign
are ignored. Each term is a tuple, where the first element is the name
of an option, and the others are option values. E. g. if this file does
not contain a "host" definition, then the value stored in the database
will be used.
To override old values stored in the database the following lines can
be added in config:
override_global.
override_local.
override_acls.
A complete explanation of each configuration value can be found in the
official ejabberd documentation. See "SEE ALSO" part of this manual
page for more information about the documentation.
OPTIONS FILE
The file /etc/default/ejabberd contains specific options.
POLL If set to true this variable enables kernel polling which can
reduce CPU load on a system with a high number of users. This
option requires support in the kernel and in Erlang emulator.
SMP Enables or disables SMP support in Erlang emulator. Valid values
are disable (default), auto, and enable.
Explanation in Erlang/OTP documentation:
enable: Starts the Erlang runtime system with SMP support
enabled. This may fail if no runtime system with SMP support is
available.
auto: Starts the Erlang runtime system with SMP support enabled
if it is available and more than one logical processor are
detected.
disable: Starts a runtime system without SMP support.
ERL_MAX_PORTS
To use more than 1024 connections (default value), ERL_MAX_PORTS
should be set to the number of connections needed.
PROCESSES
Specifies the maximum number of Erlang processes to use. Default
value is 250000. Maximum value is 268435456. Ejabberd uses up
to three processes per user or server connection.
ERL_MAX_ETS_TABLES
Sets the maximum number of ETS and Mnesia tables. Default value
is 1400 which should be sufficient for a sever without many
custom modules. If a message ** Too many db tables ** appears in
ejabberd log files then increase this number.
ERL_OPTIONS
With this option, parameters can be passed to Erlang
interpretor. See Erlang documentation for more details on
interpreter options.
ERL_FULLSWEEP_AFTER
To reduce memory usage when allowing a large number of
connections, ERL_FULLSWEEP_AFTER may be set to 0 in the options
file, but in this case ejabberd may start to work slower.
ERLANG_NODE
Use specified string as erlang node. It overrides default
ejabberd node name. The string may take one of the following
forms: nodename, nodename@hostname or
nodename@hostname.domainname
FILES
/etc/ejabberd/ejabberd.cfg
default configuration file
/etc/default/ejabberd
default variables
BUGS
Ejabberd uses distributed Erlang mode to work properly. This means that
on start it connects to epmd (Erlang port mapping daemon) which is
listening at port 4369 and tries to register ejabberd node name. If the
connection fails (known failure reasons are unavailability of a
loopback interface or firewall issues) Erlang emulator fails to start
with not very clear error message. If there's already started Erlang
node with the same name (ejabberd by default) then ejabberd will also
fail with a cryptic error message (in which one can find words
{error,duplicate_name}). Another possible case when ejabberd cannot
start is incorrect permissions of /var/lib/ejabberd directory (it must
be writable by user ejabberd).
SEE ALSO
erl(1), sasl(6), ejabberdctl(8), epmd.
The program documentation is available at
http://www.process-one.net/en/projects/ejabberd/. A copy of the
documentation can be found at /usr/share/doc/ejabberd/guide.html.
AUTHORS
This manual page was adapted by Christophe Romain
<christophe.romain@process-one.net> and Sergei Golovan
<sgolovan@nes.ru> for the Debian system (but may be used by others)
from the ejabberd documentation written by Alexey Shchepin
<alexey@sevcom.net>.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU General Public License, Version 2 any later
version published by the Free Software Foundation.
On Debian systems, the complete text of the GNU General Public License
can be found in /usr/share/common-licenses/GPL.