Меню Рубрики

Установка ejabberd на свой сервер

Установка и настройка Jabber-сервера

Требования для работы и процедура установки собственного сервера Jabber являются не такими сложными, как это кажется непосвящённому. Jabber не сильно требователен к ресурсам, поэтому сервер для него возможно устроить практически где угодно. Сложность в установке не превышает сложности установки типичного веб-форума, а местами и ещё проще.

Содержание

Подготовка

Компьютер

Для работы сервера Jabber вполне достаточно старенького компьютера с процессором с тактовой частотой 500 МГц, размером оперативной памяти 128 Мб и жёстким диском 4 Гб. Разумеется, возможно использовать и более мощные компьютеры. Если вы планируете хранить историю сообщений на сервере, потребуется более объемистый жесткий диск. Можно установить Jabber-сервер и на машину, которая уже работает как сервер, это не повредит другим программам, как вы можете догадаться. А можно использовать свой настольный компьютер, если вы не выключаете его на ночь. Ниже приведены наиболее оптимальные применения для основных Jabber-серверов:

  • Ejabberd — наиболее универсальный вариант, рекомендуется. Сервер поддерживает кластеризацию. У сервера высокая отказоустойчивость
  • Jabberd — старые компьютеры с низкой вычислительной мощностью
  • Prosody — персональный сервер с низкой нагрузкой. Простой в настройке, но не отличается стабильной работой при высокой нагрузке. Нет кластеризации.
  • Openfire — предприятия. Прост в настройке, но из-за виртуальной машины java потребляет много ресурсов.

Подробнее смотрите в статье «Выбор сервера»

Интернет

Возможно сделать так, чтобы к вашему серверу можно было подключиться не только из локальной сети или предприятия. Но не каждый провайдер позволяет своим клиентам использовать собственный сервер в интернете. Для работы сервера нужно, чтобы ваше подключение к интернету было с так называемым «публичным», или «белым» адресом IP. Проверить его наличие можно с помощью этой инструкции. Также желательно, чтобы этот IP-адрес был фиксированным, чтобы к нему можно было легко привязать доменное имя. Все эти проблемы отпадут сами собой, если вы используете сервер VPS или Dedicated от поставщика услуг хостинга — они всегда подразумевают предоставление в ваше распоряжение фиксированных «белых» IP. Наконец, важным фактором является стабильность подключения — проблемы со стороны сервера сказываются на всех подключённых пользователях одновременно.

Практика

Регистрация доменного имени

Как уже было сказано раньше, для работы jabber-сервера необходимо обзавестись доменным именем. Конечно, в крайнем случае можно обойтись и без него, но, согласитесь, вряд ли вам захочется видеть и использовать Jabber ID вида «vasya@169.254.96.124» или «petya@2001:470:0f3b:28fa::1«. Поэтому последним шагом перед, собственно, установкой сервера будет регистрация собственного доменного имени, тем более сделать это так просто! Подробнее об этом, а также о привязке домена к IP-адресу своего сервера читайте в статье «Регистрация доменного имени». Возможно использование и динамического адреса.

Установка и настройка программы-сервера

Подготовив «железо» для будущего сервера, подключив его к сети и привязав к нему доменное имя в этой сети, можно переходить непосредственно к установке необходимого программного обеспечения. Ниже приводятся подробные инструкции для упомянутых трех популярных серверов в варианте для двух операционных систем — семейства юниксоподобных ОС (в частности дистрибутивов GNU/Linux и BSD) и Windows. Если у вас нет особых причин использовать Windows для сервера — мы рекомендуем в качестве основы взять GNU/Linux, как более защищенную и стабильно работающую платформу.

источник

Ставим корпоративный Jabber-сервер

Сегодня мы будем устанавливать и настраивать корпоративный Jabber-сервер.

Подготовка

Установку будем производить на операционную систему CentOS 7, момент установки ОС я здесь описывать не буду – он достаточно тривиален.

Нам потребуется внешний IP-адрес и домен (для примера я напишу везде litl-admin.ru, но сервер по факту на другом домене). Если сервер корпоративный, через Интернет-шлюз, то понадобится делать проброс порта на шлюзе (согласно портам, указанным в конфиге). Ну и как всегда, я считаю, что для этих целей дешевле и проще арендовать выделенный сервер, например вот этот, чем собирать своё железо в стойку и мучиться с его обслуживанием.

Настройки файрволла

# 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

