Как установить jabber на linux

Обновлено: 06.07.2024

Рассмотрим установку сервера ejabberd на компьютеры под управлением одного из дистрибутивов GNU/Linux для использования в локальной сети с открытым доступом из Интернет и с использованием службы DynDNS.

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

Ejabberd может быть установлен на ваш сервер различными способами. Опишу три по убыванию предпочтительности:

  1. Установка из репозитория/портов. Идеальный по оптимизации и самый простой вариант.
  2. Сборка из исходного кода. Если этого пакета нет в репозиториях к вашему дистрибутиву, но очень хочется, чтобы сервер был оптимизированным и работал без ошибок - засучиваем рукава и переходим к соответствующему разделу. Тут вам понадобятся некоторые знания о Linux и/или помощь гуру.
  3. Предварительно собранные бинарные файлы с инсталлятором. Вариант весьма прост, но вряд ли оптимизирован именно под ваш дистрибутив.

Далее подробно рассмотрены эти варианты.

Содержание

Установка из репозитория

Дистрибутивов Linux великое множество, и нет никакой возможности рассмотреть детали установки в каждом из них. Упомянем наиболее популярные (предполагается наличие прав root):

openSuSE 11.4

Потом установим сервер:

Fedora

По умолчанию нужный репозиторий обычно подключен.

Debian-based дистрибутивы (Debian, *Ubuntu и другие)

Ejabberd входит в основную ветку репозитория, поэтому для установки просто скомандуйте:

Gentoo

Для установки ejabberd в Gentoo GNU/Linux выполните команды

Сборка из исходников

Рассмотрим сборку stable-версии ejabberd-2.0.5.

Для начала нужно, чтобы на сервере был установлен компилятор gcc и необходимые библиотеки (включая devel-части). Проверьте, есть ли у вас:

  • GNU Make
  • GNU C compiler (GCC)
  • libexpat 1.95 или выше
  • OpenSSL 0.9.6 или выше
  • Zlib 1.2.3
  • GNU Iconv 1.8 или выше
  • flex/yacc

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

Для простоты операций будем работать пользователем root в его домашнем каталоге. Не забудьте потом прибраться.

Итак, нам нужен исходный код ejabberd. Идём на официальный сайт и выбираем, что нужно. Лучше выбирать stable версию, но если вы очень любите новые фишки и не боитесь нестабильной работы, то берите beta, testing или SVN версии.

Я выбрал stable-версию 2.0.5 и скачал её:

Ещё нам понадобится свеженький Erlang - это компилятор языка, на котором написан ejabberd. Если Erlang есть в вашем репозитории, то лучше воспользоваться им. Если нет - покажу, как собрать его из исходных кодов.

Как программист, не удержусь от пояснения, зачем было использовать этот с виду громоздкий и неудобный язык. Он громоздок и неудобен действительно лишь с виду, для написания программ вроде hello world, однако предоставляет прекрасный инструментарий многопоточного и распределённого программирования. Это позволит вам единожды написанную и собранную программу использовать на огромных кластерах, состоящих из машин любой архитектуры, в которые будет проще простого добавить новые вычислительные мощности. Даже Java не обладает подобными возможностями. Именно поэтому ejabberd считается одним из самых быстрых и масштабируемых серверов протокола XMPP.

Но довольно лирики.

Если у вас наличествуют все инструменты, библиотеки и исходные коды, приступим.

Создадим временный каталог для наших сборок:

erlang

В моём случае скачанный архив называется otp_src_R13B01.tar.gz. Распаковываем его во временный каталог:

Переходим в каталог и собираем erlang:

Конечно же, следим за процессом, а не просто набираем команды. Программа сборки может сообщить об ошибке, но не каждый error или warning означает неисправимую ошибку. Например, процесс конфигурирования (команда configure) может сообщить, что не нашла компилятора java, библиотек odbc и wx, но это не является ошибкой. Просто соответствующие части erlang-а будут отключены. Перечисленные библиотеки нам не понадобятся для работы ejabberd.

После сборки вернёмся в домашний каталог командой cd.

ejabberd

В моём случае архив называется ejabberd-2.0.5.tar.gz. Распаковываем его во временный каталог:

Переходим в каталог с исходниками и собираем ejabberd:

После всех этих манипуляций все нужные файлы разложены согласно традициям UNIX/Linux. Конфиги, в частности,- в /etc/ejabberd. Скрипт запуска - /sbin/ejabberdctl - отрабатывает команду start, что позволяет сразу добавить в rc.d, хотя лучше всё же написать правильный скрипт управления службой согласно правилам вашего дистрибутива.

