2015-02-19 12:10:25 +01:00
|
|
|
|
ejabberd Community Edition [![Build Status](https://travis-ci.org/processone/ejabberd.svg?branch=master)](https://travis-ci.org/processone/ejabberd)
|
2014-12-16 22:14:36 +01:00
|
|
|
|
=========================================
|
2014-12-15 10:26:57 +01:00
|
|
|
|
|
|
|
|
|
ejabberd is a distributed, fault-tolerant technology that allows the creation
|
2014-12-16 22:14:36 +01:00
|
|
|
|
of large-scale instant messaging applications. The server can reliably support
|
|
|
|
|
thousands of simultaneous users on a single node and has been designed to
|
|
|
|
|
provide exceptional standards of fault tolerance. As an open source
|
|
|
|
|
technology, based on industry-standards, ejabberd can be used to build bespoke
|
|
|
|
|
solutions very cost effectively.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Key Features
|
|
|
|
|
------------
|
|
|
|
|
|
|
|
|
|
- **Cross-platform**
|
|
|
|
|
ejabberd runs under Microsoft Windows and Unix-derived systems such as
|
|
|
|
|
Linux, FreeBSD and NetBSD.
|
|
|
|
|
|
|
|
|
|
- **Distributed**
|
|
|
|
|
You can run ejabberd on a cluster of machines and all of them will serve the
|
|
|
|
|
same XMPP domain(s). When you need more capacity you can simply add a new
|
|
|
|
|
cheap node to your cluster. Accordingly, you do not need to buy an expensive
|
|
|
|
|
high-end machine to support tens of thousands concurrent users.
|
|
|
|
|
|
|
|
|
|
- **Fault-tolerant**
|
|
|
|
|
You can deploy an ejabberd cluster so that all the information required for
|
|
|
|
|
a properly working service will be replicated permanently on all nodes. This
|
|
|
|
|
means that if one of the nodes crashes, the others will continue working
|
|
|
|
|
without disruption. In addition, nodes also can be added or replaced ‘on
|
|
|
|
|
the fly’.
|
|
|
|
|
|
|
|
|
|
- **Administrator-friendly**
|
|
|
|
|
ejabberd is built on top of the Open Source Erlang. As a result you do not
|
|
|
|
|
need to install an external database, an external web server, amongst others
|
|
|
|
|
because everything is already included, and ready to run out of the box.
|
|
|
|
|
Other administrator benefits include:
|
|
|
|
|
- Comprehensive documentation.
|
|
|
|
|
- Straightforward installers for Linux and Mac OS X.
|
|
|
|
|
- Web administration.
|
|
|
|
|
- Shared roster groups.
|
|
|
|
|
- Command line administration tool.
|
|
|
|
|
- Can integrate with existing authentication mechanisms.
|
|
|
|
|
- Capability to send announce messages.
|
|
|
|
|
|
|
|
|
|
- **Internationalized**
|
|
|
|
|
ejabberd leads in internationalization. Hence it is very well suited in a
|
|
|
|
|
globalized world. Related features are:
|
|
|
|
|
- Translated to 25 languages.
|
|
|
|
|
- Support for IDNA.
|
|
|
|
|
|
|
|
|
|
- **Open Standards**
|
|
|
|
|
ejabberd is the first Open Source Jabber server claiming to fully comply to
|
|
|
|
|
the XMPP standard.
|
|
|
|
|
- Fully XMPP-compliant.
|
|
|
|
|
- XML-based protocol.
|
|
|
|
|
- Many protocols supported.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Additional Features
|
|
|
|
|
-------------------
|
2014-12-15 10:26:57 +01:00
|
|
|
|
|
|
|
|
|
Moreover, ejabberd comes with a wide range of other state-of-the-art features:
|
|
|
|
|
|
2014-12-16 22:14:36 +01:00
|
|
|
|
- **Modularity**
|
|
|
|
|
- Load only the modules you want.
|
|
|
|
|
- Extend ejabberd with your own custom modules.
|
|
|
|
|
|
|
|
|
|
- **Security**
|
|
|
|
|
- SASL and STARTTLS for c2s and s2s connections.
|
|
|
|
|
- STARTTLS and Dialback s2s connections.
|
|
|
|
|
- Web Admin accessible via HTTPS secure access.
|
|
|
|
|
|
|
|
|
|
- **Databases**
|
|
|
|
|
- Internal database for fast deployment (Mnesia).
|
|
|
|
|
- Native MySQL support.
|
|
|
|
|
- Native PostgreSQL support.
|
|
|
|
|
- ODBC data storage support.
|
|
|
|
|
- Microsoft SQL Server support.
|
|
|
|
|
|
|
|
|
|
- **Authentication**
|
|
|
|
|
- Internal authentication.
|
|
|
|
|
- PAM, LDAP and ODBC.
|
|
|
|
|
- External authentication script.
|
|
|
|
|
|
|
|
|
|
- **Others**
|
|
|
|
|
- Support for virtual hosting.
|
|
|
|
|
- Compressing XML streams with Stream Compression (XEP-0138).
|
|
|
|
|
- Statistics via Statistics Gathering (XEP-0039).
|
|
|
|
|
- IPv6 support both for c2s and s2s connections.
|
|
|
|
|
- Multi-User Chat module with support for clustering and HTML logging.
|
|
|
|
|
- Users Directory based on users vCards.
|
|
|
|
|
- Publish-Subscribe component with support for Personal Eventing.
|
|
|
|
|
- Support for web clients: HTTP Polling and HTTP Binding (BOSH).
|
|
|
|
|
- IRC transport.
|
|
|
|
|
- Component support: interface with networks such as AIM, ICQ and MSN.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Quickstart guide
|
|
|
|
|
----------------
|
|
|
|
|
|
|
|
|
|
### 0. Requirements
|
2008-02-20 20:07:19 +01:00
|
|
|
|
|
|
|
|
|
To compile ejabberd you need:
|
2014-04-29 23:54:14 +02:00
|
|
|
|
|
2014-12-16 22:14:36 +01:00
|
|
|
|
- GNU Make.
|
|
|
|
|
- GCC.
|
|
|
|
|
- Libexpat 1.95 or higher.
|
|
|
|
|
- Libyaml 0.1.4 or higher.
|
2015-03-23 14:54:29 +01:00
|
|
|
|
- Erlang/OTP R16B03 or higher.
|
2010-07-01 17:01:13 +02:00
|
|
|
|
- OpenSSL 0.9.8 or higher, for STARTTLS, SASL and SSL encryption.
|
2014-12-16 22:14:36 +01:00
|
|
|
|
- Zlib 1.2.3 or higher, for Stream Compression support (XEP-0138). Optional.
|
2009-04-14 20:31:29 +02:00
|
|
|
|
- PAM library. Optional. For Pluggable Authentication Modules (PAM).
|
2014-12-16 22:14:36 +01:00
|
|
|
|
- GNU Iconv 1.8 or higher, for the IRC Transport (mod_irc). Optional. Not
|
|
|
|
|
needed on systems with GNU Libc.
|
2010-02-05 12:37:08 +01:00
|
|
|
|
- ImageMagick's Convert program. Optional. For CAPTCHA challenges.
|
2008-02-20 20:07:19 +01:00
|
|
|
|
|
|
|
|
|
|
2014-12-16 22:14:36 +01:00
|
|
|
|
### 1. Compile and install on *nix systems
|
2006-12-16 14:57:37 +01:00
|
|
|
|
|
2015-02-09 14:57:23 +01:00
|
|
|
|
To compile ejabberd, execute the following commands. The first one is only
|
|
|
|
|
necessary if your source tree didn't come with a `configure` script.
|
2014-04-29 23:54:14 +02:00
|
|
|
|
|
2015-02-09 14:57:23 +01:00
|
|
|
|
./autogen.sh
|
2014-04-29 23:54:14 +02:00
|
|
|
|
./configure
|
|
|
|
|
make
|
2006-12-16 14:57:37 +01:00
|
|
|
|
|
2015-02-09 14:57:23 +01:00
|
|
|
|
To install ejabberd, run this command with system administrator rights (root
|
|
|
|
|
user):
|
2008-02-20 20:07:19 +01:00
|
|
|
|
|
2014-04-29 23:54:14 +02:00
|
|
|
|
sudo make install
|
2006-12-16 14:57:37 +01:00
|
|
|
|
|
|
|
|
|
These commands will:
|
2014-04-29 23:54:14 +02:00
|
|
|
|
|
2014-12-16 22:14:36 +01:00
|
|
|
|
- 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/`
|
2008-02-20 20:07:19 +01:00
|
|
|
|
|
2006-12-16 14:57:37 +01:00
|
|
|
|
|
2014-12-16 22:14:36 +01:00
|
|
|
|
### 2. Start ejabberd
|
2006-12-16 14:57:37 +01:00
|
|
|
|
|
2014-04-29 23:54:14 +02:00
|
|
|
|
You can use the `ejabberdctl` command line administration script to
|
2008-02-20 20:07:19 +01:00
|
|
|
|
start and stop ejabberd. For example:
|
2006-12-16 14:57:37 +01:00
|
|
|
|
|
2014-04-29 23:54:14 +02:00
|
|
|
|
ejabberdctl start
|
|
|
|
|
|
|
|
|
|
|
2014-12-15 10:26:57 +01:00
|
|
|
|
For detailed information please refer to the ejabberd Installation and
|
2014-12-16 22:14:36 +01:00
|
|
|
|
Operation Guide available online and in the `doc` directory of the source
|
|
|
|
|
tarball.
|
2014-12-15 10:26:57 +01:00
|
|
|
|
|
|
|
|
|
|
2015-05-05 14:24:31 +02:00
|
|
|
|
Development
|
|
|
|
|
-----------
|
|
|
|
|
|
|
|
|
|
In order to assist in the development of ejabberd, and particularly the
|
|
|
|
|
execution of the test suite, a Vagrant environment is available at
|
|
|
|
|
https://github.com/processone/ejabberd-vagrant-dev.
|
|
|
|
|
|
2015-07-11 11:20:38 +02:00
|
|
|
|
To start ejabberd in development mode from the repository directory, you can
|
|
|
|
|
type a command like:
|
|
|
|
|
|
|
|
|
|
EJABBERD_CONFIG_PATH=ejabberd.yml erl -pa ebin -pa deps/*/ebin -pa test -s ejabberd
|
2015-05-05 14:24:31 +02:00
|
|
|
|
|
2014-12-16 22:14:36 +01:00
|
|
|
|
Links
|
|
|
|
|
-----
|
2006-12-16 14:57:37 +01:00
|
|
|
|
|
2015-02-19 12:17:39 +01:00
|
|
|
|
- Documentation: http://docs.ejabberd.im
|
2014-12-16 22:14:36 +01:00
|
|
|
|
- Community site: https://www.ejabberd.im
|
2015-02-19 12:17:39 +01:00
|
|
|
|
- ejabberd commercial offering and support: https://www.process-one.net/en/ejabberd
|