Xmpp server windows server

View interactive steps on GitHub

XMPP Server Download and Installation

  1. Download OpenFire Download
  2. Run the OpenFire installer
  3. A browser window should open to http://localhost:9090/setup/index.jsp
  4. Select a language > Click Continue
  5. Set the XMPP domain name and input the server fully qualified domain name > Click Continue
  6. Select Embedded Database > Click Continue
  7. Select Default on the Profile Settings page > Click Continue
  8. Input an admin email address and password > Click Continue
  9. Click the Login to the admin console button
  10. Login with username admin and the password created previously
  11. Click the Users/Groups tab
  12. Click Create New User in the left navigation menu
  13. Create a username and password for the new user
  14. Follow the steps to create as many users as needed, at least 2 are needed for testing
  15. Click the Start Button > Type Control Panel and select it
  16. Click Windows Defender Firewall
  17. Click Advanced settings in the left navigation menu
  18. Select Inbound Rules > New Rule…
  19. Select Port > Click Next
  20. Select TCP and specify port 5222-5223 > Click Next
  21. Select Allow the Connection > Click Next
  22. Click Next > Name the rule XMPP > Click Finish
  23. Select Outbound Rules > New Rule…
  24. Select Port > Click Next
  25. Select TCP and specify port 5222-5223 > Click Next
  26. Select Allow the Connection > Click Next
  27. Click Next > Name the rule XMPP > Click Finish

Setting Up A XMPP Client

  1. Download Pidgin Portable Download
  2. Run the Pidgin Portable installer
  3. Launch Pidgin Portable
  4. Click Add…
  5. Select XMPP from the protocol dropdown
  6. Input the first username created above along with the XMPP domain setup in OpenFire and the user’s password
  7. Click the Advanced tab > Select Use encryption if available from the Connection security dropdown
  8. Enter the OpenFire fully qualified server name in the server field
  9. Click the Add button
  10. Click Accept on the self-signed certificate popup
  11. Copy the extracted Pidgin Portable folder to another device
  12. Launch Pidgin Portable on the second device
  13. Select Modify Account
  14. Update the username and password to be a different account from the previous device
  15. From one of the devices, select Buddies > Add Buddy
  16. Input the opposite devices username
  17. On the second device accept the message request and the two devices should be able to send and receive instant messages using the OpenFire XMPP server

communication


5 min read

11 Open-source free Solutions to Create Your own XMPP Server

Photo by Volodymyr Hryshchenko / Unsplash

Table of Content

What is XMPP server?

XMPP stands for Extensible Messaging and Presence Protocol which is a set of technologies for instant messaging, audio/ and video communication, team collaboration, online presence information, and multi-party chat.

XMPP works by passing small, structured chunks of XML data between endpoints (clients) via intermediary servers

Many companies in different sectors require XMPP servers to setup collaboration messaging platforms either for their internal teams or for instant client-support.

XAMPP requires a server and a client. The client can be a desktop, mobile, or a web app.

In this article, we offer you a list of open-source XMPP servers which anyone can use to setup his own messaging platform.

28 Open-source free XMPP clients and messengers for Windows, macOS, Linux, Mobile, and the Web

What is XAMPP?XMPP which stands for Extensible Messaging and Presence Protocol is an open-source XML technology for communication. It is the core for audio calls, video calls, online presence, multi-party or multi-user (MUC) chat, and, of course, instant messaging. Why do you need a XAMPP client?Man…

MEDevel.comHamza Musa

Open-source XMPP/Jabber servers

1- Prosŏdy IM

Prosŏdy IM is an open-source Jabber/ XMPP server that you can setup in several minutes.  It comes with a built-in support for several XMPP (XEPs) extensions.

Prosŏdy IM server is a modular system, and offers a long list of core and community modules. Developers can also build their own custom modules with the help of the developer-friendly documentation and community.

2- Openfire

Openfire is a free, open-source cross-platform XMPP server. It is written with Java technologies and released under Apache 2.0 License.

Openfire is a real time collaboration (RTC) server licensed under the Open Source Apache License. It uses the only widely adopted open protocol for instant messaging, XMPP (also called Jabber). Openfire is incredibly easy to setup and administer, but offers rock-solid security and performance.

