Categories: Инструкции

Установка и настройка Openfire на Ubuntu Server

Openfire — сервер на базе XMPP для организации чата, и позволяющий обмениваться мгновенными сообщениями. В данной инструкции разберем его установку на Linux. Инструкция протестирована на Ubuntu 18.04.

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

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

* где порт 5222 — подключение клиента к серверу; 9090 для соединения по HTTP , 9091 HTTPS .

Сохраняем правила:

apt-get install iptables-persistent

netfilter-persistent save

Установка JAVA

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

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

apt-get install openjdk-8-jdk

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

java -version

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

openjdk version «1.8.0_242»
OpenJDK Runtime Environment (build 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08)
OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)

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

update-alternatives —config java

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

There is only one alternative in link group java (providing /usr/bin/java): /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
Nothing to configure.

В данном примере показан путь до исполняемого файла java (/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java). Открываем файл:

vi /etc/environment

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


JAVA_HOME=»/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java»

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

source /etc/environment

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

echo $JAVA_HOME

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

/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java

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

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

На открывшейся странице копируем прямую ссылку на загрузку openfire:

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

wget -O openfire.x86_64.deb https://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_4.5.1_all.deb

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

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

dpkg -i openfire.x86_64.deb

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

systemctl enable openfire

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

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

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

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

apt-get install mariadb-server

После переходим на страницу https://dev.mysql.com/downloads/connector/j/ — выбираем операционную систему и ее версию (в нашем примере, Ubuntu 18.04) — кликаем по Download :

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

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

wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java_8.0.19-1ubuntu18.04_all.deb

* в данном примере мы загружаем коннектор версии 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

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

mysql -uroot -p

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

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

> CREATE DATABASE openfire;

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

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

> GRANT ALL PRIVILEGES ON openfire.* TO openfire@localhost IDENTIFIED BY ‘openfirepass’;

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

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

> use openfire;

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

> source /usr/share/openfire/resources/database/openfire_mysql.sql;

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

> show tables;

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

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

> q

Установка Openfire

Выполняем установку и конфигурирование Openfire через веб-интерфейс. Запускаем браузер и переходим по ссылке http://<IP-адрес сервера>:9090 — откроется страница установки.

Выбираем русский язык и нажимаем 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:

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

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

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

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

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

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

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

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

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

vi /opt/openfire/conf/openfire.xml

Находим:

<setup>true</setup>

… и правим на:

<setup>false</setup>

Перезапускаем сервис:

systemctl restart openfire

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

Открываем в браузере адрес http://<IP-адрес сервера>:9090 — откроется мастер установки. Проходим снова по всем шагам до настройки профилей и выбираем Сервер каталогов (LDAP):

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

* где

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

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

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

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

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

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

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

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

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

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

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

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

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

Смена домена

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

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

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

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

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

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

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

vi /etc/openfire/openfire.xml

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

<fqdn>servername.openfire.local</fqdn>

Перезапускаем сервис openfire:

systemctl restart openfire

admin

Recent Posts

Что такое Zulip

Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…

2 месяца ago

Что такое Zookeeper

Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…

2 месяца ago

Что такое Zimbra

Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…

2 месяца ago

Что такое Zabbix

Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…

2 месяца ago

Что такое YouTube

YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…

2 месяца ago

Что такое yota

Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…

2 месяца ago