Установка Jabber сервера в Linux (jabber icq linux)
Ключевые слова: jabber , icq , linux , (найти похожие документы )
From: Захар Акулов <hozzzar at kirov dot lug dot ru>
Newsgroups: http://kirov.lug.ru
Date: Sun, 20 Mar 2008 17:02:14 +0000 (UTC)
Subject: Установка Jabber сервера в Linux
Оригинал: http://kirov.lug.ru/wiki/JabberServerInstallHowto?v=qtx
Как установить Jabber-сервер
By Suramya Tomar <http://www.suramya.com> ;
Перевод на русский: Захар Акулов <hozzzar at kirov dot lug dot ru>
1.0 Введение
Если вам не пришлось провести последние несколько лет вашей жизни
в пещере, то вы наверняка слышали о сервисах мгновенных сообщений
(Instant Messaging, IM - прим. пер.) и о том, как они изменили
мир общения в Интернете. Согласно http://www.webopedia.com , сервис
мгновенных сообщений - это служба, предупреждающая пользователей
о появлении их друзей или коллег в сети и позволяющая им общаться
в реальном времени через частные каналы. Два наиболее популярных
сервиса - это [23] AOL Instant Messenger (AIM) и [24] MSN Messenger.
К сожалению, большинство наиболее доступных серверов используют
проприетарные протоколы, допускающие общение только с пользователями
той же самой системы. Эти системы несовместимы между собой и не
доступны для разных клиентов.
Jabber - это открытая реализация IM-сервера, способного это изменить.
Он использует потоковые протоколы XML, которые свободны, открыты
и публичны. Эти протоколы были формализованы организацией Internet
Engineering Task Force (IETF) как испытанные для мгновенных сообщений
и утверждены технологии под названием XMPP. Первые технологии Jabber
были разработаны Джереми Миллером (Jeremie Miller) в 1998 году
и теперь используются по всему миру на тысячах серверов для того,
чтобы миллионы пользователей могли общаться друг с другом.
По сравнению с коммерческими IM-серверами Jabber-сервер имеет огромное
преимущество в том, что, поскольку он открыт, любой может запустить
Jabber-сервер для обслуживания, например, работы компании или компании
приятелей. В этой статье я описал шаги, которые я сделал, чтобы
установить Jabber-сервер и как мне удалось преодолеть те трудности,
с которыми я столкнулся. Надеюсь, это поможет вам установить свой
собственный сервер.
2.0 Предварительная настройка
Перед компиляцией сервера нам для повышения безопасности понадобится
внести некоторые изменения в систему, на которой мы установим сервер.
Первое, что нам придется сделать - это создать нового пользователя
для того, чтобы процесс сервера Jabberd не был запущен от рута.
Это настоятельно рекомендуется, поскольку процесс сервера, запущенный
от рута есть крайне плохая идея.
Наверное, вам интересно, что может произойти? Ну, представьте себе
ситуацию: в коде Jabber-сервера найдена ошибка, вызывающая
переполнение буфера. И до выпуска исправлений к коду некто,
ненавидящий вас за то, что вы заняли его место в пятизвездочном
кафетерии узнает, что ваш сервер уязвим и решает атаковать его.
А поскольку ваш сервер запущен от рута, то вы находитесь во власти
хакера, так как он имеет полный контроль над сервером и может делать
с ним все, что ему заблагорассудится. С другой стороны, если бы ваш
сервер работал от другого пользователя, хакеру пришлось бы приложить
массу усилий для того, чтобы получить права рута и он непременно
бы оставил в вашей системе какие-то следы, которые помогли бы вам
его поймать. Что, я вас убедил? Нет? Ну, тогда это - ваши проблемы...
(В оригинале буквально - <<это ваши похороны...>> - прим. пер.)
Для того, чтобы добавить пользователя для сервера, наберите от рута:
adduser jabber
Затем выберите пароль для новой учетной записи:
passwd jabber
После изменения пароля нам понадобится создать каталог, где процесс
jabberd будет хранить логи и pid'ы. Сделаем это, набрав следующие
команды:
mkdir -p /usr/local/var/jabberd/pid/
mkdir -p /usr/local/var/jabberd/log/
Теперь нам нужно изменить права доступа к этим каталогам для того,
чтобы пользователь jabber мог записывать в них:
chown -R jabber:jabber /usr/local/var/jabberd/pid/
chown -R jabber:jabber /usr/local/var/jabberd/log
2.1 Получение Jabber-сервера
Jabber - это проект Open Source и поэтому существуют различные
реализации Jabber-сервера. Список некоторых из них доступен на [25]
http://www.jabber.org/software/servers.shtml. Я решил использовать
реализацию сервера Jabberd 2.x, так как у меня уже был исходный
код сервера на моем компьютере. Кроме того, из-за недавнего взлома
серверы Jabber Studio не работали и, пока выяснялось, что произошло,
загрузки файлов была недоступны.
К счастью, когда вы это прочтете, их машины уже должны быть в порядке
и вы сможете получить последнюю версию Jabberd с их сайта.
2.2 Установка Jabber
Первое, что мы должны сделать после получения исходного кода,
это распаковать его:
tar -zxf jabberd-2.0s2.tar.gz
Затем сменим рабочий каталог:
cd jabberd-2.0s2
Большое количество опций Jabbber-сервера можно настроить
в предварительной конфигурации. Для того, чтобы посмотреть
на доступные опции, наберите:
./configure --help
Я решил использовать установки по умолчанию, и я просто набрал:
./configure
Как только скрипт закончит работу без ошибок, мы можем продолжить
и скомпилировать программу с помощью make. Затем войдем в систему
как рут (Существует прекрасная программа sudo, пожалуйста, используйте
ее! - прим. пер.) и установим ее с помощью
make install
По умолчанию jabberd использует для хранения своих данных MySQL,
поэтому нам придется установить новую базу данных, к которой jabberd
имел бы доступ. В исходниках jabberd в подкаталоге "tools" есть
скрипт, который весьма облегчит вам эту работу. Просто наберите:
mysql -u root -p < tools/db-setup.mysql
Наберите пароль администратора MySQL, когда вам это будет предложено.
(Еще раз напоминаю про sudo! - прим. пер.) Этот скрипт создаст новую
базу данных в том виде, который необходим для работы jabber-сервера.
По завершении работы скрипта нам будет нужно создать пользователя
jabberd2 в MySQL для того, чтобы jabberd мог работать с базой данных.
Это можно сделать следующей командой:
mysql -u root -p
Теперь, когда вам будет предложено, наберите пароль суперпользователя,
(sudo! sudo! sudo! - прим. пер.) и вы увидите приглашение командной
строки MySQL. Наберите следующую команду:
GRANT select,insert,delete,update ON jabberd2.* to jabberd2
at localhost IDENTIFIED by 'examplepassword';
заменив "examplepassword" на пароль по вашему выбору. Запустив
эту команду, наберите exit для выхода из программы. Установка сервера
закончена. Теперь нам нужно настроить сервер для использования.
2.3 Настройка jabberd-сервера
Чтобы настроить сервер, нам придется перейти в католог jabberd:
cd /usr/local/etc/jabberd/
Затем мы должны подредактировать (от рута) файл sm.xml:
* Откройте sm.xml в вашем любимом текстовом редакторе
* Измените значение ID сети с localhost на jabber.yoursite.com,
предварительно убедившись в том, что в настройках сети корректно
указаны параметры подключения к DNS-серверу.
* Найдите раздел 'User Options' и раскомментируйте
тег <auto-create/>. Это позволит незарегистрированным
пользователям самостоятельно регистрироваться в системе.
* Если вы хотите, чтобы уже существующий список пользователей
был доступен всем новым пользователям, раскомментируйте в конце
файла:
<roster>/usr/local/etc/jabberd/templates/roster.xml</roster>.
Скоро мы подойдем к содержанию файла roster.xml.
Закончив редактирование, сохраните sm.xml и покиньте редактор. Теперь
нам нужно поправить файл c2s.xml, поэтому:
* Откройте c2s.xml в вашем любимом текстовом редакторе
* Найдите раздел 'Local network configuration' и измените <id>
с localhost на jabber.yoursite.com
* Сохраните изменения и выйдите из редактора
Настройка сервера завершена. Мы получили базовый jabber-сервер,
позволяющий пользователям регистрироваться в системе и разговаривать
между собой. Однако если мы хотим иметь возможность создавать
чат-румы, нам придется установить дополнительную программу
mu-conference. Это не займет у нас много времени.
2.4 Создание списка пользователей по умолчанию
jabberd дает нам возможность создавать <<шаблонные>> списки
пользователей, так что каждый новый пользователь получает список
по умолчанию. Это может быть очень полезно в случаях, когда
администратор хочет знать наверняка то, что каждый пользователь
получит список всех <<нужных>> людей и ему не придется тратить массу
времени для редактирования этого списка вручную.
Файл шаблона хранится в подкаталоге "templates" и называется
roster.xml. Файл имеет следующий вид:
<query xmlns='jabber:iq:roster'>
<!--
<item name='Buddy Name' jid='[email protected] ' subscription='both'>
<group>BuddyGroup</group>
</item>
-->
</query>
Чтобы добавить необходимых пользователей, нужно раскомментировать
тег <item name> и добавить новую строку для каждого пользователя.
Например, если вы хотите добавить в список по умолчанию меня и если
бы мой JID (Jabber ID) был [26] [email protected] , то вход
для пользователя с моим именем выглядел бы так:
<item name='Suramya' jid='[email protected] ' subscription='both'>
<group>Support</group>
</item>
Поле групп указывает клиенту, в какой группе предполагается хранить
каждую учетную запись. В этом случае учетная запись пользователя
Suramya хранится в группе "Support". Все записи должны быть заключены
между тегами <query> </query>, так что полный файл с единственным
пользователем выглядел бы так:
<query xmlns='jabber:iq:roster'>
<item name='Suramya' jid='[email protected] ' subscription='b
oth'>
<group>Support</group>
</item>
</query>
2.5 Установка сервера mu-conference
Перед установкой mu-сервера необходимо установить Jabber Component
Runtime(JCR), который можно получить здесь:
http://jabber.terrapin.com/JCR/jcr-0.1.2.tar.gz. Выполните
следующие шаги:
* Загрузите исходный код: wget http://jabber.terrapin.com/JCR/jcr-0.1.2.tar.gz
* Распакуйте его: tar -zxf jcr-0.1.2.tar.gz
* Смените рабочий каталог: cd jcr-0.1.2
* Скомпилируйте jcr: make
После успешной компиляции jcr мы можем продолжить установку
mu-conference:
* Загрузите отсюда исходный код mu-conference source в каталог jcr
* Распакуйте архив: tar -zxf mu-conference-0.6.0.tar.gz
* Скопируйте main.c в каталог src: cp src/main.c
mu-conference-0.6.0/src
* Скопируйте jcomp.mk в каталог src: cp src/jcomp.mk
mu-conference-0.6.0/src
* Перейдите в исходный каталог mu-conference: cd
mu-conference-0.6.0/src
* Скомпилируйте mu-conference: make -f jcomp.m
* Скопируйте бинарный файл mu-conference, созданный в каталоге
jabberd: cp mu-conference /usr/local/bin
* Скопируйте конфигурационный файл в каталог настроек jabberd: cp
../muc-jcr.xml /usr/local/etc/jabberd/
Теперь нам нужно настроить mu-conference редактированием файла
muc-jcr.xml:
* Откройте muc-jcr.xml в вашем любимом редакторе
* Измените поля name и host на conference.yoursite.com
* Добавьте <user>jabberd</user> перед строкой 'secret'
* Измените строки spool, logdir и pidfile на:
/usr/local/var/jabberd/spool
/usr/local/var/jabberd/log
/usr/local/var/jabberd/pid
* Создайте каталог spool: mkdir -p /usr/local/var/jabberd/spool/
Настройка сервера mu-conference окончена и теперь мы готовы
его запустить.
2.5 Запуск сервера Jabberd
Чтобы стартовать сервер, наберите в командной строке:
* Войдите в систему пользователем jabber: su jabber
* Запустите сервер jabberd: /usr/local/bin/jabberd &
* Запустите сервер mu-conference: /usr/local/bin/mu-conference -c
/etc/jabberd/muc-jcr.xml &
3.0 Заключение
Надеюсь, я избавил вас от кучи неприятных сюрпризов, рассказав,
как легко и быстро установить jabberd-сервер. Если этот документ помог
вам или у вас есть какие-либо комментарии или вопросы, пожалуйста,
не стесняйтесь обращаться ко мне. Однако я должен вас предупредить,
что я слегка ленив, поэтому могу ответить на ваше письмо не сразу.
4.0 Document Information/History
Created by: Suramya Tomar
Last updated: 14th February 2005
4.1 Copyright
This document is Copyright © 14th July 2005, Suramya Tomar.
It is released to the public under the [30] Creative Commons
Attribution-ShareAlike 1.0 License
4.2 Благодарности
В этом разделе я с удовольствием представляю вам людей, без которых
этот документ, возможно, никогда не увидел бы свет:
* Создателей и мэйнтейнеров сайта http://www.jabber.com , откуда
я собрал информацию
* Alf Eaton за описание шагов, которые он предпринял для запуска
Jabber conference
* Renny Koshy за то, что разрешил мне установку Jabber-сервера
на его машине
* Matt Hoskins и Kevin Walsh за то, что пробудили мой интерес
к Линукс
* Моим друзьям и моей семье за то, что терпели меня, пока я трудился
над этим документом.
1 , Uri (?? ), 12:14, 11/04/2008 [ответить ]
+ /–
Описанное в стотье - тривиально! Гораздо интереснее узнать как сделать shared roster из лдапа. Вот из-за этой фичи пришлось в своё время отказаться от jabberd'а и использовать openfire.
2 , Darkmike (? ), 16:49, 08/02/2012 [ответить ]
+ /–
А может ли этот сервер управлять пользователями через скрипты или HTTP (как в ejabberd или openfire)?
Меня интересует регистрация новых пользователей с использованием скриптов.
4 , Слоним (? ), 23:27, 07/11/2017 [ответить ]
+ /–
На ejabberd поднял личный jabber сервер vkarmane.by :)
Есть веб-клиент - jabber.vkarmane.by =)
Клевый сервер!