В этой статье будет описана поэтапная установка и настройка jabber-сервера ejabberd в Debian-совместимых системах (Ubuntu, Linux Mint и т.п.).
В первую очередь, перед установкой самого сервера, рекомендуем внести DNS-записи для будущего сервера, новые записи, как правило, активизируются не сразу. Может пройти до 72 часов до того, как они вступят в силу. Допустим, вы устанавливаете xmpp-сервер на домен myxmpp.ru, для этого у регистратора (или у того, чьи DNS-сервера вы используете) надо внести две SRV-записи:
_xmpp-server._tcp.myxmpp.ru. 86400 IN SRV 5 0 5269 myxmpp.ru.
_xmpp-client._tcp.myxmpp.ru. 86400 IN SRV 5 0 5222 myxmpp.ru.
Здесь вы можете подробнее прочитать о DNS SRV-записях и их проверке.
Они нужны для успешного s2s (server to server) сообщения, если вы не планируете связываться с другими xmpp-серверами, а делаете, например, внутренний корпоративный сервер – то вносить эти DNS-записи нет необходимости.
Для установки свежей версии ejabberd рекомендуем использовать apt-репозиторий apt.jabber.at. Добавляется он так, под рутом введите:
apt-get install apt-transport-https
echo "deb https://apt.jabber.at <dist> ejabberd" \
> /etc/apt/sources.list.d/jabber.at.list
wget -qO- https://apt.jabber.at/gpg-key | apt-key add -
apt-get update
Где <dist> замените на название вашего дистрибутива, например на jessie. Список поддерживаемых репозиторием дистрибутивов можно посмотреть здесь.
После этого для установки свежей версии xmpp-сервера достаточно сделать:
apt-get install ejabberd
Далее, рекомендуем использовать доверенный сертификат, а не самоподписанный, для того, чтобы im-клиенты не задавали лишних вопросов при добавлении вашего сервера. Если у вас уже установлены сертификаты letsencrypt для вашего домена, то создайте файл:
cat /etc/letsencrypt/live/myxmpp.ru/privkey.pem /etc/letsencrypt/live/myxmpp.ru/fullchain.pem >> /etc/ejabberd/xmpp.pem
Теперь перейдём к редактированию конфигурационного файла /etc/ejabberd/ejabberd.yml (может быть ejabberd.cfg в некоторых версиях). Ниже мы отметим только критичные для минимальной установки строки, которые необходимо отредактировать:
hosts:
- "myxmpp.ru"
listen:
-
port: 5222
certfile: "/etc/ejabberd/xmpp.pem"
-
port: 5280
certfile: "/etc/ejabberd/xmpp.pem"
s2s_certfile: "/etc/ejabberd/xmpp.pem"
s2s_use_starttls: optional
acl:
admin:
user:
- "admin@myxmpp.ru"
Отмеченное цветом это – то, что должно быть обязательно расскоментированно и необходимо изменить в соответствии, с вашим доменом и расположением файла сертификата.
Значение s2s_use_starttls: true
долнжо быть именно optional для того, чтобы работала s2s связь c gmail.com (google talk). Иначе, при попытке связаться с контактами google (хотя с другими XMPP-серверами соединение будет проходить успешно) будет ошибка:
Closing s2s connection: myxmpp.ru -> gmail.com (invalid dialback key)
Наконец, создайте пользователя, которому выделены права администратора:
ejabberdctl register admin myxmpp.ru 123456
Где “123456” – пароль.
И перезагрузите ejabberd:
/etc/init.d/ejabberd restart
Всё, после этого xmpp-сервер ejabberd должен работать. Можете добавлять пользовотеля admin@myxmpp.ru в xmpp-клиент, создавать по-аналогии других пользователей, изменять конфигурацию, а также использовать администраторский веб-интерфейс по адресу:
https://myxmpp.ru:5280/admin
– с логином и паролем указанными выше.
Если после указанных настроек s2s не работает, не происходит авторизации и в логе подобные ошибки:
@ejabberd_s2s_out:srv_lookup:1215 The DNS servers timed out on request for "somedomain.com" IN SRV. You should check your DNS configuration.
@ejabberd_s2s_out:open_socket:271 s2s connection: myxmpp.ru -> somedomain.com (remote server not found)
@ejabberd_s2s_out:handle_info:990 Reconnect delay expired: Will now retry to connect to somedomain.com when needed.
– проверьте свой resolv.conf подобно тому, как это описано здесь.
Подскажите, а как в новых версиях, к примеру для дебиан stretch включить поддержку mysql
В официальной документации всё написано: https://docs.ejabberd.im/admin/databases/mysql/#mysql-database-creation
Надо создать базу данных
ejabberd
с соответствующими правами и загрузить в неё таблицы отсюда: https://github.com/processone/ejabberd/blob/master/sql/mysql.sqlВ
ejabberd.yml
останется сделать следующие изменения: https://docs.ejabberd.im/admin/databases/mysql/#ejabberd-configurationСпасибо.
Так же, скажите, пожалуйста, верно ли прописано
в /etc/apt/sources.list.d/ создал файл: jabber.at.list с содержимым:
deb https://apt.jabber.at stretch ejabberd main
main
– не нужен. В вашем случае должно быть просто:deb https://apt.jabber.at stretch ejabberd
https://jabber.at/p/apt-repository/
https://apt.jabber.at/dists/stretch/ejabberd/
Сделал все так:
в /etc/apt/sources.list.d/
добавил deb https://apt.jabber.at stretch ejabberd
дальше
wget -qO- https://apt.jabber.at/gpg-key | apt-key add –
apt-get update
и
apt-get install ejabberd
поправил конфиг
https://pastebin.com/raw/GRGm1pxq
набираю команду для регистрациии
root@pentest-im:~# ejabberdctl register “admin” “jabbertestes.ru” “112233”
получаю ответ:
Error: cannot_register
Внимательнее читайте инструкцию, кавычки не нужны.
Да, спасибо, получилось поднять, но вот отредактировать конфиг для работы с mysql не выходит, создается в базе лишь юзер, вкарт и т.п – нет
А соответствующие таблицы имеются? Надо вручную (или через какой-нибудь phpmyadmin) загрузить в базу таблицы отсюда: https://github.com/processone/ejabberd/blob/master/sql/mysql.sql
Дамп загружен, я полагаю что нужно отредактировать ejabberd.yml
корректно отредактировать эти строки
modules:
mod_adhoc: {}
mod_admin_extra: {}
mod_announce: # recommends mod_adhoc
access: announce
mod_block_strangers: {}
mod_blocking: {} # requires mod_privacy
mod_caps: {}
mod_carboncopy: {}
mod_client_state: {}
mod_configure: {} # requires mod_adhoc
## mod_delegation: {} # for xep0356
mod_disco: {}
mod_echo: {}
mod_irc:
default_encoding: “utf-8”
mod_http_bind:
max_inactivity: 60
mod_bosh: {}
на работу с mysql, но пока именно корректно – у меня не получается
Не ясно, вы выполнили все пункты из официальной инструкции?
Помимо создания самой базы данных требуется:
– создать пользователя ejabberd и предоставить ему соответствующие права (пункт “Create ejabberd user and database”)
– отредактировать конфигурационный файл (“Adding MySQL connection configuration to ejabberd config file” и последующие два пункта опционально)
– перенести данные из внутренней базы в mysql (“Migrating data from internal database to MySQL”)
Приветствую, а не подскажете, есть ли возможность в ejabberd 18.04-1~afa90 сделать так, что бы каждый перечисленный в hosts домен работал со своей базой mysql?
https://www.ejabberd.im/node/3242/index.html
Спасибо, конечно, но там для ejabberd 2.*
Смысл тот же. В нынешних версиях это пишется так:
host_config:
"firsthost.com":
sql_type: mysql
sql_server: "server"
sql_database: "database"
sql_username: "username"
sql_password: "password"
host_config:
"secondhost.com":
sql_type: mysql
sql_server: "server"
sql_database: "database"
sql_username: "username"
sql_password: "password"
после того как сервер подняли не забудьте проверить его на http://xmpp.net или сразу проверить и добавить в полный список жаб https://xmpp.love
Как получить
Свежая версия здесь: https://github.com/processone/ejabberd/releases