Разное

Ejabberd настройка: Инструкция по настройке Ejabberd с транспортом J2J/ICQ(с корректной кодировкой) на Ubuntu Server / Хабр

Содержание

Установка XMPP-сервера ejabberd 18.12.1 на Debian 9 Stretch

Содержание статьи:

Появилась потребность в корпоративном Jabber-сервере (XMPP). Для реализации задачи выбрал ejabberd, по заявлениям разработчика он легкий, быстрый и надежный как скала.

 

Собирать ejabberd версии 18.12.1, будем из исходников на Debian 9 Stretch.

 

Подготовка системы

Перед началом установки обновляем систему до актуального состояния:



apt-get update && sudo apt-get upgrade -y

 

Устанавливаем необходимые зависимости:



apt-get install gcc g++ make autoconf erlang mysql-server git libssl-dev libyaml-dev zlib1g-dev libexpat1-dev imagemagick -y

 

Установка ejabberd

Скачиваем исходники ejabberd релизной версии 18. 12.1, распаковываем архив и переходим в него:



wget https://github.com/processone/ejabberd/archive/rel-18.12.1.zip

 

unzip rel-18.12.1.zip

cd ejabberd-rel-18.12.1

 

Выполняем настройку сборки. Я указал пути размещения файлов, в стандартные директории, включил MySQL/STUN/SIP поддержку:



./autogen.sh

./configure —prefix= —exec-prefix=/usr —enable-mysql —enable-stun —enable-sip

 

После запускаем компиляцию и выполняем установку:

 

По окончании установки, выполним настройки для запуска и нормальной работы ejabberd. Добавляем unit-файл в систему:



cp ejabberd. service /etc/systemd/system/multi-user.target.wants/ejabberd.service

ln -s /etc/systemd/system/multi-user.target.wants/ejabberd.service /lib/systemd/system/ejabberd.service

 

Создадим пользователя ejabberd, от имени которого будет запускаться ejabberd-сервер и выставляем правильные права на каталоги:



useradd ejabberd -d /var/lib/ejabberd -s /bin/sh -c «Ejabberd service user»

 

chown root:ejabberd -R /etc/ejabberd

chown ejabberd:ejabberd -R /var/lib/ejabberd

chmod 700 -R /var/lib/ejabberd

chown root:ejabberd /var/log/ejabberd

chmod 770 /var/log/ejabberd

chmod 755 /usr/sbin/ejabberdctl

 

Теперь можно запустить ejabberd-сервер:

 

Операции после установки

После установки пакета ejabberd, рекомендуется настроить на использование базы данных MySQL и не использовать встроенную Mnesia. Это связано с ограничением Mnesia на размер БД (2Gb). Так же необходимо создать административную учетную запись и назначить ей права доступа администратора.

Управление конференц-комнатами ejabberd через консоль ejabberdctl.

В качестве памятки опишу как управлять конференц-комнатами XMPP-сервера ejabberd через консоль ejabberdctl.

 

Рассмотрю самые основные моменты, которые у меня часто возникают в работе с конференц-комнатами (создание, задание параметров комнаты, определение членства пользователя в комнате, удаление комнаты).

Все ниже описанные действия применялись на развернутом XMPP-сервере ejabberd 18.12.1 на Debian 9 Stretch по этой статье.

 

В моем случае ejabberd-сервер работает от пользователя ejabberd, поэтому работать с консолью ejabberdctl необходимо через этого же пользователя.

 

Создадим комнату «general«, для сервиса MUC «conference. example.com» и домена «example.com»:



sudo -u ejabberd ejabberdctl create_room «general» «conference.example.com» «example.com»

 

Чтобы отобразить доступные параметры для комнаты, выполним команду:



sudo -u ejabberd ejabberdctl get_room_options «general» «conference.example.com»


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

title

description

allow_change_subj false

allow_query_users true

allow_private_messages true

allow_private_messages_from_visitors anyone

allow_visitor_status true

allow_visitor_nickchange false

public true

public_list true

persistent true

moderated true

captcha_protected false

members_by_default true

members_only true

allow_user_invites false

allow_subscription false

password_protected false

password

anonymous false

presence_broadcast [moderator,participant,visitor]

allow_voice_requests true

voice_request_min_interval 1800

max_users 200

logging true

vcard

vcard_xupdate undefined

captcha_whitelist {0,nil}

mam true

pubsub

lang

 

Для примера для комнаты «general«, укажем что комната постоянная (persistent) и вход в нее только по членству (members_only). Выполним команду:



sudo -u ejabberd ejabberdctl change_room_option «general» «conference.example.com» «persistent» «true»

sudo -u ejabberd ejabberdctl change_room_option «general» «conference.example.com» «members_only» «true»

 

Так как для комнаты указали вход в нее только по членству, то добавить членство в комнате «general«, для пользователя «[email protected]», можно командой:



sudo -u ejabberd ejabberdctl set_room_affiliation «general» «conference.example.com» «[email protected]» «member»

 

Удалить комнату  «general«, можно командой:



sudo -u ejabberd ejabberdctl destroy_room «general» «conference. example.com»

 

Более подробная документация по API находится на оф. сайте — https://docs.ejabberd.im/developer/ejabberd-api/admin-api/

 

Опубликовано в : 
ejabberd

Настройка Ejabberd

Настройка XMPP сервера Ejabberd.

Файл конфигурации 

Debian/Mandriva /etc/ejabberd/ejabberd.cfg

Freebsd /usr/local/etc/ejabberd/ejabberd.cfg

Полезное

Не забываем давать права на запись в папку, где хранятся логи (или она может быть не создана).

ejabberd start — Запуск ejabberd в режиме сервера

ejabberd stop — Остановка ejabberd

ejabberd restart — Рестарт ejabberd

ejabberd status — Получить статус сервера ejabberd

ejabberd live — Стартовать ejabberd в интерактивном режиме (будет видно весь процесс загрузки сервера, удобно для отслеживания ошибок)

Веб интерфейс доступен по адресу — http://localhost:5280/admin/ 

Более подробно о настройке Ejabberd:

http://www. process-one.net/en/ejabberd/guide_en 

В пункте 3.2 руководства описывается работа Ejabberd с базами данных.

Настройка

  1. %% доменное имя или IP адрес вашего сервера, localhost указывается в том случае, если планируется доступ к службе с локальной машины
  2. {hosts, ["localhost", "domen.ru"]}.
  3.  
  4. %% в логи пишется все - 4, в логи пишутся только ошибки - 2
  5. {loglevel, 4}.
  6.  
  7. %% указываем пользователя (или нескольких пользователей) которые будут иметь права администратора и смогут заходить в веб-панель администрирования jabber сервера - регистрация этих пользователей происходит обычным способом через клиент 
  8. {acl, admin, {user, "user"}}.
  9.  
  10. %% Здесь указано на каких портах будет работать сервер в режимах c2s, s2s, http
  11. {listen, [
  12.    {5222, ejabberd_c2s, [
  13.    {certfile, "/opt/ejabberd-2. 1.0/conf/server.pem"}, starttls,
  14.    {access, c2s},
  15.    {shaper, c2s_shaper},
  16.    {max_stanza_size, 65536}
  17. ]},
  18.  
  19. {5223, ejabberd_c2s, [
  20.    {certfile, "/opt/ejabberd-2.1.0/conf/server.pem"}, tls,
  21.    {access, c2s},
  22.    {shaper, c2s_shaper},
  23.    {max_stanza_size, 65536}
  24. ]},
  25.  
  26. %% s2s - server to server сообщение от одного сервера при необходимости шифруется и передается на другой сервер, а на другом сервере происходит соединение c2s
  27. {5269, ejabberd_s2s_in, [
  28.    {shaper, s2s_shaper},
  29.    {max_stanza_size, 131072}
  30. ]},
  31.  
  32. {5280, ejabberd_http, [
  33.    captcha,
  34.    http_bind,
  35.    http_poll,
  36.    web_admin
  37. ]}
  38.  
  39. ]}. 
  40.  
  41. %% Использовать объединение серверов. Нужен сертификат
  42. {s2s_use_starttls, true}.
  43.  
  44. %% Сертификат для S2S
  45. {s2s_certfile, “/opt/ejabberd-2.1.0/conf/server.pem”}.
  46.  
  47. %% Разрешить или запретить общение с серверами.
  48. %% {{s2s_host, “goodhost.org”}, allow}.<br /><br />
  49. %% {{s2s_host, “badhost.org”}, deny}.<br /><br />
  50.  
  51. %% тут подключаем mod_log_chat логи будут записаны в html формате в папку web сервера /var/www/html/jabberlog, и будут доступны через http (при условии корректной настройки веб-сервера)
  52. {mod_log_chat, [{path, "/var/www/html/jabberlog"}, {format, html}]},<br /><br />
  53.  
  54. %% Также следует учесть, что аккаунт администратора регистрируется через обычный jabber клиент.  Для возможности регистрации пользователей на сервере следует определить права в соответствующей строке конфига как:
  55. {access, register, [{allow, all}]}.

Создание сертификата

  1. cd /usr/local/etc/ejabberd/
  2.  
  3. openssl req -new -x509 -nodes -newkey rsa:1024 -days 3650 \
  4. -keyout privkey.pem -out server.pem -subj \
  5.  "/C=XX/ST=XX/L=XX/O=XX/OU=XX/CN=hostname.ru/[email protected]"
  6.  
  7. cat privkey.pem >> server.pem 
  8. rm privkey.pem 
  9. mv server.pem ssl.pem

