UCS - коллекция мануалов

Практика - критерий истины...

Инструменты пользователя

Инструменты сайта


ejabberd:4

Настройка ejabberd

Это вольный, но достоверный перевод этого руководства.
Здесь указаны основные точки порога вхождения, чтобы узнать больше о конфигурации ejabberd. Ejabberd является чрезвычайно мощным сервером и может быть настроен различными способами.
Не позволяйте мнимым сложностям напугать вас. Большинство из вас устроит файл конфигурации по умолчанию (или с легкими изменениями).

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

Ejabberd использует файлы конфигурации Yaml.
Файл конфигурации будет загружен при первом запуске ejabberd. Имя файла конфигурации ДОЛЖНО иметь расширение «.yml» или «.yaml». Это помогает ejabberd различать новые и устаревшие форматы файлов (смотрите раздел Устаревший файл конфигурации).
Для файлов конфигурации используется yaml. Следует обратить внимание на различную интерпретацию типов данных:

  • строки без кавычек или одинарные кавычки. Тип называется atom () в этом конфиге.Например: dog, 'Jupiter', '3.14159', YELLOW.
  • числовые литералы. Тип называется integer (), float () или, если оба допускаются, number ().Например: 3, -45.0, .0
  • двойные кавычки или сложенные строки. Тип называется string (). Примеры строки в двойных кавычках: «Lizzard», «orange», «3.14159». Пример сложенной строки:
> Art thou not Romeo,
  and a Montague?

| Neither, fair saint,
  if either thee dislike.
  • Для ассоциативных массивов («mappings») и списков вы можете использовать как абзацный отступ, так и компактный синтаксис (aka JSON стиль). Например, следующие значения эквивалентны:
{param1: ["val1", "val2"], param2: ["val3", "val4"]}

и

param1:
  - "val1"
  - "val2"
param2:
  - "val3"
  - "val4"

Обратите внимание, что оба стиля используются в этом файле конфигурации.
Также обратите внимание, что ejabberd никогда не изменяет файл конфигурации самостоятельно. Если вы редактируете параметры из интерфейса веб-администратора, вам нужно будет применить их к файлу конфигурации вручную. Это сделано для того, чтобы избежать путаницы с комментариями в вашем файле конфигурации, синтаксисом и т.д.
Пожалуйста, обратитесь к ejabberd.log для выявления ошибок конфигурации. Ejabberd сообщит об ошибках, связанных с синтаксисом, а также о неизвестных опциях. Последняя ошибка обычно выглядит так:
17:10:52.858 [error] unknown option 'db_typ' for module 'mod_roster' will be likely ignored, available options are: 'access', 'db_type', 'store_current_id', 'versioning'
Неизвестные параметры в конфиге не игнорируются, чтобы заставить работать устаревшие сторонние модули. Убедитесь, что вы соблюдаете отступы (YAML чувствителен к этому), иначе вы получите довольно странные и загадочные ошибки.

Устаревший файл конфигурации

