Установка ejabberd под Windows
Рассмотрим установку сервера ejabberd на компьютеры под управлением ОС Windows в стандартной конфигурации для использования в локальной сети с открытым доступом из Интернет и с использованием службы DynDNS.
Предполагается, что у Вас уже установлена операционная система, настроен доступ в Интернет, а доменное имя на DynDNS (допустим, это будет myjabber.ath.cx) указывает на внешний адрес Вашего компьютера (либо тот, который доступен из Вашей локальной сети, если Вы настраиваете сервер без возможности подключения к нему из Интернета).
Первым делом скачайте программу-установщик на свой компьютер, сделать это можно на официальном сайте Process One на странице загрузки. После скачивания запустите файл и приступайте к установке.
Установка сервера
После запуска установщика первым делом появится диалог выбора языка. Выберите русский и нажмите «OK«. Запустится мастер установки, который поможет выполнить Вам все необходимые шаги. Во время работы мастера Вам придется ответить на следующие вопросы:
- Принятие лицензионного соглашения. Ejabberd распространяется на условиях лицензии GPL.
- Каталог для установки программы. Здесь будут находиться основные исполняемые файлы сервера и файлы конфигурации, а также база данных пользовательских аккаунтов под названием Mnesia.
- Доменное имя сервера. Как уже говорили выше, пусть это будет myjabber.ath.cx.
- Логин администратора. Вместе с доменным именем он составит Jabber ID администратора сервера.
- Пароль администратора.
- Вариант конфигурации сервера. Кластеры используются только на высоконагруженных серверах, поэтому отвечаем «Нет«.
После ответа на эти вопросы начнется процесс установки, во время которого будут выполнены основные настройки сервера. После установки сервер займет на диске около 15 Мб. Для окончания установки осталось выполнить лишь несколько шагов.
Ejabberd + передача файлов + «засланец»
Здравствуйте, уважаемое сообщество. Новый опыт, новая статья и новая попытка вскарабкаться на Хабр. Я эникейщик и для себе подобных решил написать очерк про установку и настройку сервера обмена сообщениями, ну и небольшой бонус напоследок.
Сразу оговорюсь, что интеграция с AD не рассмотрена, т.к. практического опыта нет.
Конфигурация железа:
Intel® Pentium® 4 CPU 2.40GHz
768 Mb RAM
HDD 40 Gb
ОС: Debian 6
В качестве сервера выбран ejabber (по сравнению с openfiler не такой требовательный к ресурсам)
Устанавливаем:
sudo aptitude install ejabberd
Настройки хранятся в файле /etc/ejabberd/ejabberd.cfg
Хочу заметить, что настройки в файле очень хорошо прокомментированы разработчиками.
sudo mcedit /etc/ejabberd/ejabberd.cfg
1. Находим и раскомментируем следующую строку:
override_local.
2. Находим секцию:
И прописываем свои данные для ejabberd-администратора
3. Секция ACCESS RULES и строка:
В комментариях сказано, что эта строка отвечает за самостоятельную регистрацию пользователей Если необходима возможность создания нового пользователя из клиентской программы, то приводим строку к виду:
Я эту возможность не использую, потому у меня строка выглядит так:
4. Секция DEFAULT LANGUAGE
прописываем язык по умолчанию ru:
5. Настроим такую полезную вещь как общий ростер (все контора сразу в списке у каждого пользователя)
находим и расскоментируем:
Передача файлов:
При таких настройках пользователи смогут прекрасно обмениваться не только сообщениями, но и файлами (при условии использования одинаковых клиентских программ, но об этом ниже), НО, проблема появилась тогда, когда я попытался передать файл человеку, который присоединился к серверу «снаружи». Поясню на примере: наш ejabberd-сервер в локальной сети — 192.168.100.100/ejabberd.local и он же в интернете (или другой локальной сети) 55.55.55.55/example.com — при таком раскладе пересылка файлов между пользователями из разных сетей не работала. Так вот если у вас сервер так же будет располагаться на шлюзе, то необходимо настроить следующее:
*Примечание:
host, name и hostname я специально заполнял внешним ip-адресом, когда настраивал, с тех пор так и осталось;
ip 0.0.0.0 — после этой строки ejabberd начнёт слушать на всех сетевых интерфейсах
Отлично, с конфигом, кажется, закончили. Осталось чуть.
Регистрируем учётную запись администратора ejabberd-сервера:
sudo ejabberdctl register XXX Example.com PASSWORD
sudo /etc/init.d/ejabberd restart
Администрируется сервер по адресу: наш_сервер:5280/admin
*Примечание:
логин вводим полностью, т.е. xxx@example.com и пароль, заданный на предыдущем шаге.
С помощью этой панели выполняются операции с сервером/пользователями/группами и прочее.
Переходим в раздел Virtual Hosts/название нашего сервера/группы общих контактов
Создаём группу
Название: Наша контора
Описание: Наша контора
Члены: собакаallсобака (значок собаки превращается в ссылку в предпросмотре, так что подстраховываюсь)
* если нужны определённые пользователи, то они перечисляются по порядку через пробел (vasya@example.com nadya@example.com)
Видимые группы: Наша контора
Всё норм, ejabberd готов к приему пользователей.
Пара слов о клиентских программах.
Я пробовал несколько программ, но остановился на Psi plus. Не навязываю, но советую присмотреться. Не ахти какой «корпоративный стиль», но своё дело знает туго.
*Примечание: для передачи файлов между всеми, необходимо в настройках аккаунта (Другое/Передача данных/Прокси сервер) указать внешний ip адрес ejabberd-сервера (в нашем примере 55.55.55.55)
Итак, сервер настроен, клиенты подключены, всё ок.
Засланец
Пришло время для бонуса, на который я недавно наткнулся.
Создадим специальный аккаунт (zaslanetc@example.com с паролем password) на нашем сервере. Все сообщения, которые поступят от определенного пользователя будут выполнены на том компьютере, с которого залогинился «Засланец», а результат выслан в ответном сообщении.
Суперпользы такой финт не несёт, но порцию положительных эмоций получите запросто.
Это тот случай, когда подготовка оказалась сложнее самой реализации. Тренировался на рабочем компьютере с
ubuntu 13.04
Необходимо установить ruby
Оказалось, что версии выше 1.8.7 (как позже выяснилось) капризничают, поэтому её я и поставил.
Устанавливал по этому руководству (nodejs — не надо, наша версия 1.8.7)
Затем устанавливаем «гемы»
gem install xmpp4r-simple
gem install session
и пишем скрипт/засланца
sudo mcedit zaslanetc.rb
#!/usr/bin/env ruby
require ‘rubygems’
require ‘xmpp4r-simple’
require ‘session’
#sh, в котором выполняются команды
@sh = Session::new
# Подключение к ejabberd-серверу
bot = Jabber::Simple.new(‘zaslanetc@example.com’, ‘password’)
while true
# Ожидаем сообщение
bot.received_messages do |msg|
# Проверка, что отправитель, кто надо отправитель
if msg && msg.from.to_s.include?(‘vasya@example.com’)
# Выполняем команды в сеансе sh
stdout, stderr = @sh.execute(msg.body) if msg.body
# Отправляем в ответном сообщении вывод команды
bot.deliver(msg.from, «\n» + stdout.chomp) unless stdout.empty?
# Отправляем ошибки
bot.deliver(msg.from, «\n» + stderr.chomp) unless stderr.empty?
end
end
end
Запускаем:
ruby zaslanetc.rb
при получении засланцем сообщения от vasya@example.com, он «пытается» выполнить это сообщение, а результат отправляет Васе в чат. При получении сообщения от кого-либо другого, он прикидывается ветошью и не реагирует. Натуральный засланец!
Всем спасибо за внимание, пока пока!
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.
Это «Песочница» — раздел, в который попадают дебютные посты пользователей, желающих стать полноправными участниками сообщества.
Если у вас есть приглашение, отправьте его автору понравившейся публикации — тогда её смогут прочитать и обсудить все остальные пользователи Хабра.
Чтобы исключить предвзятость при оценке, все публикации анонимны, псевдонимы показываются случайным образом.
Не надо пропускать:
- рекламные и PR-публикации
- вопросы и просьбы (для них есть Хабр Q&A);
- вакансии (используйте Хабр Карьеру)
- статьи, ранее опубликованные на других сайтах;
- статьи без правильно расставленных знаков препинания, со смайликами, с обилием восклицательных знаков, неоправданным выделением слов и предложений и другим неуместным форматированием текста;
- жалобы на компании и предоставляемые услуги;
- низкокачественные переводы;
- куски программного кода без пояснений;
- односложные статьи;
- статьи, слабо относящиеся к или не относящиеся к ней вовсе.
ejabberd 16.08
Автор | Alexey Shchepin (Сайт) |
Языки |
Основная информация о программе
Ejabberd — это один из самых популярных XMPP серверов, основное назначение которого заключено в создании и развертывании системы обмена текстовыми сообщениями в сетях любых масштабов: от локальных сетей, состоящих из двух-трех компьютеров, до проектов уровня KDE Talk и системы общения в Facebook. Его главные достоинства — гибкая настройка, масштабируемость и отказоустойчивость. Сам протокол XMPP раньше назывался Jabber и характеризовался как открытая универсальная децентрализованная система обмена сообщениями, видео, файлами и информацией о присутствии.
Это не единственный протокол, поддерживаемый программой, в базовой конфигурации поддерживаются:
- Jingle — голосовой протокол, основанный на XMPP;
- SIP (Session Initiation Protocol) — протокол для передачи данных, часто использующийся в основном в IP-телефонии;
- ICE (Interactive Connectivity Establishment) протокол для общения в одноранговых сетях и в VoIP телефонии;
- STUN и TURN — протоколы использующие NAT Traversal;
- Proxy65 Media Relay — средство для передачи потокового медиа через RTP/RTCP и UDP.
Также вы можете подключать другие протоколы посредством плагинов, так как Ejabberd использует модульную архитектуру, а для разработчиков предусмотрен открытый API с подробной документацией. Управление программой осуществляется через консоль или веб-интерфейс. Если мощности одного сервера будет недостаточно, то можно объединить несколько компьютеров в кластер и распределить между ними нагрузку. Разработчик заявляет, что сервер, запущенный на системе с 16 гигабайтами оперативной памяти и 4-ядерном процессоре может одновременно поддерживать до 200–300 тысяч пользователей онлайн.
Ejabberd: полезные советы
Поскольку про настройку самого сервера, включая создание общих ростеров и подключение транспортов, написано видимо-невидимо, я затрону вопросы, менее освещенные в отечественной прессе — безопасность, удобство, скорость.
1. Безопасность.
Начнём с самого простого и самого важного — обезопасим себя!
Сперва включим на клиенте шифрование соединения через ssl, чтобы враги, которые непременно пытаются выкрасть секретный пароль, потерпели своё первое поражение.
С включением шифрования соединения можно разрешить передавать пароль в открытом виде.
Я исхожу их того, что на серверной стороне сертификат уже есть.
Если же случилось досадное упущение, и сертификат сгенерирован не был, это можно сделать вот так:
cd /var/lib/ssl/; openssl req -newkey rsa:1024 -keyout server.pem -nodes -x509 -days 3650 -out server.cer
echo «» >> server.pem; cat server.cer >> server.pem
Как видите, это проще, чем установка Gentoo (как известно, требуется выполнить всего три команды, чтобы поставить Gentoo).
Не забудем про права на сертификат: chown ejabberd:ejabberd server.pem; chmod 0400 server.pem
Итак, у нас остаётся последний участок, где пароли передаются в достаточно открытом виде — админка! Это совсем негоже, поэтому будем включать шифрование и здесь.
Возвращаемся в секцию listen и ищем запись для порта 5280.
Исправляем примерно так:
Здесь можно возрадоваться и наслаждаться уютной админкой, вход в которую будет теперь тут — jabber.tld:5280/admin/
2. Удобство пользования.
Чтобы сделать общение с сервером по-настоящему удобным, щедрой рукой добавим ему сторонних мордулей.
В зависимости от дистрибутива, для этого придётся делать разные приседания. К слову, в Альте всё уже сделано за вас ^_^
Итак, на своих инсталляциях я добавляю
— mod_statsdx: расширенная статистика, показывающая разблюдовку по клиентам, ОС, типу соединения подключенных пользователей, количество оффлайновых сообщений и многое-многое другое. (+ mod_stats2file, который сохраняет всю статистику в файл в указанное место). Родной mod_stats можно отключить.
— mod_ctlextra: множество дополнительных команд для ejabberdctl. Операции с ростером, операции с группами для shared роостера и т.д. Более чем полезное полезное расширение.
— mod_http_bind и mod_http _fileserver, чтобы можно использовать web-клиенты.
— mod_rest / mod_xmlrpc — по вкусу и по надобности. Здесь надо помнить о необходимости отдельно защитить точки входа для указанных модулей.
Собирать модули достаточно просто — либо вручную с помощью erlc, либо запуская build.sh (предварительно проверив пути).
Готовый модуль надо поместить к остальным модулям (обычно, /usr/lib<,64>/ejabberd/ebin/) и внести необходимые изменения в конфиг.
Пример таких изменений можно посмотреть тут.
3. Скорость
Во-первых, надо пересмотреть необходимость таких тяжелых модулей, как mod_shared_roster_ldap — при 5ти сотнях пользователей в AD ростер будет забираться с сервера перу-тройку минут для каждого подключающегося клиента.
Возможно, будет лучше заполнять ростер новых пользователей вручную — «Поиск->Найти всех->Добавить всех». У такого варианта, впрочем, есть свой большой минус — т.к. уволенные или по иным причинам отключенные записи по-прежнему будут висеть в ростерах, столько любимые секретаршами рассылки «всем», не через MOTD, будут неуклонно забивать базу с оффлайновыми сообщениями и её придётся чистить по крону.
Можно отключить pubsub, если вы не используете подписки.