Установка готовых бинарников

Рассмотрим установку stable-версии 2.0.5 для 32-битного Linux. Для начала нужно скачать инсталлятор:

Далее следуйте указаниям программы установки.

Настройка

А дальше надо настроить сервер: что делать при загрузке, какие модули использовать, какие порты прослушивать, и т.п.

Настройка сервера сводится к редактированию файла конфигурации /etc/ejabberd/ejabberd.cfg (путь показан на примере Debian GNU/Linux, в других дистрибутивах или при самостоятельной сборке из исходных кодов путь может отличаться). Откройте этот файл от пользователя root в любом удобном для Вас текстовом редакторе, после чего найдите следующие строки:

В первом параметре задается Jabber ID администратора, а во втором - доменное имя сервера. Приведите эти строки примерно к такому виду:

В данном случае JID администратора задан admin@myjabber.ath.cx, а имя сервера, как уже условились выше - myjabber.ath.cx.

Теперь в том же файле найдите строки

и замените deny на allow - без этого пользователи сервера не смогут регистрироваться напрямую из своего Jabber-клиента.

Обзор Jabber клиентов для Linux, FreeBSD и Mac OS и других систем

Jabber клиент для linux

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

Описание будет кратким, только основные возможности и особенности программ, ссылка на официальный сайт.

Программа разрабатывается с использованием открытых исходных кодов и распроcтраняется под лицензией GPL. Использует библиотеку Qt4, благодаря чему доступна для разных операционных систем, таких как Windows, GNU/Linux, BSD и Mac OS X. На данный момент является одним из самых популярных клиентов.
Дополнительные возможности Psi

* Статусы и автостатус
* Всплывающие уведомления
* Уведомления о печати
* Прослушиваемая мелодия
* Настроение
* Управление закладками
* GPG-шифрование
* Управление транспортами
* Управление аккаунтами
* Хранение профиля (настроки, история и др.) в любом месте диска, в том числе на флешке.

Pidgin

Kopete

Особенности
* Мультиплатформенный
* Мультипротокольный: Jabber/XMPP, Google Talk, ICQ and AIM (Oscar), Yahoo! Messenger and Microsoft Messenger (MSN)
* GUI-toolkit Qt 3.х
* GPL
* Для работы в MS Windows требуется установка MinGW

В силу использования Qt этот клиент похож внешне на Psi.
Есть порт для FreeBSD.

Tkabber

Gajim

Gajim это свободный мессенджер для протокола Jabber, написанный на языке Python, и использующий GTK+. Он запускается в операционных системах GNU/Linux, BSD и Microsoft Windows. Название Gajim — это рекурсивный акроним для Gajim is a jabber instant messenger (Gajim — это мессенджер для Jabber). Рекомендуется для использования пользователями GNOME.

Для работы в операционной системе Mac OS X Gajim требует X11.app.

Coccinella

Не поддерживает одновременное использование нескольких аккаунтов и пока что не полностью русифицирована.

Лицензия
* у бета-версии коммерческая бесплатная
* По выходу релиза будет свободная

Для загрузки бета-версии требуется «инвайт» (код доступа), распространяемый по цепочке пользователей и в форумах. Например, на Хабрахабре была опубликована ссылка для получения инвайта.

Jabbim

Jabbim отличается простотой, удобством, оригинальностью интерфейса, но в то же время и функциональностью. Имеет поддержку плагинов и стилей оформления.

Spark

Mcabber

Mcabber — это консольный Jabber-клиент, основанный на ncurses. Распространяется под лицензией GNU GPL. Mcabber включает в себя такие функции как: поддержка SSL, история переписки (конференции), автодополнение команд, возможность создания собственных команд (триггеров), также возможность проверки орфографии с использованием aspell. Mcabber работает на следующих платформах: GNU/Linux, FreeBSD, NetBSD, Mac OS X и Cygwin.

Adium

Adium — универсальный мессенджер-клиент для Mac OS X-систем, который поддерживает множество протоколов, и выпущен под лицензией GNU GPL. Использует libpurple, библиотеку Pidgin, поэтому поддерживает те же самые протоколы. На данный момент является лучшим многопротокольным клиентом для Mac OS X, а среди Jabber клиентов с ним может сравниться только Psi

На мой взгляд лучший клиент под Mac OS

iChat

Возможности
* Мультисетевой клиент:
o XMPP
o AIM / ICQ
o MSN
o Yahoo
o Bonjour Intranet Messaging (аналог MS Sharing у MacOS)
o Lotus Sametime
o Novell Groupwise
o Zephyr
* Видеоконференции