DNS — SRV записи

Запись SRV RR может выглядеть так:
_sip._udp SRV 0 0 5060 domain.tld.

В этом примере _sip._udp это IETF тип сервиса и протокол. SRV это тип DNS RR,

приоритет сервера установлен в 0

значение weight 0, 

5060,- порт, на котором работает SIP,

domain. tld,- адрес сервера (SIP-прокси).

SRV для Jabber:

_jabber._tcp SRV 5 0 5269 domain.tld.

_xmpp-server._tcp SRV 5 0 5269 domain.tld.

_xmpp-client._tcp SRV 5 0 5222 domain.tld.

Записи _jabber (и _xmpp-server) используются для интерконнекта с другими jabber-доменами,

_xmpp-client указывает на хост, на котором должен регистрироваться (авторизовываться) клиент.

Если протокол не указан, подразумевается ._tcp.

Если DNS расположено у хостера то скорее всего надо сделать следующее:

  1. Выбрать тип записи из списка — это будет SRV запись
  2. В графе доменного имени указать _jabber._tcp.domain.tld.
  3. В графе параметры указать приоритет сервера, значение weight, порт, домен: 0 0 5222 domain.tld
  4. И также сделать для записей  _xmpp-server._tcp и _xmpp-client._tcp
  5. Однако от хостера к хостеру эта процедура может варьироваться, так что уточняйте.

Как установить Ejabberd на RHEL 8?

Ejabberd — это бесплатный XMPP-сервер с открытым исходным кодом, написанный на Erlang.

Ejabberd был разработан для масштабируемости и отказоустойчивости.

Он имеет небольшой ресурсный ресурс и может работать на любой Unix, такой как операционная система — Linux, FreeBSD, Solaris, macOS, OpenBSD и другие.

Ejabberd использует хранилище данных по умолчанию — Mnesia (распределенная внутренняя база данных Erlang), но вы можете использовать сервер баз данных SQL или NoSQL.

Особенности Ejabberd XMPP Server

Ejabberd имеет модульную архитектуру, которая обеспечивает высокую настраиваемость и легкий доступ к необходимым функциям, которая включает в себя:

  • Store-and-forward (автономные сообщения)
  • Список контактов (реестр) и наличие
  • Обмен сообщениями
  • Расширение присутствия пользователя: протокол личных событий (PEP) и индикатор ввода
  • Профиль пользователя с vCards
  • Групповой чат: MUC (многопользовательский чат)
  • Архивация сообщений с помощью Message Archive Management (MAM)
  • Квитанции о доставке сообщений (XEP-184)
  • Настройки конфиденциальности, через список конфиденциальности и простые расширения блокировки
  • Последняя активность
  • Метрики и полное администрирование из командной строки
  • Полнофункциональная веб-поддержка, с BOSH и веб-сокетами
  • Управление потоком для обеспечения надежности сообщений на мобильных устройствах (также известный как XEP-0198)
  • и многое, многое другое.

Как установить Ejabberd XMPP Server на RHEL 8

Ejabberd упакован в файл RPM, который можно легко загрузить и установить с помощью менеджера пакетов rpm.

Если у вас есть страсть к компиляции из исходного кода, сделайте это.

Шаг 1: Обновление системы

Как обычно, вам нужно работать на обновленной системе

sudo yum -y update

Шаг 2: Загрузите и установите пакет RPM Ejabberd

После обновления загрузите пакет RPM Ejabberd.

Вам нужно будет проверить наличие последней версии, прежде чем делать фактическую загрузку.

На момент написания статьи доступна версия 18.12.1

sudo yum -y install wget
export VER="18.12.1"
wget https://www.process-one.net/downloads/ejabberd/18.12.1/ejabberd-$VER-0.x86_64.rpm

Установите загруженный RPM-пакет, выполнив команду:

sudo yum localinstall ejabberd-$VER-0.x86_64.rpm

Это поместит скрипт инициализации ejabberd в /etc/init.d/ejabberd.

  • Создан системный пользователь ‘ejabberd‘
  • Каталог приложения ejabberd — /opt/ejabberd. Это home для пользователя ejabberd.
  • Когда запускается ejabberd, процессы, которые запускаются в системе, это beam или beam.smp, а также epmd.

Шаг 3: Запустите сервис Ejabberd

Теперь, когда мы выполнили установку, нам нужно запустить службу и включить ее автоматический запуск при перезагрузке сервера.

Найдите ejabberd.service и скопируйте его в /etc/systemd/system

sudo yum -y install mlocate
sudo updatedb
sudo cp $(locate ejabberd.service) /etc/systemd/system

Затем перезагрузите systemd

sudo systemctl daemon-reload

Как только новый сервис ejabberd обнаружен, запустите его

sudo systemctl enable --now ejabberd

Вы можете подтвердить, что сервис работает.

systemctl status ejabberd

Шаг 4: Создайте учетную запись администратора ejabberd XMPP.

Вам нужна учетная запись администратора XMPP для доступа к панели администратора Web Admin.

Измените свой рабочий каталог на /opt/ejabberd-${VER}/bin

cd /opt/ejabberd-${VER}/bin

Добавьте учетную запись администратора

# . /ejabberdctl register myadmin localhost mystrongPassword
User jmutai@localhost successfully registered

Возможно, вам придется заменить localhost вашим реальным именем хоста сервера.

Другие учетные записи пользователей должны быть добавлены аналогичным образом.

./ejabberdctl register testuser localhost testuserpassword

Отредактируйте файл конфигурации ejabberd, чтобы предоставить права администратора для созданной вами учетной записи XMPP /opt/ejabberd/conf/ejabberd.yml.

acl:
   local:
     user_regexp: ""
   loopback:
     ip:
       - "127.0.0.0/8"
       - "::1/128"
       - "::FFFF:127.0.0.1/128"
   admin:
     user:
       - "admin@localhost"
       - "myadmin@localhost"

Перезапустите сервис ejabberd.

sudo systemctl restart ejabberd

Шаг 4. Настройка брандмауэра и интерфейса доступа

Разрешите порт Ejabberd UI на брандмауэре.

sudo firewall-cmd --add-port=5280/tcp --permanent
sudo firewall-cmd --reload

Веб-админка должна быть доступна по адресу http://ip-адрес:5280/admin/

Откройте URL, используя ваш любимый браузер.

Войдитк с полным именем пользователя с именем домена, например, myadmin@localhost.

 

Поделитесь статьей:

linux: ejabberd ( jabber server )

Ставьте ejabberd 2.1.3

Далее конфиг:
/etc/ejabberd/ejabberd.cfg:



override_global.
override_local.
override_acls.

{loglevel, 4}.
{hosts, ["jabber.example.ru","localhost"]}.
{listen,
 [
  {5222, ejabberd_c2s, [
                        {certfile, "/etc/ejabberd/ssl.pem"}, starttls,
                        {access, c2s},
                        {shaper, c2s_shaper},
                        {max_stanza_size, 65536}
                       ]},

  {5223, ejabberd_c2s, [
                        {access, c2s},
                        {shaper, c2s_shaper},
                        {certfile, "/etc/ejabberd/ssl.pem"}, tls,
                        {max_stanza_size, 65536}
                       ]},

  {5269, ejabberd_s2s_in, [
                           {max_stanza_size, 131072}
                          ]},

  {5280, ejabberd_http, [
                         http_bind,
                         http_poll,
                         web_admin,
                         {certfile, "/etc/ejabberd/ssl. pem"}, tls
                        ]}

 ]}.

{s2s_use_starttls, true}.
{s2s_certfile, "/etc/ejabberd/ssl.pem"}.
{s2s_default_policy, allow}.
{outgoing_s2s_port, 5269}.

{auth_method, internal}.

{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}.

{max_fsm_queue, 1000}.

{acl, admin, {user, "admin"}}.

{acl, blocked, {user, "root"}}.
{acl, blocked, {user, "r00t"}}.
{acl, blocked, {user, "administrator"}}.
{acl, blocked, {user, "kss"}}.
{acl, blocked, {user, "administrat0r"}}.
{acl, blocked, {user, "adm1n"}}.
{acl, blocked, {user, "r0ot"}}.
{acl, blocked, {user, "ro0t"}}.
{acl, blocked, {user, "adm1n1strat0r"}}.
{acl, blocked, {user, "administrator"}}.
{acl, blocked, {user, "adm1nistrat0r"}}.
{acl, blocked, {user, "adm1nistrator"}}.
{acl, blocked, {user, "admin1strat0r"}}.
{acl, blocked, {user, "admin1strator"}}.
{acl, blocked, {user, "alter"}}. 

{acl, local, {user_regexp, ""}}.

%% Maximum number of simultaneous sessions allowed for a single user:
{access, max_user_sessions, [{10, all}]}.

%% Maximum number of offline messages that users can have:
{access, max_user_offline_messages, [{5000, admin}, {100, all}]}.

%% This rule allows access only for local users:
{access, local, [{allow, local}]}.

%% Only non-blocked users can use c2s connections:
{access, c2s, [{deny, blocked},
               {allow, all}]}.

%% For C2S connections, all users except admins use the "normal" shaper
{access, c2s_shaper, [{none, admin},
                      {normal, all}]}.

%% All S2S connections use the "fast" shaper
{access, s2s_shaper, [{fast, all}]}.

%% Only admins can send announcement messages:
{access, announce, [{allow, admin}]}.

%% Only admins can use the configuration interface:
{access, configure, [{allow, admin}]}. 

