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

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.exe.bk. Викачуємо і встановлюємо необхідний дистрибутив.

Другий підводний камінь — 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"
    
  • Відкриваємо 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.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.