пятница, 20 августа 2010 г.

Установка Jabber-сервера Prosody и транспорта Spectrum на Debian VDS

В этой статье попробуем настроить Jabber-сервер Prosody в связке с транспортом Spectrum на VDS под управлением Debian 5 Lenny (о настройке Debian под минимальный тариф VDS читайте в предыдущей статье).

Перед установкой нужно правильно выставить настройки DNS, чтобы все используемые доменные имена вели к IP сервера. В моем случае просто были созданы одна A-запись для домена, где расположен сам сервер и 2 псевдонима для субдоменов под транспорты. Т.е. если вы настраиваете к примеру сервер на example.com, а транспорты на icq.example.com и gtalk.example.com, то все 3 доменных имени должны вести к IP-адресу вашего сервера (для примера возьмем IP-адрес 7.7.7.7). Схематично это будет выглядеть вот так:
example.com -> 7.7.7.7
gtalk.example.com -> 7.7.7.7
icq.example.com -> 7.7.7.7
Это не лучший вариант, но он просто работает. Настройку SRV-записей попробую позже и обязательно опишу процесс в отдельной статье.

1) Подключаем нужные репозитории и импортируем ключи для проверки подлинности пакетов. Растолкаем их в отдельные файлы, чтобы не засорять основной конфиг:
# echo "deb http://packages.prosody.im/debian stable main" > /etc/apt/sources.list.d/prosody.list
# wget http://prosody.im/files/prosody-debian-packages.key -O- | apt-key add -
# echo "deb http://packages.spectrum.im lenny spectrum" > /etc/apt/sources.list.d/spectrum.list
# wget -O - http://packages.spectrum.im/keys/apt-repository@fsinf.at | apt-key add -
# apt-get update
2) Устанавливаем и настраиваем Prosody.
# apt-get install prosody
Дальше открываем конфиг /etc/prosody/prosody.cfg.lua и начинаем править. Строчный комментарий здесь - это два дефиса, т.е. "--" без кавычек.
На сайте Prosody, кстати, есть отличная документация по настройке.
Во-первых, выключаем все ненужные модули. Пока что я оставил только группу "Generally required", а так же модули "uptime" и "posix". Теперь создаем виртуальный хост:
VirtualHost "example.com"
        enabled = true
Учтите, что все опции, идущие после виртуального хоста, относятся только к нему. Глобальные настройки должны идти до виртуальных хостов.

Ну и сразу подготовимся к поддержке транспортов, добавим их в конфиг. Настройки компонентов должны быть в виртуальном хосте (после VirtualHost). Пароли для разных транспортов можно задать разные. Например, для транспортов gtalk и icq настройки будут выглядеть так:
Component "gtalk.example.com"
        component_secret = "ваш-очень-секретный-пароль"
Component "icq.example.com"
        component_secret = "ваш-супер-секретный-пароль"
По-умолчанию сервер принимает соединения от компонентов (транспортов) только на локальном интерфейсе 127.0.0.1, порт 5347.

Сохраняем файл конфигурации. Перезапускаем Prosody:
# /etc/init.d/prosody restart
3) Устанавливаем и настраиваем многопротокольный транспорт Spectrum. Попробуем настроить только протоколы ICQ и Jabber (Gtalk).
Как говорит нам документация по установке Spectrum, чтобы libpurple не установила еще вагон пакетов, ставим сначала минимальную ее версию, а затем уже сам транспорт:
# apt-get install libpurple0-minimal
# apt-get install spectrum
Переходим в папку с настройками Spectrum:
# cd /etc/spectrum
Далее настраиваем ICQ, для Jabber всё делается аналогично, заменяя везде icq на xmpp. Скопируем пример конфига и начнем его правку:
# cp spectrum.cfg.example icq.cfg
# chown root:spectrum icq.cfg
# chmod o-rwx icq.cfg
# nano icq.cfg
В самом простом случае нам нужно изменить только следующие параметры (секция [service]):
  • Сразу после "enable=1" нужно создать строчку
    encoding=CP1251
    Это должно решить проблему с кодировками в ICQ. Для Jabber этого делать не нужно!
  • protocol - задать протокол, с которым будет работать данный экземпляр транспорта (на каждый протокол будет запускаться по экземпляру транспорта). В комментариях написано какие протоколы поддерживает транспорт, нам нужно:
    protocol=icq
  • jid - адрес вашего транспорта (например, icq.example.com), здесь так же можно использовать переменную $protocol, она будет заменена на протокол, определенный выше в этом же файле. Т.е. нам достаточно будет
    jid=$protocol.example.com
  • password - ваш пароль для данного транспорта, вы задали его в конфиге сервера
  • port - если ничего не меняли в настройках сервера, то это будет
    port=5347
В секции [registration] есть несколько интересных параметров
  • enable_public_registration - пригодится, если хотите закрыть регистрацию на данном транспорте для всех, кроме выбранных хостов. По-умолчанию общедоступная регистрация включена.
  • username_label - подпись к полю ввода "логина" на форме регистрации
  • instructions - инструкции на форме регистрации
В секции [features] можно отключить некоторые функции, например, передачу файлов через транспорт.

Протокол xmpp настраивается аналогично, за исключением параметра encoding.

После настройки просто перезапускаем Spectrum:
# /etc/init.d/spectrum restart
А дальше просто открываем в Jabber-клиенте обзор сервисов, вводим доменное имя нашего сервера, регистрируемся на нужных транспортах и пользуемся.

2 комментария:

Mei комментирует...

Дмитрий, спасибо Вам за это руководство. Наконец-то получилось настроить работающий транспорт и сервер, который хранит пользователей и ростер во внешней БД. После двух дней возни с ejabberd, который не хотел работать с мускулом и spectrum, и openfire, не пожелавшим даже показать свою веб-морду, я безмерно Вам благодарен. ^^

Правда libpurple у меня все равно потянула за собой почти 200Мб пакетов, хотя и ставил minimal)

И да, prosody для работы с MySQL требуется liblua5.1-dbi0, которой в свою очередь нужен libmysqlclient15off, по непонятным причинам отсутствующий в репозиториях многих дистрибутивов. К счастью, проблема решаемая. :-)

Фух, выговорился) Еще раз спасибо за эту инструкцию.

Dmitriy.Trt комментирует...

@Mei:
Рад, что статья пригодилась.

Кстати, для поиска старых deb-пакетов есть замечательный сервис http://snapshot.debian.org/