ejabberd is a distributed, fault-tolerant technology that allows the creation of large-scale instant messaging applications. The server can reliably support thousands of simultaneous users on a single node and has been designed to provide exceptional standards of fault tolerance. As an open source technology, based on industry-standards, ejabberd can be used to build bespoke solutions very cost effectively.

The ejabberd is fully XMPP-compliant, has an XML-based protocol, and supports several protocols.

Unlike many other XMPP servers, The ejabberd server is an administrator-friendly system that comes with a comprehensive web administration system, admin-oriented command-line tools (CLI), and runs on Windows, Unix, and Linux systems.

The ejabberd server is yet another free, open-source community powered XMPP server.  It is a robust, and massively scalable Messaging Platform (XMPP, MQTT, SIP Server)

4- MongooseIM

MongooseIM is a robust, scalable and efficient XMPP server at the core of an Instant Messaging platform aimed at large installations.

MongooseIM is originally built for enterprise, and can accept client sessions over vanilla XMPP, REST API and SSE, as well as Websockets and BOSH (HTTP long-polling).

5- Metronome

Metronome started off as a fork of  Prosody IM, but now it offers more enterprise-grade and developer-friendly features.

Beyond its awesome features, it offers a detailed documentation, for setup, configuration, and admin managements.

6- Jackal

Jackal is a new Instant messaging server for the Extensible Messaging and Presence Protocol (XMPP), written in Go programming language.

Jackal is a highly customizable server, and supports enforced SSL/TLS, stream compression with (zlib), caching with Redis and works on Linux and macOS.

7- M-Link

The M-Link User Server is Isode’s core Instant Messaging and Presence server based on the XMPP (eXtensible Messaging and Presence Protocol) standard. Its feature set makes it ideal for deployments where security, reliability and special functionality are vital as well as for large public deployments.

M-Link supports Swift XMPP client, BOSH (XEP-0124: Bidirectional-streams Over Synchronous HTTP) which is a mechanism to operate XMPP over HTTP, supports archive, search, and offers a full MUC (Multi-User Chat) access control.

8- Tigase XMPP Server

Tigase XMPP Server is our flagship server software writen in Java to build Instant Communication (IC) systems. The most basic explanation is that Tigase is a chat server, but it is so much more than just that.

It supports push notification, message forwarding, and comes with full mobile support and a built-in strong abuse protection.

With Tigase XMPP, you don’t need to worry about audit logging, so it is an ideal solution for the EU countries because its built-in Audit-log mechanism that comply with the GDPR.

9- JabberD

JabberD XMPP Server or Jabber open-source server 2.x, is a custom XMPP server that aims for stability, and extensibility.  

JabberD is a built with C programming language so, it is resources-effective and can work seamlessly on Raspberry Pi and OpenWRT router.

JabberD is also a distributed, which means you may run multiple instances of jabberd component processes to distribute load across machines

JabberD comes with dozens of XMPP extension protocols, which you can view at their websites.

10- Vines

Vines is an XMPP chat server that supports thousands of simultaneous connections, using EventMachine for asynchronous IO. User data is stored in a SQL database, CouchDB, MongoDB, Redis, the file system, or a custom storage implementation that you provide.

LDAP authentication can be used so usernames and passwords are not stored in the chat database. SSL encryption is mandatory on all client and server connections.

11- The aenigma XMPP server

https://github.com/openspace42/aenigma

Despite it is shutting down, and suggesting Matrix and Riot.IM as an alternative, The aenigma server is still the XMPP server choice by many teams around the world.

The system is originally based on the EJabberd XMPP server, and it is compliant with all of its features and protocols.

The aenigma server is an easy to deploy, and comes with dozens of extended features for easier administration and more enhanced security.

However, keep in mind that the project is shutdown.


Final note

Here we listed the best and usable open-source free XMPP servers that you can use to build your chat network. If you know of any other open-source server that we missed, let us know.

28 Open-source free XMPP clients and messengers for Windows, macOS, Linux, Mobile, and the Web

What is XAMPP?XMPP which stands for Extensible Messaging and Presence Protocol is an open-source XML technology for communication. It is the core for audio calls, video calls, online presence, multi-party or multi-user (MUC) chat, and, of course, instant messaging. Why do you need a XAMPP client?Man…

MEDevel.comHamza Musa

Время на прочтение4 мин

Количество просмотров9.9K

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.

Под катом чисто техническая статья про настройку 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-аутентификация. Про формирование ростера (списка контактов и групп) читайте в следующем псто.

