- Установка ejabberd под Windows
- Установка сервера
- XMPP Servers
- XMPP Software
- The XSF is generously sponsored by:
- Установка jabber сервера prosody 0.9.7 в ос семейства Windows
- Установка и настройка Jabber-сервера
- Содержание
- Подготовка
- Компьютер
- Интернет
- Практика
- Регистрация доменного имени
- Установка и настройка программы-сервера
- Jabber (XMPP) + Windows + SSO, часть 1
Установка ejabberd под Windows
Рассмотрим установку сервера ejabberd на компьютеры под управлением ОС Windows в стандартной конфигурации для использования в локальной сети с открытым доступом из Интернет и с использованием службы DynDNS.
Предполагается, что у Вас уже установлена операционная система, настроен доступ в Интернет, а доменное имя на DynDNS (допустим, это будет myjabber.ath.cx) указывает на внешний адрес Вашего компьютера (либо тот, который доступен из Вашей локальной сети, если Вы настраиваете сервер без возможности подключения к нему из Интернета).
Первым делом скачайте программу-установщик на свой компьютер, сделать это можно на официальном сайте Process One на странице загрузки. После скачивания запустите файл и приступайте к установке.
Установка сервера
После запуска установщика первым делом появится диалог выбора языка. Выберите русский и нажмите «OK«. Запустится мастер установки, который поможет выполнить Вам все необходимые шаги. Во время работы мастера Вам придется ответить на следующие вопросы:
- Принятие лицензионного соглашения. Ejabberd распространяется на условиях лицензии GPL.
- Каталог для установки программы. Здесь будут находиться основные исполняемые файлы сервера и файлы конфигурации, а также база данных пользовательских аккаунтов под названием Mnesia.
- Доменное имя сервера. Как уже говорили выше, пусть это будет myjabber.ath.cx.
- Логин администратора. Вместе с доменным именем он составит Jabber ID администратора сервера.
- Пароль администратора.
- Вариант конфигурации сервера. Кластеры используются только на высоконагруженных серверах, поэтому отвечаем «Нет«.
После ответа на эти вопросы начнется процесс установки, во время которого будут выполнены основные настройки сервера. После установки сервер займет на диске около 15 Мб. Для окончания установки осталось выполнить лишь несколько шагов.
XMPP Servers
An XMPP server provides basic messaging, presence, and XML routing features. This page lists Jabber/XMPP server software that you can use to run your own XMPP service, either over the Internet or on a local area network.
Note: The following software was not developed by the XMPP Standards Foundation and has not been formally tested for standards compliance, usability, reliability, or performance.
See something missing? Any list of XMPP servers, clients or libraries will, due to the dynamic and evolving nature of the XMPP market, be out of date almost as soon as it’s published. If you spot mistakes, errors or omissions in the table below, please submit a pull request!
Project Name | Platforms |
---|---|
AstraChat | Linux / macOS / Solaris / Windows |
Isode M-Link | Linux / Windows |
jackal | Linux / macOS |
Metronome IM | Linux |
MongooseIM | Linux / macOS |
Openfire | Linux / macOS / Solaris / Windows |
Prosody IM | BSD / Linux / macOS |
XMPP Software
The XSF is generously sponsored by:
This site is organized in the open on GitHub. Suggest changes.
Установка jabber сервера prosody 0.9.7 в ос семейства Windows
Prosody — это легковесный кроссплатформенный XMPP-сервер, написанный на языке программирования Lua. На хабре есть несколько статей по настройке prosody в стандартном варианте — в linux. Настройка в windows содержит несколько подводных камней, о которых я постараюсь рассказать.
Сперва расскажу о плюсах и минусах данного решения. Плюсы: экстремальная легковесность.
На скриншоте — типичное потребление ресурсов prosody+служебной утилиты srvany, которую я использовал для создания службы. Ещё к плюсам можно отнести модульность и поддержку многих XEP.
И минусы: отсутствие GUI (для кого-то это не минус), для настройки под windows нужно поработать напильником. Настройка под windows сложнее аналогичной настройки под linux.
Первый подводный камень ожидает нас уже на этапе скачивания дистрибутива. Для windows можно скачать, как инсталлятор, так и просто архив с prosody. Дело в том, что все до единого bat-файлы содержат строчку
Это значит, что если найден деинсталлятор, то все данные сервера будут храниться в %APPDATA% запустившего сервер пользователя. Это не то, что нам нужно, поэтому, для того, чтобы хранить данные там же, где хранится всё остальное, нужно либо использовать дистрибутив с архивом вместо инсталлятора, либо переименовать после инсталляции файл uninstall.exe, например, в uninstall.bkp.exe. Скачиваем и устанавливаем необходимый дистрибутив.
Второй подводный камень — prosody под windows не имеет службы. Будем считать, что вас не устраивает каждый раз для запуска prosody логиниться под пользователя и запускать bat-файл prosody.bat. Для создания службы prosody я предлагаю использовать утилиту srvany, входящую в Windows Server 2003 Resource Kit Tools. Даже если ОС на вашем сервере будет отличаться от server 2003, srvany должна нам помочь.
- Устанавливаем resource kit, соглашаемся с предупреждениями о несовместимости с ОС, если они будут.
- Открываем командную строку cmd от имени администратора, выполняем следующее (вставьте свой путь к srvany):
- Открывaем regedit, идём в «HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Prosody«
- Создаём раздел «Parameters«.
- В разделе «Parameters» создаём строковый параметр «Application» со значением «C:\Program Files (x86)\Prosody\prosody.bat» (подставьте свой путь).
Служба создана, можно выставить ей тип запуска «автоматически«. Внимание! Остановить созданную таким образом службу нельзя, для остановки завершите процессы srvany и lua. До тех пор, пока не сделаны все настройки, службу запускать не надо.
Настроим prosody. Для этого запустим bat-файл editconfig.bat. Все опции документированы, я не буду описывать всю настройку досконально. Документация по модулям может быть найдена на официальном сайте.
Рекомендуется использовать tls для шифрования сессий. Есть несколько вариантов настройки tls:
- Можно получить бесплатный сертификат на год у StartCom. Если вы планируете открыть доступ к jabber-серверу из интернета.
- Можно использовать самоподписанный сертификат. При первоначальном подключении к такому серверу клиенты, обычно, выдают множественные предупреждения.
Необходимо раскомментировать соответствующую строчку в конфиге для того, чтобы загружать модуль groups при старте сервера, подготовить текстовый файл с описанием групп и указать путь к файлу:
Создадим groups.txt в поддиректории data. Если вы планируете использовать кириллицу, то правьте файл с помощью notepad++ или любого другого продвинутого текстового редактора в режиме UTF-8. Следующий пример файла взят из официальной документации:
Здесь есть один нюанс. Пользователи каждой группы видят только тех, кто входит в эту же группу. О других случаях официальная документация молчит. Взглянув на исходный код модуля видно, что если поставить + перед названием группы, то она становится общей — эту группу видят все.
Добавлять в группу можно даже несуществующих на данный момент пользователей.
Установка и настройка Jabber-сервера
Требования для работы и процедура установки собственного сервера Jabber являются не такими сложными, как это кажется непосвящённому. Jabber не сильно требователен к ресурсам, поэтому сервер для него возможно устроить практически где угодно. Сложность в установке не превышает сложности установки типичного веб-форума, а местами и ещё проще.
Содержание
Подготовка
Компьютер
Для работы сервера Jabber вполне достаточно старенького компьютера с процессором с тактовой частотой 500 МГц, размером оперативной памяти 128 Мб и жёстким диском 4 Гб. Разумеется, возможно использовать и более мощные компьютеры. Если вы планируете хранить историю сообщений на сервере, потребуется более объемистый жесткий диск. Можно установить Jabber-сервер и на машину, которая уже работает как сервер, это не повредит другим программам, как вы можете догадаться. А можно использовать свой настольный компьютер, если вы не выключаете его на ночь. Ниже приведены наиболее оптимальные применения для основных Jabber-серверов:
- Ejabberd — наиболее универсальный вариант, рекомендуется. Сервер поддерживает кластеризацию. У сервера высокая отказоустойчивость
- Jabberd — старые компьютеры с низкой вычислительной мощностью
- Prosody — персональный сервер с низкой нагрузкой. Простой в настройке, но не отличается стабильной работой при высокой нагрузке. Нет кластеризации.
- Openfire — предприятия. Прост в настройке, но из-за виртуальной машины java потребляет много ресурсов.
Подробнее смотрите в статье «Выбор сервера»
Интернет
Возможно сделать так, чтобы к вашему серверу можно было подключиться не только из локальной сети или предприятия. Но не каждый провайдер позволяет своим клиентам использовать собственный сервер в интернете. Для работы сервера нужно, чтобы ваше подключение к интернету было с так называемым «публичным», или «белым» адресом IP. Проверить его наличие можно с помощью этой инструкции. Также желательно, чтобы этот IP-адрес был фиксированным, чтобы к нему можно было легко привязать доменное имя. Все эти проблемы отпадут сами собой, если вы используете сервер VPS или Dedicated от поставщика услуг хостинга — они всегда подразумевают предоставление в ваше распоряжение фиксированных «белых» IP. Наконец, важным фактором является стабильность подключения — проблемы со стороны сервера сказываются на всех подключённых пользователях одновременно.
Практика
Регистрация доменного имени
Как уже было сказано раньше, для работы jabber-сервера необходимо обзавестись доменным именем. Конечно, в крайнем случае можно обойтись и без него, но, согласитесь, вряд ли вам захочется видеть и использовать Jabber ID вида «vasya@169.254.96.124» или «petya@2001:470:0f3b:28fa::1«. Поэтому последним шагом перед, собственно, установкой сервера будет регистрация собственного доменного имени, тем более сделать это так просто! Подробнее об этом, а также о привязке домена к IP-адресу своего сервера читайте в статье «Регистрация доменного имени». Возможно использование и динамического адреса.
Установка и настройка программы-сервера
Подготовив «железо» для будущего сервера, подключив его к сети и привязав к нему доменное имя в этой сети, можно переходить непосредственно к установке необходимого программного обеспечения. Ниже приводятся подробные инструкции для упомянутых трех популярных серверов в варианте для двух операционных систем — семейства юниксоподобных ОС (в частности дистрибутивов GNU/Linux и BSD) и Windows. Если у вас нет особых причин использовать Windows для сервера — мы рекомендуем в качестве основы взять GNU/Linux, как более защищенную и стабильно работающую платформу.
Jabber (XMPP) + Windows + SSO, часть 1
Под катом чисто техническая статья про настройку Jabber-сервера под Linux и клиентов к нему под Windows с одновременным прикручиванием формирования контакт-листа из AD LDAP с SSO-авторизацией посредством Kerberos.
Сперва небольшой обзор имеющихся доступных решений.
Как ни странно, из актуальных Jabber-серверов SSO / GSSAPI поддерживают все три: eJabberd, Openfire, Prosody. Первый я не осилил ввиду зубодробительности erLang-а. Точнее, в дефолтной конфигурации его запустить как раз плюнуть (спасибо дистростроителям). Но вот если надо прикрутить что-то эх-такое, чего изначально не было предусмотрено в конструкции, возникает дикая попа-боль. Второй весьма user-friendly, большинство фич работают из коробки. Но это Java со всеми вытекающими. В частности, даже банальное подсовывание SSL-сертификата сразу превращается в увлекательнейший траходром. Третья лишена большинства недостатков первых двух, но она отвратительно (точнее, почти вообще никак) не документирована и не масштабируется. В том плане, что до 100. 150 пользователей работает ОК, потом начинает тупить, тормозить и валиться. Конкретно мне больше и не надо, поэтому я взял в качестве сервера Prosody. О ней и пойдет дальнейший разговор.
Касаемо клиентов. Всего хоть как-то GSSAPI под виндой сейчас поддежривают: Miranda, Psi, Spark, Pidgin.
Miranda хороша-красива, когда «обвешана». На «голую» (без плагинов) без слёз не взглянешь. Если же надо обновить версию, то «обвес» придётся формировать заново. Она не enterprise-friendly. Она глючновата в плане интерфейса. Может, например, почему-то не показать поступившее входящее сообщение. Может обвалиться после очередного обновления винды. Не проверяет SSL-сертификат сервера на валидность. Одним словом, мы попробовали, попользовались, нам не понравилось.
Что касается Psi, то для реализации GSSAPI там надо самостоятельно собирать Qt-шную библиотеку под названием qca-wingss. Готового бинарника я ожидаемо не нашёл, а скопилировать самостоятельно ниасилил.
Spark — это опять же Java, со всеми вытекающими. Кто желает, может пользовать. Меня от неё тошнит.
Остался Pidgin. Но и тут всё не слава богу. Во-первых, последняя виндовая версия, которая ещё умеет GSSAPI — это 2.10.11. В более свежих поддержку GSSAPI/SSPI выпилили (это касается только виндовых сборок; под линуксом всё нормально). Во-вторых, на клиентские машины нужно дополнительно ставить MIT Kerberos for Windows. Берут здесь. В более-менее «стандартной» конфигурации каких-то дополнительных настроек не требуется, в не совсем типичных случаях его тоже потребуется «подкрутить».
Окей, с выбором софта более-менее разобрались. Теперь некоторые неочевидные нюансы. Полностью процесс «от А до Я» расписывать не буду. Потому что в энторнетах есть некоторое количество хаутушек, да и админ, взявшийся за подобную задачу, наверняка уже обладает некоторыми навыками и компетенцией. Расскажу о том, во что «влетел» конкретно я.
Что касается сервера. Документация к нему не отличается точностью и полнотой. Там есть определённая путаница. Следует учитывать, что до версии 0.8 данный механизм был реализован в модуле «mod_saslauth» через прокладку в виде saslauthd. После версии 0.8 функционал был перенесён в отдельный модуль «mod_auth_cyrus», а saslauthd больше не нужен. То есть пакет «sasl2-bin» можно и не ставить, а руководствоваться нужно вот этой статьёй.
Далее. Как всегда, требуется сформировать в системе правильный конфиг «/etc/krb5.conf» и сгенерировать keytab. И самое главное, prosody должна иметь доступ на чтение и к тому, и к другому. Если вовремя не вспомнить, что в Debian-е по умолчанию она запускается из-под отдельного непривилегированного пользователя, то могут возникнуть весьма трудно диагностируемые проблемы и странные совершенно неинформативные фатальные ошибки в логах.
Кроме того, если в том же OpenFire функционал импорта пользователей из AD реализован «из коробки», то в случае c Prosody его придётся колхозить самостоятельно, ручками. Это не так уж и сложно, но это нужно сделать. Об этом я напишу во второй части.
Теперь что касается клиента.
Pidgin-а ставим как обычно, но не свежее версии 2.10.11. С MIT Kerberos никаких премудростей нет, обычный wizard типа «xyяк, xyяк и в продакшн» «next, next и готово». На последнем шаге он спросит, надо ли автоматически стартовать при логине пользователя и надо ли сразу получать Kerberos-тикеты. Ответ: нет, не надо. Впрочем, на самом деле пофиг. Будет работать и так, и так.
В самом Pidgin-е в настройках аккаунта указываем только логин, имя домена и ресурс. Поле «пароль» оставляем пустым. Примерно так.
Если по условию задачи Kerber-осовский Realm совпадает с Jabber-овым доменом, то больше никаких действий предпринимать не нужно. Всё заведётся, пользователь успешно залогинится. В противном случае придётся совершить ещё ряд небольших шаманств.
Во-первых, сделать текстовый файл с названием «krb5.ini» по аналогии с линуксовым «krb5.conf» с указанием KDC и сопоставлением сущностей «domain» и «realm». Чтобы оно понимало, из какого Realm-а запрашивать ключи для того или иного домена и где вообще искать KDC (Key Distribution Center). Упомянутый «krb5.ini» следует положить либо в «c:\windows», либо в профиль пользователя (по желанию админа). Во вторых, после неудачной попытки залогиниться нужно назначить «Default Ticket» прямо в интерфейсе MIT Kerberos (на скриншоте обвёл синим прямоугольником). Это требуется сделать ровно один раз. Возможно, данную настройку можно выполнить и через реестр. Не знаю, настолько глубоко не ковырял.
Как-то так и настраивается SSO-аутентификация. Про формирование ростера (списка контактов и групп) читайте в следующем псто.