Несмотря на обилие современных мессенджеров вроде Telegram, WhatsApp, Viber и других, многие компании отдают предпочтение проверенным и независимым решениям. Да, тот же Telegram функционально почти идеален, но его «тёрки» с РКН резко уменьшают возможности его применения, ведь нужно поднимать VPN или использовать прокси. Потому «в седле» остаётся Jabber.
На этой платформе есть немало корпоративных чатов, однако для их работы неизбежно требуется серверная часть, которую зачастую разворачивают на собственных мощностях компании. Потому сегодня речь пойдёт о том, как установить и настроить Jabber-сервер на Ubuntu 18.04.
Установка Jabber-сервера в Ubuntu 18.04
Этот вариант сервера наиболее универсален на сегодня. Он поддерживает кластеризацию и имеет высокую отказоустойчивость. При этом разработчики ещё и снабдили его всеми способами установки под Linux вообще и Ubuntu в частности. Рассмотрим их по порядку.
Вариант 1. Установка eJabberd с помощью скрипта (рекомендуется разработчиками)
Идём на официальный сайт ejabberd и скачиваем файл Linux x86 64-bits Intel Installer (прямая ссылка на него).
Можно это сделать в браузере или в терминале. В последнем случае вводим такую команду:
wget https://www.process-one.net/downloads/downloads-action.php?file=/ejabberd/18.06/ejabberd-18.06-linux-x86_64-installer.run -P /home/user/Downloads/ -O installer.run
Папку можете указать свою, NewFileName — ваше имя файла.
Назначаем ему права на выполнение:
sudo chmod +x ejabberd-18.06-linux-x86_64-installer.run
Затем переходим в папку, где он лежит (в терминале через cd или в файловом менеджере) и запускаем файл на выполнение (в терминале — ./ejabberd-YY.MM-linux-x86_64-installer.run, в файловом менеджере — двойной клик).
Дальше почти классический Windows-way — выбираем язык (русский есть), кликаем кнопку Forward (да, русский есть, но кнопки не перевели), вводим нужные данные и запускаем установку.
По окончании её на рабочем столе появляются два ярлыка: «Запустить eJabberd» и «Остановить eJabberd».
Запускаем сервер первым симлинком (в терминале — ./bin/ejabberdctl). Затем в браузере вводим адрес:
http://localhost:5280/admin
Вводим имя и пароль и попадаем в админку. Там уже можно добавлять и удалять пользователей, создавать группы и прочее. Если во время установки что-то пошло не так, можно просто удалить каталог eJabberd. Он находится по адресу, который вы указали при установке. В моём случае это /home/user/ejabberd-18.06/. Там же есть скрипт удаления.
Вариант 2. Установка eJabberd из репозитория
Это нужно на случай, если установка идёт на Ubuntu без графической среды. Для установки открываем терминал и вводим команду:
sudo apt install ejabberd
Вводим пароль, подтверждаем У и ждём. Процесс установки недолгий, минута-две.
Добавляем пользователя с правами администратора:
sudo ejabberdctl register admin localhost PASSWORD
sudo ejabberdctl register admin 192.168.10.170 PASSWORD
После установки необходимо сконфигурировать сервер. В терминале вводим:
sudo nano /etc/ejabberd/ejabberd.yml
Это файл конфигурации сервера, в нём выполняются все настройки. Добавляем адрес, на котором будет «крутиться» сервер. В нашем случае это localhost. Если нужен внешний адрес, указываем и его.
hosts:
- "localhost"
- "192.168.10.170"
Указываем, что администрировать его будет пользователь admin:
admin:
user:
- "": "localhost"
user:
- "admin": "192.168.10.170"
Добавим поддержку русского зыка:
language: "ru"
После этого записываем изменения Ctrl + O и закрываем Ctrl + X. После чего перезапускаем сервер. На всякий случай можно и демона перезапустить.
sudo service ejabberd restart
sudo /etc/init.d/ejabberd restart
Открываем браузер и идём по адресу:
https://localhost:5280/admin
Там вводим логин и пароль, после чего попадаем в админку.
Вариант 3. Установка eJabberd из deb-пакета
Ещё один способ установки. На сей раз из штатного deb-пакета. Причём, скажу сразу, что нормально установить его с помощью Ubuntu Software или Gdebi не получится. Только терминал, только хардкор!
Скачиваем его с сайта. Или в браузере, или с помощью терминала:
wget https://www.process-one.net/downloads/downloads-action.php?file=/ejabberd/18.06/ejabberd_18.06-0_amd64.deb -P /home/user/Downloads/ -O ejabberd.deb
Затем в терминале переходим в папку с пакетом:
cd Download
И запускаем установку:
sudo dpgk -i ejabberd_18.06-0_amd64.deb
В процессе на рабочем столе появятся ярлычки запуска и остановки сервера. Важно! При такой установке она производится в папку opt, а не etc как при установке из репозитория. Наиболее важные папки там — bin и conf. В первой находятся пусковые файлы, во второй — настройки.
Как и ранее, открываем файл ejabberd.yml, но с учётом пути:
sudo nano /opt/ejabberd/conf/ejabberd.yml
Вводим там, как и ранее:
hosts:
- "localhost"
- "192.168.10.170"
Указываем, что администрировать его будет пользователь admin:
admin:
user:
- "": "localhost"
user:
- "admin": "192.168.10.170"
Добавим поддержку русского зыка:
language: "ru"
Добавляем пользователя:
sudo ejabberdctl register admin localhost PASSWORD
Перезапускаем сервер:
sudo service ejabberd restart
sudo /etc/init.d/ejabberd restart
Открываем браузер и идём по адресу:
https://localhost:5280/admin
Там вводим логин и пароль, после чего попадаем в админку.
Вариант 4. Установка Prosody
Ещё один сервер для Jabber. Для начала устанавливаем сервер базы данных MySQL. В терминале вводим:
sudo apt install mysql-server
Нажимаем У, соглашаясь с установкой. Затем устанавливаем сам Prosody. Его можно установить напрямую из репозитория Ubuntu 18.04, однако последняя версия расположена в отдельном репозитории. В терминале вводим:
sudo su
Этим мы переходим в режим суперпользователя. Рекомендуется некоторые операции выполнять в нём, поскольку обычный режим sudo иногда не срабатывает.
wget https://prosody.im/files/prosody-debian-packages.key -O- | sudo apt-key add –
echo deb http://packages.prosody.im/debian $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list.d/prosody.list
Затем устанавливаем сам сервер:
apt update && apt install prosody lua-dbi-mysql lua-sql-mysql lua-sec
После добавляем данные в базу:
mysql -u root -p
create user 'prosody'@'localhost' identified by 'prosodypasswort';
create database prosody;
grant all on prosody.* to 'prosody'@'localhost';
В конце вводим:
quit;
И затем:
exit
Всё, мы добавили записи в базу и вышли из режима суперпользователя (ибо правило «не работай под root’ом» никто не отменял).
Настройка производится в одном файле. Он находится в /etc/prosody/ и называется prosody.cfg.lua. В терминале вводим:
sudo nano /etc/prosody/prosody.cfg.lua
В открывшемся файле редактируем нужные нам параметры. После этого сохраняем их Ctrl + O и закрываем файл Ctrl + X.
Устанавливаем пакет Mercurial, он потребуется для клонирования на локальный сервер модулей Prosody из репозитория.
sudo apt install mercurial
Затем:
cd /opt/
hg clone https://hg.prosody.im/prosody-modules/ prosody-modules
Меняем разрешения для папок и файлов, чтобы система могла получить доступ к модулям:
chgrp -R prosody prosody-modules
chmod -R 770 prosody-modules
Затем перезапускаем сервер:
sudo prosodyctl restart
После этого в браузере должна стать доступна страница
https://xmppserver.tld:5281/register/
Вариант 5. Установка Openfire
Сначала устанавливаем Java. В терминале выполняем:
sudo add-apt-repository ppa:webupd8team/java
sudo apt update
sudo apt install oracle-java8-set-default
Это установит Java-машину на Ubuntu. Затем скачиваем Openfire с сайта. Это можно сделать в браузере или через терминал.
Во втором случае вводим:
wget -O openfire_4.2.3_all.deb https://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_4.2.3_all.deb
После скачивания в терминале переходим в папку, куда мы скачали пакет. По умолчанию это Downloads. Вводим:
cd Downloads/
И выполняем команду:
sudo dpkg -i openfire_4.2.3_all.deb
Важно! Через штатный установщик и Gdebi нормально не ставится, потому лучше через терминал.
Соглашаемся с предложениями (переход по пунктам в терминальном режиме осуществляется кнопкой Tab).
Выбираем русский язык и прочие настройки. По окончании вводим данные для админа системы и авторизуемся с ними.
Открываем браузер и вводим адрес вида:
http://10.0.2.15:9090
В моём случае это IP виртуальной машины, в вашем может быть иной адрес, обычно совпадающий с адресом сервера. 9090 — стандартный порт, на который стучится админ. 9091 — защищённый порт. Рекомендуется их сменить.