%% Admins of this server are also admins of the MUC service:
{access, muc_admin, [{allow, admin}]}.

%% Only accounts of the local ejabberd server can create rooms:
{access, muc_create, [{allow, local}]}.

%% All users are allowed to use the MUC service:
{access, muc, [{allow, all}]}.

%% Only accounts on the local ejabberd server can create Pubsub nodes:
{access, pubsub_createnode, [{allow, local}]}.

%% In-band registration allows registration of any possible username.
%% To disable in-band registration, replace 'allow' with 'deny'.
{access, register, [{allow, all}]}.

%% By default the frequency of account registrations from the same IP
%% is limited to 1 account every 10 minutes. To disable, specify: infinity
%%{registration_timeout, 600}.

{language, "ru"}.

{modules,
 [
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]}, % recommends mod_adhoc
  {mod_caps,     []},
  {mod_configure,[]}, % requires mod_adhoc
  {mod_disco,    []},
  %%{mod_echo,   [{host, "echo. localhost"}]},
  %%{mod_irc,      []},
  {mod_http_bind, []},
  %%{mod_http_fileserver, [
  %%                       {docroot, "/var/www"},
  %%                       {accesslog, "/var/log/ejabberd/access.log"}
  %%                      ]},
  {mod_last,     []},
  {mod_muc,      [
                  %%{host, "conference.@HOST@"},
                  {access, muc},
                  {access_create, muc_create},
                  {access_persistent, muc_create},
                  {access_admin, muc_admin}
                 ]},
  %%{mod_muc_log,[]},
  {mod_offline,  [{access_max_user_messages, max_user_offline_messages}]},
  {mod_ping,     []},
  {mod_privacy,  []},
  {mod_private,  []},
  %%{mod_proxy65,[]},
  {mod_pubsub,   [
                  {access_createnode, pubsub_createnode},
                  {ignore_pep_from_offline, true}, % reduces resource comsumption, but XEP incompliant
                  %%{ignore_pep_from_offline, false},  % XEP compliant, but increases resource comsumption
                  {last_item_cache, false},
                  {plugins, ["flat", "hometree", "pep"]}  % pep requires mod_caps
                 ]},
  {mod_register, [
                  %%
                  %% After successful registration, the user receives
                  %% a message with this subject and body. 
                  %%
                  {welcome_message, {"Welcome!",
                                     "Hi.\nWelcome to this XMPP server."}},

                  %%
                  %% When a user registers, send a notification to
                  %% these XMPP accounts.
                  %%
                  %%{registration_watchers, ["[email protected]"]},

                  {access, register}
                 ]},
  {mod_roster,   []},
  %%{mod_service_log,[]},
  {mod_shared_roster,[]},
  {mod_stats,    []},
  {mod_time,     []},
  {mod_vcard,    []},
  {mod_version,  []},
  {mod_statsdx,  []}
 ]}.

%%%.
%%%'

%%% $Id$

%%% Local Variables:
%%% mode: erlang
%%% End:
%%% vim: set filetype=erlang tabstop=8 foldmarker=%%%',%%%. foldmethod=marker:



/etc/ejabberd/inetrc:



{file, hosts, "/etc/hosts"}. 
{file, resolv, "/etc/resolv.conf"}.
{lookup,["file","dns"]}.


Как ясно из примера выше свой хост лучше добавить в /etc/hosts

DNS:



_xmpp-server._tcp.jabber.example.ru. 3600 IN SRV 20 0 5269 jabber.example.ru.
_xmpp-client._tcp.jabber.example.ru. 3600 IN SRV 20 0 5222 jabber.example.ru.
_jabber._tcp.jabber.example.ru. 3600 IN SRV 20 1 5222 jabber.example.ru.


Касаемо файла /etc/ejabberd/ssl.pem, заходите на startssl.com и создаете сертификат и ключ, затем cat private.key > ssl.pem && cat cert.crt >> ssl.pem

/sbin/ejabberctl:



ERL_INETRC=/etc/ejabberd/inetrc
export ERL_INETRC


iptables:



iptables -A INPUT -p tcp -m tcp --dport 5222 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 5223 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 5269 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 5280 -j ACCEPT


PS: А вот тут имеется шикарная документация по ejabberd 2. 1.3

Понравилось это:

Нравится Загрузка…

Похожее

Установите и настройте ejabberd на сервере Ubuntu

Как: установить и настроить ejabberd на сервере Ubuntu

ejabberd — это серверное программное обеспечение XMPP, которое можно использовать для обмена мгновенными сообщениями на вашем собственном сервере. В этом руководстве вы сможете узнать, как правильно установить и настроить ejabberd на сервере Ubuntu.

Итак, приступим.

Шаг 1. Загрузите и установите

ejabberd доступен в репозиториях Ubuntu, поэтому его легко загрузить и установить.

Просто запустите:

 sudo apt-get install ejabberd 

Шаг 2. Настройка

Откройте файл конфигурации ejabberd, запустив:

 Судо нано /etc/ejabberd/ejabberd.cfg 

* Если вы предпочитаете редактор, отличный от nano, вы, очевидно, можете заменить его на указанный выше файл.

В файле конфигурации найдите следующее:

 %% Имя хоста {хосты, ["localhost"]}. 

Измените эту строку, чтобы она представляла правильное имя хоста.Пример:

 %% Имя хоста {хосты, ["localhost", "example.net"]}. 

Прямо над ним вы найдете:

XMPP: полное руководство: создание приложений реального времени с помощью Jabber Technologies

 %% Пользователь с правами администратора {acl, admin, {user, «», «localhost»}}. 

Между кавычками введите любое имя пользователя admin, а затем замените localhost на свое имя хоста.

Как только это будет сделано, сохраните файл и перезагрузите демон ejabberd:

 sudo / etc / init.d / ejabberd перезапуск 

Практическое руководство по командам, редакторам и оболочке Linux, A (2-е издание)

Затем создайте учетную запись администратора. Для этого запустите:

 sudo ejabberdctl зарегистрировать пароль администратора localhost 

Замена «admin» на имя пользователя, которое вы создали ранее, «localhost» на правильное имя хоста сервера и «пароль» на любой пароль, который вы хотите использовать.

Если все прошло хорошо, теперь вы можете получить доступ к веб-интерфейсу для ejabberd, перейдя по адресу http: // yourhostname: 5280 / admin.При появлении запроса введите свое имя пользователя и пароль. Вы должны увидеть следующее:

Шаг 3. Подключитесь к серверу ejabberd

Теперь должно быть возможно подключиться к вашему серверу ejabberd через IM-клиент, поддерживающий XMPP. Мы попробуем подключиться с помощью Empathy, текущего клиента обмена сообщениями по умолчанию в настольной версии Ubuntu.

Выберите Jabber в качестве типа учетной записи, а затем введите имя пользователя, которое вы создали ранее, вместе с именем хоста (пример: имя пользователя @ имя хоста ).Наконец, введите пароль для учетной записи.

Дополнительные учетные записи Возможно, вы захотите создать на сервере еще несколько учетных записей для своих друзей или других компьютеров в вашей сети. Лучший способ сделать это — запустить ejabberdctl для каждой отдельной учетной записи, которую вы хотите создать.

 sudo ejabberdctl регистрация нового пользователя пароль localhost 

Также возможно добавить дополнительных пользователей через веб-интерфейс. Дополнительные учетные записи администратора Чтобы создать дополнительную учетную запись администратора, откройте файл ejabberd.cfg и найдите:

 %% Пользователь с правами администратора {acl, admin, {user, «», «localhost»}}. 

Создайте новую строку под этим и добавьте:

 {acl, admin, {user, «», «localhost»}} 

Добавьте новое имя пользователя в кавычки и укажите имя хоста, заменив «localhost». Наконец, запустите ejabberdctl, как показано на шаге 2, для создания учетной записи администратора.

Этот учебник последний раз обновлялся 31 июля 2013 г.

Создание эджабберда 14. 12 работа с Microsoft Windows Active Directory LDAP

Почему эджабберд?

Мой офис использует Google Talk для обмена мгновенными сообщениями внутри сотрудников. В этот понедельник все пользователи получили широковещательное сообщение от Google, в котором говорилось, что настольный клиент Google Talk перестанет работать 15 февраля (хотя это может быть старое автоматическое уведомление, когда Google угрожал EOL Talk в феврале прошлого года).

Обновление (2015-03-09) : Наконец, 23 февраля 2015 года они убили Talk для Windows.

Конечно, мы не можем рискнуть, что Google фактически отключит наши мгновенные сообщения, , и мне лично не нравится новое приложение Hangouts для Chrome.

Более того, мы хотим, чтобы сотрудники могли только отправлять сообщения другим людям в нашей организации. Мы также не обязательно хотим, чтобы Google участвовал во всех наших коммуникациях. Это означает запуск собственного IM-сервера.

ejabberd — известная рабочая лошадка для IM. Да, я много слышал об Openfire и других, но, тем не менее, решил пойти на эджабберд.

Окружающая среда и цели

В нашей организации используется очень простая инфраструктура Windows 2008 AD: один лес, один домен, одно подразделение. (Всего около 15 сотрудников.)

У меня было три цели для нашего IM-решения, помимо очевидной возможности общаться в чате:

  • Аутентификация в соответствии с AD
  • Обмен данными о сотрудниках (настоящее имя, адрес электронной почты и т. Д.) Между IM-сервером и AD
  • Контакты чата, определенные в AD