В предыдущих версиях ejabberd файл конфигурации был написан в формате Erlang. Формат все еще поддерживается, но настоятельно рекомендуется преобразовать его в новый формат YAML с помощью команды convert_to_yaml из ejabberdctl (подробности смотрите в ejabberdctl и в списке команд ejabberd).
Если вы хотите указать некоторые параметры, используя старый формат Erlang, то можете установить их в дополнительном файле cfg и включить его с помощью параметра include_config_file, (смотрите Включение дополнительных файлов конфигурации для описания параметров и их ограничение, например: Ограничить выполнение с помощью AccessCommands.
Если вы просто хотите указать термин erlang внутри опции, вы можете использовать > erlangterm. синтаксис для встраивания терминов эрланга в файл YAML, например:

modules:
  mod_cron:
    tasks:
      - time: 10
        units: seconds
        module: mnesia
        function: info
        arguments: "> []."
      - time: 3
        units: seconds
        module: ejabberd_auth
        function: try_register
        arguments: "> [\"user1\", \"localhost\", \"pass\"]."

Настройка одного или нескольких доменов XMPP

Доменные имена хостов

Ejabberd поддерживает управление несколькими независимыми доменами XMPP в одном запущенном экземпляре сервера с помощью функции, называемой виртуальным хостингом. Опция hosts определяет список, содержащий один или несколько доменов, которые будет обслуживать ejabberd. Конечно же, это необязательно и список хостов может содержать только один домен, если вы не хотите размещать несколько доменов XMPP на одном сервере.
Синтаксис: [«domain-1.tld», «domain-2.tld»]
Примеры:

  • Обслуживание одного домена
hosts: ["example.org"]
  • Обслуживание нескольких доменов
hosts:
  - "example.net"
  - "example.com"
  - "jabber.somesite.org"

Виртуальные хосты

При управлении несколькими доменами XMPP на одном сервере они действительно независимы. Это означает, что они даже могут иметь разные параметры конфигурации. Параметры могут быть определены отдельно для каждого виртуального хоста с помощью параметра host_config.
Синтаксис: {HostName: [Option, …]}
Примеры:

  • Домен example.net использует метод внутренней аутентификации, в то время как домен example.com использует сервер LDAP, работающий на домене localhost, для выполнения аутентификации:
host_config:
  "example.net":
    auth_method: internal
  "example.com":
    auth_method: ldap
    ldap_servers:
      - "localhost"
    ldap_uids:
      - "uid"
    ldap_rootdn: "dc=localdomain"
    ldap_rootdn: "dc=example,dc=com"
    ldap_password: ""
  • Домен example.net использует SQL для выполнения аутентификации, в то время как домен example.com использует серверы LDAP, работающие на доменах localhost и otherhost:
host_config:
  "example.net":
    auth_method: sql
    sql_type: odbc
    sql_server: "DSN=ejabberd;UID=ejabberd;PWD=ejabberd"
  "example.com":
    auth_method: ldap
    ldap_servers:
      - "localhost"
      - "otherhost"
    ldap_uids:
      - "uid"
    ldap_rootdn: "dc=localdomain"
    ldap_rootdn: "dc=example,dc=com"
    ldap_password: ""

Чтобы определить конкретные модули ejabberd для каждого виртуального хоста, вы можете определить параметры глобальных модулей с общими модулями, а затем добавить определенные модули к определенным виртуальным хостам. Для этого вместо определения каждой опции в host_config используйте append_host_config с тем же синтаксисом.
В этом примере три виртуальных хоста имеют несколько похожих модулей, но есть и другие разные модули для некоторых конкретных виртуальных хостов:

## This ejabberd server has three vhosts:
hosts:
  - "one.example.org"
  - "two.example.org"
  - "three.example.org"

## Configuration of modules that are common to all vhosts
modules:
  mod_roster:    {}
  mod_configure: {}
  mod_disco:     {}
  mod_private:   {}
  mod_time:      {}
  mod_last:      {}
  mod_version:   {}

## Add some modules to vhost one:
append_host_config:
  "one.example.org":
    modules:
      mod_echo:
        host: "echo-service.one.example.org"
      mod_logxml: {}

## Add a module just to vhost two:
append_host_config:
  "two.example.org":
    modules:
      mod_echo:
        host: "mirror.two.example.org"

Базовая конфигурация

Логирование

Ejabberd можно настроить на несколько доступных пресетов ведения логов работы сервера, которые помогут вам разобраться с текущими проблемами в его работе или видеть различные предупреждения и информацию.
loglevel: Number: Детальность файлов логов, сгенерированных ejabberd. Доступные уровни:

 0: No ejabberd log at all # Логирование полностью отключено (не рекомендуется)
 1: Critical               # Критические ошибки
 2: Error                  # Ошибки
 3: Warning                # Предупреждения
 4: Info                   # Информация
 5: Debug                  # Режим отладки

log_rotate: size, date and count: Параметры ротации описывают, как управлять логами.

  • Значения «log_rotate_size» и/или «log_rotate_date» вызывают ротацию логов по заданным параметрам.
  • Установка значения «log_rotate_count» позволяет сохранить N-ное количество предыдущих логов.
  • Установка «log_rotate_count» в 0 не отключает ротацию, но лог очищается и не сохраняется предыдущые.
  • Установка значения «log_rotate_size» включает ротацию, когда достигается заданный размер в байтах.
  • Чтобы отключить ротацию, установите «log_rotate_count» 0 и пустое значение «log_rotate_date».

Синтаксис даты взят из синтаксиса, используемого newsyslog в newsyslog.conf.

Вот некоторые примеры:

  • $D0 запуск ротации ежедневно в полночь
  • $D23 запуск ротации ежедневно в 23:00 часа
  • $W0D23 запуск ротации еженедельно в воскресенье 23:00 часа
  • $W5D16 запуск ротации еженедельно в пятницу в 16:00 часов
  • $M1D0 запуск ротации в первый день каждый месяц в полночь
  • $M5D6 запуск ротации в пятый день каждый месяц в 6:00 часов

Значения в файле конфигурации по умолчанию:

log_rotate_size: 0       # размер логов не влияет на запуск
log_rotate_date: "$D0"   # запуск ротации ежедневно в полночь
log_rotate_count: 1      # оставлять одну копию логов после ротации

log_rate_limit: Number: Эта опция используется для защиты от перегрузки: если вы хотите ограничить количество сообщений в секунду, разрешенное в error_logger, что является хорошей идеей и если вы хотите избежать потока сообщений при перегрузке системы, вы можете установить ограничение. Значение по умолчанию 100.

Например:

log_rate_limit: 100

hide_sensitive_log_data: Boolean: У вас есть возможность конфиденциальности, чтобы гарантировать, что вы не регистрируете IP-адрес или конфиденциальные данные. Значение по умолчанию false для обратной совместимости.

Например:

hide_sensitive_log_data: false

Прослушиваемые порты

Опция listen определяет, какие порты, адреса и сетевые протоколы ejabberd будет прослушивать и какие службы будут на них запускаться. Каждый элемент списка представляет собой ассоциативный массив со следующими элементами:

  • Номер порта. Опционально также IP-адрес и / или транспортный протокол.
  • Модуль прослушивания, который обслуживает этот порт.
  • Опции для сокета TCP и для модуля прослушивания.

Синтаксис опции:
[Listener, …]:
Пример:

listen:
  -
    port: 5222
    module: ejabberd_c2s
    starttls: true
  -
    port: 5269
    module: ejabberd_s2s_in
    transport: tcp

Номер порта, IP-адрес и протокол транспорта

Номер порта определяет, какой порт прослушивать входящие соединения. Это может быть стандартный порт Jabber/XMPP или любой другой допустимый номер порта.
IP-адрес может быть представлен в виде строки. Сокет будет прослушивать только этот сетевой интерфейс. Можно указать общий адрес («0.0.0.0» для IPv4 или «::» для IPv6), тогда ejabberd будет прослушивать все адреса. В зависимости от типа IP-адреса будут использоваться IPv4 или IPv6. Если IP-адрес не указан, он будет прослушивать все сетевые адреса IPv4.
Обратите внимание, что в некоторых операционных системах и/или конфигурациях ОС прослушивание «::» будет означать прослушивание трафика IPv4, а также трафика IPv6.

Некоторые примеры значений для IP-адреса:

  • «0.0.0.0» слушать все IPv4 адреса. Это значение по умолчанию, если IP явно не указан.
  • «::» слушать все IPv6 адреса.
  • «10.11.12.13» слушать IPv4 адрес 10.11.12.13
  • «::FFFF:127.0.0.1» слушать весь диапазон IPv6 адресов ::FFFF:127.0.0.1/128

Протоколы транспортов могут быть как tcp, так и udp. По умолчанию tcp.

Прослушивание модулей

Доступные модули, их назначение и параметры, разрешенные каждому из них:

ejabberd_c2s: Управляет соединениями c2s.
Опции: access, ciphers, dhfile, protocol_options, max_fsm_queue, max_stanza_size, shaper, starttls, starttls_required, tls, zlib, tls_compression

ejabberd_s2s_in: Обрабатывает входящие s2s-соединения.
Опции: max_stanza_size, shaper, tls_compression

ejabberd_service: Взаимодействует с внешним компонентом (как определено в протоколе компонентов Jabber (XEP-0114).
Опции: access, hosts, max_fsm_queue, password, check_from, shaper_rule

ejabberd_sip: Обрабатывает запросы SIP, как определено в RFC 3261.
Опции: certfile, tls

ejabberd_stun: Обрабатывает запросы STUN/TURN, как определено в RFC 5389 и RFC 5766.
Опции: certfile, tls, use_turn, turn_ip, turn_port_range, turn_max_allocations, turn_max_permissions, shaper, server_name, auth_realm, auth_type

ejabberd_http: Обрабатывает входящие HTTP-соединения. Этот модуль отвечает за обслуживание веб-админки, а также за XMPP BOSH и Websocket с правильно настроенным обработчиком запросов.
Опции: captcha, default_host, dhfile, request_handlers, tls, tls_compression, trusted_proxies (global option), web_admin

ejabberd_xmlrpc: Обрабатывает запросы XML-RPC для выполнения команд ejabberd.
Опции: access_commands, maxsessions, timeout.

Пояснения к командам доступа см. В разделе «Ограничение выполнения с помощью AccessCommands». Проверьте некоторые примеры XML-RPC. Вы можете найти больше информации в старой документации ejabberd_xmlrpc.

Опции

Это подробное описание каждой опции, разрешенной модулями прослушивания:

access: AccessName: Эта опция определяет доступ к порту. Является значением по умолчанию всех.

backlog: Value: Значение backlog определяет максимальную длину, до которой может увеличиваться очередь ожидающих соединений. Это должно быть увеличено, если сервер будет обрабатывать много новых входящих соединений, поскольку они могут быть сброшены, если в очереди нет места (и ejabberd не смог сразу их принять). Значение по умолчанию 5.

captcha: true|false: Простая веб-страница, которая позволяет пользователю заполнить запрос капчи (смотрите Раздел CAPTCHA).

certfile: Path: Полный путь к файлу, содержащему сертификат SSL по умолчанию. Чтобы определить файл сертификата, специфичный для данного домена, используйте глобальный параметр domain_certfile.

ciphers: Ciphers: Список шифров OpenSSL в том же формате, который принят командой «openssl ciphers».

protocol_options: ProtocolOpts: Список общих параметров, касающихся SSL/TLS. Они сопоставляются с set_options () OpenSSL. Запись по умолчанию:
«no_sslv3|cipher_server_preference|no_compression»

ejabberd/4.txt · Последнее изменение: 127.0.0.1