Click here to read what's new and download latest version. Most common operations can be automated to make it a pleasure for admins to work with. This makes it the server of choice no matter which area you are working in: mobile messaging, gaming, internet of things IoT , it can do it all. Contributors are using the API to provide tens of third-party extensions to ejabberd to enhance and tailor its behavior. Best practices are baked right into the server.

Author:Yoshura Mogis
Language:English (Spanish)
Published (Last):21 August 2019
PDF File Size:17.86 Mb
ePub File Size:11.20 Mb
Price:Free* [*Free Regsitration Required]

Probably the easiest way to install an ejabberd instant messaging server is using the binary installer published by ProcessOne. The installer will deploy and configure a full featured ejabberd server and does not require any extra dependencies. For example:. To start and stop ejabberd manually, use the desktop shortcuts created by the installer.

The Windows installer also adds ejabberd as a system service, and a shortcut to a debug console for experienced administrators. If you want ejabberd to be started automatically at boot time, go to the Windows service settings and set ejabberd to be automatically started. When ejabberd is started, the processes that are started in the system are beam or beam.

In Microsoft Windows, the processes are erl. For more information regarding epmd consult the section 5. You can download it from www. Then uninstall ejabberd and install it again. This way you see the error message provided by Erlang and can identify what is exactly the problem. The ejabberdctl administration script is included in the bin directory. Some Operating Systems provide a specific ejabberd package adapted to the system architecture and libraries.

It usually also checks dependencies and performs basic configuration tasks like creating the initial administrator account. Some examples are Debian and Gentoo. Consult the resources provided by your Operating System for more information. CEAN Comprehensive Erlang Archive Network is a repository that hosts binary packages from many Erlang programs, including ejabberd and all its dependencies. You will have to create your own ejabberd start script depending of how you handle your CEAN installation.

The canonical form for distribution of ejabberd stable releases is the source code package. Alternatively, the latest development source code can be retrieved from the Git repository using the commands:. Note that you probably need administrative privileges in the system to install ejabberd. You can use the ejabberdctl command line administration script to start and stop ejabberd.

You can try starting ejabberd with the command ejabberdctl live to see the error message provided by Erlang and can identify what is exactly the problem. If you want ejabberd to be started as daemon at boot time, copy ejabberd. Create a system user called ejabberd ; it will be used by the script to start the server. It can be easily installed if your Solaris system is set up for blastwave. If that program is called ginstall , modify the ejabberd Makefile script to suit your system, for example:.

Note: instead of copying libexpat. To upgrade an ejabberd installation to a new version, simply uninstall the old version, and then install the new one. Of course, it is important that the configuration file and Mnesia database spool directory are not removed.

If you also use an external database for storage of some modules, check if the release notes of the new ejabberd version indicates you need to also update those tables. The configuration file will be loaded the first time you start ejabberd. The configuration file is written in YAML. However, different scalars are treated as different types:. In previous ejabberd version the configuration file should be written in Erlang terms.

The option hosts defines a list containing one or more domains that ejabberd will serve. To define specific ejabberd modules in a virtual host, you can define the global modules option with the common modules, and later add specific modules to certain virtual hosts. In this example three virtual hosts have some similar modules, but there are also other different modules for some specific virtual hosts:. The option listen defines for which ports, addresses and network protocols ejabberd will listen and what services will be run on them.

Each element of the list is an associative array with the following elements:. The port number defines which port to listen for incoming connections.

The IP address can be represented as a string. The socket will listen only in that network interface. It is possible to specify a generic address, so ejabberd will listen in all addresses. When not specified the IP address, it will listen on all IPv4 network addresses. The default value is five minutes. The option can be defined in ejabberd.

There are some additional global options that can be specified in the ejabberd configuration file outside listen :. The syntax is:. The option syntax is:. The default value is closeold. The value internal will enable the internal authentication method. In this authentication method, when ejabberd starts, it start a script, and calls it to perform authentication tasks. The server administrator can write the external authentication script in any language.

The details on the interface between ejabberd and the script are described in the ejabberd Developers Guide. There are also several example authentication scripts. This example sets external authentication, the extauth script, enables caching for 10 minutes, and starts three instances of the script for each virtual host defined in ejabberd:.

The anonymous authentication method can be configured with the following options. PAM authentication is disabled by default, so you have to configure and compile ejabberd with PAM support enabled:. The declarations of ACLs in the configuration file have the following syntax:.

If you define specific Access rights in a virtual host, remember that the globally defined Access rights have precedence over those. If a user tries to open more sessions by using different resources, the first opened session will be disconnected. The error session replaced will be sent to the disconnected session. The value for this option can be either a number, or infinity. The default value is infinity.

The default value is 1. When a connection exceeds this limit, ejabberd stops reading from the socket until the average rate is again below the allowed maximum. The option language defines the default language of server strings that can be seen by XMPP clients. If a XMPP client does not support xml:lang , the specified language is used.

The default value is en. In order to take effect there must be a translation file Language. Appendix A provides more details about internationalization and localization. See section 3.

The specific configurable options are:. Example configuration with TURN functionality. Here, only UDP section is shown:. If option tls is specified, option certfile must be specified as well, otherwise incoming TLS connections would fail. Example configuration with standard ports as per RFC :.

Refer to RFC for the detailed explanation. The filename can be indicated either as an absolute path, or relative to the main ejabberd configuration file. The file must exist and be readable. In this example, the included file is not allowed to contain a listen option. If such an option is present, the option will not be accepted. The file is in a subdirectory from where the main configuration file is. In this example, ejabberd. In the ejabberd configuration file, it is possible to define a macro for a value and later use this macro when defining an option.

The MACRO must be surrounded by single quotation marks, and all letters in uppercase; check the examples bellow. The value can be any valid arbitrary Erlang term. The first definition of a macro is preserved, and additional definitions of the same macro are forgotten. Macros are processed after additional configuration files have been included, so it is possible to use macros that are defined in configuration files included before the usage.

However, it is possible to use a relational database, key-value storage or an LDAP server to store persistent, long-living data. Important note about virtual hosting: if you define several domains in ejabberd. An ODBC compatible database also can be used to store information into from several ejabberd modules.

Two connections are established to the LDAP server per vhost, one for authentication and other for regular calls. You can authenticate users against an LDAP directory. Corresponding authentication section should looks like this:. We have four attributes defined in our LDAP schema: "mail" — email address, "givenName" — first name, "sn" — second name, "birthDay" — birthday. Also we want users to search each other.


Welcome to ejabberd, your superpowerful messaging framework

A XMPP domain is served by one or more ejabberd nodes. These nodes can be run on different machines that are connected via a network. This is needed because all nodes exchange information about connected users, S2S connections, registered services, etc…. This module is the main router of XMPP packets on each node. It routes them based on their destinations domains. It has two tables: local and global routes.


ejabberd XMPP server with built-in MQTT server and SIP server

It is designed to help the administrator control the functioning of the running ejabberd daemon. This command must be run either by a superuser or by the user ejabberd , otherwise it will fail to start or to connect to the ejabberd instance. Default value is ejabberd. If the node name contains a 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. This is OK in a common case when ejabberdctl is only run manually from time to time by a server administrator; if, conversely, there is a chance for several instances of ejabberdctl to be active at the same time say, automated registration of new users on an actively used site , you can pass the --concurrent option to ejabberdctl which will ensure no clash will ever occur.


Ejabberd Installation and Operation Guide

Specifies erlang node at which ejabberd server will be run. 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. Note that noone can remotely connect to this node if otherhost is resoved to other computer IP. Only nodes running at the same host can connect to this node.


Ejabberd Developers Guide


Related Articles