Man Linux: Main Page and Category List


       ejabberd -- a distributed fault-tolerant Jabber/XMPP server


       ejabberd [options] [--] [erlang_options]


       ejabberd  is a distributed fault-tolerant Jabber/XMPP server written in

       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


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

              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

       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

              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:

                  Starts the Erlang system detached from the system console.
                  Starts heart beat monitoring of the Erlang system.
                  Ensures  that  the  Erlang  system  never  tries to read any


       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:

       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.


       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
              auto:  Starts the Erlang runtime system with SMP support enabled
              if it is available and  more  than  one  logical  processor  are
              disable: Starts a runtime system without SMP support.

              To use more than 1024 connections (default value), ERL_MAX_PORTS
              should be set to the number of connections needed.

              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.

              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.

              With   this   option,   parameters   can  be  passed  to  Erlang
              interpretor.  See  Erlang  documentation  for  more  details  on
              interpreter options.

              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.

              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


              default configuration file

              default variables


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


       erl(1), sasl(6), ejabberdctl(8), epmd.

       The       program       documentation       is       available       at    A   copy   of  the
       documentation can be found at /usr/share/doc/ejabberd/guide.html.


       This    manual    page    was    adapted    by    Christophe     Romain
       <>       and       Sergei      Golovan
       <> for the Debian system (but may  be  used  by  others)
       from   the   ejabberd   documentation   written   by   Alexey  Shchepin

       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.