Итак, я на новой работе и здесь используется в качестве корпоративного чата openfire
. Помню когда-то давно я его в одной организации применял, но, тогда устанавливал его на Ubuntu 14.04.5 Server amd64
. В принципе — это не важно, важно то что на текущем месте данный сервис развернут на FreeBSD 12
(тот человек вместо которого теперь я был поклонником данной операционной системы), но мне милее Ubuntu
системы. Ведь я все документирую и неплохо-таки ориентируюсь в сервисах, которые разворачиваю сам. Итого заметка будет адаптацией развертывания корпоративного чата на базе openfire
к Ubuntu 18.04 Server amd64
от и до + настройка связки с Active Directory (on Server 2012 R2 Std English):
А также настроена доработка:
- Интеграция со службой
Active Directory
где каждый доменный пользователь получит собственный аккаунт (Клиент на ПКqip
черезGPO
) - Через
GPO
будет на рабочих места установлен клиент - Централизованно управлять через
Web
-интерфейс - Работа русского языка
Тестовый стенд на базе Debian 10 + Proxmox 6
Srv-dc.polygon.com (AD,DHCP,DNS)
OS: Windows Server 2012 R2 Std English
IP: 10.90.90.3
Srv-gw.polygon.com
OS: pfSense 2.4.4
IP: 10.90.90.2
Srv-openfire.polygon.com
OS: Ubuntu 18.04 Server amd64
IP: 10.90.90.10
Шаг №1:
Создаю в оснастке DNS
на домен контроллере (srv-dc
) записи на будущий сервис Openfire
, предварительно авторизовавшись в системе из под учетной записи Login: ekzorchik
состоящей в группах: «Domain Admins, Enterprise Admins, Schema Admins
»
Win + X - Control Panel - View by: Category - View by: Small icons - Administrative Tools - DNS - DNS - SRV-DC - Forward Lookup Zones - polygon.com
Type A: srv-openfire.polygon.com (10.90.90.10)
Type CNAME: jabber for srv-openfire.polygon.com
Type A: srv-gw.polygon.com (10.90.90.2)
Шаг №2:
Создаю контейнер OU=IT
, а внутри группа GROUP_OPENFIRE (
Group scope: Global
Group type: Security)
и учетные записи:
Login: openfire
Pass: Aa1234567
Login: A1,A2,A3,A4 эти учетные записи помещаю в группу GROUP_OPENFIRE
Pass: Aa1234567
Шаг №3:
Выполняю первоначальную настройку системы (CPU = 1, RAM = 2,HDD = 50)
с осью Ubuntu 18.04 Server
под разворачиваемый сервис OpenFire
ekzorchik@srv-bionic:~$ sudo nano /etc/hosts 127.0.0.1 localhost 10.90.90.10 srv-openfire.polygon.com srv-openfire 10.90.90.3 srv-dc.polygon.com srv-dc ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters ekzorchik@srv-bionic:~$ sudo nano /etc/hostname srv-openfire.polygon.com ekzorchik@srv-bionic:~$ sudo reboot ekzorchik@srv-openfire:~$ uname -a && lsb_release -a Linux srv-openfire.polygon.com 4.15.0-72-generic #81-Ubuntu SMP Tue Nov 26 12:20:02 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04.3 LTS Release: 18.04 Codename: bionic
Шаг №4:
Произвожу установку Java:
ekzorchik@srv-openfire:~$ sudo apt-get install -y openjdk-8-jdk ekzorchik@srv-openfire:~$ sudo 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. ekzorchik@srv-openfire:~$ java -version openjdk version "1.8.0_232" OpenJDK Runtime Environment (build 1.8.0_232-8u232-b09-0ubuntu1~18.04.1-b09) OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode) ekzorchik@srv-openfire:~$ ekzorchik@srv-openfire:~$ sudo nano /etc/environment PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games" JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java" ekzorchik@srv-openfire:~$ source /etc/environment ekzorchik@srv-openfire:~$ echo $JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java ekzorchik@srv-openfire:~$
Шаг №5:
Произвожу установку сервиса базы данных, создаю базу под сервис openfire
, пользователя и пароль:
ekzorchik@srv-openfire:~$ sudo apt-get install -y mysql-server mysql-client ekzorchik@srv-openfire:~$ mysqladmin -u root password 712mbddr@ mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost'' ekzorchik@srv-openfire:~$ sudo mysqladmin -u root password 712mbddr@ ekzorchik@srv-openfire:~$ sudo mysql -u root -p712mbddr@ -e "delete from mysql.user where user=''" ekzorchik@srv-openfire:~$ sudo mysql -u root -p712mbddr@ -e "delete from mysql.user where user='root' and host not in ('localhost','127.0.0.1','::1')" ekzorchik@srv-openfire:~$ sudo mysql -u root -p712mbddr@ -e "drop database if exists test" ekzorchik@srv-openfire:~$ sudo mysql -u root -p712mbddr@ -e "delete from mysql.db where db='test' or db='test\\_%'" ekzorchik@srv-openfire:~$ sudo mysql -u root -p712mbddr@ -e "drop database if exists db_openfire" ekzorchik@srv-openfire:~$ sudo mysql -u root -p712mbddr@ -e "create database db_openfire character set utf8 collate utf8_general_ci"; ekzorchik@srv-openfire:~$ sudo mysql -u root -p712mbddr@ -e "drop user if exists 'us_openfire'@'localhost'" ekzorchik@srv-openfire:~$ sudo mysql -u root -p712mbddr@ -e "create user 'us_openfire'@'localhost' identified by '612mbddr@'" ekzorchik@srv-openfire:~$ sudo mysql -u root -p712mbddr@ -e "grant all on db_openfire.* to 'us_openfire'@'localhost'";
Проверяю, что могу подключиться под созданным пользователем, паролем к созданной базе:
ekzorchik@srv-openfire:~$ sudo netstat -tulpn | grep 3306 tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 5023/mysqld ekzorchik@srv-openfire:~$ ekzorchik@srv-openfire:~$ sudo mysql -u us_openfire -p612mbddr@ db_openfire -h 127.0.0.1 mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 15 Server version: 5.7.28-0ubuntu0.18.04.4 (Ubuntu) Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> - ответ да, могу. Двигаюсь дальше mysql> quit Bye ekzorchik@srv-openfire:~$
Шаг №6:
Скачиваю пакет OpenFire
самый последний на момент написания данной заметки (размер 37Mb
).
ekzorchik@srv-openfire:~$ wget -c https://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_4.4.4_all.deb -O openfire.deb ekzorchik@srv-openfire:~$ sudo dpkg -i openfire.deb Selecting previously unselected package openfire. (Reading database ... 97185 files and directories currently installed.) Preparing to unpack openfire.deb ... Unpacking openfire (4.4.4) ... Setting up openfire (4.4.4) ... adduser: Warning: The home directory `/var/lib/openfire' does not belong to the user you are currently creating. Processing triggers for ureadahead (0.100.0-21) ... Processing triggers for systemd (237-3ubuntu10.33) ... ekzorchik@srv-openfire:~$ sudo systemctl restart openfire ekzorchik@srv-openfire:~$ sudo systemctl status openfire | head -n5 ● openfire.service - LSB: Start/stop openfire jabber server Loaded: loaded (/etc/init.d/openfire; generated) Active: active (running) since Sun 2020-02-16 10:58:40 MSK; 6s ago Docs: man:systemd-sysv-generator(8) Process: 5740 ExecStop=/etc/init.d/openfire stop (code=exited, status=0/SUCCESS) ekzorchik@srv-openfire:~$
Шаг №7:
Создаю структуру таблиц в базе данных db_openfire:
ekzorchik@srv-openfire:~$ sudo mysql -u root -p712mbddr@ db_openfire -e "source /usr/share/openfire/resources/database/openfire_mysql.sql"
Шаг №8:
Теперь настраиваю через Web
-интерфейс, для этого с основной системы с которой взаимодействую с этой где сервис openfire
открываю браузер и в строке URL
-адреса указываю IP&DNS
адрес системы с сервисом OpenFire
.
Итого URL примет вид:
http://IP&DNS:9090
и это по дефолту
Открываю http://10.90.90.10:9090
и меня перекидывает на http:// 10.90.90.10:9090/setup/index.jsp
Choose Language: Русский (ru_RU) и нажимаю Continue
(Настройки сервера)
Доменной имя XMPP: srv-openfire.polygon.com
Имя узла сервера (полное доменное имя): srv-openfire.polygon.com
Порт консоли администратора: 9090
Безопасный порт консоли администратора: 9091
Шифрование свойств через: Blowfish
Ключ шифрования свойства: 712mbddr@
и нажимаю «Продолжить
»
(Настройки базы данных)
Выберите способ подключения к базе данных Openfire: выбираю "Стандартное подключение к базе данных"
и нажимаю «Продолжить
»
(Настройки базы данных - стандартное соединение)
Предварительные настройки драйверов базы данных: MySQL
Класс драйвера JDBC: com.mysql.cj.jdbc.Driver
URL базы данных: jdbc:mysql://127.0.0.1:3306/db_openfire?rewriteBatchedStatements=true&characterEncoding=UTF-8&characterSetResults=UTF-8
Имя пользователя: us_openfire
Пароль: 612mbddr@
Minimum Connections: 3
Maximum Connections: 100
Время ожидания подключения: 1.0 (Days)
и нажимаю «Продолжить
«, но увы получаю ошибку:
A connection to the database could not be made. View the error message by opening the "/logs/error.log" log file, then go back to fix the problem.
Не может подключиться к базе данных, читаю лог:
ekzorchik@srv-openfire:~$ sudo bash -c "cat /usr/share/openfire/logs/error.log" 2020.02.16 11:22:16 org.jivesoftware.database.DbConnectionManager - Unable to connect to the database. java.sql.SQLException: ConnectionManager.getConnection() failed to obtain a connection after 11 retries. The exception from the last attempt is as follows: java.sql.SQLException: The server time zone value 'MSK' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
Судя по ошибке жалуется на неправильную серверную зону времени, как так, но у меня время правильное и часовой пояс выставлен согласно моему текущему месторасположению:
ekzorchik@srv-openfire:~$ timedatectl Local time: Sun 2020-02-16 11:26:04 MSK Universal time: Sun 2020-02-16 08:26:04 UTC RTC time: Sun 2020-02-16 08:26:05 Time zone: Europe/Moscow (MSK, +0300) System clock synchronized: yes systemd-timesyncd.service active: yes RTC in local TZ: no ekzorchik@srv-openfire:~$
Но кажись ошибка относится к работе MySQL
, внимательный анализ всего что только можно вывел меня что нужно изменить URL
базы данных с того вида который у меня сейчас есть на:
Текущий:
URL базы данных: jdbc:mysql://127.0.0.1:3306/db_openfire?rewriteBatchedStatements=true&characterEncoding=UTF-8&characterSetResults=UTF-8
Обновленный:
URL базы данных: jdbc:mysql://127.0.0.1:3306/db_openfire?rewriteBatchedStatements=true&characterEncoding=UTF-8&characterSetResults=UTF-8&serverTimezone=UTC
и нажимаю «Продолжить
» — подключение к базе прошло успешно.
(Настройки профиля)
Выберите пользователя и систему группы для использования с сервером: выбираю "Сервер каталогов (LDAP)"
и нажимаю «Продолжить
»
(Настройки профиля: Настройки соединения)
Этап 1: Настройки соединения
(Сервер LDAP)
Тип сервера: Active Directory
Хост: srv-dc.polygon.com
Порт: 389
База DN: dc=polygon,dc=com
(Авторизация)
Администратор DN: openfire@polygon.com
Пароль: Aa1234567
и нажимаю «Тестовые настройки
«, в ответ получаю, да и к чему нужно стремится:
Тест: Настройки соединения
Статус: Успех!
Использую приведенные выше настройки, соединение с LDAP было успешным. Закройте эту тестовую панель и перейдите к следующему этапу»
нажимаю «Закрыть
» и нажимаю «Сохранить и продолжить
»
Этап 2: Отображение пользователей
Поле имя пользователя: sAMAaccountName
раскрываю «Расширенные настройки
» и изменяю «Пользовательский фильтр
» с дефолтного:
(objectClass=organizationalPerson)
на
(objectClass=user)(objectCategory=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2))
и нажимаю «Тестовые настройки
«, затем «Закрыть
» и «Сохранить и продолжить
»
Этап 3: Отображение групп
Поле группы: cn
Поле участника: member
Поле описания: description
затем раскрываю «Расширенные настройки
» и изменяю «Фильтр групп
» с дефолтного:
(objectClass=group)
на
(objectCategory=Person)
и нажимаю «Тестовые настройки
«, в ответ получаю результат вывода всех учетные записей домена, нажимаю «Close
» и «Сохранить и продолжить
»
(Учетная запись администратора)
Добавить администратора: указываю Login: ekzorchik
(т.к. добавляют те кто есть в Active Directory
) и нажимаю «Добавить
«, а затем «Продолжить
»
УРА! Настройка завершена
нажимаю на «Вход в консоль администратора
»
Произвожу авторизацию в консоли администрирования:
Имя пользователя: ekzorchik
Пароль: 712mbbdr@
и нажимаю «Войти»
На заметку: В качестве логина указывать не адрес почтового ящика, а логин по дефолту, как “admin
” если на этапе выбора какую базу данных указывали, имеется в виду дефолтная база данных.
И вот я внутри консоли администрирования:
Шаг №9:
И как оказалось со времен подготовки всех шагов инсталляции у меня не самая последняя версия установлена, текущая Openfire 4.4.4
уже вышла более новая версия сервера «Доступна новая версия сервера 4.5.1
», скачиваю и устанавливаю:
ekzorchik@srv-openfire:~$ rm -f openfire.deb ekzorchik@srv-openfire:~$ wget -c https://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_4.5.1_all.deb -O openfire.deb ekzorchik@srv-openfire:~$ sudo dpkg -i openfire.deb (Reading database ... 97730 files and directories currently installed.) Preparing to unpack openfire.deb ... Unpacking openfire (4.5.1) over (4.4.4) ... Setting up openfire (4.5.1) ... Processing triggers for systemd (237-3ubuntu10.38) ... Processing triggers for ureadahead (0.100.0-21) ... ekzorchik@srv-openfire:~$
После обновил страницу авторизации, интерфейс входа изменился, как и отображаемая версия при входе, авторизуюсь
(Консоль администрирования)
Login: ekzorchik
Password: 712mbbdr@
и нажимаю «Войти
»
Что примечательно, все настройки проделанные при установке Openfire 4.4
остались и не потерялись.
Шаг №10:
Добавляю в DNS
еще и SRV
—записи, т.к. в первоначальном виде когда я только тестировал развертывание приходил к уведомлению после авторизации , что «Нет записей SRV DNS для этого хоста
«. Лишним не будет.
Прописал пока вот такие вот SRV
записи на srv-dc.polygon.com
Win + X - Control Panel - Administrative Tools - DNS - DNS - SRV-DC -Forwarded Lookup Zones
— и через правый клик мышью на polygon.com
перехожу на мастер добавления записи «Other New Records
»
Select a resource record type: Service Location (SRV)
и нажимаю «Create Record...
»
Domain: polygon.com
Service: _xmpp-client
Protocol: _tcp
Priority: 0
Weight: 100
Port Number: 5222
Host offering this service: srv-openfire.polygon.com.
и нажимаю OK
.
В итоге после добавления всех SRV
записей они выглядят так в оснастке DNS
раздел «_tcp
«:
На заметку: Если Вам нужно будет заново пройтись по шагам инсталляции, то нужно сделать следующее:
ekzorchik@srv-openfire:~$ sudo nano /usr/share/openfire/conf/openfire.xml
изменить <setup>true</setup>
на <setup>false</setup>
не забыть сохранить внесенные изменения и перезапустить сервис openfire
ekzorchik@srv-openfire:~$ sudo systemctl restart openfire
А после заново обратиться через браузер к URL
адресу http://10.90.90.10:9090 & http://IP&DNS:9090
Итак, первоначальная настройка сервиса OpenFire 4.5.1
завершена, в последующих заметках я буду развивать данную тему, как и было указано в предисловии заметки. На этом я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.