Яндекс

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

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

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

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 admin @ xmpp.entnet.ru 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"

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

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

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

Добавить комментарий

Будьте взаимовежливы и корректны.

Все сообщения проходят премодерацию.

Рекламные сообщения и комментарии с ссылками, не несущими смысловую нагрузку по тематике материала будут удаляться.


На развитие проекта

Вход