Я остановил свой выбор на сервере EJabberd, который обладает достаточной гибкостью. Также, определился, что данные буду хранить в базе MySQL, а не в файлах, поэтому предварительно установим MySQL на CentOS 7.

Создаём базу под EJabberd

> GRANT ALL ON ejabberd.* TO ‘ejabberd’@’localhost’ IDENTIFIED BY ‘ejabberdpassword’;
> QUIT;

# mysql -h localhost -D ejabberd -u ejabberduser -p

Качаем дистрибутив

Находим нужный нам дистрибутив и копируем ссылку. У нас CentOS – последователь RedHat, поэтому качаем RPM Package.

Устанавливаем EJabberd

Загружаем по полученной ссылке пакет:

# wget https://www.process-one.net/downloads/downloads-action.php?file=/ejabberd/18.06/ejabberd-18.06-0.x86_64.rpm -O ejabberd.rpm

и следуем простым инструкциям. Когда сервер будет установлен, следуем в каталог /opt/ejabberd-18.06/.

Нас интересуют два каталога: bin и conf. В первом лежат исполняемые файлы, во втором, соответственно, конфиги.

Читайте также:  Установка по для xerox phaser 6000

Открываем конфиг ejabberd.yml и правим следующие параметры:

hosts:
## Домен нашего сервера
— «litl-admin.ru»
.
listen:

port: 5222
## IP нашего сервера
ip: «192.168.1.99»
.
## храним юзеров в базе
auth_method: sql
## храним пароли в виде хеша (по умолчанию в plain-text)
auth_password_format: scram
.
## параметры доступа к базе данных
sql_type: mysql
sql_server: «localhost»
sql_database: «ejabberd»
sql_username: «ejabberd»
sql_password: «ejabberdpassword»
.
## логин администратора
acl:
admin:
user:
— «admin@litl-admin.ru»

Кажись в конфиге я больше ничего не менял пока.

# /opt/ejabberd-18.06/bin/ejabberdctl register «admin» «litl-admin.ru» «adminpass»

Теперь можно постучать на веб-интерфейс http://192.168.1.99:5280/admin:

Базовая настройка сервера

После входа в веб-интерфейс перед нами открывается такая картина: Сейчас я выполню только первичную настройку. Более детально будем делать позже. Итак, переходим в раздел “Вирутальные хосты”, открываем наш хост [1]. Переходим в раздел “Пользователи” [2].

Создаём нужное количество пользователей [3]:

Теперь переходим в раздел “Группы общих контактов”, чтобы сделать список абонентов, доступный каждому. Вообще, тут довольно гибкая система. К слову, контакты тут называются “ростер”. Соответственно, модуль называется mod_shared_roster.

Создадим группу, дадим ей имя типа “groupname” [2]:

И зайдём в созданную группу по ссылке: Здесь у нас отображается название группы [1], заголовок, который будет видим в списке контактов [2]. Перечислим пользователей в разделе “Члены” [3]. И теперь напишем название группы в раздел [4], чтобы члены группы видели эту же группу (общий список контактов). Вот именно подобная настройка и даёт огромную гибкость в настройке. Т.е. можно сделать контакты, которые будут видеть одних юзеров, но те юзеры не будут видеть эти контакты. Т.е. поле [4] должно совпадать с полем [1].

Сохраняем настройки и пробуем подключиться к нашему серверу.

Подключение к серверу

Так как задача ставилась таким образом, что основной пласт юзеров будет работать из-под мобильных устройств, то надо было протестировать и отладить в первую очередь под ними. Под Android я использовал Xabber.

Что осталось сделать

  1. Наладить передачу файлов — сделано;
  2. Многопользовательские чаты;
  3. Сохранение логов бесед в виде HTML;
  4. Выпуск сертификатов для TLS — сделано;

Статья будет дополняться по ходу дела. Удачи всем!

источник

Пост счастья — Jabber на своём сервере за 10 минут

Публикую в персональный блог — потому что тут не будет подробного описания, инструкций и прочего.

Это просто пост счастья человека, открывшего для себя Jabber с другой стороны.

Суть в том, что мне понадобился свой Jabber-сервер на Debian с https-соединением для параноидального общения из офиса по ICQ.

С прошлых экспериментов помнил, что Jabber-сервер — штука сложная, хитрая и не всегда податливая без чтения мануалов.

Но в этот раз я решил начать не с eJabberd и прочего, а с OpenFire.

