Установка ejabberd сервера из портов во freeBSD

Установка ejabberd сервера из портов во freeBSD

Ejabberd — один из самых популярных XMPP серверов, который поддерживает внушительное количество стандартов (XEP) и который написан на Erlang.

Из преимуществ ejabberd можно вывести следующие:
1. В нем содержится модульная архитектура сервера;
2. Он поддерживает работы группы ejabberd для серверов в кластере;
3. Он поддерживает веб-интерфейс для администрирования;
4. Поддерживает различные языков (даже русский);
5. Имеет большое количество стандартов протокола XMPP;
6. Дает возможность использовать внешние хранилища через ODBC для хранения данных (PostgreSQL, LDAP и т.д.);
7. Имеет поддержку SASL и StartTLS на клиентских и межсерверных соединениях.

Для начала нужно обновить порты и установить Erlang по этому выполним следующее:

# cd /usr/ports/lang/erlang
# make install clean

В сплывающем меню выбрал самое необходимое для установки Erlang-а:

Установка-erlang

После чего жмем ОК и ерленг будет устанавливаться. После чего я установлю собственно сам ejabberd, на момент написание статьи был самый последний — ejabberd-2.1.13:

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

ejabberd-2.1.13

Установка ejabberd сервера из портов во freeBSD завершена. Займемся настройкой! Для начала добавим сервис в автозагрузку, для этого выполним:

# echo 'ejabberd_enable="YES"' >> /etc/rc.conf
# cd /usr/local/etc/ejabberd
# svn checkout https://svn.process-one.net/ejabberd-modules modules
# cd modules/pgsql/trunk
# ./build.sh
# chown root:wheel ebin/*
# chmod 444 ebin/*
# mv ebin/* /usr/local/lib/erlang/lib/ejabberd-2.1.13/ebin/

Теперь создадим БД, я буду использовать postgreSQL (Установка postgreSQL из исходников в freeBSD), по этому я выполню следующие команды, но для начала подключаемся из под юзера mgw (я его создал раньше, смотрите мануал по установке и настройке postgresql):

# psql -U postgres
CREATE user ejabberd;
\password ejabberd
# create database ejabberd owner=ejabberd;

Теперь можно сделать дамп БД для этого:

# cd /usr/ports/net-im/ejabberd
# make extract
# psql -U ejabberd -W -f work/ejabberd-2.1.13/src/odbc/pg.sql ejabberd
# make clean

У меня что то не получилось ( по идее намудрил что то с юзером БД или паролем, попозже раздерусь), но я импортирую БД ( создам ее вручную, а потом создам все таблицы).

Для безопасности я создам SSL сертификат и буду его использовать для этого выполним:

# mkdir /usr/local/etc/ejabberd/certs
# cd /usr/local/etc/ejabberd/certs
# openssl req -new -x509 -nodes -newkey rsa:1024 -days 3650 -keyout privkey.key -out ssl.pem \
-subj "/C=UA/ST=/L=/O=/OU=/CN=192.168.244.133/emailAddress=info@192.168.244.133"
# cat privkey.key >> ssl.pem
# rm privkey.key
# chown ejabberd:ejabberd ssl.pem
# chmod 600 ssl.pem

Где:
C — Название вашей страны (2 буквы), у меня это UA;
ST — Штат, провинция, у меня пустое поле;
L — Локация( город), пустое поле;
O — Организация или компания;
OU — Organizational Unit Name (eg, section);
CN — Common Name (eg, YOUR name). В моем случае «192.168.244.133»;
emailAddress — Email Address. В нашем случае «info@example.org».

Конфиг файлы сервака лежат в папке — /usr/local/etc/ejabberd. В ней должны находится следующие конфигурационные файлы, но к ним добавлено еще .example:
ejabberd.cfg — основной файл конфига;
ejabberdctl.cfg — конфигур для проги ejabberdctl;
inetrc — конфиг для DNS.
Для того что бы избавится от него, необходимо выполнить:

# cp ejabberd.cfg.example ejabberd.cfg
# cp  ejabberdctl.cfg.example  ejabberdctl.cfg

%% Ищем {hosts, [«localhost»]}… заменяем на наш домен:
{hosts, [«192.168.244.133»]}.