Данный клиент является частью операционной системы MacOS X.

2 комментария to “Обзор Jabber клиентов для Linux, FreeBSD и Mac OS и других систем”

[…] . Jabber . . Linux, FreeBSD ? Mac OS ? . . … […]

[…] любым удобным для вас jabber-клиентом под *NIX или Windows. Метки: chat, […]

Jabber клиент для linux

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

В данной статье мы попробуем разобраться, что же такое Jabber и в чём заключаются его основные преимущества в сравнении с аналогами, типа ICQ, MSN, AIM, Yahoo и т.д. Кроме того, мы рассмотрим ряд основных бесплатных интернет-пейджеров для unix-подобных операционных систем.

Jabber клиент для linux


Jabber

Для удобного общения в системе Jabber существуют специальные интернет-пейджеры, так называемые, клиенты Jabber. К сожалению, некоторые из них являются коммерческими, то есть платными, однако есть неплохие бесплатные клиенты Jabber для Linux, MacOS и FreeBSD и других unix-подобных систем.

Psi — интернет-пейджер, который был разработан с применением открытых исходных кодов. Распространяется данный продукт под лицензией GPL. Данный Jabber клиент доступен для разных операционных систем. Интерейс этого интернет-пейджера представлен на различных языках включая русский. Основные возможности данного приложения — это работа с несколькими аккаунтами, настройки приватности, поддержка различных плагинов и других функций.

Jabber клиент для linux


PSI

Pidgin. Раньше этот клиент назывался Gaim. Данный Jabber интернет-пейджер представляет собой модульный мультиплатформенный клиент с открытыми исходными кодами. Интерфейс поддерживает множество языков, в том числе, и русский. Внешне Pidgin очень схож с Google Talk. Особенностью этого клиента является возможность объединения нескольких контактов одного человека в один.

Jabber клиент для linux

Pidgin


Google Talk. Это продукт всемирно известной компании Google. Данный клиент использует протокол XMPP и дает возможность общения с другими пользователями службы Jabber. К основным особенностям и преимуществам гугловского мессенджера можно отнести возможность работы в окне браузера, поддержку голосового общения, а также тесное взаимодействие клиента с почтовой службой Gmail. Данное приложение имеет не очень впечатляющий интерфейс и небольшой набор инструментов.

Jabber клиент для linux

Gajim. Программа представляет собой свободный интернет-пейджер для протокола Jabber, который написан на языке Python, и использует GTK+. Приложение работает в операционных системах Microsoft Windows и GNU/Linux, BSD. Для запуска в операционной системе Mac OS X Gajim требует X11.app.

Jabber клиент для linux


Gajim

Я.Онлайн. Эта программка является детищем компании "Яндекс". Её основная особенность заключается в интеграции с почтовыми сервисами, а также некоторыми другими службами компании. К примеру, этот Jabber клиент может сообщить вам об автомобильных пробках на улицах вашего города, поведать о погоде на ближайшие несколько дней, а также уведомить о том, что в вашем почтовом ящике появилась свежая корреспонденция. Кроме того, самая последняя версия приложения содержит в себе механизм отслеживания событий учетной записи пользователя в самых известных социальных сетях, таких как "Однокласники" и "Вконтакте". Jabber клиент Я.Онлайн может работать не только с операционной системой Windows, но и с Mac OS X и Linux.

Jabber клиент для linux


Я. Онлайн

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

Несмотря на обилие современных мессенджеров вроде Telegram, WhatsApp, Viber и других, многие компании отдают предпочтение проверенным и независимым решениям. Да, тот же Telegram функционально почти идеален, но его «тёрки» с РКН резко уменьшают возможности его применения, ведь нужно поднимать VPN или использовать прокси. Потому «в седле» остаётся Jabber.

На этой платформе есть немало корпоративных чатов, однако для их работы неизбежно требуется серверная часть, которую зачастую разворачивают на собственных мощностях компании. Потому сегодня речь пойдёт о том, как установить и настроить Jabber-сервер на Ubuntu 18.04.

Установка Jabber-сервера в Ubuntu 18.04

Этот вариант сервера наиболее универсален на сегодня. Он поддерживает кластеризацию и имеет высокую отказоустойчивость. При этом разработчики ещё и снабдили его всеми способами установки под Linux вообще и Ubuntu в частности. Рассмотрим их по порядку.

Вариант 1. Установка eJabberd с помощью скрипта (рекомендуется разработчиками)