Учитывая, что у меня уже была установлена Java — я с ней не дружу и ставил просто apt-get-нув все jre-и прочие пакеты — установка ограничилась скачиванием .deb-пакета OpenFire и dpkg -i — установкой.

Вы не поверите! Он просто взял и установился. Ни шаманства, ни бубнов — вот так вот взял и поставился! (Далее выделяю жирным ключевые слова чтобы ориентироваться по этому счастливому бреду)

Мне потребовалось всего один раз прочитать мануал, чтобы увидеть строчку типа «Я настраиваюсь на порту 9090».

Отвлечение от темы — у меня сервер стоит за роутером. В моём случае мне пришлось открывать порты — 9090 для админки, 9091 — для https-админки, 5222 для самого жаббера, 7777 — для передачи файлов, и зашёл в админку — айпи_сервера:9091

И опять же — чудо! Они умудрились сделать админку для настройки простой, понятной и дружелюбной. В качестве ДБ я выбрал MySQL — поэтому единственное лишнее телодвижение было — завести отдельного пользователя и БД.
Настройка сервера — несколько кликов — админский пароль, мелкие галочки — как поступать серверу в каких случаях. Я увеличил размер оффлайн-лога и выставил принудительные SSL. А, ещё включил возможность передачи файлов.

Тонкий момент — название сервера — пришлось редактировать настройку, поменяв со skazkinserver на домен.ру для удобоваримых аккаунтов.

ICQ-гейт настраивается просто — пожалуйста, включите модуль IM… подождите… Готово, пользуйтесь!

Модулей, к слову, там хватает. Тестовая поддержка GTalk, — и масса буржуйского типа Гадугаду, АОЛ и прочее. Просто включи и пользуйся.
Настройка пользователей — хотите, чтобы они сами регистрировались или же ручками каждого? Может быть, сделать группы? Не хотите? Ну как хотите!

После настроек — /etc/init.d/openfire restart — и пожалуйста! Новая учётка в Miranda-IM.

Пост счастья пост счастья! Теперь у меня есть свой HTTPS Jabber-сервер и ICQ-гейт. 🙂 Никогда ещё настройка сервера не была такой простой 🙂

UPD: Косяки, с которыми столкнулся и которые исправил:

Читайте также:  Установка подогревателя на cerato

Не добавлялись клиенты — нельзя было писать новодобавленным — ICQ/другие джабберы

1. Server settings->Security settings — если нету нормального SSL-сертификата — Server Connection надо выставить в Optional и поставить галку ниже — Accept self-signed certificates. Server dialback over TLS is now available

2. Server To Server — выставить в Allowed оба пункта — и про сервер и про клиентов

Аська не завелась с первого раза
Включить в Server->Gateways, там же выставить кодировку в cp1251

Остальные мелочи решились прописыванием редиректов портов на роутере.

Не читается UserInfo из гейта ICQ — ну и нет расширенных статусов 🙁 Ничего, без этого можно и пережить

источник

Поднимаем свой Jabber сервер

Paramtamtam · 2015.4.1 · 12 min

Да с игрищами и блудницами, да. Но перед тем как это делать — давай определимся — какой сервер мы будем ставить. Выбор предо мной, собственно, был не велик:

  • OpenFire (Apache License 2.0) — написан на Java и большинство функций на нём делаются в бесплатной версии;
  • EJabberd (GNU GPL) — написан на Erlang , модульный, есть веб-морда в комплекте, поддерживает кластеризацию;
  • jabberd2 (GNU GPL) — написан на C , тоже модульный, более компактный;

Решено было разворачивать на.. jabberd2 потому что:

  1. Он написан на C и отличается малым потреблением ресурсов (два других кандидата в ней относятся в частности к памяти очень расточительно) плюс высокой производительностью (среднее потребление памяти v2.3.2 (x86_64) — sm/6Mb + c2s/7Mb);
  2. Лишен лишних свистелок — он просто модульный xmpp сервер;
  3. Он до сих пор поддерживается, да и сам по себе просто няшка.

Установка

Всю работу выполняем под рутом. Будьте внимательны и осторожны!

Цепляемся к нашему серверу на CentOS 7 (установка на других дистрибутивах отличается, но в большинстве своем менеджером пакетов и некоторыми другими тонкостями), и подключаем первым делом EPEL-репозиторий:

После чего ставим сам jabberd:

