Ejabberd
Проверено на | ||
---|---|---|
Версия | OC | Кто |
2.0.2_2 (бинарник с сайта) | Debian 4 | 24pm |
2.1.3 (бинарник с сайта) | Debian 5 | 24pm |
2.1.5 (из репозитория ОС) | Debian 6 | 24pm |
ejabberd — это свободный (GNU GPL), распределённый и устойчивый к отказам XMPP-сервер, написанный в основном на Erlang. Он работает под юникс-подобными ОС (GNU/Linux, FreeBSD и NetBSD) и Microsoft Windows.
Имеет весьма полезный сайт сообщества.
Содержание
Установка
Установить можно и из репозитория, и вручную скачав с сайта более свежую версию. Скачав, распакуем и сделав исполняемым, выполним. Мастер установки поддерживает русский язык и несложен. Установка длиться ~30 секунд.
Настройка
В инструкции "x.x.x" означает номер версии ejabberd.
- Настраиваем /opt/ejabberd-x.x.x/conf/ejabberd.cfg, предполагая, что для джабера мы создали в домене DNS узел jabber.domain.local:
{hosts, ["jabber.domain.local"]}. {language, "ru"}.
-Собственно на этом настройка может быть закончена. Запускаем службу:
# /opt/ejabberd-x.x.x/bin/ejabberdctl start
- Остановить службу:
# /opt/ejabberd-x.x.x/bin/ejabberdctl stop
Или можно удалить процесс:
# ps ax | grep jabber 10601 ? S 0:00 /opt/ejabberd-x.x.x/bin/epmd -daemon # kill -9 10601
- Можно создать в системе пользователя ejabberd с домашним каталогом установленного ПО и запускать службу от его имени, скопировав стартовый скрипт в надлежащее место:
# useradd --home /opt/ejabberd-x.x.x/ ejabberd # chown -R ejabberd.root /opt/ejabberd-x.x.x/ # cp /opt/ejabberd-x.x.x/bin/ejabberd.init /etc/init.d/ejabberd # /etc/init.d/ejabberd start
таким образом ejabberd будет запускаться стандартным для linux способом
- Теперь можно зайти на веб интерфейс http://jabber.domain.local:5280/admin/
- Добавляем пользователей в jabber клиенте (pidgin, qip, miranda, psi и т.д.) или командой ejabberdctl в формате
# ./ejabberdctl register UserName ServerName PassWord
например:
# ./ejabberdctl register pavel jabber.domain.local password
Перечисляем в ejabberd.cfg кто будет администратором:
{acl, admin, {user, "admin", "jabber.domain.local"}}. {acl, admin, {user, "pavel", "jabber.domain.local"}}.
Также это можно сделать через веб-интрефейс. Прямая ссылка http://jabber.domain.local:5280/admin/acls/
- Проверяем работоспособность сервера: Регистрируемся пользователями, отправляем друг другу сообщения.
- Чтобы дать пользователям возможность искать друг друга в vCard, изменим параметры модуля mod_vcard:
... {mod_vcard, [{host, "vjud.jabber.domain.local"}, {search, true}, {matches, 20}, {allow_return_all, true}, {search_all_hosts, true} ]}, ...
Можно настроить обще доступные ростеры (roster) - группы контактов. Для этого
1) проверим, что включен модуль общих групп контактов, если закомментировано, то убираем символы комментария %%
{mod_shared_roster,[]},
или mod_shared_roster_odbc в случае, если мы храним эту таблицу в MySQL.
2) в веб-интерфесе идём по пути:
Виртуальные хосты - jabber.domain.local - Группы общих контактов
Дополнительные настройки
- В Debian каталог пользователей находится в /var/lib/jabber/
- Создадим два ростера All и JabberAdmins. В первый будут входить все пользователи и этот список будет доступен только пользователям из второй группы, во второй группе перечислим администраторов сервиса и покажем этот список всем пользователям. Для этого:
a) в группе All в качестве членов пропишем одну строку "@all@", в Видимые группы добавим "JabberAdmins"
б) в группе JabberAdmins в качестве членов указываем администраторов, в Видимые группы добавим "All"
- Чтобы уведомлять администраторов о новых пользователях, добавим в настройку модуля mod_register:
{mod_register, [ {welcome_message, {"Welcome!", "Welcome to this Jabber server."}}, {registration_watchers, ["admin1@example.org", "admin2@example.org""]} ]},
Резервное копирование
Резервное копирование осуществляется выгрузкой базы данных и зависит от того где мы храним БД.
Mnesia БД
Mnesia - БД по умолчанию для ejabberd. Возможна выгрузка в бинарном (более сжатом) и в текстовом (читаемом) виде. Команды выгрузки и восстановления зависят от выбранного метода.
- Выгрузка и восстановление бинарного файла:
ejabberdctl backup <Имя_БД> ejabberdctl restore <Имя_БД>
- Выгрузка и восстановление текстового файла:
ejabberdctl dump <Имя_БД> ejabberdctl load <Имя_БД>
MySQL БД
Команды выгрузки и восстановления БД в MySQL:
# mysqldump -u root -p jabber > jabber.sql # mysql -u root -p jabber < jabber.sql
Более подробно можно узнать в отдельной статье по MySQL.
Перенос на другой сервер
- Выгружаем БД на старом сервере (см. "Резервное копирование") и загружаем на новом.
- Если БД храниться в Mnesia (по умолчанию), то можно перенести файлы базы, их местоположение зависит от способа установки Например, /opt/ejabberd-2.0.5/database/ejabberd@localhost или /var/lib/ejabberd
- ! Если переходить с одной версии на другую, то могут быть проблемы!
ejabberd и MySQL
Хранить базу можно в MySQL. Кратко, настроить можно так:
1) Скачиваем схему БД
wget https://git.process-one.net/ejabberd/mainline/blobs/raw/2.1.x/src/odbc/mysql.sql
2) Создаём пользователя ejabberd:
$ mysql -h localhost -p -u root mysql> GRANT ALL ON ejabberd.* TO 'ejabberd'@'localhost' IDENTIFIED BY 'password';
3) Создаём базу данных ejabberd:
mysql> CREATE DATABASE ejabberd; mysql> quit
4) Загружаем схему в БД:
$ mysql -D ejabberd -h localhost -p -u ejabberd < mysql.sql
5) настраиваем ejabberd на MySQL, прописываем в ejabberd.cfg:
%%{auth_method, internal}. {auth_method, odbc}. {odbc_server, {mysql, "localhost", "ejabberd", "ejabberd", "password"}}.
6) Указываем какие таблицы будут храниться в MySQL. Если пропустить этот шаг, то будет храниться только таблица пользователей (users), все остальные данные будут храниться по прежнему в Mnesia (см описание в конце статьи).
Список всех таблиц, данные из которых можно перенести в MySQL можно узнать посмотрев какие модули odbc присутствуют:
ls /usr/lib/ejabberd/ebin | grep mod | grep odbc
7) скачиваем модули подключения erlang к MySQL (прямая ссылка). Кладём файлы к остальным модулям (файлы с расширением *.beam). В Debian это /usr/lib/ejabberd/ebin/, в чём можно убедиться выполнив
dpkg -L ejabberd | grep beam
8) Запускаем ejabberd:
/etc/init.d/ejabberd start
Подробные инструкции:
- официальная инструкция на англ.
- Установка ejabberd с хранением данных в MySQL
- переход с mnesia на mysql
- Небольшое дополнение к инструкции:
- Если ставить ejabberd не из пакетов, а инсталятором с оф. сайта, то все компоненты располагаются в /opt/ejabberd-x.x.x/ где x.x.x - версия приложения.
- В этом случае откомпеллированный модуль нужно скопировать в /opt/ejabberd-x.x.x/lib/ejabberd-x.x.x/ebin и, возможно, сделать его исполняемым:
# chmod +x mod_ctlextra.beam
Полезные ссылки
- http://jabberworld.info - Вики по технологии Jabber на русском языке
- http://www.process-one.net/en/ejabberd/guide_en - подробная официальная инструкция по установке и настройке ejabberd на английском
- http://www.freesource.info/wiki/ALTLinux/Dokumentacija/EjabberdJit - инструкуция по установке и настройке
- http://wiki.omsktele.com/index.php/EjabberdConfig - пример конфигурации ejabberd
- http://jabber.snc.ru/features.html - jabber сервис, который можно использовать для приёма и отправки писем сторонних почтовых серверов