Это вольный, но достоверный перевод этого руководства.
Здесь указаны основные точки порога вхождения, чтобы узнать больше о конфигурации ejabberd. Ejabberd является чрезвычайно мощным сервером и может быть настроен различными способами.
Не позволяйте мнимым сложностям напугать вас. Большинство из вас устроит файл конфигурации по умолчанию (или с легкими изменениями).
Ejabberd использует файлы конфигурации Yaml.
Файл конфигурации будет загружен при первом запуске ejabberd. Имя файла конфигурации ДОЛЖНО иметь расширение «.yml» или «.yaml». Это помогает ejabberd различать новые и устаревшие форматы файлов (смотрите раздел Устаревший файл конфигурации).
Для файлов конфигурации используется yaml. Следует обратить внимание на различную интерпретацию типов данных:
> Art thou not Romeo, and a Montague? | Neither, fair saint, if either thee dislike.
{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\"]."
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, …]}
Примеры:
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: ""
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: Параметры ротации описывают, как управлять логами.
Синтаксис даты взят из синтаксиса, используемого newsyslog в newsyslog.conf.
Вот некоторые примеры:
Значения в файле конфигурации по умолчанию:
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 будет прослушивать и какие службы будут на них запускаться. Каждый элемент списка представляет собой ассоциативный массив со следующими элементами:
Синтаксис опции:
[Listener, …]:
Пример:
listen:
-
port: 5222
module: ejabberd_c2s
starttls: true
-
port: 5269
module: ejabberd_s2s_in
transport: tcp
Номер порта определяет, какой порт прослушивать входящие соединения. Это может быть стандартный порт Jabber/XMPP или любой другой допустимый номер порта.
IP-адрес может быть представлен в виде строки. Сокет будет прослушивать только этот сетевой интерфейс. Можно указать общий адрес («0.0.0.0» для IPv4 или «::» для IPv6), тогда ejabberd будет прослушивать все адреса. В зависимости от типа IP-адреса будут использоваться IPv4 или IPv6. Если IP-адрес не указан, он будет прослушивать все сетевые адреса IPv4.
Обратите внимание, что в некоторых операционных системах и/или конфигурациях ОС прослушивание «::» будет означать прослушивание трафика IPv4, а также трафика IPv6.
Некоторые примеры значений для IP-адреса:
Протоколы транспортов могут быть как 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»