Задача - сделать корпоративный чат.
Выбор пал на продукт под именем Openfire. Это XMPP-сервер, написанный на Java. Живет данный продукт здесь - https://www.igniterealtime.org, там же можно найти и клент для него, под названием Spark. Хотя можно пользоваться любым, приглянувшивсям вам клиентом Jabber.
Ставим java
Нам нужна только java-jre, приступим:
apt install openjdk-8-jre
java -version
Вывод должен быть:
openjdk version "1.8.0_171"
OpenJDK Runtime Environment (build 1.8.0_171-8u171-b11-0ubuntu0.18.04.1-b11)
OpenJDK 64-Bit Server VM (build 25.171-b11, mixed mode)
Если не установлен Mysql - вам сюда: https://onedayadmin.sytes.net/mysql-in-ubuntu-14-04/
Для корректного отображения логинов и групп латиницей, подкорректируем MySQL
В конец секции [mysqld] добавим три строки
collation_server=utf8_unicode_ci
character_set_server=utf8
skip-character-set-client-handshake
Создадим пользователя и базу для нашего сервиса.
create database openfiredb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
create user 'openfire'@'localhost' IDENTIFIED BY 'You_Password';
grant all privileges on openfiredb.* to 'openfire'@'localhost';
FLUSH PRIVILEGES;
Скачиваем и устанавливаем сам Openfire
wget http://download.igniterealtime.org/openfire/openfire_4.2.3_all.deb
dpkg -i openfire_4.2.3_all.deb
service openfire start или systemctl start openfire.service
Заходим на web интерфейс http://192.168.1.10:9090
1. Выбираем язык
2.1 Доменное имя XMPP: my.lan
2.2 Имя узла сервера (полное доменное имя): openfire.my.lan
2.3 Порт консоли администраторa: 9090
2.4 Безопасный порт консоли администраторa: 9091
2.5 Шифрование свойств через: Blowfish
3. Стандартное подключение к базе данных
4. 1 Предварительные настройки драйверов базы данных: Mysql
4.2 Класс драйвера JDBC: com.mysql.jdbc.Driver
4.3 URL базы данных: jdbc:mysql://127.0.0.1:3306/openfiredb?rewriteBatchedStatements=true&characterEncoding=UTF-8
для новых версий
jdbc:mysql://127.0.0.1:3306/openfiredb?rewriteBatchedStatements=true&characterEncoding=utf-8&characterSetResults=utf-8&requireSSL=false&useSSL=false&serverTimezone=MST7MDT
Возможно надо установить (не проверено) mysql-connector-java_8.0.18-1ubuntu18.04_all.deb
4.4 Имя пользователя: Openfire
4.5 Пароль: You_Password (пароль для пользователя которого создали в Mysql)
5. Настройки профиля: По умолчанию
6. Пишем свой майл и новый пароль от админки.
Если что-то пошло не так, всегда можно остановить сервис
Удалить базу данных, создать ее заново.
Изменить одну строку в конфигурационном файле Openfire
<setup>false</setup>
меняем на <setup>true</setup>
Запускаем сервис
Для нормальной работы XMPP сервера требуется запись типа SRV на нашем ДНС сервере.
добавим в конец
_xmpp-client._tcp.atlant.local. 86400 IN SRV 0 5 5222 openfire.my.local.
_xmpp-server._tcp.atlant.local. 86400 IN SRV 0 5 5269 openfire.my.local.
А также должна быть запись A типа
Клиент я решил взять Spark, однако выбор никто не ограничивает их просто куча...
Скачиваем, инсталим Spark, запускаем его.
Заходим в дополнительно:
Основное -> ставим галочки
Accept all certificates
Disable certificate hostname verification
Вводим имя и пароль созданного нами заранее пользователя
Домен : my.lan
Автоматизация установки Spark тут:
https://onedayadmin.sytes.net/avtomaticheskoe-dobavlenie-nastroek-pri-ustanovke-spark/
Плагины
- Плагин registration
Идем в закладку Плагины -> Доступные плагины -> Ставим "+" на против registration
Плагин установится но страничка настройки на русском языке отображается крокозябрами, поэтому вылечим этот недочет.
Перемещаем его по адресу
/var/lib/openfire/plugins/registration/i18n/registration_i18n_ru_RU.properties
Если возникает ошибка Cache Roster was full, shrinked to 90% in 0ms.
Беремся настраивать кэш openfire, для этого зайдем в Сервер -> Свойства системы -> и добавим вот эти переменные:
cache.group.size = 5242880
cache.group.maxLifetime = 3600000
cache.username2roster.size = 5242880
cache.username2roster.maxLifetime = 3600000
cache.userGroup.size = 5242880
cache.userGroup.maxLifetime = 3600000
cache.userCache.size = 2097152
cache.userCache.maxLifetime = 3600000
cache.groupMeta.size = 2097152
cache.groupMeta.maxLifetime = 3600000