Ejabberd - это один из самых популярных серверов XMPP с открытым исходным кодом, если Вы желаете развернуть собственный, независимый, безопасный корпоративный мессенджер на Astra Linux - то эта статья для Вас. Дистрибутив содержится в репозитории Astra Linux из коробки, так что добавлять сторонние репозитории и скачивать дополнительные пакеты и библиотеки необходимости нет, что удобно использовать в закрытых контурах сетей.
- Модульная архитектура сервера
- Поддержка работы группы ejabberd-серверов в кластере
- Поддержка веб-интерфейса для администрирования
- Поддержка различных языков (включая русский)
- Совместимость с XMPP
- LDAP-аутентификация
- поддержка SASL и StartTLS на клиентских и межсерверных соединениях
Предварительные настройки
1. В терминале (Alt+t) переходим под rootsudo su
Установим необходимые для работы пакеты
sudo apt -y install gnupg wget apt-transport-https ca-certificates
cat << EOF > /etc/apt/sources.list
deb [arch=amd64] https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-main/ 1.7_x86-64 main contrib non-free
deb [arch=amd64] https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-update/ 1.7_x86-64 main contrib non-free
deb [arch=amd64] https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-base/ 1.7_x86-64 main contrib non-free
deb [arch=amd64] https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-extended/ 1.7_x86-64 main contrib non-free
deb [arch=amd64] https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-extended/ 1.7_x86-64 astra-ce
EOF
Подразумеваем, что изначально ОС Astra Linux обновлена, если нет, то выполняем
apt update
astra-update -r -A
После обновления перегружаемся по требованию
sudo reboot
После обновления возможно криво переустановится графическое окружение fly, это фича Astra Linux
Переустановим на всякий случай:
sudo apt install --reinstall fly-all-main -fy
Удалим устаревшие и неиспользуемые пакеты:
sudo apt autoremove -fy
7. Вначале установим имя хоста системы на доменное имя (FQDN), которое мы будем использоватьhostnamectl set-hostname xmpp.entnet.ru
8. В файл hosts добавим имя хоста:
Определим ip адрес:
ifconfig | grep "inet" | grep "broadcast" | awk '{print $2}'
Отредактируем /etc/hosts:
mcedit /etc/hosts
Установим имя нашего сервера в файле конфигурации hosts:192.168.1.XXX xmpp.entnet.ru xmpp
где 192.168.1.XXX — IP-адрес нашего сервера; xmpp — имя сервера; entnet.ru — наш домен, если используется.
9. Рестартанем графическую сессию:sudo systemctl restart fly-dm
10. Установка и настройка ejabberd
apt install ejabberd -y
После установки пакета ejabberd, рекомендуется настроить на использование базы данных MySQL, а не использовать встроенную Mnesia.
Это связано с ограничением Mnesia на размер БД (2Gb).
11. Установка и настройка БД
apt install mariadb-server erlang-p1-mysql -y
mysql_secure_installation
Enter current password for root (enter for none): enter
ввести пароль рута ввод если не надо
Change the root password? [Y/n] n
поменять пароль рута нет
Remove anonymous users? [Y/n] Y
удалить анонимных пользователей Да
Disallow root login remotely? [Y/n] Y
запретить удаленный вход рута Да
Remove test database and access to it? [Y/n] Y
удалить тестовую базу и доступ к ней? Да
Reload privilege tables now? [Y/n] Y
Перезарузить привилегии к таблицам сейчас Да
mysql -u root
MariaDB [(none)]> CREATE DATABASE jabber_entnet_ru;
MariaDB [(none)]> CREATE USER 'jabberuser'@'localhost' IDENTIFIED BY 'entnet';
MariaDB [(none)]> GRANT ALL ON jabber_entnet_ru.* TO 'jabberuser'@'localhost';
MariaDB [(none)]> \q
12. Импортируем данные из /usr/share/ejabberd/sql/mysql.sql
mysql -D jabber_entnet_ru -u jabberuser -p < /usr/share/ejabberd/sql/mysql.sql
Вводим пароль пользователя БД jabberuser
, он у нас entnet
и ждем, пока закончится импортирование.
13. Приступаем к настройке сервера ejabberd
Правим файл конфигурации сервера:
mcedit /etc/ejabberd/ejabberd.yml
В файле конфигурации /etc/ejabberd/ejabberd.yml, добавляем параметры:
В секцию hosts: добавим fqdn имя нашего хоста по аналогии с "localhost" (ВНИМАНИЕ! ОТСТУПЫ ВАЖНЫ):
hosts:
- "localhost"
- "xmpp.entnet.ru"
Добавим сразу после этой секции параметры подключения к БД MySQL:sql_type: mysql
sql_server: "localhost"
sql_database: "jabber_entnet_ru"
sql_username: "jabberuser"
sql_password: "entnet"
а затем, чтобы использовать БД MySQL для аутентификации добавим и укажем
auth_method: sql
Далее, чтобы использовать БД MySQL для всех модулей сервера, добавим
default_db: sql
14. Также укажем имя учетной записи администратора сервера ejabberd, с которым мы будем входить в административную панель в файле конфигурации (ВНИМАНИЕ! ОТСТУПЫ ВАЖНЫ):
acl:
admin:
user:
- "admin"
Перезапустим службу:
service ejabberd restart
15. Создадим учетную запись администратора ejabberd, с которым мы будем входить в административную панель
/usr/sbin/ejabberdctl register admin xmpp.entnet.ru entnet
где admin
- имя, xmpp.entnet.ru
- сервер, а entnet
- пароль администратора.
ответ должен быть такой:
User
Настройка ssl
В файле конфигурации /etc/ejabberd/ejabberd.yml после установки указан путь к сформированному в процессе установки самоподписанному сертификату:
certfiles:
- "/etc/ejabberd/ejabberd.pem"
По указанному пути мы и положим уже имеющиеся (если есть) либо выпустим бесплатные сертификаты, как в статье Устанавливаем и автоматически продлеваем сертификаты ssl при помощи Lets Encrypt и Certbot на Astra Linux
Серверу ejabberd достаточно одного файла .pem, в котором мы укажем всю цепочку сертификатов.
Это можно сделать вручную, добавив содержимое корневого сертификата (например как в нашем случае содержимое уже имеющегося у нас xmpp.entnet.ru.crt) добавим в конце файла приватного ключа (например нашему xmpp.entnet.ru.pem)
В итоге файл xmpp.entnet.ru.pem должен выглядеть так:
Ну и укажем его xmpp.entnet.ru.pem в файле конфигурации /etc/ejabberd/ejabberd.yml вместо штатного:
certfiles:
- "/etc/ejabberd/xmpp.entnet.ru.pem"
Перезапустим нашу службу
service ejabberd restart
И можем пройти в браузере в панель управления по адресу например https://xmpp.entnet.ru:5280/admin администратором:
После ввода пароля видим панель администрирования и приступаем к ее исследованию.
16. Разрешим пользователям регистрацию в конфигурационном, изменив строку mod_register:
mcedit /etc/ejabberd/ejabberd.yml
17. В качестве клиента на ОС Астра линукс можно использовать приложение PSI+ c настройками:
18. В качестве клиента на ОС Android можно использовать приложение "Conversations"
На этом в целом сервер развернут.
Сервер имеет массу настроек и модулей.
Продолжение следует...