Вместе с собой он притащит в систему (только что поставленную, в нашем случае) ещё

65 пакетов, для чего потребуется

Отлично, теперь просто проверяем — запускается ли он у нас:

И если вывод (крайние строки) похож на:

Без каких-либо летально/фатальных сообщений — значит всё у нас хорошо.

Настройка

Остается дело за малым — настроить его. Давай теперь определимся с тем, какой он в итоге должен иметь вид, тезисно:

  • Имя сервера должно иметь вид xmpp.domain.ltd ;
  • Хранение информации о пользователях в mysql базе (это и удобное администрирование, и при необходимости — легко делается веб-морда для регистрации пользователей, к примеру);
  • Открытая регистрация для пользователей (при заходе на наш сервер человек указывает желаемый ник, нажимает в своем же клиенте “Зарегистрироваться”, профит);
  • Логи переписки юзверей не ведем (по умолчанию), логи работы демонов — пишем в отдельный файл;
  • Работа как без указания шифрования в настройках (SSL/TSL), так и с шифрованием;
  • Транспорты и всё что с ними связано — оставим на потом.

Настройка DNS

Для того, чтоб при запросе xmpp.domain.ltd запросы попадали на наш сервер, где стоит jabberd — необходимо в DNS зоне domain.ltd добавить запись типа A со значениями хост — xmpp , значение — Ip.Адреса.Нашего.Сервера . Для сервиса pdd.yandex.ru это может выглядеть так:

Более того, так же есть смысл добавить следующие записи:

  • _xmpp-client._tcp.xmpp типа SRV с весом ` и портом 5222 со значением xmpp.domain.ltd. и приоритетом 20`
  • _xmpp-server._tcp.xmpp типа SRV с весом ` и портом 5347 со значением xmpp.domain.ltd. и приоритетом 20`

Проверить работоспособность DNS очень просто — достаточно запустить ping домена xmpp.domain.ltd и убедиться что ответы приходят, и приходят с ip 11.22.33.44 .

Ставим MySQL (maria-db)

Машка ставится легко и не принужденно:

Если всё запустилось без ошибок — ставим Машку в автозагрузку:

После чего мы заходим в БД и выполняем предварительную настройку:

Теперь у нас для mysql юзера под именем root установлен пароль MyMysqlPassword .

Так же есть смысл немного поправить настройки ( /etc/my.cnf ) доведя их, например, до следующего вида:

Теперь она будет потреблять памяти поменьше, но эти настройки актуальны лишь для мало нагруженных ресурсов.

Готовим MySQL к подключению jabberd

Чтоб jabberd смог работать с БД, необходимо её подготовить. Сперва необходимо зайти в консоль mysql:

И запустить скрипт создания таблицы (если что, он ещё есть на GitHub):

И создаем mysql-пользователя с именем jabberd2 и паролем MyJabberdPassword , предоставляя ему права на чуть ранее созданную бд:

На этом моменте считаем что mysql у нас готов к тому, чтоб начать работу с jabberd. Переходим к его настройке.

Настраиваем jabberd

Конфигурационные файлы jabberd находятся по пути /etc/jabberd/ , и имеют формат xml . Первым делом — сделаем резервную копию конфигов, которые будем изменять:

А так же создаем лог-файл (в который мы будем писать лог, вместо syslog ) и ставим на него права:

Внимание! Если у вас активна SELinux — то демон jabberd не сможет писать в лог файл. Необходимо или корректно настроить права доступа, или выключить SELinux, изменив в файле /etc/sysconfig/selinux строку SELINUX=permissive , permissive на disabled , после чего перезагрузить ОС.

И начнем с файла sm.xml , приведя следующие его части к виду:

Согласно этому конфигу, jabber сервер в качестве ключа аутентификации использует файл /etc/jabberd/server.pem . Логи пишутся в файл /var/log/jabberd.log . Имя сервера xmpp.domain.ltd . Для хранения данных используем локальный mysql, имя БД jabberd2 , пользователь jabberd2 с паролем MyJabberdPassword . Аккаунт (JID) администратора [email protected] . Пользователям разрешена регистрация ( ), и вновь зарегистрированным пользователям в контакт-лист мы добавляем пользователей (JID-ы) описанных в файле /etc/jabberd/templates/roster.xml .

Внимание! В приведенном примере отображены лишь те параметры, которые есть смысл изменить или добавить. Так как исходный конфиг отлично документирован — разобраться в нем не должно составить большого труда.

