Ставим корпоративный Jabber-сервер

Сегодня мы будем устанавливать и настраивать корпоративный Jabber-сервер.

Подготовка

Установку будем производить на операционную систему CentOS 7, момент установки ОС я здесь описывать не буду – он достаточно тривиален.

Нам потребуется внешний IP-адрес и домен (для примера я напишу везде litl-admin.ru, но сервер по факту на другом домене). Если сервер корпоративный, через Интернет-шлюз, то понадобится делать проброс порта на шлюзе (согласно портам, указанным в конфиге). Ну и как всегда, я считаю, что для этих целей дешевле и проще арендовать выделенный сервер, например вот этот, чем собирать своё железо в стойку и мучиться с его обслуживанием.

Настройки файрволла

# firewall-cmd --zone=public --add-port=5280/tcp --permanent
# firewall-cmd --zone=public --add-port=5222/tcp --permanent
# firewall-cmd --zone=public --add-port=5269/tcp --permanent
# firewall-cmd –reload

Я остановил свой выбор на сервере EJabberd, который обладает достаточной гибкостью. Также, определился, что данные буду хранить в базе MySQL, а не в файлах, поэтому предварительно установим MySQL на CentOS 7.

Создаём базу под EJabberd

Качаем схему для базы:

# wget https://raw.githubusercontent.com/processone/ejabberd/master/sql/mysql.sql

Запускаем клиент:

# mysql -u root -p

Создаём базу:

> CREATE DATABASE ejabberd;

Создаём пользователя:

> GRANT ALL ON ejabberd.* TO 'ejabberd'@'localhost' IDENTIFIED BY 'ejabberdpassword';
> QUIT;

Загружаем в MySQL схему:

# mysql -h localhost -D ejabberd -u ejabberduser -p < mysql.sql

Качаем дистрибутив

Переходим на официальный сайт:

Находим нужный нам дистрибутив и копируем ссылку. У нас CentOS – последователь RedHat, поэтому качаем RPM Package.

Устанавливаем EJabberd

Загружаем по полученной ссылке пакет:

# wget https://www.process-one.net/downloads/downloads-action.php?file=/ejabberd/18.06/ejabberd-18.06-0.x86_64.rpm -O ejabberd.rpm

Исполняем файл:

# rpm -ihv ejabberd.rpm

и следуем простым инструкциям. Когда сервер будет установлен, следуем в каталог /opt/ejabberd-18.06/.

Нас интересуют два каталога: bin и conf. В первом лежат исполняемые файлы, во втором, соответственно, конфиги.

Открываем конфиг ejabberd.yml и правим следующие параметры:

hosts:
## Домен нашего сервера
- "litl-admin.ru"
...
listen:
-
port: 5222
## IP нашего сервера
ip: "192.168.1.99"
...
## храним юзеров в базе
auth_method: sql
## храним пароли в виде хеша (по умолчанию в plain-text)
auth_password_format: scram
...
## параметры доступа к базе данных
sql_type: mysql
sql_server: "localhost"
sql_database: "ejabberd"
sql_username: "ejabberd"
sql_password: "ejabberdpassword"
...
## логин администратора
acl:
admin:
user:
- "admin@litl-admin.ru"

Кажись в конфиге я больше ничего не менял :) пока.

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

# /opt/ejabberd-18.06/bin/start

Создаём администратора:

# /opt/ejabberd-18.06/bin/ejabberdctl register "admin" "litl-admin.ru" "adminpass"

Теперь можно постучать на веб-интерфейс http://192.168.1.99:5280/admin:

Базовая настройка сервера

После входа в веб-интерфейс перед нами открывается такая картина:Сейчас я выполню только первичную настройку. Более детально будем делать позже. Итак, переходим в раздел “Вирутальные хосты”, открываем наш хост [1]. Переходим в раздел “Пользователи” [2].

Создаём нужное количество пользователей [3]:

Теперь переходим в раздел “Группы общих контактов”, чтобы сделать список абонентов, доступный каждому. Вообще, тут довольно гибкая система. К слову, контакты тут называются “ростер”. Соответственно, модуль называется mod_shared_roster.

Создадим группу, дадим ей имя типа “groupname” [2]:

И зайдём в созданную группу по ссылке:Здесь у нас отображается название группы [1], заголовок, который будет видим в списке контактов [2]. Перечислим пользователей в разделе “Члены” [3]. И теперь напишем название группы в раздел [4], чтобы члены группы видели эту же группу (общий список контактов). Вот именно подобная настройка и даёт огромную гибкость в настройке. Т.е. можно сделать контакты, которые будут видеть одних юзеров, но те юзеры не будут видеть эти контакты. :) Т.е. поле [4] должно совпадать с полем [1].

Сохраняем настройки и пробуем подключиться к нашему серверу.

Подключение к серверу

Так как задача ставилась таким образом, что основной пласт юзеров будет работать из-под мобильных устройств, то надо было протестировать и отладить в первую очередь под ними. Под Android я использовал Xabber.

А под Winodws – Psi+:

Что осталось сделать

  1. Наладить передачу файлов — сделано;
  2. Многопользовательские чаты;
  3. Сохранение логов бесед в виде HTML;
  4. Выпуск сертификатов для TLS — сделано;

Статья будет дополняться по ходу дела. Удачи всем!

Интересно? Поделись с другом
Litl-Admin.ru

Comments:

Leave a Reply