%% Ищем {listen, [{5222, ejabberd_c2s}… и добавляем путь до сгенерированного ранее файла сертификата:
{certfile, «/usr/local/etc/ejabberd/certs/ssl.pem»}, starttls,

%% Далее ищем «{acl, admin, {user, «ermine», «example.org»}}.» и указываем пользователя как админа:
{acl, admin, {user, «adw0rd», «192.168.244.133»}}.

%% Можете сменить «{access, max_user_sessions, [{10, all}]}.», для увеличения
%% Установка ejabberd сервера из портов во freeBSD
%% количества одновременных пользовательских сессий (но это не обязательно):
{access, max_user_sessions, [{100, all}]}.

%% Для увеличения максимального количества офлайн сообщений, надо изменить
%% «{access, max_user_offline_messages, [{5000, admin}, {100, all}]}.» на (это тоже не обязательно):
{access, max_user_offline_messages, [{5000, admin}, {1000, all}]}.

inetrc- оставим без изменения. И так начнем редактировать ( править) файлы.

# ee /usr/local/etc/ejabberd/ejabberd.cfg

%%%
%%% Конфигурационный файл ejabberd
%%%
%%%’

%%% Параметры, используемые в данном файле подробно описаны
%%% в документации «Installation and Operation Guide».
%%% Документацию можно найти в сети по такому адресу:
%%% http://www.process-one.net/en/ejabberd/docs/

%%% Конфигурационный файл оформлен в соответствии с синтаксисом Erlang.
%%% В случае, если вы хотите немного разобраться в синтаксисе, то вот
%%% основные сведения:
%%%
%%% — С символа % начинаются комментарии
%%%
%%% — Каждый терм заканчивается точкой, например:
%%% override_global.
%%%
%%% — Кортеж имеет строгое определение, так элементы
%%% заключаются в {} и разделяются запятой:
%%% {loglevel, 4}.
%%%
%%% — Список заключается в квадратные скобки []
%%% и может состоять из нескольких элементов:
%%% [http_poll, web_admin, tls]
%%%Установка ejabberd сервера из портов во freeBSD
%%% — Все ключевые слова в конфиге ejabberd задаются
%%% в нижнем регистре. Строки заключаются в двойные кавычки
%%% и могут содержать любые символы.
%%% {language, «en»}.
%%% {ldap_rootdn, «dc=example,dc=com»}.
%%%
%%% — Данный терм содержит кортеж, список, ключевое слово и строки:
%%% {hosts, [«jabber.example.net», «im.example.com»]}.
%%%

%%%. =======================
%%%’ Переопределение сохраненных параметров

%%
%% Переопределить старые значения, сохраненные в БД.
%%

%%
%% Переопределить глобальные параметры (разделяемые между всеми узлами ejabberd в кластере).
%%
%%override_global.

%%
%% Переопределить локальные параметры (только для конкретного ejabberd узла).
%%
%%override_local.

%%
%% Очистить Access Control Lists перед применением нового (х/з как понять, но наверно нового, то есть из этого файла).
%%
%%override_acls.

%%%. =========
%%%’ Отладка

%%
%% loglevel: уровень отладки.
%% 0: не выводить ничего в лог (не рекомендуется)
%% 1: выводить в лог сообщения, только о серьезных ошибках
%% 2: выводить в лог сообщения о ошибках
%% 3: выводить в лог сообщения о предупреждениях
%% 4: выводить в лог информационные сообщения
%% 5: все, что можно выводить в лог файл
%%
{loglevel, 4}.

%%
%% watchdog_admins: Полезно только для разработчиков. Если процессы ejabberd
%% потребляют слишком много памяти, то отправить об этом уведомление на
%% указанные здесь адреса.
%%
%%{watchdog_admins, [«bob@example.com»]}.

%%%. ================
%%%’ Обслуживаемые домены

%%
%% hosts: список обслуживаемых доменов.
%% Вы можете определить один или несколько доменов, например:
%% {hosts, [«example.net», «example.com», «example.org»]}.
%%
{hosts, [«info-x.org»]}.

%%
%% route_subdomains: Делегировать поддомены на другие XMPP сервера.
%% Например, если ejabberd обслуживает домен example.org и вы хотите,
%% чтоб он взаимодействовал с другим XMPP сервером, обслуживающим
%% домен im.example.org.
%%
%%{route_subdomains, s2s}.

%%%. ===============
%%%’ Сетевые параметры

%%
%% listen: указывает, на каких портах принимать подключения каждому
%% из ejabberd сервисов. Так же возможно задать опции отдельно для
%% каждого сервиса.
%%
{listen,
[
%%
%% Сервис для работы с клиентами
%%
{5222, ejabberd_c2s, [
%%
%% Для поддержки шифрованных подключений,
%% раскомментируйте строку и укажите полный
%% путь до сертификата:
%%
{certfile, «/usr/local/etc/ejabberd/ssl.pem»}, starttls,
{access, c2s},
{shaper, c2s_shaper},
{max_stanza_size, 65536},
zlib
]},

%%
%% Включить поддержку старого метода для SSL подключений:
%%
{5223, ejabberd_c2s, [
{access, c2s},
{shaper, c2s_shaper},
{certfile, «/usr/local/etc/ejabberd/ssl.pem»}, tls,
{max_stanza_size, 65536}
]},

%%
%% Сервис для работы с другими XMPP серверами
%%
{5269, ejabberd_s2s_in, [
{shaper, s2s_shaper},
{max_stanza_size, 131072}
]},

%%
%% ejabberd_service: взаимодействует с внешними компонентами (транспорты и т.п.)
%%
%%{8888, ejabberd_service, [
%% {access, all},
%% {shaper_rule, fast},
%% {ip, {127, 0, 0, 1}},
%% {hosts, [«icq.example.org», «sms.example.org»],
%% [{password, «secret»}]
%% }
%% ]},

%%
%% ejabberd_stun: обрабатывает запросы STUN
%%
{{3478, udp}, ejabberd_stun, []},

%% HTTP сервис (описание отдельных опций доступно в документации)
{{5280, «127.0.0.1»}, ejabberd_http, [
{request_handlers, [
%%{[«pub», «archive»], mod_http_fileserver}

%% указываем по какому адресу будет доступен
%% функционал сервиса webpresence
{[«presence»], mod_webpresence}
]},
captcha,
http_bind,
http_poll
%%register,
%%web_admin
]}

]}.

%%
%% s2s_use_starttls: Включить STARTTLS + Dialback для S2S подключений.
%% Возможные значения: false optional required required_trusted
%% При включении, необходимо указать сертификат в опции ниже.
%%
{s2s_use_starttls, optional}.

%%
%% s2s_certfile: путь до сертификата.
%%
{s2s_certfile, «/usr/local/etc/ejabberd/ssl.pem»}.

%%
%% domain_certfile: использовать различные сертификаты для обслуживаемых доменов.
%%
%%{domain_certfile, «example.org», «/path/to/example_org.pem»}.
%%{domain_certfile, «example.com», «/path/to/example_com.pem»}.

%%
%% S2S белый или черный список
%%
%% Политика s2s по умолчанию для неизвестных хостов.
%%
{s2s_default_policy, allow}.

%%
%% Разрешить или запретить взаимодействие с конкретными серверами.
%%
%%{{s2s_host, «goodhost.org»}, allow}.
%%{{s2s_host, «badhost.org»}, deny}.

%%
%% Опции для исходящих S2S подключений
%%
%% Желаемые протоколы (будет использоваться первый доступный) и таймаут
%% в миллисекундах.
%%
{outgoing_s2s_options, [ipv4], 10000}.

%%%. ==============
%%%’ Аутентификация

%%
%% auth_method: метод аутентификации пользователей.
%% По умолчанию используется внутренний метод аутентификации.
%% Если вы хотите использовать другой метод аутентификации,
%% то закомментируйте терм ниже и раскомментируйте нужный вам.
%%
%%{auth_method, internal}.
%%
%% Хранить пароли в открытом или хешированном виде:
%%{auth_password_format, plain}.
%%{auth_password_format, scram}.
%%
%% Задание вручную FQDN, если ejabberd не смог корректно
%% его определить:
{fqdn, «xmpp.info-x.org»}.

%%
%% Аутентификация через внешний скрипт.
%% Скрипт должен быть доступным для запуска сервером ejabberd.
%%
%%{auth_method, external}.
%%{extauth_program, «/path/to/authentication/script»}.

%%
%% Аутентификация через ODBC
%% Не забудьте задать параметры подключения к СУБД в секции ниже.
%%
{auth_method, odbc}.

%%
%% Аутентификация через PAM
%%
%%{auth_method, pam}.
%%{pam_service, «pamservicename»}.

%%
%% Аутентификация через LDAP
%%
%%{auth_method, ldap}.
%%
%% Список серверов LDAP:
%%{ldap_servers, [«localhost»]}.
%%
%% Использовать шифрованное подключение к LDAP:
%%{ldap_encrypt, none}.
%%{ldap_encrypt, tls}.
%%
%% Порт для подключение к LDAP:
%%{ldap_port, 389}.
%%{ldap_port, 636}.
%%
%% Пользователь для поиска по LDAP:
%%{ldap_rootdn, «dc=example,dc=com»}.
%%
%% Пароль для пользователя LDAP:
%%{ldap_password, «******»}.
%%
%% Корень для поиска в LDAP:
%%{ldap_base, «dc=example,dc=com»}.
%%
%% Атрибут в LDAP, содержащий ID пользователя:
%%{ldap_uids, [{«mail», «%u@mail.example.org»}]}.
%%
%% Фильтр для поиска в LDAP:
%%{ldap_filter, «(objectClass=shadowAccount)»}.

%%
%% Anonymous login support:
%% auth_method: anonymous
%% anonymous_protocol: sasl_anon | login_anon | both
%% allow_multiple_connections: true | false
%%
%%{host_config, «public.example.org», [{auth_method, anonymous},
%% {allow_multiple_connections, false},
%% {anonymous_protocol, sasl_anon}]}.
%%
%% To use both anonymous and internal authentication:
%%
%%{host_config, «public.example.org», [{auth_method, [internal, anonymous]}]}.

%%%. ==============
%%%’ Параметры БД

%% По умолчанию ejabberd использует внутреннюю БД Mnesia,
%% поэтому настройка данной секции для вас может быть не обязательна.
%% Если же у вас есть необходимость использовать внешнее хранилище,
%% то в данной секции приведены примеры конфигурации ejabberd
%% для работы с внешними хранилищами.
%% За деталями обращайтесь в документацию ejabberd.

%%
%% MySQL:
%%

{odbc_server, {mysql, «localhost», «ejabberd», «captain», «captain»}}.

%%
%% При необходимости можно указать порт для подключения:
%%{odbc_server, {mysql, «server», 1234, «database», «username», «password»}}.

%%
%% PostgreSQL:
%% {odbc_server, {pgsql, «localhost», «ejabberd», «ejabberd», «1234»}}.
%%
%% При необходимости можно указать порт для подключения:
%%{odbc_server, {pgsql, «server», 1234, «database», «username», «password»}}.
%%
%% Если вы используете PostgreSQL и у вас очень большая БД (по размеру)
%% и нужен быстрая, но менее точная замена для «select count(*) from users»,
%% то включите данную опцию.
%%
%%{pgsql_users_number_estimate, true}.

%%
%% ODBC совместимый или MSSQL сервер:
%%
%%{odbc_server, «DSN=ejabberd;UID=ejabberd;PWD=ejabberd»}.

%%
%% Максимальное количество открытых подключений к СУБД для каждого
%% виртуального хоста:
%%
{odbc_pool_size, 3}.

%%
%% Выполнять с определенным интервалом бесполезный SQL запрос,
%% для поддерживания подключения к базе данных (keep alive).
%% интервал задается в секундах: например, 28800 значит 8 часов
%%
%%{odbc_keepalive_interval, undefined}.

%%%. ===============
%%%’ Шейперы

%%
%% Шейпер «normal» с лимитом скорости в 1000 B/s
%%
{shaper, normal, {maxrate, 1000}}.

%%
%% Шейпер «fast» с лимитом скорости в 50000 B/s
%%
{shaper, fast, {maxrate, 50000}}.

%%
%% Максимальное количество элементов в очереди FSM.
%% В документации подробно расписано значение данного параметра.
%%
{max_fsm_queue, 1000}.

%%%. ====================
%%%’ Списки контроля доступа

%%
%% ACL ‘admin’ дает права администратора конкретным XMPP аккаунтам.
%% При необходимости вы можете указать здесь несколько записей.
%%
%%{acl, admin, {user, «aleksey», «localhost»}}.
%%{acl, admin, {user, «ermine», «example.org»}}.
{acl, admin, {user, «nekit», «info-x.org»}}.

%%
%% Заблокированные пользователи
%%
%%{acl, blocked, {user, «baduser», «example.org»}}.
%%{acl, blocked, {user, «test»}}.

%%
%% Локальные пользователи: не изменяйте данную ACL.
%%
{acl, local, {user_regexp, «»}}.

%%
%% Еще примеры ACL
%%
%%{acl, jabberorg, {server, «jabber.org»}}.
%%{acl, aleksey, {user, «aleksey», «jabber.ru»}}.
%%{acl, test, {user_regexp, «^test»}}.
%%{acl, test, {user_glob, «test*»}}.

%%
%% Определение ACL для виртуального хоста.
%%
%%{host_config, «localhost»,
%% [
%% {acl, admin, {user, «bob-local», «localhost»}}
%% ]
%%}.

%%%. ============
%%%’ Правила доступа

%% Максимальное количество одновременных подключений к серверу для одного пользователя:
{access, max_user_sessions, [{10, all}]}.

%% Максимальное количество offline сообщений для пользователя:
{access, max_user_offline_messages, [{5000, admin}, {300, all}]}.

%% Правило доступа для локальных пользователей (This rule allows access only for local users):
{access, local, [{allow, local}]}.

%% Только не заблокированные пользователи могут подключаться к серверу:
{access, c2s, [{deny, blocked},
{allow, all}]}.

%% Ограничение скорости для пользователей, кроме админов:
{access, c2s_shaper, [{none, admin},
{normal, all}]}.

%% Все S2S соединения пропускаются через шейпер «fast»
{access, s2s_shaper, [{fast, all}]}.

%% Только админы могут отправлять объявления (announcement messages) пользователям:
{access, announce, [{allow, admin}]}.

%% Только админы могут использовать интерфейс конфигурирования:
{access, configure, [{allow, admin}]}.

%% Админам сервера разрешено админить сервис MUC:
{access, muc_admin, [{allow, admin}]}.

%% Локальные пользователи могут создавать комнаты:
{access, muc_create, [{allow, local}]}.

%% Всем пользователям разрешено использовать сервис MUC:
{access, muc, [{allow, all}]}.

%% Только локальные пользователи могут создавать узлы Pubsub:
{access, pubsub_createnode, [{allow, local}]}.

%% Регистрация по требованию позволяет любому зарегистрироваться на сервере.
%% Чтобы запретить, замените ‘allow’ на ‘deny’.
{access, register, [{deny, all}]}.

%% Частота регистрации аккаунтов с конкретного IP, то есть можно создать
%% один аккаунт в течении определенного времени. Задается в секундах.
%% Чтобы выключить, укажите infinity .
%%{registration_timeout, 600}.

%%
%% Права доступа для виртуального хоста.
%%
%%{host_config, «localhost»,
%% [
%% {access, c2s, [{allow, admin}, {deny, all}]},
%% {access, register, [{deny, all}]}
%% ]
%%}.

%%%. ================
%%%’ Язык по умолчанию

%%
%% language: Язык по умолчанию для сообщений от сервера.
%%
{language, «ru»}.

%%
%% Различные языки для каждого из виртуальных хостов.
%%
%%{host_config, «localhost»,
%% [{language, «ru»}]
%%}.

%%%. =======
%%%’ Капча

%%
%% Полный путь до скрипта, генерирующего изображение капчи.
%% С дистрибутивом ejabberd для генерации изображения капчи поставляется
%% скрипт, который использует тулзу convert из пакета ImageMagick.
%% Во FreeBSD скрипт лежит тут:
%% /usr/local/lib/erlang/lib/ejabberd-2.1.11/priv/bin/captcha.sh
%%
%% Устанавливать ImageMagick для такой мелкой цели мне не захотелось.
%% У меня в системе была установлена библиотека gd, поэтому я пошел
%% другим путем: установил для perl модуль /usr/ports/graphics/p5-GD
%% для работы с либой gd и написал скрипт для генерации капчи на perl.
%% Если кому нужно, то в конце статьи я прикрепил его.
%%
{captcha_cmd, «/usr/local/etc/ejabberd/captcha/captcha.pl»}.

%%
%% URL и порт, на который будут направлены пользователи для проверки капчей.
%% У меня HTTP сервис ejabberd спрятан за апачем. Если делать напрямую, то
%% параметр может иметь вид: {captcha_host, «http:/hostname:5280»}.
%% {captcha_host, «http://www.fastbsd.ru/ejabberd»}.

%%
%% Ограничение запросов к капче в минуту для JID/IP (защита от DoS).
%%
{captcha_limit, 5}.

%%%. =======
%%%’ Конфигурация модулей

%%
%% Указанные здесь модули будут доступны на всех виртуальных хостах.
%% Описание всех опций, которые здесь использованы, приведено в документации.
%% Так же хочу отметить, что некоторые модули имеют постфикс в виде _odbc,
%% это необходимо для их работы с БД.
%%
{modules,
[
{mod_adhoc, []},
{mod_announce_odbc, [{access, announce}]}, % recommends mod_adhoc
{mod_blocking_odbc,[]}, % requires mod_privacy
{mod_caps, []},
{mod_configure,[]}, % requires mod_adhoc
{mod_disco, [{all, «admin-address», [«mailto:admin@info-x.org», «xmpp:nekit@info-x.org»]}]},
%%{mod_echo, [{host, «echo.localhost»}]},
{mod_irc_odbc, [{access, all}, {default_encoding, «UTF-8»}]},
{mod_http_bind, []},
%%{mod_http_fileserver, [
%%{docroot, «/var/www»},
%%{accesslog, «/var/log/ejabberd/access.log»}
%%]},
{mod_last_odbc, []},
{mod_muc_odbc, [
{host, «conference.@HOST@»},
{access, muc},
{access_create, muc_create},
{access_persistent, muc_create},
{access_admin, muc_admin},
{history_size, 30},
{max_users, 1000},
{min_presence_interval, 4},
% параметры по умолчанию для новой комнаты
{default_room_options, [
{allow_change_subj, false},
{allow_private_messages, true},
{allow_private_messages_from_visitors, moderators},
{allow_user_invites, false},
{allow_visitor_nickchange, false},
{anonymous, true},
{captcha_protected, true},
{logging, true},
{members_by_default, false},
{members_only, false},
{moderated, true},
{password_protected, false},
{persistent, true},
{public, true},
{public_list, false}
]}
]},
{mod_muc_log, [
{cssfile, false},
{dirtype, plain},
{file_format, html},
{outdir, «/var/log/ejabberd/muc»},
{spam_prevention, true},
{timezone, local},
{top_link, {«http://www.info-x.org/», «www.info-x.org»}}
]},
{mod_offline_odbc, [{access_max_user_messages, max_user_offline_messages}]},
{mod_ping, [
{send_pings, true},
{ping_interval, 600},
{timeout_action, kill}
]},
%%{mod_pres_counter,[{count, 5}, {interval, 60}]},
{mod_privacy_odbc, []},
{mod_private_odbc, []},
%%{mod_proxy65,[]},
{mod_pubsub_odbc, [
{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_odbc», «hometree_odbc», «pep_odbc»]} % pep requires mod_caps
]},
{mod_register, [
%%
%% Защитить процесс регистрации капчей.
%%
%%{captcha_protected, true},

%%
%% Минимальная энтропия для пароля.
%%
%%{password_strength, 32},

%%
%% После успешной регистрации пользователь получит
%% сообщение, заданное здесь.
%%
{welcome_message, {«Welcome!», «Hi.\nWelcome to this XMPP server.»}},

%%
%% Отправлять уведомление на указанные здесь аккаунты
%% о регистрации нового пользователя на сервере..
%%
{registration_watchers, [«nekit@info-x.org»]},

%%
%% Ограничение доступа к регистрации по подсетям
%%
{ip_access, [{allow, «127.0.0.0/8»}, {deny, «0.0.0.0/0»}]},

%%
%% Локальные c2s или удаленные s2s пользователи не могут
%% регистрировать аккаунты (см. в документацию)
%%
%%{access_from, deny},

{access, register}
]},
%%{mod_register_web, [
%%
%% Отправлять уведомление на указанные здесь аккаунты
%% о регистрации нового пользователя на сервере..
%%
%%{registration_watchers, [«admin1@example.org»]}
%% ]},
{mod_roster_odbc, [
{versioning, true},
{store_current_id, true}
]},
%%{mod_service_log,[]},
%%{mod_shared_roster_odbc,[]},
%%{mod_sic, []},
{mod_stats, []},
{mod_time, []},
{mod_vcard_odbc, [
{search, true},
{matches, 50},
{allow_return_all, false}
]},
{mod_vcard_xupdate_odbc, []},
{mod_version, [
{show_os, true}
]},
% конфигурация модуля webpresence
{mod_webpresence, [
{host, «webstatus.@HOST@»},
{access, local},
{pixmaps_path, «/usr/local/etc/ejabberd/modules/mod_webpresence/trunk/data/pixmaps»},
%%{port, 80},
{path, «presence»},
{baseurl, «http://www.fastbsd.ru/ejabberd/presence/»}
]}
]}.

%%
%% Параметры модулей отдельно для каждого виртуального хоста.
%%
%%{host_config, «localhost»,
%% [{{add, modules},
%% [
%% {mod_echo, [{host, «mirror.localhost»}]}
%% ]
%% }
%% ]}.
%%% $Id$
%%% Local Variables:
%%% mode: erlang
%%% End:
%%% vim: set filetype=erlang tabstop=8 foldmarker=%%%’,%%%. foldmethod=marker:

 # ee ejabberdctl.cfg

# В данном файле вы можете изменить опции, которые передает
# утилита ejabberdctl в переменные окружение для erlang,а.
#

#’ POLL: Kernel polling ([true|false])
#Установка ejabberd сервера из портов во freeBSD
# Для использования данной фичи необходимо, чтобы ядро и erlang
# были скомпилированы с поддержкой polling,а .
#
# По умолчанию: true
#
POLL=true

#.
#’ SMP: поддержка SMP ([enable|auto|disable])
#
# В документации Erlang/OTP сказано:
# enable: запуск Erlang с поддержкой SMP. Может произойти сбой
# при запуске, если SMP не поддерживается.
# auto: запуск Erlang с поддержкой SMP только, если оно доступно
# и в системе имеется более одного логического/физического
# процессора.
# disable: запуск Erlang без поддержки SMP.
#
# По умолчанию: auto
#
SMP=auto

#.
#’ ERL_MAX_PORTS: Максимальное количество одновременно открытых портов Erlang,ом
#
# На каждое подключение ejabberd использует два или три порта:
# для клиента или для другого Jabber сервера.
# Примите это во внимание, устанавливая данный предел.
#
# По умолчанию: 32000
# Maximum: 268435456
#
#ERL_MAX_PORTS=32000

#.
#’ FIREWALL_WINDOW: Диапазон допустимых портов (полезно при использовании фаервола)
#
# Если ejabberd работает в кластере и в системе включен фаервол,
# то возможно задать статический диапазон портов, используемых
# для взаимодействия узлов (node).
#
# По умолчанию: not defined
# Пример: 4200-4210
#
#FIREWALL_WINDOW=

#.
#’ INET_DIST_INTERFACE: IP на котором принимаются соединения с других узлов (node)
#
# Соединение, например, может устанавливать ejabberdctl или
# другие узлы (node) из кластера.
# Учтите, что IP указывается в соответствии с синтаксисом Erlang.
#
# Default: {127,0,0,1}
#
INET_DIST_INTERFACE={127,0,0,1}

#.
#’ ERL_EPMD_ADDRESS: IP на котором сервис epmd принимает подключения
#
# ВАЖНО: Данная опция работает только с Erlang/OTP R14B03 и новее.
#
# Параметр может принимать список IP адресов, разделенных
# запятыми. Следует отметить, что демон epmd будет принимать
# подключения на 127.0.0.1, даже если он не указан в списке.
# По умолчанию соединения принимаются отовсюду.
#
# По умолчанию: 0.0.0.0
#
ERL_EPMD_ADDRESS=127.0.0.1

#.
#’ ERL_PROCESSES: Максимальное количество процессов Erlang
#
# Для работы ejabberd, Erlang порождает необходимое количество процессов
# (которые сами по себе потребляют очень мало ресурсов). При большой
# нагрузке на ejabberd данный лимит может быть исчерпан, что повлечен
# за собой увеличение задержек при работе с клиентами. Так как слово
# «процесс» употребляется в контексте Erlang (а не операционной системы),
# то не стоит волноваться о том, что тут указано довольно большое значение.
#
# По умолчанию: 250000
# Максимум: 268435456
#
#ERL_PROCESSES=250000

#.
#’ ERL_MAX_ETS_TABLES: Максимальное количество ETS и таблиц Mnesia
#
# Количество конкурирующих (одновременных) ETS и таблиц Mnesia ограничено.
# Когда достигается лимит, то в логах можно увидеть такое сообщение:
# ** Too many db tables **
# Вы можете без опаски увеличивать значение данного параметра, что хоть
# и повлечет увеличение использования памяти, но оно все же будет невелико.
#
# По умолчанию: 1400
#
#ERL_MAX_ETS_TABLES=1400

#.
#’ ERL_OPTIONS: Дополнительные параметры Erlang
#
# В данном параметре возможно указать дополнительные опции, которые
# будут переданы в процесс(ы) erlang при запуске ejabberd. Некоторыми
# полезными опциями являются -noshell, -detached, -heart. Когда ejabberd
# запускается системным скриптом rc.d, то опции -noshell, -detached
# применяются автоматически. За подробностями в ман erl(1).
#
# It might be useful to add «-pa /usr/local/lib/ejabberd/ebin» if you
# want to add local modules in this path.
#
# По умолчанию: «»
#
#ERL_OPTIONS=»»

#.
#’ ERLANG_NODE: Имя узла (node) Erlang
#
# В данном параметре возможно указать имя узла erlang для ejabberd.
# Возможны различные форматы:
# ERLANG_NODE=ejabberd
# Lets erlang add hostname to the node (ejabberd uses short name in this case)
# ERLANG_NODE=ejabberd@hostname
# Erlang uses node name as is (so make sure that hostname is a real
# machine hostname or you’ll not be able to control ejabberd)
# ERLANG_NODE=ejabberd@hostname.domainname
# The same as previous, but erlang will use long hostname
# (За подробностями в ман erl(1))
#
# По умолчанию: ejabberd@localhost
#
ERLANG_NODE=ejabberd@localhost

#.
#’ EJABBERD_PID_PATH: Путь до PID файла
#
# В данном параметре задаются полный путь до PID (Process identifier) файла.
# Если параметр задан, то ejabberd запишет полученный при старте
# от системы идентификатор в указанный файл. При остановке сервиса
# файл автоматически будет удален.
# Учтите, что ejabberd должен иметь права записи в директорию, иначе
# процесс не запустится.
#
# По умолчанию: пусто, то есть не записывать PID файл
#
EJABBERD_PID_PATH=/var/run/ejabberd/ejabberd.pid

#.
#’
# vim: foldmarker=#’,#. foldmethod=marker:

# ee inetrc

 

{lookup,[«file»,»native»]}.
{host,{127,0,0,1}, [«localhost»,»hostalias»]}.
{file, resolv, «/etc/resolv.conf»}.

Ну что, запустим сервер с джабертом? Поехали, выполним:

# service ejabberd start

Проверить выполнение запуска можно выполнив команду:

# ps -aux | grep ejabberd

ejabberd-grep

Установка ejabberd сервера из портов во freeBSD полностью завершена!!!

3 thoughts on “Установка ejabberd сервера из портов во freeBSD

    • Какой скрипт? Я все рассказал в статье, не стал выкладывать готовые конфигы. Там не сильно много править самому.

      • %% Устанавливать ImageMagick для такой мелкой цели мне не захотелось.
        %% У меня в системе была установлена библиотека gd, поэтому я пошел
        %% другим путем: установил для perl модуль /usr/ports/graphics/p5-GD
        %% для работы с либой gd и написал скрипт для генерации капчи на perl.
        %% Если кому нужно, то в конце статьи я прикрепил его.
        %%
        {captcha_cmd, “/usr/local/etc/ejabberd/captcha/captcha.pl”}.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.