Идём на официальный сайт ejabberd и скачиваем файл Linux x86 64-bits Intel Installer (прямая ссылка на него).

Можно это сделать в браузере или в терминале. В последнем случае вводим такую команду:

Папку можете указать свою, NewFileName — ваше имя файла.

Назначаем ему права на выполнение:

Дальше почти классический Windows-way — выбираем язык (русский есть), кликаем кнопку Forward (да, русский есть, но кнопки не перевели), вводим нужные данные и запускаем установку.

По окончании её на рабочем столе появляются два ярлыка: «Запустить eJabberd» и «Остановить eJabberd».

Запускаем сервер первым симлинком (в терминале — ./bin/ejabberdctl). Затем в браузере вводим адрес:

Вводим имя и пароль и попадаем в админку. Там уже можно добавлять и удалять пользователей, создавать группы и прочее. Если во время установки что-то пошло не так, можно просто удалить каталог eJabberd. Он находится по адресу, который вы указали при установке. В моём случае это /home/user/ejabberd-18.06/. Там же есть скрипт удаления.

Вариант 2. Установка eJabberd из репозитория

Это нужно на случай, если установка идёт на Ubuntu без графической среды. Для установки открываем терминал и вводим команду:

sudo apt install ejabberd

Вводим пароль, подтверждаем У и ждём. Процесс установки недолгий, минута-две.

Добавляем пользователя с правами администратора:

sudo ejabberdctl register admin localhost PASSWORD

sudo ejabberdctl register admin 192.168.10.170 PASSWORD

После установки необходимо сконфигурировать сервер. В терминале вводим:

sudo nano /etc/ejabberd/ejabberd.yml

Это файл конфигурации сервера, в нём выполняются все настройки. Добавляем адрес, на котором будет «крутиться» сервер. В нашем случае это localhost. Если нужен внешний адрес, указываем и его.

Указываем, что администрировать его будет пользователь admin:

Добавим поддержку русского зыка:

После этого записываем изменения Ctrl + O и закрываем Ctrl + X. После чего перезапускаем сервер. На всякий случай можно и демона перезапустить.

sudo service ejabberd restart

sudo /etc/init.d/ejabberd restart

Открываем браузер и идём по адресу:

Там вводим логин и пароль, после чего попадаем в админку.

Вариант 3. Установка eJabberd из deb-пакета

Ещё один способ установки. На сей раз из штатного deb-пакета. Причём, скажу сразу, что нормально установить его с помощью Ubuntu Software или Gdebi не получится. Только терминал, только хардкор!

Скачиваем его с сайта. Или в браузере, или с помощью терминала:

Затем в терминале переходим в папку с пакетом:

И запускаем установку:

sudo dpgk -i ejabberd_18.06-0_amd64.deb

В процессе на рабочем столе появятся ярлычки запуска и остановки сервера. Важно! При такой установке она производится в папку opt, а не etc как при установке из репозитория. Наиболее важные папки там — bin и conf. В первой находятся пусковые файлы, во второй — настройки.

Как и ранее, открываем файл ejabberd.yml, но с учётом пути:

sudo nano /opt/ejabberd/conf/ejabberd.yml

Вводим там, как и ранее:

Указываем, что администрировать его будет пользователь admin:

Добавим поддержку русского зыка:

sudo ejabberdctl register admin localhost PASSWORD

sudo service ejabberd restart

sudo /etc/init.d/ejabberd restart

Открываем браузер и идём по адресу:

Там вводим логин и пароль, после чего попадаем в админку.

Вариант 4. Установка Prosody

Ещё один сервер для Jabber. Для начала устанавливаем сервер базы данных MySQL. В терминале вводим:

sudo apt install mysql-server

Нажимаем У, соглашаясь с установкой. Затем устанавливаем сам Prosody. Его можно установить напрямую из репозитория Ubuntu 18.04, однако последняя версия расположена в отдельном репозитории. В терминале вводим:

Этим мы переходим в режим суперпользователя. Рекомендуется некоторые операции выполнять в нём, поскольку обычный режим sudo иногда не срабатывает.

Затем устанавливаем сам сервер:

apt update && apt install prosody lua-dbi-mysql lua-sql-mysql lua-sec

После добавляем данные в базу:

create database prosody;

Настройка производится в одном файле. Он находится в /etc/prosody/ и называется prosody.cfg.lua. В терминале вводим:

sudo nano /etc/prosody/prosody.cfg.lua

В открывшемся файле редактируем нужные нам параметры. После этого сохраняем их Ctrl + O и закрываем файл Ctrl + X.

