- Установка ejabberd под Windows
- Установка сервера
- Установка и настройка Jabber-сервера
- Содержание
- Подготовка
- Компьютер
- Интернет
- Практика
- Регистрация доменного имени
- Установка и настройка программы-сервера
- Поднимаем свой Jabber сервер
- Установка
- Настройка
- Настройка DNS
- Ставим MySQL (maria-db)
- Готовим MySQL к подключению jabberd
- Настраиваем jabberd
- Автозапуск при старте системы
- Получаем доверенный сертификат
Установка ejabberd под Windows
Рассмотрим установку сервера ejabberd на компьютеры под управлением ОС Windows в стандартной конфигурации для использования в локальной сети с открытым доступом из Интернет и с использованием службы DynDNS.
Предполагается, что у Вас уже установлена операционная система, настроен доступ в Интернет, а доменное имя на DynDNS (допустим, это будет myjabber.ath.cx) указывает на внешний адрес Вашего компьютера (либо тот, который доступен из Вашей локальной сети, если Вы настраиваете сервер без возможности подключения к нему из Интернета).
Первым делом скачайте программу-установщик на свой компьютер, сделать это можно на официальном сайте Process One на странице загрузки. После скачивания запустите файл и приступайте к установке.
Установка сервера
После запуска установщика первым делом появится диалог выбора языка. Выберите русский и нажмите «OK«. Запустится мастер установки, который поможет выполнить Вам все необходимые шаги. Во время работы мастера Вам придется ответить на следующие вопросы:
- Принятие лицензионного соглашения. Ejabberd распространяется на условиях лицензии GPL.
- Каталог для установки программы. Здесь будут находиться основные исполняемые файлы сервера и файлы конфигурации, а также база данных пользовательских аккаунтов под названием Mnesia.
- Доменное имя сервера. Как уже говорили выше, пусть это будет myjabber.ath.cx.
- Логин администратора. Вместе с доменным именем он составит Jabber ID администратора сервера.
- Пароль администратора.
- Вариант конфигурации сервера. Кластеры используются только на высоконагруженных серверах, поэтому отвечаем «Нет«.
После ответа на эти вопросы начнется процесс установки, во время которого будут выполнены основные настройки сервера. После установки сервер займет на диске около 15 Мб. Для окончания установки осталось выполнить лишь несколько шагов.
Установка и настройка 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 сервер
Paramtamtam · 2015.4.1 · 12 min
Да с игрищами и блудницами, да. Но перед тем как это делать — давай определимся — какой сервер мы будем ставить. Выбор предо мной, собственно, был не велик:
- OpenFire (Apache License 2.0) — написан на Java и большинство функций на нём делаются в бесплатной версии;
- EJabberd (GNU GPL) — написан на Erlang , модульный, есть веб-морда в комплекте, поддерживает кластеризацию;
- jabberd2 (GNU GPL) — написан на C , тоже модульный, более компактный;
Решено было разворачивать на.. jabberd2 потому что:
- Он написан на C и отличается малым потреблением ресурсов (два других кандидата в ней относятся в частности к памяти очень расточительно) плюс высокой производительностью (среднее потребление памяти v2.3.2 (x86_64) — sm/6Mb + c2s/7Mb);
- Лишен лишних свистелок — он просто модульный xmpp сервер;
- Он до сих пор поддерживается, да и сам по себе просто няшка.
Установка
Всю работу выполняем под рутом. Будьте внимательны и осторожны!
Цепляемся к нашему серверу на 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 файла:
- ssl.key — приватный ключ;
- ssl.crt — сертификат;
- sub.class1.server.ca.pem — корневой сертификат startssl.com;
Эти три файла переносим на сервер, переходим в директорию с ними и выполняем:
Не забываем о некоторых юансах:
- Лучше открыть итоговый сертификат любимым текстовым редактором и проверить чтоб секции не были нарушены;
- Итоговый сертификат должен заканчиваться одной пустой строкой;
Т.е. вид его должен быть в результате следующий: