Настройка ejabberd сервер + mysql + pyticq транспорт
Февраль 9, 2014 | HOWTOs, Публикации, Статьи by Plus
Обычная история про то, как я устанавливал обычный корпоративный сервер для общения между сотрудниками, так и через внешние аккаунты некогда популярных сетей общения.
1. Базовые настройки
Настройки /etc/ejabberd/ejabberd.cfg почти все стандартны, за исключением указанных ниже:
override_local.
Укажем логин администратора (у jabber-сервера свой администратор, не путать с системным) и имя сервера:
%% Admin user {acl, admin, {user, "info", "omsklug.com"}}. %% Hostname {hosts, ["omsklug.com"]}.
Раскомментируем настройки транспорта icq:
%% Jabber ICQ Transport {5555, ejabberd_service, [{ip, {127, 0, 0, 1}}, {access, all}, {shaper_rule, fast}, {hosts, ["icq.omsklug.com", "sms.omsklug.com"], [{password, "secret"}]} ]},
Если используется внутренняя база тогда раскоментируем:
%%{auth_method, internal}.
Если же используется база mysql, тогда открываем вот это:
{auth_method, odbc}.
Далее настроим доступ к Базе данных, предварительно её создав и настроить пользователя к ней:
{odbc_server, {mysql, "localhost", "ejabberd", "ejabberd", "ejabberd"}}.
Включаем настройку локализации:
{language, "ru"}.
Разрешаем регистрацию пользователей:
{access, register, [{allow, all}]}.
далее нужно подключить модули к mysql:
Меняем значения:
mod_last на mod_last_odbc mod_offline на mod_offline_odbc mod_privacy на mod_privacy_odbc mod_private на mod_private_odbc mod_roster на mod_roster_odbc mod_vcard на mod_vcard_odbc
Сохраняем и закрываем /etc/ejabberd/ejabberd.cfg
2. Настройка базы MySQL для ejabberd
Теперь настройка mysql базы: нужно грамотно загрузить дамп пустой базы, поэтому берем его тут:
https://github.com/processone/ejabberd/blob/2.1.x/src/odbc/mysql.sql
После всех операций перезапускаем правильно необходимые сервисы ejabberd и mysqld:
sudo /etc/rc.d/ejabberd stop sudo /etc/rc.d/mysqld restart sudo /etc/rc.d/ejabberd start
3. Создание общего списка контактов сервера
В общем на этом можно было бы и остановиться, если бы не одно но. По умолчанию список контактов (ростер на терминологии jabber) нового пользователя пуст. Это вполне нормально для личного использования или для работы с публичными серверами – пользователь сам выбирает с кем общаться, но абсолютно неприемлемо для корпоративной среды, где список контактов заранее определен. Было бы неплохо, чтобы новый пользователь автоматически попадал в этот список и автоматически получал его в свой клиент. К счастью сделать это совсем несложно. В /etc/ejabberd/ejabberd.cfg найдем и раскомментируем следующую строку:
{mod_shared_roster, []},
Сохраняем файл, перезапускаем сервис. Теперь в веб-админке в разделе Virtual Hosts – имя вашего сервера появился пункт Группа общих контактов. Создаем такую группу и настраиваем. Для того, чтобы в группу автоматически попадали все пользователи в поле Члены укажите @all@, а в поле Видимые группы укажите название вашей группы, которое вы ввели при ее создании.
ВНИМАНИЕ!!!
Для Debian GNU/Linux надо установить клиент к БД. Готовый годный пакет – здесь
Подробное описание конфига /etc/ejabberd/ejabberd.cfg можно посмотреть тут: http://blog.scaytrase.ru/linux/330/
Ещё один неплохой мануал: http://forum.odmins-it.ru/index.php?topic=170.0
4. Настройка транспорта ICQ
Далее переходим к настройке необходимого нам pyticq:
Здесь всё проще некуда:
<pyicqt>
<!-- The JabberID of the transport. -->
<jid>icq.hostname.server</jid>
<!-- The component JID of the transport. Unless you're doing clustering, leave this alone -->
<!-- <compjid>icq1</compjid> -->
<!-- The IP address of the main Jabberd server -->
<mainServer>127.0.0.1</mainServer> - адрес сервера
<!-- The JID of the main Jabber server -->
<mainServerJID>icq.adress.ru</mainServerJID> - имя сервера с транспортом
<!-- The website of the Jabber service -->
<website>http://adress.ru/</website> - адрес странички
<!-- The website of the transport service -->
<!-- <transportWebsite></transportWebsite> -->
<!-- The support room on your server -->
<!-- <supportRoom></supportRoom> -->
<supportJid>jid@adress.ru</supportJid>
<!-- The TCP port to connect to the Jabber server on -->
<!-- (this is the default for Jabberd2) -->
<port>5555</port> - порт указанный в транспорте конфига ejabberd.cfg
<!-- The TCP port that the web admin interface will answer on -->
<!-- (uncomment to enable) -->
<!-- <webport>12345</webport> -->
<webport>8022</webport>
<!-- The authentication token to use when connecting to the Jabber server -->
<secret>secret</secret>
<!-- The default language to use (for error/status messages) -->
<lang>ru</lang>
<!-- Default one-byte message encoding to use -->
<encoding>cp1251</encoding>
<!-- The hostname of the ICQ server you wish to connect to -->
<icqServer>login.icq.com</icqServer>
<!-- The port of the ICQ server you wish to connect to -->
<icqPort>5190</icqPort>
можно еще отредактировать блок:
<admins>
<jid>admin@jid</jid>
<!--<jid>admin@host.com</jid>-->
</admins>
Остальное оставляем по умолчанию. У нас получился XMPP-сервер (Jabber), проникнутый духом корпоративности и порядка. В будущем подумаем о других транспортах XMPP. В комментариях – пишите, какие транспорты IM-сетей вас интересуют.