Устанавливаем пакет Mercurial, он потребуется для клонирования на локальный сервер модулей Prosody из репозитория.

sudo apt install mercurial

Меняем разрешения для папок и файлов, чтобы система могла получить доступ к модулям:

chgrp -R prosody prosody-modules

chmod -R 770 prosody-modules

Затем перезапускаем сервер:

sudo prosodyctl restart

После этого в браузере должна стать доступна страница

Вариант 5. Установка Openfire

Сначала устанавливаем Java. В терминале выполняем:

sudo add-apt-repository ppa:webupd8team/java

sudo apt update

Это установит Java-машину на Ubuntu. Затем скачиваем Openfire с сайта. Это можно сделать в браузере или через терминал.

Во втором случае вводим:

После скачивания в терминале переходим в папку, куда мы скачали пакет. По умолчанию это Downloads. Вводим:

И выполняем команду:

sudo dpkg -i openfire_4.2.3_all.deb

Важно! Через штатный установщик и Gdebi нормально не ставится, потому лучше через терминал.

Соглашаемся с предложениями (переход по пунктам в терминальном режиме осуществляется кнопкой Tab).

Выбираем русский язык и прочие настройки. По окончании вводим данные для админа системы и авторизуемся с ними.

Открываем браузер и вводим адрес вида:

В моём случае это IP виртуальной машины, в вашем может быть иной адрес, обычно совпадающий с адресом сервера. 9090 — стандартный порт, на который стучится админ. 9091 — защищённый порт. Рекомендуется их сменить.

Выводы

В целом, установка Jabber-сервера не должна вызвать особых затруднений. Есть решения для разных задач. Тот же eJabberd максимально универсален и не требует ничего лишнего, однако это наиболее объёмный и монструозный инструмент. Prosody попроще и полегче, однако базу к нему придётся ставить отдельно. Наконец, Openfire хотя и крутится на Java, но при этом в настроенном виде весьма неплох, а также не пугает собственно процессом конфигурации. Всё делается в браузере.

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

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

Что такое jabber и xmpp?

jabber сервер

Теперь переходим к вопросу наиболее актуальному для большинства пользователей. А именно к применению клиентских приложений использующих протокол XMPP.

Но перед тем как использовать месенджеры, нужно позаботиться о шифровании и ключах шифрования. Утилит умеющих решать этот вопрос довольно много. Наверно самыми распространенными можно считать GPA и gpg4usb. Принцип их использования одинаковый, поэтому я покажу, что нужно делать на примере утилиты GPA. В некоторые дистрибутивы Linux она установлена по-умолчанию (например Parrot OS), или ее можно установить:

После первого запуска GPA сразу предложит создать новый ключ. Соглашаемся и у нас спросят имя, адрес электронной почты (можно указать рандомный) и будет предложено создать резервную копию ключа (можно создать и приныкать где-нибудь в надежном месте). И финальным этапом нужно придумать пароль ключа.

GPA

Из Jabber-клиентов, лично мне, больше всего нравится PSI+, поэтому начну именно с него. У него есть клиенты для Windows, MacOS и Linux. Но мы, по понятным (надеюсь) причинам, будем рассматривать варианты для Linux.

Для начала устанавливаем:

Если, вдруг, ты используешь дистрибутив Linux в репозиториях которого нет PSI+, то его можно добавить:

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

psi+

psi+

psi+

Шифрование в PSI+

Pidgin

Начинаем с установки:

При первом запуске нам, также предложат создать новую учётную запись, где нужно указать имя пользователя и домен где хотим зарегистрироваться. После этого соглашаемся с самоподписаным сертификатом и придумываем имя пользователя и пароль.

pidgin

pidgin

Для начала конфиденциальной беседы нужно подтвердить личности с использованием OTR. Причём сделать это должен каждый собеседник. В обоих, рассматриваемых нами приложениях, это делается одинаково. Нужно нажать на кнопку OTR и выбрать способ подтверждения, а именно существует три способа:

PGP шифрование

Но, мы можем пойти дальше и, если оба абонента будут использовать Psi+, то ещё и включить шифрование PGP. После чего обменяться публичными ключами. Это обеспечит нам максимальный уровень защищенности переписки. Даже если переписку вдруг получится перехватить или сервер взломают, наши разговоры расшифровать всё равно не получится.

psi+

Для того чтобы всё это заработало, каждый из участников разговора должен нажать кнопку включения PGP (показано на рисунке). А потом нажать кнопку обмена публичными ключами. Теперь включено шифрование. Что, совместно с подтверждением личности, и использованием OTR, даёт нам очень высокий уровень безопасности переписки. Пожалуй, наверно, максимально возможный уровень защиты разговора.

А мы плавно переходим к использованию Jabber на мобильных телефонах.

Jabber на iOS и Android

Для iOS, вполне обычная практика сделать приложение платным или разрешить использовать только аккаунты на сервере разработчиков приложения. Ну и про открытый исходный код можно только мечтать. Но если всё-таки очень хочется, на мой взгляд оптимальный вариант это JabMe. Конечно чересчур просто, нет вообще никаких настроек, но зато быстро и бесплатно.

Как запустить свой Jabber-сервер

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

Запускать и настраивать мы будем Openfire, это, как по мне, оптимальное решение. Установка и запуск достаточно простые, а ещё он имеет приятный и интуитивно понятный графический интерфейс, что само по себе прекрасно.

Что касается операционной системы, то самым логичным вариантом будет какое-нибудь серверное решение, например Ubuntu Server.

Теперь ставим серверные приколюхи, а именно Apache, PHP, MySQL:

По поводу MySQL нужно отметить, что в Openfire есть встроенная база данных и можно, в принципе, использовать и её, но внешняя база данных гораздо производительнее. Поэтому мы будем использовать MySQL и следующим шагом настраиваем её, а именно создаём базу, назначаем права и так далее:

Динамический IP и jabber-сервер

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

Оптимальным вариантом решения этого вопроса будет использование утилиты ddclient. Которая будет, с заданным интервалом проверять наш внешний IP и если он изменится, автоматически будет обновлять IP у нашего хоста (мы его сейчас создадим).

dyndns

Устанавливаем ddclient и зависимости:

Он в процессе установки будет задавать вопросы. Как ты на них ответишь особо не важно, потому что все настройки мы после отредактируем вручную. Для этого открываем файл /etc/ddclient.conf и в нём вписываем такие строки:

Сохраняем изменения, перезапускаем демона и можем проверить что бы он работал:

Что бы убедится что IP обновляется можно заглянуть в логи:

Установка Openfire

Не забудь чекнуть последнюю версию. Устанавливаем и проверяем чтобы работало:

Теперь нужно импортировать базу данных:

Настройка сервера Openfire

openfire jabber

Вводим доменное имя, которое мы зарегистрировали в DynDNS, порты оставляем без изменений:

openfire jabber

openfire

И переходим к настройке самой базы данных. В выпадающем списке выбираем MySQL, в графе URL базы данных вписываем:

имя пользователя и пароль вписываем те, которые вводили при создании базы данных:

openfire jabber

openfire

openfire jabber

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

На этом, пожалуй, можно заканчивать. Но не забывай возвращаться, ведь нам нужно изучить ещё очень много. А пока я пишу для тебя новую статью, можешь почитать про логи и журналирование в Linux, точно будет не лишним.

Подготовка сервера

1. Системные требования

Требования к программному продукту, в основном, программные:

Компонент Требования
Операционная система Приложение является кроссплатформенным и его можно установить на различные операционные системы — Windows, Linux (CentOS, Ubuntu, Debian, Red Hat и так далее), FreeBSD, MacOS.
Программная платформа Openfire разработан на базе JAVA, поэтому необходимо наличие соответствующей платформы.
СУБД Поддерживаются MySQL/MariaDB, PostgreSQL, MS SQL Server, Oracle Database, IBM DB2, Adaptive Server Enterprise, HSQLDB (встраиваемая).
Аппаратная часть Не критична — openfire не требует много ресурсов для своей работы.

2. Безопасность

Если мы используем фаервол на Ubuntu, то необходимо открыть порты для Openfire (9090, 9091) и клиента xmpp (5222):

iptables -A INPUT -p udp --match multiport --dports 9090,9091 -j ACCEPT

iptables -A INPUT -p tcp --match multiport --dports 5222,9090,9091 -j ACCEPT

apt-get install iptables-persistent

Установка JAVA

Openfire написан на языке JAVA и для своей работы требует установки соответствующей платформы.

В Ubuntu данную установку можно выполнить из репозитория — для этого вводим команду:

После окончания установки можно ввести команду:

Она должна вернуть, примерно, следующее:

18.04-b08)
OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)

Для корректной работы JAVA мы должны настроить переменные окружения — для этого смотрим путь до бинарника java:

update-alternatives --config java

Мы должны увидеть что-то на подобие:

. и добавляем новой строкой:

После выполняем команду:

Проверяем, что переменная создалась:

Мы должны увидеть:

Загрузка и установка пакета для Openfire

