Содержание
- 1 Подготовка
- 2 Настройки файрволла
- 3 Создаём базу под EJabberd
- 4 Качаем дистрибутив
- 5 Устанавливаем EJabberd
- 6 Базовая настройка сервера
- 7 Подключение к серверу
- 8 Что осталось сделать
Сегодня мы будем устанавливать и настраивать корпоративный 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+:
Что осталось сделать
- Наладить передачу файлов — сделано;
- Многопользовательские чаты;
- Сохранение логов бесед в виде HTML;
- Выпуск сертификатов для TLS — сделано;
Статья будет дополняться по ходу дела. Удачи всем!