Giter VIP home page Giter VIP logo

mongooseim's Introduction

MongooseIM Build Status

MongooseIM is Erlang Solutions' robust and efficient XMPP server aimed at large installations. Specifically designed for enterprise purposes, it is fault-tolerant, can utilize resources of multiple clustered machines and easily scale in need of more capacity (by just adding a box/VM). It provides support for WebSockets and reimplemented BOSH.

Its home at GitHub is http://github.com/esl/MongooseIM.

Quickstart guide

For a quick start just download the pre-built package that suits your platform.

Main differences from the parent project

This project began its life as a fork of ejabberd v.2.1.8 and later underwent some major cleanup, refactorization and optimization.

Major steps performed:

  • bringing the project source tree to compliance with OTP project structure recommendations,
  • swapping autotools for the Erlang community-standard build tool rebar,
  • removal of obsolete and/or rarely used modules to reduce maintenance burden,
  • reduction of runtime memory consumption by refactoring the code to use Erlang's binary data type for string manipulation and storage instead of operating on linked lists of characters,
  • functional test coverage of the system according to corresponding RFCs and XEPs.

How to build

  1. Requirements.

    To compile MongooseIM you need:

    • GNU Make,
    • GCC,
    • Libexpat 1.95 or higher,
    • Erlang/OTP R15B02 or higher,
    • Reltool 0.5.4 or higher,
    • OpenSSL 0.9.8 or higher, for STARTTLS, SASL and SSL encryption,
    • Zlib 1.2.3 or higher for Stream Compression support (XEP-0138). Optional,
    • PAM library. Optional. For Pluggable Authentication Modules (PAM).
  2. Compiling on UNIX-like systems.

    To compile MongooseIM, go to the main repo directory $REPO and execute the command ($ stands for the shell prompt):

    $ make
    

    or

    $ ./rebar get-deps
    $ ./rebar compile
    

    To generate MongooseIM release:

    $ make rel
    

    or

    $ ./rebar generate
    

    These commands will generate a self-contained OTP system image in the project's rel/mongooseim subdirectory. The contents of that directory are as follows:

    • rel/mongooseim/bin - startup/administration scripts,
    • rel/mongooseim/etc - configuration files,
    • rel/mongooseim/lib - MongooseIM binary, header and runtime files,
    • rel/mongooseim/var - spool directory,
    • rel/mongooseim/log - log file directory,
    • rel/mongooseim/releases - release files directory.
  3. Running MongooseIM.

    To run MongooseIM from the project tree after compiling it, change to $REPO/rel/mongooseim.

    There you can use the mongooseim command line administration script to start and stop MongooseIM. For example:

    $ bin/mongooseim start
    

    will start the server.

    You can also run the server in interactive mode:

    $ bin/mongooseim live
    

    There's also a tool called mongooseimctl allowing you to perform some operations on a running instance, e.g.:

    $ bin/mongooseimctl status
    The node mongooseim@localhost is started with status: started
    MongooseIM version 1.3.1 is running on that node
    
  4. Building the testing target and running tests.

    For testing purposes there's a different make target available:

    $ make devrel
    

    which will generate releases in $REPO/dev/ and prepare them for testing and generating coverage reports.

    To run the tests (from project's root directory, i.e. $REPO):

    $ cd test
    $ make quicktest
    

    The test results will show up in the console`.

MongooseIM documentation notice

MongooseIM, being a fork of ejabberd, is currently in a phase of rapid development. Because of that the documentation found in the doc/ subdirectory of the source tree, while mostly relevant, may be inaccurate.

The main reason is that some rarely useful features were removed from the repository or are still waiting to be brought up to the Erlang Solutions standards.

Don't forget to check out our wiki - hopefully, its scope will grow with time.

Want to get in touch with us?

In case of any suggestions, questions or any thoughts on this project, please feel free to contact us by the standard GitHub ways or at [email protected].

Want to discuss MongooseIM, problems with your deployement or anything else? Try: https://erlangcentral.org/forum/mongooseim/.

mongooseim's People

Contributors

badlop avatar alexeyshch avatar mremond avatar erszcz avatar arcusfelis avatar michalwski avatar zinid avatar alipiec avatar fenek avatar paulgray avatar jsautret avatar paulsd avatar studzien avatar konradkaplita avatar rpt avatar goddammit avatar lemenkov avatar goj avatar igorkarymov avatar legoscia avatar rraptorr avatar ska80 avatar l4u avatar otaviof avatar chrzaszcz avatar puzza007 avatar loe avatar hamano avatar odobroiu avatar jadahl avatar

Watchers

Kitsion avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.