Причина всех трех из них в том, что поддерживать отдельную систему сложно и приходится создавать все учетные записи пользователей дважды (что я делал с Google).Из коробки ejabberd подходит ко всем трем со следующими характеристиками:

  • Аутентификация LDAP
  • mod_vcard_ldap
  • mod_shared_roster_ldap

Мы в основном занимаемся производством рабочих станций Windows / серверов Linux, поэтому мы используем Active Directory, а я запускаю ejabberd в Linux.

На бумаге это звучало идеально, но на самом деле было настоящим делом — получить 95% функциональный .

Вызовы

Проблемы с установкой

По умолчанию двоичный файл установки помещает ejabberd по пути / opt / ejabberd-14.12 . В и т.д. нет внешних зависимостей и файлов конфигурации. Все находится в этом каталоге.

Я использую CentOS, поэтому я подписал эти комментарии:

Файл инициализации не поддерживает chkconfig, поскольку в нем отсутствует обязательный заголовок:

Достаточно просто добавить следующее в начало ejabberd.init:

  #! / Bin / sh
#
# ejabberd Сценарий запуска для XMPP-сервера ejabberd
#
# chkconfig: - 99 10
# описание: сервер ejabberd XMPP

# Библиотека исходных функций.. /etc/init.d/functions

set -o errexit  

Цифры после chkconfig — это приоритеты загрузки и завершения работы, они могут нуждаться в настройке, но кажутся безопасными. Я не думаю, что chkconfig зависит от дистрибутива, я попрошу разработчиков ejabberd добавить его в дистрибутив.

Итак, после добавления этого в ejabberd.init все, что осталось сделать, это:

  cp ejabberd.init /etc/init.d/ejabberd
chmod + x /etc/init.d/ejabberd
/ usr / sbin / groupadd -r ejabberd
/ usr / sbin / useradd -g ejabberd -p ejabberd -r ejabberd
/ sbin / chkconfig - добавить ejabberd
/ sbin / chkconfig ejabberd на  

Другая проблема, с которой я столкнулся, заключалась в том, что я установил ejabberd как root , но я пытался запустить его как пользователь ejabberd и поэтому получил ошибку:

  sed: не удается прочитать / opt / ejabberd-14.12 / conf / ejabberd.yml: в доступе отказано