Читайте также:  Установка кондиционера статья косгу

После внесения изменений мы можем проверить его, перезапустив демона и посмотрев логи на наличие ошибок, и netstat на наличие открытых портов 2843 , 2844 и 2845 :

Данную процедуру есть смысл повторять после изменения каждого файла, дабы вовремя предпринять меры по исправлению возможных ошибок при конфигурации.

Приступаем к правке файла c2s.xml , который отвечает за настройки соединения client-2-server:

Согласно этому конфигу, jabberd в качестве ключа аутентификации использует всё тот же файл /etc/jabberd/server.pem . Логи этого модуля (c2s) тоже пишутся в файл /var/log/jabberd.log . В секции разрешаем регистрацию пользователей, дважды указываем доменное имя сервера, приветственное при регистрации сообщение и путь к ключу.
Остальные параметры в большинстве своем можно оставить в таком виде, в котором они есть по умолчанию. Пароли в базе храним на период запуска — в открытом виде (Внимание — не безопасно! После запуска — перевести на решим шифрования). Для остальных значений в указываем интуитивно-понятные параметры

Внимание! Как и в предыдущем примере — отображены лишь те параметры, которые есть смысл изменить или добавить.

Настал черед файла s2s.xml , который отвечает за настройки соединения server-2-server (в данный момент использовать данный функционал не будем, но у нас он будет уже преднастроен):

Внимание! Ну, ты уже понял — отображены лишь те параметры, которые есть смысл изменить или добавить

И укажем ростер JID-ов, которых необходимо добавлять ко всем пользователям, которые только зарегистрировались (именно его мы указывали в /etc/jabberd/sm.xml ):

Здесь пояснять ничего, думаю, нет смысла. Подробнее можно почитать по этой ссылке.

Если после перезапуска демона у нас ничего критичного в логах нет, и необходимые порты открыты — считаем что на этом шаге jabberd у нас корректно настроен и работает.

Можем попробовать зарегистрировать учетную запись на нашем сервере в любимом jabber-клиенте. Всё должно работать, включая TLS/SSL шифрование (но с сообщением что сертификат самоподписанный).

Автозапуск при старте системы

В нашей связке jabberd+mysql имеется одно слабое место — а именно запуск jabberd перед тем, как запустится mariadb. Я решил эту задачу довольно примитивно — созданием политкорректного скрипта /etc/rc.d/init.d/jabberd (взят оригинальный, и пути поправлены под CentOS), и запуск его с задержкой в 15 секунд из /etc/rc.local после старта системы.

И добавляем следующую запись в /etc/rc.d/rc.local :

И так же для “активации” обработки этого файла сделаем его исполняемым:

После чего перезапускаем сервер целиком, и повторяем проверку на отсутствие ошибок в /var/log/jabberd.log , /var/log/messages и наличие открытых портов.

Получаем доверенный сертификат

Всё хорошо — клиенты у нас подсоединяются, TSL/SSL работает, SRV записи в DNS имеются, пользователи успешно регистрируются, системные логи — пишутся, и после перезапуска сервера — демоны поднимаются и работают как и задумывалось.

Но у нас постоянно появляется окно о самоподписанном сертификате в клиенте при первом подключении. Для того чтоб этого избежать мы можем получить бесплатный SSL сертификат на startssl.com и использовать именно его.

Регистрируемся на startssl.com

Подтверждаем право владения доменом

Запрашиваем “XMPP (Jabber) SSL/TSL Certificate”

Генерируем приватный ключ (введенный пароль обязательно сохранить)

Сохраняем полученный ключ как ssl.key

Выбираем наш домен

Указываем субдомен, на котором работает jabber сервер:

Проверяем и подтверждаем:

Сохраняем полученный сертификат как ssl.crt

Скачиваем ещё и корневой сертификат sub.class1.server.ca.pem

После процедуры получения сертификата у нас будет 3 файла:

  1. ssl.key — приватный ключ;
  2. ssl.crt — сертификат;
  3. sub.class1.server.ca.pem — корневой сертификат startssl.com;

Эти три файла переносим на сервер, переходим в директорию с ними и выполняем:

Не забываем о некоторых юансах:

  • Лучше открыть итоговый сертификат любимым текстовым редактором и проверить чтоб секции не были нарушены;
  • Итоговый сертификат должен заканчиваться одной пустой строкой;

Т.е. вид его должен быть в результате следующий:

источник