Для установки XMPP-сервера необходимо загрузить пакет DEB — для этого переходим на официальную страницу загрузки Openfire. В открывшемся окне выбираем загрузку приложения для Linux и переходим по ссылке для загрузки deb:

Переходим к загрузке последней версии Openfire

Копируем ссылку на последнюю версию Openfire

Воспользовавшись ссылкой, загружаем установочный пакет:

* в данном примере мы сохраним скачанный файл под именем openfire.x86_64.deb. На момент написания инструкции последняя версия была 4.5.1.

Устанавливаем скачанный пакет:

dpkg -i openfire.x86_64.deb

Разрешаем автозапуск сервиса:

systemctl enable openfire

Настройка базы данных

В качестве СУБД установим и настроим MariaDB.

Установка MariaDB и коннектора для JAVA

Для установки сервера баз данных вводим:

apt-get install mariadb-server

Переходим к скачиванию mysql-коннектора для java

На следующей странице копируем ссылку на скачивание коннектора:

Копируем ссылку на последнюю версию mysql-коннектора для java

С помощью скопированной ссылки загружаем на сервер пакет:

* в данном примере мы загружаем коннектор версии 8.0.19.

. и устанавливаем его:

dpkg -i mysql-connector-java_8.0.19-1ubuntu18.04_all.deb

Разрешаем автозапуск сервиса:

systemctl enable mariadb

Зададим пароль для mysql root-пользователя:

mysqladmin -u root password

* система дважды запросит пароль, который мы должны задать.

Создание и настройка базы для Openfire

Подключаемся к установленной базе:

* в качестве пароля вводим тот, что задали при установке.

Создаем базу данных:

> CREATE DATABASE openfire;

* мы создадим базу с именем openfire.

Создаем пользователя и дадим ему права на созданную базу:

* в данном примере будет создан пользователь openfire, которому можно подключаться с локального компьютера (localhost); доступ пользователю будет предоставлен на базу openfire; пароль пользователя — openfirepass.

Подключимся к созданной базе:

. и загрузим в нее данные из файла openfire_mysql.sql (поставляется с Openfire):

Чтобы убедиться в загрузке данных, выполняем команду:

* мы должны увидеть список таблиц.

Отключаемся от СУБД:

Установка Openfire

Выбираем русский язык и нажимаем Continue:

Выбираем русский язык

В настройках задаем серверу имя домена и полное имя сервера:

Имя сервера и домен

. и кликаем по Продолжить.

Устанавливаем Стандартное подключение к базе данных — Продолжить:

Стандартное подключение к базе данных

Задаем настройки подключения к базе:

Настройка подключения к базе данных

* в данном примере мы:

  1. Выбрали подключение к базе MySQL
  2. В строке jdbc:mysql://HOSTNAME:3306/DATABASENAME?rewriteBatchedStatements=true&characterEncoding=UTF-8&characterSetResults=UTF-8 заменили
    • HOSTNAME — сервер MySQL. Задаем локальный адрес 127.0.0.1
    • DATABASENAME — имя базы данных. Прописываем openfire.
    • + добавили &useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC — в противном случае сервер будет выдавать ошибку при попытке подключиться к базе.
    • Итого:jdbc:mysql://127.0.0.1:3306/openfire?rewriteBatchedStatements=true&characterEncoding=UTF-8&characterSetResults=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
  3. В настройках имени пользователя и пароль прописываем логин и пароль пользователя, который создавали для подключения к базе openfire (openfire/openfirepass).

После кликаем по Продолжить. На следующей странице задаем настройки профиля — просто оставляем положение по умолчанию и нажимаем Продолжить:

Профили пользователя

* если нам необходима интеграция с Active Directory, переключаемся на Сервер каталогов (LDAP) и выполняем настройку по инструкции ниже.

На последнем шаге создаем учетную запись администратора. Для этого вводим адрес почты и пароль:

Создание административной учетной записи

. и нажимаем Продолжить.

Чтобы зайти в openfire используем логин admin и пароль, который задали после установки Openfire.

Установка и подключение клиента

Для примера, установим jabber-клиент Spark, который разработан тем же разработчиком, что и сам Openfire. Переходим на страницу загрузки Spark и скачиваем клиента, например, для Windows:

Загрузка клиента Spark

Дожидаемся загрузки файла и устанавливаем приложение, отвечая на вопросы мастера установки (можно оставить все по умолчанию).

После запускаем программу - кликаем по Дополнительно (1) - снимаем галочку Автоматически найти сервер и порт (2) и прописываем адрес сервера (3) - устанавливаем галочки для Accept all certificates. и Disable certificate hostname verification . (4) - OK (5):