Рассмотрим установку сервера ejabberd на компьютеры под управлением ОС Windows в стандартной конфигурации для использования в локальной сети с открытым доступом из Интернет и с использованием службы DynDNS.

Предполагается, что у Вас уже установлена операционная система, настроен доступ в Интернет, а доменное имя на DynDNS (допустим, это будет myjabber.ath.cx) указывает на внешний адрес Вашего компьютера (либо тот, который доступен из Вашей локальной сети, если Вы настраиваете сервер без возможности подключения к нему из Интернета).

Первым делом скачайте программу-установщик на свой компьютер, сделать это можно на официальном сайте Process One на странице загрузки. После скачивания запустите файл и приступайте к установке.

Установка сервера[править]

После запуска установщика первым делом появится диалог выбора языка. Выберите русский и нажмите «OK«. Запустится мастер установки, который поможет выполнить Вам все необходимые шаги. Во время работы мастера Вам придется ответить на следующие вопросы:

  • Принятие лицензионного соглашения. Ejabberd распространяется на условиях лицензии GPL.
  • Каталог для установки программы. Здесь будут находиться основные исполняемые файлы сервера и файлы конфигурации, а также база данных пользовательских аккаунтов под названием Mnesia.
  • Доменное имя сервера. Как уже говорили выше, пусть это будет myjabber.ath.cx.
  • Логин администратора. Вместе с доменным именем он составит Jabber ID администратора сервера.
  • Пароль администратора.
  • Вариант конфигурации сервера. Кластеры используются только на высоконагруженных серверах, поэтому отвечаем «Нет«.

После ответа на эти вопросы начнется процесс установки, во время которого будут выполнены основные настройки сервера. После установки сервер займет на диске около 15 Мб. Для окончания установки осталось выполнить лишь несколько шагов.

  • Выбираем язык

  • Запуск мастера установки и настройки

  • Знакомимся с лицензионным соглашением

  • Выбираем каталог для установки

  • Вводим домен сервера

  • Вводим логин администратора

  • Вводим пароль администратора

  • Выбираем тип конфигурации сервера

  • Установка сервера

  • Установка завершена

Запуск сервера[править]

Сервер добавляет себя в список сервисов системы, но не запускается автоматически. Для запуска в ручном режиме сделайте двойной щелчок по ярлыку «Запустить ejabberd» на рабочем столе, а для запуска сервера при старте системы измените в «Панель управления -> Администрирование -> Сервисы» тип запуска сервиса ejabberd с «Ручной» на «Автоматический«.

Если при попытке запуска сервера возникает следующее сообщение об ошибке:

Starting ejabberd...
./ejabberdctl: erl.exe: can't execute: (14001) Error 14001

There is a problem starting Erlang.
If the error you see is 14001, you need to install:
  Microsoft Visual C++ 2005 SP1 Redistributable Package
You can download that installer from www.microsoft.com
You can also check the ejabberd Administrator Guide

то потребуется дополнительно установить Microsoft Visual C++ 2005 SP1, скачать его можно с официального сайта Microsoft.

После успешного запуска сервера откроется информационная веб-страница в браузере.

Панель администратора и клиент, подключенный к серверу

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

Используя свой администраторский аккаунт, Вы можете выполнять некоторые административные функции прямо из своего Jabber-клиента, например, можно создавать новые учетные записи и просматривать список подключенных пользователей. Эти функции доступны через браузер сервисов. Также становятся доступны стандартные функции администратора — рассылка массовых сообщений для всех пользователей и установка так называемого «Сообщения дня».

Кроме того, Вы можете получить доступ к веб-интерфейсу, через который можно управлять настройками сервера и смотреть статистику.

Авторизация в панели администратора

Этот интерфейс доступен на Вашем компьютере по адресу http://localhost:5280/admin. Для авторизации введите в поле «Пользователь» полный Jabber ID администратора, а в поле «Пароль» — пароль, введенный Вами при установке сервера.

Ссылки[править]

  • Настройка ведения логов в конференции

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Этот компьютер не отвечает требованиям к системе для windows 11 процессор не поддерживается
  • Color notes for windows
  • Как убрать при загрузке виндовс второй вариант загрузки windows 10
  • Ворд установить бесплатно для windows 10 на русском бесплатно
  • Установка пароля на сетевую папку windows 10