Установка и настройка ejabberd для вашего домена

27.01.2011 - 10:57

В данной статье хочу описать настройку Jabber-сервера для своего домена.
В качестве jabber-сервера решил использовать легковесный - ejabberd (Erlang Jabber Daemon).
Сначала необходимо установить - erlang.

[root@router /]#cd /usr/ports/lang/erlang-lite/
[root@router /usr/ports/lang/erlang-lite/]#make config

В окне "Options for erlang-lite r14b01_1,1" выбираем:
[X] WX    Enable WX extensions
[X] ODBC  Enable ODBC
[X] SMP   Enable SMP

Инсталим..
[root@router /usr/ports/lang/erlang-lite]# make install clean

Далее топаем устанавливать сам Jabber-сервер:
[root@router /]#cd /usr/ports/net-im/ejabberd
[root@router /usr/ports/net-im/ejabberd]#make config

Тут не выбираем ничего:
[ ] ODBC  Enable ODBC support

Устанавливем:
[root@router /usr/ports/net-im/ejabberd]#make install clean

На данный момент у меня истановилась версия "ejabberd-2.1.5".
После окончания установки, нас просят добавить запись в /etc/rc.conf:
ejabberd_enable="YES"

Далее переходим к настройке конфиг.файла:

[root@router /]#cp /usr/local/etc/ejabberd/ejabberd.cfg.example /usr/local/etc/ejabberd/ejabberd.cfg
[root@router /]#cp /usr/local/etc/ejabberd/inetrc.example /usr/local/etc/ejabberd/inetrc
[root@router /]#cp /usr/local/etc/ejabberd/ejabberdctl.cfg.example /usr/local/etc/ejabberd/ejabberdctl.cfg

[root@router /]#cat /usr/local/etc/ejabberd/ejabberd.cfg

Тут я приведу только те строчки, которые я изменил.
Виртуальные хосты ejabberd - указываем свой домен:
{hosts, ["unix.ck.ua"]}.

Далее указываем какие порты слушать, SSL настроим позже:

{listen,
 [

  {5222, ejabberd_c2s, [

                        %%
                        %% If TLS is compiled in and you installed a SSL
                        %% certificate, specify the full path to the
                        %% file and uncomment this line:
                        %%
                        {certfile, "/usr/local/etc/ejabberd/ssl/ssl.pem"}, starttls,

                        {access, c2s},
                        {shaper, c2s_shaper},
                        {max_stanza_size, 65536}
                       ]},

  %%
  %% To enable the old SSL connection method on port 5223:
  %%
  {5223, ejabberd_c2s, [
                        {access, c2s},
                        {shaper, c2s_shaper},
                        {certfile, "/usr/local/etc/ejabberd/ssl/ssl.pem"}, tls,
                        {max_stanza_size, 65536}
                       ]},

Добавим пользователя с админ. правами для джабера и админки, а так же свой домен:

{acl, admin, {user, "vlymar", "unix.ck.ua"}}.

в данном случае я указал пользователя с логином "vlymar" и домен "unix.ck.ua".
Указываем локаль для сервера сообщений:
{language, "ru"}.

Создадим сертификат:

[root@router /]#mkdir -p /usr/local/etc/ejabberd/ssl
[root@router /]#cd /usr/local/etc/ejabberd/ssl
[root@router /usr/local/etc/ejabberd/ssl]# openssl req -new -x509 -nodes -newkey rsa:1024 -days 3650  -keyout privkey.pem -out server.pem -subj "/C=UA/ST=CH/L=CHERKASSY/O=CK/OU=CK/CN=unix.ck.ua/emailAddress=admin@unix.ck.ua"
Generating a 1024 bit RSA private key
............................................++++++
.++++++
writing new private key to 'privkey.pem'
-----
[root@router /usr/local/etc/ejabberd/ssl]#

[root@router /usr/local/etc/ejabberd/ssl]#cat privkey.pem >> server.pem && rm privkey.pem && mv server.pem ssl.pem

Далее необходимо зарегистрировать пользователя с админ.правами (логин_домен_пароль):

[root@router /usr/local/etc/ejabberd]#ejabberdctl start
[root@router /usr/local/etc/ejabberd]# ejabberdctl register vlymar unix.ck.ua 123456
User admin@ unix.ck.ua successfully registered
[root@router /usr/local/etc/ejabberd]#

Другие команды ejabberdctl:
start - Запустить ejabberd в режиме сервера
stop - Остановить ejabberd в режиме сервера
restart - Рестарт ejabberd
status - Получить статус ejabberd сервера .
live - Стартовать ejabberd в режиме дебагера.

Стартуем наш сервер:

[root@router /usr/local/etc/rc.d]# ./ejabberd start
Starting ejabberd.

Проверим его статус:
[root@router /]#ejabberdctl status
The node ejabberd@localhost is started with status: started
ejabberd 2.1.5 is running in that node

Заходим в админку(вам в свою):

http://unix.ck.ua:5280/admin/

97.png

Общий список пользователей.
Решил сделать так, что бы пользователи которые зарегистрировались, автоматом попадали в общий ростер - frends, и могди друг друга видеть.
Для этого топаем в Virtual Hosts > Выбираем ваш виртуальный домен > Группы общих контактов > Добавляем ростер - frends.
Заходим в него и в поле "Члены:" ставим "@all@", означает что каждый пользователь будет членом данной группы.

95.png

Настройка DNS для нашего Jabber-сервера.
Для того, что бы наш сервер мог общаться с другими серверам в интернет, необходимо добавить SRV запись в файл форвард зоны вашего домена:

; Jabber Server
_jabber._tcp.unix.ck.ua.         IN    SRV    5    0    5269    jabber.unix.ck.ua.
_xmpp-server._tcp.unix.ck.ua.    IN    SRV    5    0    5269    jabber.unix.ck.ua.
_xmpp-client._tcp.unix.ck.ua.    IN    SRV    5    0    5222    jabber.unix.ck.ua.

А так же A-записи:
jabber          IN      A       82.207.87.36
conference      IN      A       82.207.87.36

После обновления DNS, можно проверить работу указанных записей извне:

host -t SRV _jabber._tcp.domain.ru
host -t SRV _xmpp-server._tcp.domain.ru
host -t SRV _xmpp-client._tcp.domain.ru

или с помощью DIG:
[root@router /]# dig -t srv _xmpp-server._tcp.unix.ck.ua

Не забываем в фаерволе открыть необходимые порты:
5222 5223 5269 5280

Настройка ICQ транспорта

[root@router /]# cd /usr/ports/net-im/jabber-pyicq/
[root@router /usr/ports/net-im/jabber-pyicq]# make config && make install clean

Обсуждаем на форуме: тут.
На этом все.

Ваша оценка: Нет Средняя: 2.6 (5 votes)

Комментарии:


Вы бы не могли пояснить подробнее, что было сделано в этих командах?
openssl req -new -x509 -nodes -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem -subj "/C=UA/ST=CH/L=CHERKASSY/O=CK/OU=CK/CN=unix.ck.ua/emailAddress=admin@unix.ck.ua"
cat privkey.pem >> server.pem && rm privkey.pem && mv server.pem ssl.pem
Не все ключи, которрые тут указаны для команды openssl, удалось найти в документации. Также неясно, зачем было совершать такие сложные операции с файлами privkey и server. Спасибо!