Настройка клиента Spark

Вводим данные для входа на сервер и нажимаем Войти:

. клиент должен подключиться к серверу.

Установка плагинов

Установка плагина может быть выполнена из панели управления Openfire. Для этого переходим в Плагины - Доступные плагины - выбираем плагин для установки, например Bookmarks (плагин для хранения URL и закладок группового чата):

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

Справа от плагина кликаем по кнопке установки плагина:

Кнопка установки плагина

Система автоматически загрузит и установит плагин.

Интеграция с Active Directory

Интеграция с Active Directory должна настраиваться в момент веб-установки сервера. Если у нас уже установлен Openfire, и мы хотим переключиться на использование LDAP, открываем конфигурационный файл:

systemctl restart openfire

Ждем секунд 10 (приложение перезапускается долго).

Переключение на сервер каталогов при настройке профилей

1) Откроется страница настройки профилей LDAP. Заполняем поля:

Настройка LDAP в Openfire

  • Из списка Тип сервера выбираем Active Directory.
  • Protocol выбираем либо ldap, либо ldaps (если наш Active Directory поддерживает запросы с шифрованием).
  • В качестве хоста прописываем имя контроллера домена или целиком весь домен.
  • База DN — корневая директория LDAP, откуда будет выполняться поиск объектов.
  • Администратор DN — учетная запись в LDAP с минимальными правами (на чтение объектов AD). Правильнее всего создать отдельную запись и использовать ее.

Кликаем по Тестовые настройки — мы должны увидеть отчет об успешном прохождении тестирования:

Проверка подключения к Active Directory

2) Нажимаем Сохранить и продолжить — откроется страница с настройками полей и атрибутов. Данные атрибуты должны соответствовать атрибутам Active Directory. В моем случае пришлось заменить jpegPhoto на thumbnailPhoto и homePostalAddress на physicalDeliveryOfficeName. Правильные атрибуты можно посмотреть в оснастке Active Directory - пользователи и компьютеры (на вкладке Редактор атрибутов любого пользователя).

Нажимаем Тестовые настройки - откроется окно, в котором можно загрузить информацию от случайных профилей в AD и убедиться, что нужные нам данные загружаются корректно. После нажимаем Сохранить и продолжить.

3) На последнем шаге настройки интеграции с Active Directory оставляем предложенные настройки:

Настройка групп LDAP

. и нажимаем Тестовые настройки — мы должны увидеть информацию о группах, которую сможет получить Openfire. Кликаем Сохранить и продолжить.

Конфигурирование LDAP завершено. Теперь добавим администраторов системы, которые смогут управлять сервером из панели управления:

Добавление администраторов для Openfire

Обратите внимание, что доступ к панели управления под встроенным администратором Openfire будет невозможен после смены профилей на использование LDAP. Обязательно добавляем хотя бы одного пользователя, у которого будут привилегии настройки.

Настройка завершена. Пробуем авторизоваться в панели управления под учетной записью администратора, которую мы добавили. После подключаемся клиентом под своей учетной записью в AD.

Аутентификация на основе групп

Если необходимо ограничить пользователей, которые могут подключаться к серверу, можно использовать группы Active Directory. Для этого открываем панель управления Openfire и переходим в раздел Сервер - Настройки сервера и кликаем по кнопке Изменить:

Переходим к изменению настроек LDAP

В открывшемся окне переходим к разделу 2. Отображение пользователей - кликаем по Расширенные настройки и добавляем Пользовательский фильтр:

Добавляем фильтр для поиска в группах

* например, как на изображении выше, можно добавить фильтр (memberOf=cn=Domain Admins,cn=Users,dc=dmosk,dc=local) — это означает, что к серверу смогут подключиться только те пользователи, которые принадлежат группе Domain Admins.

Смена домена

Если появилась необходимость сменить домен в Openfire, выполняем настройку в 2 этапа.

Шаг 1. Настройка в панели управления.

Переходим на вкладку Сервер - Диспетчер сервера - Свойства системы - в поиске параметром находим xmpp.domain:

Поиск параметра xmpp.domain

Справа от параметра кликаем по иконке редактирования:

Иконка для перехода к редактированию параметра

Внизу появится форма для редактирования параметра — меняем домен на новый и сохраняем новое значение:

Редактируем домен

Шаг 2. Настройка системы в командной строке.

Открываем конфигурационный файл:

Находим строку с параметром fqdn и меняем в ней домен на новый, например:

Читайте также: