Рубрики

Лучшие статьи

Установка ejabberd на FreeBSD

Опубликовал 23 июля 2011 в рубрике FreeBSD. Комментарии: Один комментарий   Просмотров: 1 просмотров

Установка ejabberd на FreeBSDРешился на днях поднять jabber сервер. Штука довольно полезная, но мне она понадобилась не для того, чтобы развлечь скучающих юзверей и не для внутрикорпоративного обмена сообщениями. Решился наконец организовать какой-нибудь мониторинг за сетью, используя zabbix/nagios. На почту алерты приходят не совсем оперативно, вот и подумалось, а почему бы не организовать jabber сервак. Реагировать на падение сервера будем быстрее :)

Попробовал сперва Openfire. С ним что-то не заладилось, с полпинка не завелось. Нашёл другого кондидата на важное место быть сервером – ejabberd. С ним всё куда проще, к тому же мне хитрых заморочек не требуется. Больших нагрузок тоже не предвидется. Так что быстренько ставим и выпускаем в продакшн. Я привяжу к mysql для более менее структурирование хранения инфы о пользователях/глобальных настроек и прочего.

cd /usr/ports/net-im/ejabberd && make install clean

Отмечаем компилировать с ODBC. Он потянет за собой erlang, который можно собрать отдельно из портов, использую erlang-lite, дабы ничего лишнего не тянуть за собой. Также потребуется поддержка mysql для erlang

cd /usr/ports/databases/erlang-mysql && make install clean

После успешной инсталляции всего ПО идем настраивать ejabberd. Не забываем создать базу данных и пользователя.

mysql> create database jabber;
mysql> grant all on jabber.* to jab@localhost identified by 'jab';
mysql> set password for 'jab'@'localhost'=PASSWORD('zj@bb3rz');
mysql> flush privileges;

Также необходимо создать структуру базы. sql файлик берём из архива /usr/ports/distfiles/ejabberd. Темплейт mysql.sql естественно.

Первым делом необходимо сгенерировать ssl сертификат

openssl req -new -x509 -nodes -newkey rsa:1024 -days 3650
-keyout privatekey.pem -out server.pem
cat privatekey.pem >> server.pem
rm privatekey.pem
mv server.pem ssl.pem

Теперь подправим inetrc, описывающий конфигурацию хостов

{file, hosts, «/etc/hosts»}.
{file, resolv, «/etc/resolv.conf»}.
% сначала ищем записи в hosts, а затем обращаемся к DNS
{lookup, [file, dns]}.

И самый основной конфиг файл – ejabberd.cfg

{loglevel, 4}.
{hosts, ["jabber.host.ru"]}.
{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, "/path/to/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, "/path/to/ssl.pem"}, tls,
%%                    {max_stanza_size, 65536}
%%                   ]},
{5269, ejabberd_s2s_in, [
{shaper, s2s_shaper},
{max_stanza_size, 131072}
]},
%%
%% ejabberd_service: Interact with external components (transports, …)
%%
%%{8888, ejabberd_service, [
%%                        {access, all},
%%                        {shaper_rule, fast},
%%                        {ip, {127, 0, 0, 1}},
%%                        {hosts, ["icq.example.org", "sms.example.org"],
%%                         [{password, "secret"}]
%%                        }
%%                       ]},
%%
%% ejabberd_stun: Handles STUN Binding requests
%%
%%{{3478, udp}, ejabberd_stun, []},
{5280, ejabberd_http, [
%%{request_handlers,
%% [
%%  {["pub", "archive"], mod_http_fileserver}
%% ]},
captcha,
http_bind,
http_poll,
web_admin
]}
]}.
{s2s_certfile, «/usr/local/etc/ejabberd/ssl.pem»}.
{auth_method, odbc}.
{odbc_server, {mysql, «localhost», «jabber», «jab», «jabber»}}.
{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}.
{max_fsm_queue, 1000}.
{acl, admin, {user, «admin», «jabber.host.ru»}}.
{acl, local, {user_regexp, «»}}.
{access, max_user_sessions, [{10, all}]}.
{access, max_user_offline_messages, [{5000, admin}, {100, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked},
{allow, all}]}.
{access, c2s_shaper, [{none, admin},
{normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc_create, [{allow, local}]}.
{access, muc, [{allow, all}]}.
{access, pubsub_createnode, [{allow, local}]}.
{access, register, [{allow, all}]}.
{language, «en»}.
{modules,
[
{mod_adhoc,    []},
{mod_announce, [{access, announce}]}, % recommends mod_adhoc
{mod_caps,     []},
{mod_configure,[]}, % requires mod_adhoc
{mod_disco,    []},
%%{mod_echo,   [{host, "echo.localhost"}]},
{mod_irc,      []},
{mod_http_bind, []},
%%{mod_http_fileserver, [
%%                       {docroot, "/var/www"},
%%                       {accesslog, "/var/log/ejabberd/access.log"}
%%                      ]},
{mod_last,     []},
{mod_muc,      [
%%{host, "conference.@HOST@"},
{access, muc},
{access_create, muc_create},
{access_persistent, muc_create},
{access_admin, muc_admin}
]},
%%{mod_muc_log,[]},
{mod_offline,  [{access_max_user_messages, max_user_offline_messages}]},
{mod_ping,     []},
{mod_privacy,  []},
{mod_private,  []},
%%{mod_proxy65,[]},
{mod_pubsub,   [
{access_createnode, pubsub_createnode},
{ignore_pep_from_offline, true}, % reduces resource comsumption, but XEP incompliant
%%{ignore_pep_from_offline, false},  % XEP compliant, but increases resource comsumption
{last_item_cache, false},
{plugins, ["flat", "hometree", "pep"]}  % pep requires mod_caps
]},
{mod_register, [
%%
%% After successful registration, the user receives
%% a message with this subject and body.
%%
{welcome_message, {"Welcome!",
"Hi.nWelcome to this XMPP server."}},
%%
%% When a user registers, send a notification to
%% these XMPP accounts.
%%
%%{registration_watchers, ["admin1@example.org"]},
{access, register}
]},
{mod_roster,   []},
%%{mod_service_log,[]},
{mod_shared_roster,[]},
{mod_stats,    []},
{mod_time,     []},
{mod_vcard,    []},
{mod_version,  []}
]}.

Конфиг дефолтный. Подправил только хост и данные для коннекта с mysql.

Добавляем ejabberd_enable=»YES» в rc.conf и стартуем демон

/usr/local/etc/rc.d/ejabberd start

 

Поделись:
  • Добавить ВКонтакте заметку об этой странице
  • Мой Мир
  • Facebook
  • Twitter
  • LiveJournal
  • MySpace
  • В закладки Google
  • Google Buzz
  • Яндекс.Закладки
  • LinkedIn
  • Technorati
  • del.icio.us
  • Digg
  • БобрДобр
  • Memori.ru
  • МоёМесто.ru
  • Сто закладок
  • Blogger
  • Блог Li.ру
  • Блог Я.ру
  • Одноклассники

Метки:
1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Загрузка ... Загрузка ...

К записи Один комментарий

неплохая статья, спасибо



Оставить комментарий или два

RSS

rss Подпишитесь на RSS для получения обновлений.

Add to Google Reader or Homepage

Подписаться на рассылку E-Mail:

Опрос

Статьи на какую тему Вам более интересны?

Просмотреть результаты

Загрузка ... Загрузка ...