Pull to refresh

Установка jabber сервера prosody 0.9.7 в ос семейства Windows

Reading time 4 min
Views 9.5K
Prosody — это легковесный кроссплатформенный XMPP-сервер, написанный на языке программирования Lua. На хабре есть несколько статей по настройке prosody в стандартном варианте — в linux. Настройка в windows содержит несколько подводных камней, о которых я постараюсь рассказать.



Сперва расскажу о плюсах и минусах данного решения. Плюсы: экстремальная легковесность.



На скриншоте — типичное потребление ресурсов prosody+служебной утилиты srvany, которую я использовал для создания службы. Ещё к плюсам можно отнести модульность и поддержку многих XEP.
И минусы: отсутствие GUI (для кого-то это не минус), для настройки под windows нужно поработать напильником. Настройка под windows сложнее аналогичной настройки под linux.

Первый подводный камень ожидает нас уже на этапе скачивания дистрибутива. Для windows можно скачать, как инсталлятор, так и просто архив с prosody. Дело в том, что все до единого bat-файлы содержат строчку

if exist Uninstall.exe set datastore=%APPDATA%\Prosody

Это значит, что если найден деинсталлятор, то все данные сервера будут храниться в %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):
    instsrv.exe Prosody "C:\Program Files (x86)\Windows Resource Kits\Tools\srvany.exe"
    
  • Открыв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-серверу из интернета.
  • Можно использовать самоподписанный сертификат. При первоначальном подключении к такому серверу клиенты, обычно, выдают множественные предупреждения.
    Генерация самоподписанного сертификата
    Использовать prosodyctl для генерации сертификата в windows мы не можем, т.к. эта утилита не портирована. Необходимо
    • скачать openssl для windows
    • Указать конфигурационный файл openssl.cnf из поставки prosody (лежит в папке cert). Для этого необходимо открыть командную строку и выполнить следующее (указав свой путь):
      set OPENSSL_CONF=C:\Program Files (x86)\Prosody\certs\openssl.cnf
      
    • Перейти в директорию с распаковынным openssl и сгенерировать сертификаты:
      openssl req -new -x509 -days 1825 -nodes -out "prosody.crt" -newkey rsa:2048 -keyout "prosody.key"
  • Можно просто отключить модуль tls (хоть он и помечен, как generally required) или не указывать путь к сертификатам в конфигурационном файле. Это подойдёт для небольшого корпоративного офиса.

Если вы настраиваете корпоративный сервер, то вам понадобится включить модуль groups для общего ростера.
Необходимо раскомментировать соответствующую строчку в конфиге для того, чтобы загружать модуль groups при старте сервера, подготовить текстовый файл с описанием групп и указать путь к файлу:

modules_enabled = {
  -- Other modules
  "groups"; -- Enable mod_groups
}
groups_file = "groups.txt"

Создадим groups.txt в поддиректории data. Если вы планируете использовать кириллицу, то правьте файл с помощью notepad++ или любого другого продвинутого текстового редактора в режиме UTF-8. Следующий пример файла взят из официальной документации:

    [Support Team]
    support@example.com
    john.doe@example.com
    
    [Development Team]
    hardworkingdeveloper@example.net=Joe Coder
    other.dev@example.com=Mel

Здесь есть один нюанс. Пользователи каждой группы видят только тех, кто входит в эту же группу. О других случаях официальная документация молчит. Взглянув на исходный код модуля видно, что если поставить + перед названием группы, то она становится общей — эту группу видят все.

    [+Support Team]
    support@example.com
    john.doe@example.com
    
    [+Development Team]
    hardworkingdeveloper@example.net=Joe Coder
    other.dev@example.com=Mel

Добавлять в группу можно даже несуществующих на данный момент пользователей.

Во время конфигурации можно запускать prosody из стартового скрипта prosody.bat для проверки результата. Запускайте скрипт от администратора во избежание проблем. После окончательной настройки запустите созданную ранее службу prosody. Управлять prosody на ходу можно, используя модули admin_adhoc и admin_telnet.
Tags:
Hubs:
+3
Comments 2
Comments Comments 2

Articles