На кофе

Поиск

Поиск Яндекс

Вход

Собственный сервер мессенджера ejabberd (XMPP) на Astra Linux 1.7

Поделиться статьей
Собственный сервер мессенджера ejabberd (XMPP) на Astra Linux 1.7

Ejabberd - это один из самых популярных серверов XMPP с открытым исходным кодом, если Вы желаете развернуть собственный, независимый, безопасный корпоративный  мессенджер на Astra Linux - то эта статья для Вас. Дистрибутив содержится в репозитории Astra Linux из коробки, так что добавлять сторонние репозитории и скачивать дополнительные пакеты и библиотеки необходимости нет, что удобно использовать в закрытых контурах сетей.

  • Модульная архитектура сервера
  • Поддержка работы группы ejabberd-серверов в кластере
  • Поддержка веб-интерфейса для администрирования
  • Поддержка различных языков (включая русский)
  • Совместимость с XMPP
  • LDAP-аутентификация
  • поддержка SASL и StartTLS на клиентских и межсерверных соединениях

Предварительные настройки

1. В терминале (Alt+t) переходим под root
sudo su

Установим необходимые для работы пакеты

sudo apt -y install gnupg wget apt-transport-https ca-certificates
2. Добавим репозиторий Astra Linux 1.7:
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 Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript. successfully registered


Настройка 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 должен выглядеть так:

pem_chain

Ну и укажем его xmpp.entnet.ru.pem в файле конфигурации /etc/ejabberd/ejabberd.yml вместо штатного:

certfiles:
- "/etc/ejabberd/xmpp.entnet.ru.pem"

Перезапустим нашу службу

service ejabberd restart

И можем пройти в браузере в панель управления по адресу например https://xmpp.entnet.ru:5280/admin администратором:

Окно логина ejabberd Astra Linux

После ввода пароля видим панель администрирования и приступаем к ее исследованию.

Панель администрирования ejabberd Astra Linux

 

16. Разрешим пользователям регистрацию в конфигурационном, изменив строку mod_register:

mcedit /etc/ejabberd/ejabberd.yml

17. В качестве клиента на ОС Астра линукс можно использовать приложение PSI+ c настройками:

18. В качестве клиента на ОС Android можно использовать приложение "Conversations"

На этом в целом сервер развернут.

Сервер имеет массу настроек и модулей. 

Продолжение следует...