Итак, мне нужно установить XMPP сервер ejabberd 15. Для установки jabber сервера выберем свежеустановленный CentOS 7.
Так как в репозитариях CentOS ejabberd нет (раньше был в EPEL, но его оттуда зачем то выпилили), а собирать его из исходников у нас особых причин нет, воспользуемся готовым бинарным установщиком.
Дистрибутив можно скачать с process-one.net (куда и ведет ссылка с сайта разработчиков)
#wget process-one.net/downloads/ejabberd/15.03/ejabberd-15.03-linux-x86_64-installer.run
и раз уж мы собрались его запустить:
#chmod +x jabberd-15.03-linux-x86_64-installer.run
#./jabberd-15.03-linux-x86_64-installer.run
После чего нужно пройти несколько шагов установщика:
1. Первый вопрос установщика — выбор языка. Мне естественно мил русский, расположенный под цифрой 5
2. Далее предлагается прочесть лицензионное соглашение, я естественно его прочитал и даже хотел выучить наизусть... но передумал, в общем придется несколько раз нажать Enter и в завершении согласится со всем прочитанным клавишей y
3. Выбор каталога установки, по умолчанию предлагается /opt/ejabberd-15.03
4. Выбор доменного имени XMPP сервера
5. Имя пользователя с администраторскими правами по умолчанию admin, но лучше его переименовать
6. Пароль администратора
7. И наконец нам предстоит выбрать будет ли сервер частью кластер. Так как сервер один, то и кластера у нас никакого быть не может.
8. Нажимаем Y для продолжения и смотрим на процесс установки
9. На последнем шаге нам предлагают посмотреть readme, после чего установку можно считать законченной.
Теперь начинается самое интересное, хотя в нашем случае много настроек не потребуется.
Всё необходимое для запуска сервера находится в /opt/ejabberd-15.03/bin Там есть скрипты start stop status много всего полезного, что нужно для работы ejabberd.
Для начала запустим сервер
#/opt/ejabberd-15.03/bin/start
Web интерфейс сервера доступен по адресу http://<Мой_сервер>:5280/admin
Естественно нужно позаботится о том чтобы фаервол пропускал входящие соединения на порты 5280 и на будущее 5222 и 5269 В моём случае это:
#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
Но может вы используете iptables.
Вид на вэбинтерфейс свежеустановленного ejabberd примерно такой:
Web Итерфейс ejabberd 15
Самый интересный файл с настройками: opt/ejabberd-15.03/conf/ejabberd.yml (раньше это был etc/ejabberd/ejabberd.cfg), но сейчас нам там менять нечего.
Мой pidgin не смог договорится с сервером о шифровании и вообще сертификат сформированный при установке не хотел корректно работать. Сам сертификат лежит в /opt/ejabberd-15.03/conf/server.pem
Пришлось создать самоподписанный сертификат, для наших целей он пока подходит (я делаю XMPP сервер для внутреннего пользования в организации), хотя наверное нужно будет сделать свой маленький УЦ :) Итак:
#openssl req -new -x509 -nodes -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
#cat privkey.pem >> server.pem
#rm privkey.pem
После чего заменяем «заводской» server.pem в папке .opt/ejabberd-15.03/conf/ на вновь созданный и клиент может благополучно подключится к серверу, хотя ругается и предупреждает о самоподписанном сертификате.
Наша цель достигнута, не забудем создать нашему серверу запись A на DNS. Правда тогда пользователи сервера смогут общаться только между собой, но мы этого и добиваемся.
Для полноценной работы XMPP сервера нужно добавить ещё SRV записи, но дальнейшей настройкой я займусь потом, необходимый мне по плану функционал уже настроен.