Возможно позднее добавлю статью в ArchWiki. Первое что нам понадобится это естественно сам ejabberd. Думаю объяснять как ставить пакеты пакманом для человека озаботившегося поставить Jabber-сервер пустая трата времени и вы давно это умеете. Нужно лишь поставить ejabberd а там пакман сам вытянет нужные зависимости. После установки нужно править конфиг. находится он в
/etc/ejabberd/ejabberd.cfg
Открываем его вашим любимым текстовым редактором и ищем строки в которых необходимо изменить параметры.
Думаю тут все понятно. Вместо моего доменного имени прописываем свое (vasya-pupkin.ru).
%%%. ================ %%%' SERVED HOSTNAMES %% %% hosts: Domains served by ejabberd. %% You can define one or several, for example: %% {hosts, ["example.net", "example.com", "example.org"]}. %% {hosts, ["syslinux.ru"]}. %% %% route_subdomains: Delegate subdomains to other XMPP servers. %% For example, if this ejabberd serves example.org and you want %% to allow communication with an XMPP server called im.example.org. %% %%{route_subdomains, s2s}.
LISTENING PORTS
{listen, [ {5222, ejabberd_c2s, [ %% %% If TLS is compiled and you installed a SSL %% certificate, put the correct path to the %% file and uncomment this line: %% {certfile, "/etc/ejabberd/server.pem"}, starttls, {access, c2s}, {shaper, c2s_shaper}, {max_stanza_size, 65536} ]}, %% %% To enable the old SSL connection method in port 5223: %% {5223, ejabberd_c2s, [ {access, c2s}, {shaper, c2s_shaper}, {certfile, "/etc/ejabberd/server.pem"}, tls, {max_stanza_size, 65536} ]}, {5269, ejabberd_s2s_in, [ {shaper, s2s_shaper}, {max_stanza_size, 131072} ]}, %% %% ejabberd_service: Interact with external components (transports...) %% {5347, ejabberd_service, [ {access, all}, {shaper_rule, fast}, {ip, {127, 0, 0, 1}}, {hosts, ["icq.syslinux.ru"], [{password, "yourpassword"}] } ]}, %% MRIM Transport {8884, ejabberd_service, [ {ip, {127, 0, 0, 1}}, {access, all}, {shaper_rule, fast}, {host, "mrim.syslinux.ru", [{password, "your_password"}]} ]}, %% %% 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_use_starttls: Enable STARTTLS + Dialback for S2S connections. %% Allowed values are: true or false. %% You must specify a certificate file. %% {s2s_use_starttls, true}. %% %% s2s_certfile: Specify a certificate file. %% {s2s_certfile, "/etc/ejabberd/server.pem"}. %% %% domain_certfile: Specify a different certificate for each served hostname. %% %%{domain_certfile, "example.org", "/path/to/example_org.pem"}. %%{domain_certfile, "example.com", "/path/to/example_com.pem"}. %% %% S2S whitelist or blacklist %% %% Default s2s policy for undefined hosts. %% {s2s_default_policy, allow}. %% %% Allow or deny communication with specific servers. %% %%{{s2s_host, "goodhost.org"}, allow}. %%{{s2s_host, "badhost.org"}, deny}. %% %% Outgoing S2S options %% %% Preferred address families (which to try first) and connect timeout %% in milliseconds. %% {outgoing_s2s_options, [ipv4, ipv6], 10000}.
5222, ejabberd_c2s
Это порт для подключений client2server,тобишь порт который будет слушать ваш сервер и ждать когда к нему подключаться (естественно если вы за железным роутером, то нужно прокинуть порт 5222, или если подключается сам комп (Bridge) то разрешить в Iptables.
{certfile, "/etc/ejabberd/server.pem"}, starttls,
это путь до файла сертификата,без него как я понимаю к другим серверам вы подключаться не сможете. Как его сгенерить я скажу позже. access, c2s — тут я ниче не менял, все by default.
5223, ejabberd_c2s
это подключение client2server по защищенному каналу. В принципе кошерно юзать TLS а TLS работает и на 5222 порту. Так что 5223 в основном для устаревших клиентов которые юзают SSL (в этом я мало понимаю так что могу и ошибаться) и им можно принебречь.
5269, ejabberd_s2s_in
этот порт должен обязательно быть доступен извне,так как через этот порт к вашему серверу подключаются другие сервера (например jabber.ru).
5347, ejabberd_service
здесь прописан на каком порту будет слушать транспорт ICQ.
8884, ejabberd_service
транспорт Mail.ru, тут аналогично как и с ICQ.
5280, ejabberd_http
это порт вашей админки сервера,расшаривать этот порт в инет необязательно локальный доступ через браузер итак будет,ведь мы де не хотим чтоб кто то подобрав пароль убил БД или уронил серв. Вобщем тут на ваше усмотрение.
3478, udp
тут вообще закоменчено,не знаю для чего это и на работу не влияет.
s2s_use_starttls, true
использование STARTTLS при запросах server2server.
{s2s_certfile, "/etc/ejabberd/server.pem"}.
все тот же сертификат для подключений.
auth_method, internal
это метод аутенфикации на сервере у меня закоменчен. Если вы будете использовать встроенную базу данных Mnesia то надо раскоментить эту строку (убрать %%). Если будете использовать MySQL то нужно раскоментить
{auth_method, odbc}.
Весь остальной конфиг в этой секции by default. Теперь возьмемся за список контроля доступа ACCESS CONTROL LISTS
Ищем строку
{acl, admin, {user, "your_user", "syslinux.ru"}}.
и ставим вместо youruser желаемое имя пользователя(это будет аккаунт с правами админа). Остальное в данной секции я не редактировал. далее ищем строку language и ставим
{language, "ru"}.
в секции MODULES в принципе можно ничего не править если не использовать MySQL. Тепеь можно пробовать запустить сервер
sudo /etc/rc.d/ejabberd start
Смотрим логи в /var/log/ejabberd/ejabberd.log,если ругани нет то можно зарегать аккаунт админский. Если не запускается сервер то скорее всего дело в правах на файлы конфигурации (файлы должны прнадлежать ejabberd). Можно зарегать аккаунт через ejabberdctl,но у меня он почему то либо не запускался,а если запускался то валился в корку. запускаем Vacuum,Qutim,PSI или что у вас там создаем в нем аккаунт с именем пользователя которое вы указали в ACCESS CONTROL LISTS и нужным паролем. Подключаемся,аккаунт админа создан. Теперь у вас есть админка по адресу http://localhost:5280/admin в которой вы можете рулить сервом. С этим в принципе все. Теперь мы хотим аськотранспорт.
sudo pacman -S pyicqt
Теперь надо настроить его конфиг /etc/ejabberd/pyicq.xml
icq.syslinux.ru /var/spool/pyicqt /var/run/pyicqt.pid syslinux.ru [email protected] 5347 yourpassword en windows-1251 login.icq.com 5190
Думаю тут все понятно,прописываем свое доменное имя вместо syslinux.ru…. и вместо youruser ваш аккаунт админа. Проблем тут у меня не возникло думаю и у вас также будет. после настройки
sudo /etc/rc.d/pyicqt start
С Mrim аналогично. Теперь самое главное,вернее то на что ушло больше всего времени из за недостатка знаний. MySQL. Не буду перечислять достоинства и недостатки разных СУБД,а сразу к делу. Чтоб поставить MySQL надо:
sudo pacman -S mysql
После установки в конфиге мускуля в основном ничего править не надо. Если после установки мускуля появилась директория /var/lib/mysql и с вложенными в нее директориями mysql и test то можно начать создавать базы данных и пользователей для работы с ними.(ИМХО от рута запускать базы как то не очень))). теперь запускаем мускуль
sudo /etc/rc.d/mysqld start
проверяем
sudo mysql
Далее создаем пароль для суперпользователя
mysqladmin -u root password "your_root_password"
Теперь подключаемся к серверу как рут
mysql -u root -h hostname -p
где hostname обычно localhost. Теперь создаем в MySQL пользователя для работы с БД
mysql> GRANT ALL PRIVILEGES ON *.* TO ejabberd@localhost
IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;
пароль должен быть в «кавычках» Этой командой мы создали юзверя ejabberd для MySQL который может подключаться к СУБД с localhost’a и не ограничен в правах. Обновим привилегии:
mysql> FLUSH PRIVILEGES;
А теперь дадим этому пользователю разрешение на подключение к нашей будущей базе данных на чем я как раз и запнулся в следствии чего ejabberd никак не хотел логиниться в БД.
mysql> GRANT SELECT,INSERT,UPDATE,CREATE ON jabber.* TO
ejabberd@localhost IDENTIFIED BY "yourpassword";
Jabber — это наша будущая база данных в которой будет вся инфа серва а ejabberd это уже имеющийся и в системе и в MySQL пользователь. Теперь можно выйти из мускуля q Сейчас создадим базу данных jabber:
sudo mysqladmin -h localhost -u ejabberd -p create jabber
вводим пароль и если все удачно то база создастся. Теперь следующие грабли на которые я наступил. По умолчанию БД создается пустая и о том что ее надо заполнять таблицами я знать не знал)),а когда узнал то долго гуглил где найти то чем это сделать *LOL* Скачиваем это, сохраняем например в /home/vasya ,заходим в мускуль
sudo mysql -h localhost -u ejabberd -p
делаем нашу БД активной
mysql> u jabber
и выполняем
mysql> source /home/vasya/mysql.sql;
Смотрим как создаются таблицы и радуемся. Отключаемся от СУБД (q) Открываем снова конфиг ejabberd ищем строку
AUTHENTICATION
{auth_method, odbc}.
раскоменчиваем ее если закоменчена ,потом коментим
%%{auth_method, internal}.
Находим это
{odbc_server, {mysql, "localhost", "jabber", "ejabberd", "yourpassword"}}.
вместо yourpassword пишем тот пароль который вы ввели при установке привилегий на подключени к БД. Ну вобщем то и все теперь
sudo /etc/rc.d/ejabberd stop sudo /etc/rc.d/mysqld restart sudo /etc/rc.d/ejabberd start
Наслаждаемся! Теперь про сертификат. Делается это просто
cd /etc/ejabberd/ openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout
privkey.pem -out server.pem
после этого вам зададут несколько вопросов (ваш email,cтрана и прочее) После этого выполняем
$openssl rsa -in privkey.pem -out privkey.key cat privkey.key >> server.pem rm privkey.pem mv server.pem ejabberd.pem