Установка і настройка ejabberd (xmpp)

  • модульна архітектура сервера;
  • підтримка роботи групи ejabberd серверів в кластері;
  • присутній веб-інтерфейс для адміністрування;
  • підтримка різних мов (в тому числі український);
  • підтримка великої кількості стандартів протоколу XMPP;
  • можливість використання зовнішніх сховищ через ODBC для зберігання даних (PostgreSQL, LDAP і т.д.);
  • підтримка SASL і StartTLS на клієнтських і межсерверних з'єднаннях.

Установка і настройка сервера, описана в цій статті, відбувалася на базі операційної системи FreeBSD версії 9.1, а зберігання всієї службової інформації було покладено на СУБД PostgreSQL 9.1. У даній статті нічого не буде сказано про установку PostgreSQL, оскільки на сайті вже є відповідний матеріал.

На першому етапі необхідно оновити порти і встановити Erlang. Оскільки Erlang потрібен тільки для роботи ejabberd, у вікні вибору опцій я вказав самий мінімум.


Із запропонованих опцій обрані були наступні:

Після завершення установки Erlang можна переходити установці ejabberd. На момент написання статті в портах доступна версія ejabberd 2.1.11.


Із запропонованих опцій я вибрав лише одну - ODBC. Для забезпечення зв'язку ejabberd з PostgreSQL необхідно встановити відповідний драйвер ODBC, якого в портах, на жаль немає. У зв'язку з цим доведеться SVN, ом викачати вихідні коди модуля, скомпіліть його і встановити руками. Subversion встановлюється через порт / usr / ports / devel / subversion (в опціях обов'язково поставте галку навпроти NEON). Кому не охота займатися установкою Subversion, в кінці статті прикріплений архів з вихідними кодами (остання актуальна версія на момент написання статті).

На другому етапі в першу чергу необхідно створити базу даних, користувача бази даних і зробити імпорт схеми БД, з якою буде працювати ejabberd. Створити базу даних можна будь-яким зручним для вас способом, я зробив це консольним клієнтом psql.

P.S. У PostgreSQL версії 9.1 і вище за замовчуванням включений параметр standard_conforming_strings. через якого в ejabberd відвалюється сервіс MUC з помилкою: 503 service unavailable. Тому для створеної бази даних необхідно відключити даний параметр:

Тепер можна імпортувати схеми бази даних.


На даному етапі залишилося тільки ріхтануть конфіги і можна запускати сервер в роботу. Файли сервера зберігаються в директорії - / usr / local / etc / ejabberd. Після чистої установки в директорії буде три файли з розширенням * .exaxmple, перейменуйте / скопіюйте файли прибравши розширення. Таким чином, в директорії / usr / local / etc / ejabberd повинні бути наступні конфігураційні файли:

  • ejabberd.cfg - головний конфігураційний файл;
  • ejabberdctl.cfg - конфігураційний файл утиліти ejabberdctl;
  • inetrc - конфігураційний файл для DNS.

Файл ejabberd.cfg у мене виглядає так:


Файл ejabberdctl.cfg у мене виглядає так:


Якщо при редагуванні конфігов помилок допущено не було, то проблем виникнути не повинно і ви зможете побачити на екрані приблизно наступне:


Якщо ж сервіс не стартував, то дивіться логи в / var / log / ejabberd. На жаль, формат випльовує помилок сервером дико незручний, але розібратися все ж можна. Зазвичай проблеми виникають через некоректні прав доступу або помилок в файлі конфігурації. Для налагодження буде корисна команда ejabberdctl live. яка запускає сервер не отсоединяя його від терміналу і всі повідомлення виводяться на консоль. Тільки врахуйте, що сервер буде запущений з правами користувача виконав цю команду і всі створювані сервером файли будуть мати відповідні права (я перший раз довго вовтузився з проблемою запуску сервера командою service ejabberd start після налагодження). Тому можна використовувати таку команду для налагодження:

Схожі статті