sed: не удается прочитать /opt/ejabberd-14.12/conf/ejabberd.yml: в доступе отказано
sed: не удается прочитать /opt/ejabberd-14.12/conf/ejabberd.yml: в доступе отказано
sed: невозможно прочитать /opt/ejabberd-14. 12/conf/ejabberd.yml: в доступе отказано
mkdir: невозможно создать каталог `/opt/ejabberd-14.12/database ': в доступе отказано
./ejabberdctl: строка 125: cd: /opt/ejabberd-14.12/database/ejabberd@localhost: В доступе отказано
sh: /opt/ejabberd-14.12/bin/erl: В доступе отказано  

Решение здесь довольно простое: chown -R ejabberd: ejabberd / opt / ejabberd-14.12

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

  # ps -ef | grep ejabberd
эджабберд 1429 1 0 17:04? 00:00:00 /opt/ejabberd-14.12/bin/epmd -daemon
эджабберд 1431 1 3 17:04? 00:00:04 /opt/ejabberd-14.12/bin/beam.smp -K true -P 250000 - -root /opt/ejabberd-14.12 -progname /opt/ejabberd-14.12/bin/erl - -home / opt / ejabberd-14.12 - -sname ejabberd @ localhost -noshell -noinput -noshell -noinput -pa /opt/ejabberd-14.12/lib/ejabberd-14.12/ebin -mnesia dir "/opt/ejabberd-14. 12/database/ejabberd@localhost" - ejabberd log_rate_limit 100 log_rotate_size 10485760 log_rotate_count 1 log_rotate_date "" -s ejabberd -sasl sasl_error_logger {file, "/ opt / ejabberd-14.12 / logs / erlang.log"} -smp автозапуск

# kill 1429
# kill 1431
  

Наконец, у меня возникла еще одна проблема, когда остановил службу:

  остановка обслуживания ejabberd
Остановка эджабберда...
/opt/ejabberd-14.12/bin/ejabberdctl: строка 364: epmd: команда не найдена  

Еще один простой, потому что сообщение об ошибке довольно четкое. В файле /opt/ejabberd-14.12/bin/ejabberdctl есть несколько строк, которые предполагают, что epmd находится в том же каталоге… что это такое! Тем не менее, ejabberdctl вызывается сценарием инициализации без изменения каталога на этот путь.

С этим можно справиться тремя способами:

  • Измените ejabberdctl, чтобы он содержал полный путь к epmd
  • Измените сценарий инициализации на cd на / opt / ejabberd-14. 12 / бин
  • Добавьте /opt/ejabberd-14.12/bin к пути

SSL-сертификат по умолчанию

Первое, что я сделал, — это запустил простую конфигурацию ejabberd и попытался подключиться к ней. Я тестировал его как с Pidgin , так и с Spark (от Ignite Realtime).

Я не помню, какой это был из двух клиентов, но один из них отказался подключиться к серверу из-за ошибки SSL. Сообщение об ошибке не было явным, но из того, что я читал в Интернете, казалось, что сертификат с истекшим сроком действия заблокирует работу клиента.Поэтому кажется, что файл PEM по умолчанию, включенный в двоичные файлы ejabberd, недействителен.

Самоподписанный сертификат — не проблема, поэтому я создал его с помощью OpenSSL и дал срок его действия через 10 лет. Это не настоящая проблема, но вы должны сделать это сразу же.

Аутентификация LDAP

Получить работающую аутентификацию LDAP не составило большого труда. Документация — это почти все, что вам нужно.

Вот очищенный фрагмент моей конфигурации LDAP.Обратите внимание, что я создал пользователя с общим именем Ejabberd LDAP в качестве читателя LDAP.

  auth_method: ldap
ldap_servers:
   - "dcserver01.mydomain.com"
   - "dcserver02.mydomain.com"
ldap_encrypt: нет
ldap_port: 389
ldap_rootdn: "CN = Ejabberd LDAP, CN = Users, dc = mydomain, dc = com"
ldap_password: "SomePassword0239"
ldap_base: "cn = Users, dc = mydomain, dc = com"
ldap_uids:
   - «sAMAccountName»
ldap_filter: ""
  

Этого достаточно, чтобы аутентификация LDAP работала.

Кстати, если вы хотите получить ldap_rootdn (отличительное имя пользователя Active Directory ), запустите Пользователи и компьютеры Active Directory . Откройте свойства пользователя, щелкните вкладку Attribute Editor и прокрутите вниз до тех пор, пока не найдете visibleName в списке.

mod_vcard_ldap

Этот должен был быть простым , но это было далеко не так.

Во-первых, в какой-то момент разработчики ejabberd перешли на файл конфигурации в формате YAML, поэтому большинство примеров, которые вы найдете в Интернете, находятся в формате JSON.Как только вы освоите YAML, не составит труда визуально переключаться между ними, но я не привык к YAML, поэтому пришлось немного учиться. (Кстати, «каждый файл JSON также является допустимым файлом YAML».)


Обновление (2016-03-25)

Ниже указываю, что опечатка в документации причинила мне некоторое горе . Я оставляю это в этой публикации для потомков (или в случае, если вы ссылаетесь на старую или заархивированную версию документов), однако Микаэль Ремон из ProcessOne любезно прокомментировал, что с тех пор документ был исправлен.

Спасибо, Микаэль, очень признателен!


Настоящая проблема заключалась в том, что я скопировал фрагмент конфигурации mod_vcard_ldap прямо из документации по интеграции LDAP Active Directory. Вот что там написано:

  mod_vcard_ldap:
    ldap_vcard_map:
      "NICKNAME": {"% u", []}
      "GIVEN": {"% s", ["givenName"]}
      "MIDDLE": {"% s", ["инициалы"]}
      "СЕМЬЯ": {"% s", ["sn"]}
      "FN": {"% s", ["displayName"]}
      "EMAIL": {"% s", ["mail"]}
      "ORGNAME": {"% s", ["company"]}
      "ОРГУНИТ": {"% s", ["отдел"]}
      "CTRY": {"% s", ["c"]}
      "МЕСТО": {"% s", ["l"]}
      "STREET": {"% s", ["streetAddress"]}
      "РЕГИОН": {"% s", ["st"]}
      "PCODE": {"% s", ["postalCode"]}
      "TITLE": {"% s", ["title"]}
      "URL": {"% s", ["wWWHomePage"]}
      "DESC": {"% s", ["описание"]}
      "TEL": {"% s", ["phoneNumber"]}]}
  

Вы видите проблему? Я точно не знал, и ejabberd выплюнул следующую ошибку в файле журнала:

03.02.2015 17:17:08.699 [ошибка] ОТЧЕТ ОБ АВАРИИ Процесс с 0 соседями завершился по причине: {undefined_macro, ''} в application_master: init / 4 строка 133

Вот проблема: В примере из документации используются запятые, когда следует использовать двоеточия. Вот и все. Конечно, я не замечал / не знал этого в течение нескольких часов, поэтому я пробовал каждую мелочь возможной чепухи, чтобы переформатировать этот раздел в действительный YAML.

Это правильный, рабочий раздел mod_vcard_ldap моей конфигурации.Обратите внимание, что я немного сократил его, потому что я все равно не заполняю все поля VCard в Active Directory:

  mod_vcard_ldap:
    ldap_uids: {"sAMAccountName": "% u"}
    ldap_filter: ""
    совпадения: бесконечность
    ldap_vcard_map:
      "NICKNAME": {"% s": ["displayName"]}
      "FN": {"% s": ["displayName"]}
      "EMAIL": {"% s": ["mail"]}
      "GIVEN": {"% s": ["givenName"]}
      "MIDDLE": {"% s": ["инициалы"]}
      "СЕМЬЯ": {"% s": ["sn"]}
      "ORGNAME": {"% s": ["company"]}
      "ОРГУНИТ": {"% s": ["отдел"]}
      "TITLE": {"% s": ["title"]}
      "TEL": {"% s": ["phoneNumber"]}
    ldap_search_fields:
      «Пользователь»: «% u»
      «Полное имя»: «displayName»
      «Электронная почта»: «почта»
    ldap_search_reported:
      «ФИО»: «FN»
      «Псевдоним»: «НИКНЕЙМ»
      «Электронная почта»: «EMAIL»
  

Строго говоря, нет необходимости определять ldap_uids в этом разделе, потому что ejabberd будет использовать ранее определенные вами настройки LDAP. Однако вы должны отметить, что как документация, так и множество, подразумеваемое именем поля, являются неточными. В основной конфигурации LDAP ldap_uids может быть списком (массивом, что угодно):

  # Исправить в основном разделе LDAP
ldap_uids:
   - «sAMAccountName»
  

В разделе mod_vcard_ldap это объект / отображение / что угодно . Если вы укажете более одного поля uid, выдается ошибка. Также требуется второй параметр (% u ).

  # Исправить в разделе mod_vcard_ldap
ldap_uids: {"sAMAccountName": "% u"}
  

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

mod_shared_roster

Ой, это когда-нибудь было болью. Есть много противоречивых примеров, много недоработанных обходных путей и много компромиссов, требующих решения.

Мне неясно, верно ли это в текущем выпуске, но очевидно, что пробелы в CN пользователя приводят к тому, что mod_shared_roster завершает работу без уведомления .

mikekaganski писал:
Это самая большая проблема, потому что «член» хранит своих членов как DN, таким образом, если у вас есть такие пользователи, как «CN = John Doe, OU = blah, OU = blah, DC = example, DC = com », , то мы застряли . В лучшем случае, когда у вас есть CN ваших пользователей без пробелов, вы можете использовать ldap_memberattr_format_re = «CN = (\\ w *), (OU =. *,) * DC = example, DC = com» (это из руководства, я не тестировал это регулярное выражение). Источник: https://www.ejabberd.im/node/4826

Мне потребовалось время, чтобы это найти.Что это значит? Чрезмерно упрощенная версия алогритма модуля LDAP с общим списком выглядит следующим образом:

  1. Запустите запрос ldap_rfilter , чтобы получить список групп, содержащих контакты с поддержкой Jabber
  2. Для каждой из этих групп выполните запрос ldap_gfilter , чтобы получить отображаемое имя группы и список участников.
  3. Для каждого отдельного члена группы, полученного на шаге 2, получите отображаемое имя пользователя.

На шаге 2 у меня все пошло не так.Все мои пользователи имеют свое полное имя в качестве общего имени, как вы можете видеть ниже:

  # ldapsearch -LLL -H ldap: //dcserver01.mydomain.com -x -D 'mydomain \ ejabberd.ldap' -w 'SomePassword2098' -E pr = 1000 / noprompt -b 'dc = mydomain, dc = com '' (& (objectCategory = group) (cn = Все сотрудники)) 'displayName member

dn: CN = Все сотрудники, CN = Пользователи, DC = mydomain, DC = com
участник: CN = Jennifer Doe, CN = Users, DC = mydomain, DC = com
участник: CN = Фамилия Эрика Фон, CN = Пользователи, DC = mydomain, DC = com
участник: CN = Киран Вандербра, CN = Пользователи, DC = mydomain, DC = com
displayName: Все сотрудники
  

Обратите внимание, что я усек и обработал вывод выше.

Как видите, во всех общих именах есть пробелы, и поэтому (я считаю) это невозможно разобрать. Я пробовал варианты свойств ldap_memberattr_format и ldap_memberattr_format_re , но безуспешно.

После много выдергивания волос , это моя рабочая конфигурация:

  mod_shared_roster_ldap:
    ldap_groupattr: "sAMAccountName"
    ldap_groupdesc: ""
    ldap_memberattr: "sAMAccountName"
    ldap_memberattr_format: "% u"
    ldap_useruid: "sAMAccountName"
    ldap_userdesc: "displayName"
    ldap_rfilter: "(& (objectCategory = группа) (cn = Все сотрудники))"
    ldap_gfilter: "(& (objectCategory = user) (memberOf = CN = All Employees, CN = Users, DC = mydomain, DC = com))"
    ldap_ufilter: "(& (objectClass = пользователь) (sAMAccountName =% u))"
    ldap_filter: ""
    ldap_group_cache_validity: 60
    ldap_user_cache_validity: 60
    ldap_auth_check: выкл.
  

Помните, что я говорил о компромиссах? Ну, мой запрос ldap_gfilter на самом деле не дает модулю того, что ему нужно: список членов группы и отображаемое имя группы . Вот почему я оставил поле ldap_groupdesc пустым; Мой запрос не возвращает название группы. Это означает, что имя моей группы не распространяется среди клиентов чата. Клиенты просто отображают список контактов вне какой-либо конкретной группы. У меня нет проблем с этим, потому что у меня есть только одна группа, содержащая всех сотрудников.

Вот результат моего ldap_gfilter с по , контрастирующий с предыдущим примером , который извлекал членов группы с только их отличительных имен:

  # ldapsearch -LLL -H ldap: // dcserver01.mydomain.com -x -D 'mydomain \ ejabberd.ldap' -w 'SomePassword2098' -E pr = 1000 / noprompt -b 'dc = mydomain, dc = com'
\ '(& (objectCategory = пользователь) (memberOf = CN = Все сотрудники, CN = Пользователи, DC = mydomain, DC = com))' sAMAccountName

dn: CN = Киран Вандербра, CN = Пользователи, DC = mydomain, DC = com
sAMAccountName: kwonderbra

dn: CN = Фамилия Эрика Фон, CN = Пользователи, DC = mydomain, DC = com
sAMAccountName: elastname

dn: CN = Дженнифер Доу, CN = Пользователи, DC = mydomain, DC = com
sAMAccountName: jdoe
  

Опять же, вышеприведенный вывод был очищен и усечен для краткости.

Теперь я получаю sAMAccountName , на которое я ссылался в ldap_useruid . Затем содержимое sAMAccountName (например, jdoe ) используется в ldap_ufilter вместо % u .

Также обратите внимание, что я оставил общее имя моей группы (CN) «Все сотрудники» жестко запрограммированным во всех трех фильтрах. В полях ldap_gfilter и ldap_ufilter вы можете использовать % g , которое будет заменено содержимым поля, определенного в ldap_groupattr (в моем примере это sAMAccountName).Я хочу иметь только одну группу, которая представляет всех пользователей ejabberd, поэтому у меня это работает.

Инструменты отладки

ldapsearch

Установите и запустите это на своем сервере ejabberd. Во-первых, вы гарантируете, что у вас есть соединение между этим сервером и вашим сервером LDAP (например, контроллером домена).

Это также позволит вам независимо протестировать все фильтры LDAP в вашей конфигурации.

ldapsearch хорошо документирован, но вот пример его использования в моей среде:

ldapsearch -LLL -H ldap: // dcserver01.mydomain.com -x -D 'mydomain \ ejabberd.ldap' -w 'SomePassword2098' -E pr = 1000 / noprompt -b 'dc = mydomain, dc = com' '(& (objectClass = user) (sAMAccountName = scott) ) '

Этот оператор получит все атрибуты LDAP для учетной записи пользователя scott .

tcpdump и Wireshark

Хорошо, это ни в коем случае не , а подходящие инструменты , но это то, что я использовал.

В моей среде трафик между сервером ejabberd (в сети «DMZ» общедоступного сервера) и моим контроллером домена (в сети частного офиса) проходит через маршрутизатор на базе Linux (т.е.е. настольный ПК с большим количеством сетевых карт). Я использовал tcpdump на маршрутизаторе для захвата всех пакетов между двумя машинами на порту 389 (LDAP) в файл, а затем использовал scp для передачи дампа пакета на мою рабочую станцию ​​Windows для анализа с помощью Wireshark.

Между прочим, причина, по которой я захватил пакеты на маршрутизаторе, а не на сервере ejabberd, заключалась в том, чтобы я мог исключить проблемы с подключением / брандмауэром. Причина, по которой я не запустил Wireshark на своем контроллере домена, заключается в том, что я считаю плохой практикой устанавливать что-либо ненужное на моем контроллере домена.

Вот команда tcpdump для получения файла, который Wireshark проанализирует (очевидно, замените IP-адрес на адрес вашего собственного сервера ejabberd):

tcpdump -s 0 -w ~ / tcpdump.ldap.20150205-1202.pcap -nnXSvi eth5 "порт 389 и хост 10.101.1.57"

Кроме того, я решил использовать Wireshark, а не читать необработанный вывод tcpdump , потому что он форматирует все довольно хорошо:

Заключение

ejabberd действительно немного страдает из-за того, что на примерах много, но не хватает последовательности из-за своей старости.Он также разработан (по логике) людьми из Linux / erlang, поэтому они не так дружелюбны к Active Directory LDAP, как я надеялся. (Я, конечно, не виню их за это. Я не зря выбрал сервер ejabberd на базе Linux.)

С другой стороны, ejabberd довольно зрелый и чрезвычайно стабильный. Это была отличная замена проприетарному и не интегрированному в AD Google Talk.

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

Как указано в заголовке, я использую ejabberd 14.12. Я установил с помощью двоичного установщика с сайта процесса .

Установка

и установка XMPP-серверов ⋆ Kuketz IT-Security Blog

1. XMPP

Gemessen an der rasanten technischen Entwicklung ist das Extensible Messaging and Presence Protocol (XMPP) ein Urgestein, dessen Anfänge zum Jahrichen 1998. XMPP является разработчиком стандартных протоколов (Kommunikations-), основанных на XML-стандарте, базирующемся унд ден Austausch von Informationen bzw.Daten ermöglicht.

Im vorliegenden Beitrag beschreibe ich die Installation und Inbetriebnahme eines ejabberd-XMPP-Servers, der folgende Optionen unterstützt:

  • Обмен сообщениями : Ubermittlung von Nachrichten zu bz einem. Kontakt, wie wir es bspw. von WhatsApp kennen
  • Multi-User-Chat (MUC) : Eine Art Konferenzraum, dem mehrere Benutzer beitreten können, um untereinander Nachrichten auszutauschen
  • Dateitransferien auszutauschen
  • ,

  • Dateitransferiens : Austausch. wir aus der Messenger-Welt kennen: Wir können mit (mehreren) Kontakten chatten und ebenfalls Dateien austauschen.Das XMPP-Protokoll ist allerdings so vielseitig, dass wir noch weitere Funktionen darüber abbilden könnten — Diese Stehen Allerdings nicht im Fokus des vorliegenden Beitrages.

    2. ejabberd

    Ejabberd zählt zu den weitverbreitesten XMPP-Servern. Die Software steht unter der GPL, eine Lizenz für freie Software und baut auf der Programmiersprache Erlang auf. Unter anderem ist ejabberd for Windows, macOS, BSD-Derivate and GNU / Linux verfügbar.

    Aufgrund seiner Zuverlässigkeit, Skalierbarkeit und Stabilität eignet sich ejabberd sowohl für den privaten Bereich als auch für das Professionalelle Umfeld. Unter anderem setzen mailbox.org или die Piratenpartei auf ejabberd.

    2.1 Документация

    Для установки и установки серверного программного обеспечения Betrieb einer является расширенной и свободной документацией. Die Dokumentation von ejabberd ist in Ordnung, Allerdings könnte insbesondere die Beschreibung der Modul-Konfiguration etwas ausführlicher ausfallen. Insgesamt vermisse ich eine Art »Лучшая практика« или Beispielkonfiguration, die einen sicheren und datenschutzfreundlichen Betrieb ermöglicht.Der vorliegende Beitrag versucht diese Lücke zu schließen.

    2.2 Оборудование и система

    Die Hardwareanforderungen sind abhängig von unterschiedlichen Faktoren, wie die Anzahl der anvisierten Nutzer und gleichzeitigen Verbindungen, die der Server (-verbund) verarbeiten soll. Generell benötigt ejabberd eher wenig CPU-Leistung. Der Hauptspeicher (RAM) sollte je nach Einsatzzweck dafür etwas großzügiger ausgelegt sein. Für den Betrieb einer ejabberd-Instanz mit 10. 000 Nutzern gelten grob folgende Anforderungen:

    • 2 dedizierte Kerne
    • ab 4 GB RAM
    • Festplattenkapazität ab 40 GB (mit Option auf Erwe 901iternges 9013 IP 9013 IP 9013 -Adresse

    Einen solchen Root-Server könnt ihr bereits ab 6-7 € pro Monat bei einem Hosting-Anbieter bekommen.

    2.3 Пример конфигурации

    Der dauerhafte Betrieb eines XMPP-Servers auf Basis von ejabberd erfordert ein hohes Maß an Verantwortung vom Betreiber. Grundlegende Kenntnisse in der Härtung eines Server-Systems sowie Notfall- bzw. Backupstrategien sollten zu eurem Repertoire gehören, bevor ihr es in Erwägung zieht, einen ejabberd-Server in den Föderationsverbund zu integrieren.

    Die vorliegende Konfiguration dient als Beispiel, der euch den Einstieg in den sicheren und datenschutzfreundlichen Betrieb eines ejabberd-Servers erleichtern soll.Folgende Besonderheiten gelten für diese Konfiguration:

    • Es werden ausschließlich XMPP-Clients wie Conversations oder Gajim unterstützt. Веб-клиенты (на основе JavaScript) bzw. XMPP-over-HTTP werden nicht unterstützt.
    • Eine Registrierung von einem neuen Konto per Weboberfläche ist nicht vorgesehen. Neue Accounts können einfach per In-Band-Registration (также direkt über den XMPP-Client) eröffnet werden.
    • Grundsätzlich is jedem gestattet ein XMPP-Konto auf dem Server anzulegen.
    • Aus- und eingehende Verbindungen zu bzw. von anderen XMPP-Servern sind ausschließlich über einen TLS-verschlüsselten Kanal vorgesehen. Kann dieser aus irgendwelchen Gründen (kein gültiges Zertifikat, keine unterstützten Cipher-Suiten) nicht aufgebaut werden, wird die Verbindung abgebrochen.
    • Die Auswahl der TLS-Cipher-Suiten ist sehr strikt. Unter Umständen kann dies zu Problemen bei der Föderation mit anderen Servern führen, die bspw. (noch) keine aktuellen OpenSSL-Bibliotheken verwenden.

    Bei Bedarf könnt ihr die genannten Punkte natürlich jederzeit an eure Bedürfnisse anpassen. Mein Fokus lag eher auf einer sicheren und datenschutzfreundlichen Konfiguration, лучше проверять тест на соответствие XMPP.

    Hinweis

    An dieser Stelle möchte ich mich bei Holger Weiß bedanken, der mir mit Rat und Tat bei der Inbetriebnahme eines ejabberd-Testservers zur Seite stand. Holger ist unter anderem als freier Entwickler bei ejabberd tätig.

    2.4 Установка: Debian GNU / Linux

    Также Systemgrundlage für ejabberd nutze ich für die vorliegende Anleitung ein Debian GNU / Linux (Stretch) в минимальной установке.

    Текущая стабильная версия Debian basiert ejabberd auf der Version 16.09-4. В Debian gilt: Die in der jeweils stabilen Version Enthaltene Software wird grundsätzlich nicht auf neuere Versionen aktualisiert — Nur Sicherheitsaktualisierungen aus neueren Versionen vom Debian-Security-Team in den Stable-Zweig portiert.Daher greifen wir auf die Debian-Backports zurück, um eine aktuelle Version von ejabberd zu bekommen. Es handelt sich bei den Backports um Rückportierungen von Paketen aus (hauptsächlich) Testing, die gegen die Stable Bibliotheken gebaut sind.

    Zunächst fügen wir der sources. list die Backports für Debian (Stretch) hinzu:

     nano /etc/apt/sources.list 
     # Stretch Backports
    deb http://ftp.debian.org/debian stretch-backports main 

    Anschließend aktualisieren wir die Paketquellen und installieren das ejabberd-Backport-Paket mit der Version 18.06:

     apt-get update
    apt-get install -t stretch-backports ejabberd 

    Zur Darstellung der Captcha-Grafiken (später dazu mehr) benötigen wir noch Imagemagick:

     apt-get install imagemagick gsfonts --no-install-рекомендует 

    3. Let’s Encrypt

    3. Let’s Encrypt

    Let’s Encrypt ist ein Vorzeigeprojekt, dem es gelungen ist, den komplexen Vorgang der Erstellung, Validierung, Signierung und Erneuerung von X.509-Zertifikaten zu automatisieren und diese Dienstleistung kostenlos anzubieten.Hunderttausende von kommerziellen und nichtkommerziellen Webseiten, Projekten etc. setzen auf Let’s-Encrypt-Zertifikate, die den Datenverkehr via TLS vor dem Abhören und der Manipulation schützen.

    Für die Beantragung der benötigten Let’s-Encrypt-Zertifikate nutzen wir den acme.sh-Client — ein Shell-Skript für Unix- / Linux-Systeme. Es unterstützt ebenfalls den ACME v2 Standard. Альтернативное решение для совместимости с клиентом ACME v2.

    3.1 Пакет установки для установки

    Auf dem ejabberd-Server kommt kein Webserver (nginx, Apache и т. Д.) zum Einsatz, über den wir den Let’s-Encrypt-Prozess abbilden können. Daher nutzen wir den Standalone-Modus, der einen Webserver bereitstellt, um die Domainvalidierung durchzuführen — dafür sind die Program bzw. Pakete socat und curl erforderlich:

     apt-get install socat curl 

    3.2 Загрузка и установка acme.sh

    Die Installation от acme.sh ist mit einem Befehl erledigt:

     wget -O - https: // get. acme.sh | sh 

    Bei Bedarf lässt sich die Установка einfach aktualisieren:

     bash / root /.acme.sh/acme.sh --upgrade 

    3.3 Сертификация beantragen

    Anschließend müssen wir für die folgenden Домены bzw. Поддомены Let’s-Encrypt-Zertifikate beantragen. Insgesamt sind es fünf Stück:

    • kuketz-lab.de : Ein Zertifikat für unsere Hauptdomain
    • conference.kuketz-lab.de : Das Modul mod_muc nutzt standard3 upload.kuketz-lab.de : Das Modul mod_http_upload nutzt standardmäßig die virtuelle Загрузка субдомена.@ HOST @
    • pubsub.kuketz-lab.de : Das Modul mod_pubsub nutzt standardmäßig die virtuelle Subdomain pubsub. @ HOST @
    • proxy.kuketz-lab.de : Das Modul mod_proxyä65. @ HOST @

    Hinweis

    Selbstverständlich solltet ihr den Domainnamen »kuketz-lab.de« mit eurem ersetzen.

    Für den Praxisbetrieb nutzen wir RSA-basierte Zertifikate. Aktuell unterstützt ejabberd den Parallelbetrieb von RSA- und ECDSA-Zertifikaten leider noch nicht.Список всех доменов bzw. Поддомены в einem Rutsch:

     bash /root/.acme.sh/acme.sh --issue -d kuketz-lab.de -d conference. kuketz-lab.de -d upload.kuketz-lab.de -d pubsub .kuketz-lab.de -d proxy.kuketz-lab.de --keylength 4096 --standalone 

    Falls jemand ECDSA-Zertifikate bevorzugt, kann er sich diese ebenfalls ausstellen lassen. Allerdings unterstützen einige ältere OpenSSL-Bibliotheken ECDSA-Zertifikate noch nicht, weshalb diese für den Föderationsbetrieb aktuell noch nicht empfehlenswert sind:

     bash / root /.acme.sh/acme.sh --issue -d kuketz-lab.de -d conference.kuketz-lab.de -d upload.kuketz-lab.de -d pubsub.kuketz-lab.de -d proxy.kuketz- lab.de --keylength ec-384 --standalone 

    3.4 ejabberd: Zertifikate ausrollen

    Die Let’s-Encrypt-Zertifikate sind nun beglaubigt und können in ejabberd eingebunden werden. Dazu erstellen wir zunächst einen Unterordner, in dem wir die Zertifikatsdateienablegenablegen:

     mkdir / etc / ejabberd / certs
    
    cp /root/.acme.sh/kuketz-lab.de/fullchain.cer /etc/ejabberd/certs/kuketz-lab.pem
    cp /root/.acme.sh/kuketz-lab.de/kuketz-lab. de.key /etc/ejabberd/certs/kuketz-lab.key
     

    Anschließend schränken wir noch die Berechtigungen auf den Ordner und die darin befindlichen Zertifikatsdateien ein:

     chown ejabberd: ejabberd / etc / ejabberd / certs /
    chown ejabberd: ejabberd / etc / ejabberd / certs / *
    chmod 600 / etc / ejabberd / certs / * 

    3.5 Параметр Диффи-Хеллмана (необязательный)

    Параметр Диффи-Хеллмана (необязательный).Dies wird benötigt, падает на TLS-Cipher-Suiten verwenden wollt, die auf dem DH-Schlüsselaustausch basieren:

     openssl dhparam -out /etc/ejabberd/dh5096.pem 4096 

    4. DNS-Konfiguration Service

    (SRV) обеспечивает подключение к системе доменных имен (DNS), а также к заданному порту, чтобы получить доступ к клиенту и серверу с ошибкой. Im XMPP-Wiki werden einige Beispiele aufgezeigt. Für den Praxisbetrieb sind folgende SRVs sinnvoll:

    • Порт 5222 : Для клиентов, die sich mit unserem Server verbinden wollen
      • Хост: _xmpp-client. _tcp.kuketz-lab.de.
      • Тип: SRV
      • Назначение: 5 0 5222 kuketz-lab.de.
    • Порт 443 : Für Clients, die sich direct via TLS mit unserem Server verbinden wollen
      • Host : _xmpps-client._tcp.kuketz-lab.de.
      • Тип: SRV
      • Место назначения: 4 0 443 kuketz-lab.de.
    • Порт 5269 : Für XMPP-Server, die sich mit unserem Server verbinden wollen
      • Хост: _xmpp-server._tcp.kuketz-lab.de.
      • Тип: SRV
      • Место назначения: 5 0 5269 kuketz-lab.de.
    • Порт 5270 : Für XMPP-Server, он должен быть направлен через TLS mit unserem Server verbinden wollen
      • Хост: _xmpps-server._tcp.kuketz-lab.de.
      • Тип: SRV
      • Назначение: 4 0 5270 kuketz-lab.de.

    Konferenzräume bzw. MUC sind meist unter der Subdomain »конференция.DOMAIN« erreichbar. Über einen entsprechenden DNS-Eintrag (CNAME) machen wir diese Информационный адрес:

    • Хост: конференция
    • Тип: CNAME
    • Место назначения: kuketz-lab. de

    Auf einem Root-Server beim Hosting-Anbieter netcup würde die DNS-Konfiguration dann folgendermaßen aussehen:

    5. ejabberd-Konfiguration

    Die nachfolgendenfinediscungendiscungen фон Эджабберд (18.09-1 ~ bpo9 + 1) mitgeliefert wird. Alle Anpassungen sind kurz erklärt. Полная конфигурация (ohne Kommentare) stelle ich unter der Ziffer 5.10 zur Verfügung. Bei der Anpassung lag mein Fokus auf einer sicheren und datenschutzfreundlichen Konfiguration — bei Bedarf solltet ihr die Vorschläge prüfen und in euer Setup überführen.

    5.1 Регистрация

    Das Log-Level legt die Ausführlichkeit fest, mit dem ejabberd Protokolldateien erzeugt. Wird der Parameter loglevel auf einen Wert von 3 eingestellt, werden nur Fehler und Warnungen in die Log-Datei geschrieben. Anmeldevorgänge von Clients oder das Versenden von Nachrichten werden nicht erfasst.

    Wenn wir den Parameter hide_sensitive_log_data zusätzlich ergänzen, werden keine IP-Adressen или sonstige sensitive Daten in den Log-Dateien aufgezeichnet.

     ## loglevel: Детальность файлов журналов, созданных ejabberd.
    ## 0: Нет журнала ejabberd вообще (не рекомендуется)
    ## 1: Критический
    ## 2: Ошибка
    ## 3: Предупреждение
    ## 4: Информация
    ## 5: Отладка
    ##
    loglevel:  3 
      hide_sensitive_log_data: true  

    5.2 Имя хоста [обслуживаемые имена хостов]

    Angabe des Host- bzw. Domainnamens, über den unsere ejabberd-Instanz erreichbar ist. Ein ejabberd-Server kann übrigens mehrere Домены bedienen.

     ## hosts: Домены, обслуживаемые ejabberd.
    ##
    хосты:
      - " kuketz-lab.de " 

    5.3 Сертификат [Сертификаты]

    Die beantragten Let’s-Encrypt-Zertifikate haben wir bereits im Unterordner / etc / ejabberd / certs / abgelegt. Diese müssen wir nun ejabberd bekannt machen. Wie bereits erwähnt nutzen wir für den Praxisbetrieb RSA-basierte Zertifikate, da ein Parallelbetrieb mit ECDSA-Zertifikaten aktuell noch nicht möglich ist.

     ## Список всех доступных файлов PEM, содержащих сертификаты для ваших доменов,
    ## цепочки сертификатов или ключей сертификатов. Полные сети будут построены
    ## автоматически по ejabberd.
    ##
    файлы сертификатов:
      - « /etc/ejabberd/certs/kuketz-lab.pem »
      - « /etc/ejabberd/certs/kuketz-lab.key » 

    5.4 TLS [конфигурация TLS]

    Bei der TLS-Konfiguration müssen wir stets zwischen Abwärtskompatibilität und Sicherheit abwägen. Mit der Ergänzung des Parameters no_tlsv1_1 schließen wir all TLS-Cipher-Suiten aus, die auf TLS 1.1 (oder niedriger) basieren und in best Kombinationen als anfällig bzw.Schwach Gelten. Wir setzen также ausschließlich auf TLS 1.2 oder höher. Doch damit nicht genug, wir schränken die von unserer ejabberd-Instanz angebotenen Cipher-Suiten über den Parameter TLS_CIPHERS auf eine Handvoll ein. Das mag auf den ersten Blick ein drastischer Schritt sein, da wir dadurch die Föderationskompatibilität einschränken — denn können sich zwei XMPP-Server beim TLS-Verbindungsaufbau nicht auf eine Cipher-Suite die eindung.

    Ähnlich wie bei einem E-Mail-Service можно также использовать для решения дилеммы: Sicherheit vs. Abwärtskompatibilität. Unter Umständen kann также erforderlich sein, dass ihr weitere Cipher-Suiten ergänzt, um best XMPP-Servern oder Clients den TLS-Verbindungsaufbau zu ermöglichen. Das Mozilla-Wiki bietet eine Übersicht von unterschiedlichen TLS-Cipher-Konfigurationen an.

     ## Обратите внимание, что по умолчанию используется следующая конфигурация.
    ## конфигурация драйвера TLS, поэтому вам не нужно
    ## раскомментируйте.##
    define_macro:
      «TLS_CIPHERS»: « ECDHE-ECDSA-AES256-GCM-SHA384: ECDHE-RSA-AES256-GCM-SHA384: ECDHE-ECDSA-CHACHA20-POLY1305: ECDHE-RSA-CHACHA20-POLY1-GCM-GCA-12-POLYA-GC-12-ECDHE-RSA-CHACHA20-POLY1 SHA256: ECDHE-RSA-AES128-GCM-SHA256: ECDHE-ECDSA-AES256-SHA384: ECDHE-RSA-AES256-SHA384: ECDHE-ECDSA-AES128-SHA256: ECDHE-12 "SHA-AES128 900" SHA256
      "TLS_OPTIONS":
        - «no_sslv3»
        - «no_tlsv1»
      - «no_tlsv1_1» 
        - «cipher_server_preference»
        - «no_compression»
        ## 'DH_FILE': "/ etc / ejabberd /  dh5096.pem  "# сгенерировано с помощью: openssl dhparam -out dhparams. pem 2048 

    Убер CryptCheck (Auswahl XMPP) lassen sich all Cipher-Suiten anzeigen, die euer ejabberd-Server anbietet. Dabei fällt der 256-bit Schlüsselaustausch verwendet wird und auf Elliptic-Curve-Cryptography (ECC) basiert. .

    Über den folgenden Befehl könnt ihr eine TLS-verschlüsselte Verbindung zu eurem ejabberd-Server initiieren und die Let’s-Encrpyt-Zertifikate prüfen:

     openssl s_clientm -ppct-server kuketz-lab.de:5269 | openssl x509 -noout -text 

    5.5 Dienste [Порты прослушивания]

    Um mit der Außenwelt zu kommunizieren bietet euer ejabberd-Server разнообразный Dienste bzw. Переносит и поддерживает клиентов, а также (XMPP-) Server verbinden und kommunizieren.Wir ergänzen die Standardkonfiguration um weitere Ports, die anschließend einen direkten Verbindungsaufbau via TLS (sozusagen TLS-on-Connect) ermöglichen, ohne zuvor den »Umweg« über STARTTLS nehmen zu müssen.

    Der Port 5222 dient in der XMPP-Welt als Standard for Clients, die sich mit einem XMPP-Server verbinden möchten. Möchte sich ein Client mit unserem ejabberd-Server verbinden setzen wir STARTTLS voraus.

     ## listen: порты, которые ejabberd будет прослушивать, каждый из которых обслуживается
    ## by и с каких опций начать.##
    -
      порт: 5222
      ip: "::"
      модуль: ejabberd_c2s
      starttls_required: true
         protocol_options: 'TLS_OPTIONS'  
      max_stanza_size: 65536
      формирователь: c2s_shaper
      доступ: c2s 

    Den Port 5223 ergänzen wir in der Konfiguration und ermöglichen Clients damit den direkten TLS-Verbindungsaufbau.

      -
      порт: 5223
      ip: "::"
      модуль: ejabberd_c2s
      tls: правда
      max_stanza_size: 65536
      формирователь: c2s_shaper
      доступ: c2s  

    Der Port 5296 dient in der XMPP-Welt als Standard für all Server, die sich mit einem anderen XMPP-Server verbinden möchten.Über den Parameter s2s_use_starttls: required (hier nicht sichtbar) erzwingen wir die Verwendung von STARTTLS.

     -
      порт: 5269
      ip: "::"
      модуль: ejabberd_s2s_in 

    Auch für die XMPP-Server ergänzen wir einen Port, der dann anschließend für den direkten TLS-Verbindungsaufbau genutzt werden kann.

      -
      порт: 5270
      ip: "::"
      модуль: ejabberd_s2s_in
      tls: true  

    Den Port 5280 entfernen wir aus der Standardkonfiguration und ergänzen dafür den Port 5443, worüber im Betrieb der Versand von Dateien geregelt wird.

      -
      порт: 5443
      ip: "::"
      модуль: ejabberd_http
      request_handlers:
        "/ upload": mod_http_upload
      tls: правда
      шифры: 'TLS_CIPHERS'
      protocol_options: 'TLS_OPTIONS'  

    Damit sich ein Client gegenüber dem ejabberd-Server authentifizieren kann, werden ihm different SASL-Methoden angeboten. Zwei dieser Methoden schließen wir aus Sicherheitsgründen aus.

     disable_sasl_mechanisms:
      - «дайджест-мд5»
      - «x-oauth3»  

    5.6 Zugriffskontrolle [ACL]

    Für unseren ejabberd-Server legen wir ein Administrationskonto an:

     ejabberdctl register admin kuketz-lab.de [Passwort] 

    Diesem Konto gewähren wir anschließefiguration.

     акл:
      ##
      ## ACL "admin" предоставляет административные привилегии учетным записям XMPP. 
      ## Вы можете разместить здесь сколько угодно учетных записей.
      ##
      админ:
         пользователь:
             - «админ»: «кукетц-лаб.de " 

    5.7 Shaper-Rules

    Mit den Shaper-Rules lassen sich unter anderem die maximale Anzahl an gleichzeitigen Verbindungen von einem Nutzer festlegen. Wir erhöhen die maximale Anzahl an Offline-Nachrichten, die derin Server Ben dieser wieder online kommt und diese abholt.

     max_user_offline_messages:
      - 5000: администратор
      -  500  

    5.8 Captchas [Captcha]

    Um die Registrierung von Accounts zu vermeiden, die anschließend von Bots zum Versand von Spam missbrau

    Как установить и настроить Erlang & Ejabberd XMPP Server на Ubuntu?

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

    Следующие шаги представляют собой процедуру установки Erlang на сервере Ubuntu:

    ШАГ 1: Загрузите Erlang на сервере Ubuntu

    На сервере Linux загрузите исходный файл Erlang, используя ссылку ниже. Здесь используется версия Erlang 18.0, и это регулярно расширяет обновления.

    Команда wget используется для загрузки исходных файлов Erlang.

     $ wget http://erlang.org/download/otp_src_18.0.tar.gz 

    ШАГ 2: Извлеките tar-файл Erlang

    Распакуйте загруженный tar-файл с помощью команды.

     $ tar -xvzf otp_src_18.0.tar.gz 

    ШАГ 3: Добавление зависимостей в команду

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

     $ sudo apt-get install gcc make build-essential libncurses5-dev openssl libssl-dev fop xsltproc unixodbc-dev libwxbase3.0 libwxgtk3.0-dev libqt4-opengl-dev autoconf 

    ШАГ 4: Начать компиляцию и установить Erlang

    Для компиляции исходного кода используйте команду «make», которая запускает выполнение файла и, наконец, устанавливает Erlang с помощью «make install» на сервере Linux. Команда configure поможет вам проверить зависимости.

     $ sudo ./configure
    $ sudo make
    $ sudo make install 

    Указанные шаги представляют собой простой способ установки программы Erlang на сервер Ubuntu.

    Прочтите: Как создать приложение для чата, такое как WhatsApp?

    Ejabberd — это сервер программирования XMPP (Extensible Messaging Presence Protocol), написанный с использованием языка программирования Erlang. Один из самых популярных бесплатных программ с открытым исходным кодом. Ejabberd работает на нескольких операционных системах, таких как Linux, Mac, Unix, Windows и т. Д.XMPP — это магистраль, которая позволяет отправлять сообщения в реальном времени, индикаторы присутствия в сети, функции маршрутизации XML и многое другое.

    В следующем разделе будет подробно описана установка сервера Ejabberd XMPP на Ubuntu 14.04 / 16.04.

    ШАГ 1: Загрузите Ejabberd на сервер Ubuntu

    На сервере Linux загрузите исходный файл Ejabberd, используя ссылку ниже. Здесь используется версия Ejabberd от 16.08, которая регулярно расширяет обновления.

    Команда wget используется для загрузки исходных файлов Ejabberd.

     $ wget https://www.process-one.net/downloads/ejabberd/16.08/ejabberd-16.08.tgz 

    ШАГ 2: Распакуйте tar-файл Ejabberd

    Распакуйте загруженный tar-файл с помощью команды.

     $ tar -xvzf ejabberd-16.08.tgz 

    ШАГ 3: Добавление зависимостей в команду

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

     $ sudo apt-get install rebar libyaml-dev libexpat1-dev 

    ШАГ 4: Устранение и проверка проблемы

    autogen.sh используется для компиляции, проверки работоспособности и устранения начальных проблем.

     $ ./autogen.sh 

    ШАГ 5: Начать выполнение и установить Ejabberd

    Для компиляции исходного кода используйте команду «make», которая запускает выполнение файла и, наконец, устанавливает Erlang с помощью «make install» на сервере Linux.Команда configure поможет вам проверить зависимости.

     $ sudo ./configure
    $ sudo make
    $ sudo make install 

    ШАГ 6: Откройте файл конфигурации Ejabberd

    Используя команду, откройте файл Ejabberd для установки базы данных.

     $ Судо нано /etc/ejabberd/ejabberd.yml 

    Если вам нужна база данных MySQL, выполните команду упоминания, чтобы включить IP, имя базы данных, имя пользователя, пароль.

    1) Прокомментируйте следующие строки в ejabberd.yml файл

    2) Раскомментируйте следующие строки в файле ejabberd.yml

      auth_method: sql

      sql_type: mysql

      sql_server: «52.13.12.123 ″ (IP-адрес базы данных Mysql)

      sql_database: «имя базы данных» (имя базы данных)

      sql_username: «root» (имя пользователя базы данных)

      sql_password: «пароль» (пароль базы данных)

    Наконец, сохраните файл /etc/ejabberd/ejabberd.yml

    ШАГ 7: Запустите Ejabberd

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

     $ sudo ejabberdctl start 

    ШАГ 8: Проверьте состояние с помощью локального хоста

    Чтобы проверить и проверить статус установки ejabberd, используйте следующую команду.

     $ sudo ejabberdctl статус 

    Узел Ejabberd на Localhost запускается с команды status и показывает, что ejabberd 16.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *