Prosody (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи Prosody. Дата последней синхронизации: 10 апреля 2023. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Цитата с официального сайта:

Prosody – это современный XMPP-сервер, ориентированный на простоту установки и конфигурации и нетребовательный к ресурсам. Кроме того, это гибкая и масштабируемая система, позволяющая разработчикам в короткий срок добавлять новые функции и внедрять новые протоколы.

Установка

Установите пакет prosody.

Опциональные зависимости

Опциональные зависимости prosody не являются обязательными для работы программы, однако добавляют полезные функции. Некоторые из этих зависимостей собираются и устанавливаются из AUR. Если вы не знакомы с процессом компиляции и установки пакетов из AUR, см. Arch User Repository (Русский)#Установка и обновление пакетов. Начиная с Prosody версии 0.11.2 необходима установка Lua 5.2.

Поддержка TLS/SSL (Рекомендовано)
Разрешите Prosody шифрование потоков для предотвращения несанкционированной прослушки.
Требуется: lua52-sec
Бэкенд MySQL/Postgresql
Предоставьте Prosody возможность использовать MySQL/mariadb/Postgresql в качестве бэкенд для улучшения масштабируемости и производительности.
Требуется: lua52-dbi
Улучшенное масштабирование соединений (Рекомендовано)
Предоставьте Prosody возможность использовать libevent для управления большим числом одновременных соединений..
Требуется: lua52-eventAUR
Потоковое сжатие
Предоставьте Prosody возможность сжимать потоки между клиентом и сервером для экономии трафика на стороне клиента.
Требуется: lua52-zlib

Настройка

Примечание: Конфигурационный файл по умолчанию содержит настройки модулей posix и pidfile, необходимых для полноценной работы Prosody.

Основной конфигурационный файл находится в /etc/prosody/prosody.cfg.lua. Информацию по настройке Prosody можно найти в документации Prosody. После внесения любых изменений синтаксис конфигурационного файла можно проверить запустив команду:

# luac5.2 -p /etc/prosody/prosody.cfg.lua

Отсутствие вывода означает, что синтаксис верный.

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

В настройках по умолчанию используется mod_auth_internal_hashed. Если вы удалите эту строку, то по умолчанию будет использоваться mod_auth_internal_plain.

Логирование

Пакет prosody изначально настроен на сохранение логов в системном журнале. Это значит, что по умолчанию сообщения логов Prosody доступны в журнале systemd.

Использование

Запустите/включите службу prosody.service.

По умолчанию Prosody использует XMPP порты 5222 и 5269 для общения клиент-сервер и сервер-сервер соответственно. При необходимости настройте брандмауэр.

Вы можете управлять пользователями Prosody при помощи программы prosodyctl. Для добавления пользователя:

# prosodyctl adduser JID
Совет: Вам скорее всего потребуется создать как минимум одного пользователя в качестве администратора, добавив его Jabber-идентификатор в список admins в конфигурационном файле.

См. prosodyctl(1) для более подробной информации.

Безопасность

Регистрация пользователей

Prosody поддерживает стандарт XMPP с регистрацией через сторонний клиент, что даёт пользователям возможность самостоятельно регистрироваться за пределами клиента XMPP, а также изменять свои пароли. Хотя эта функция повышает удобство для пользователей, она лишает администраторов возможности модерировать процесс регистрации новых пользователей. В связи с этим модуль register доступен в конфигурации по умолчанию, однако строка allow_registration имеет аргумент false. Таким образом существующие пользователи могут изменять свои пароли вне клиента, но самостоятельная регистрация новых пользователей невозможна.

Совет: Если вы всё же решите добавить поддержку регистрации новых пользователей через клиент, вам могут пригодиться модули watchregistrations и welcome.

Шифрование потоков

В Prosody могут использоваться сертификаты TLS для шифрования сообщений между клиентом и сервером (если установлены необходимые зависимости). Для настройки использования этих сертификатов в Prosody см. соответствующий раздел prosody.cfg.lua.

Для обязательного шифрования сообщений между клиентом и сервером добавьте следующие строки в ваш конфигурационный файл:

/etc/prosody/prosody.cfg.lua
Host "*"

    c2s_require_encryption = true

То же самое вы можете сделать для обмена сообщениями между сервером и сервером:

/etc/prosody/prosody.cfg.lua
Host "*"

    s2s_require_encryption = true

Хотя шифрование между клиентом и сервером является хорошей идеей, следует помнить, что некоторые популярные сервисы XMPP, например Google Talk/Gmail, не поддерживают шифрование между сервером и сервером.

Списки пользователей

Увидеть список зарегистрированных пользователей можно при помощи команды

# ls -l /var/lib/prosody/*/accounts/*

в качестве альтернативы вы можете скачать модуль mod_listusers.lua и использовать следующую команду

# prosodyctl mod_listusers

Удаление

После удаления пакетов Prosody через pacman в файловой системе могут остаться каталоги /etc/prosody и /var/lib/prosody, которые вы также можете удалить, если не планируете заново устанавливать Prosody.

Советы и рекомендации

Компоненты

Prosody поддерживает компоненты XMPP, которые предоставляют дополнительные возможности для клиентов. Эти компоненты могут предоставляться внутри, при помощи специальных модулей Prosody, или внешне, при помощи протокола, указанного в XEP-0114.

Примечание: Имя хоста компонентов не должно совпадать с именами VirtualHost, указанными в prosody.cfg.lua. Попытка добавить компонент с уже существующим именем хоста для VirtualHost приведёт к ошибкам.

По умолчанию Prosody проверяет наличие внешних компонентов. Если вы не планируете использовать какие-либо внешние компоненты в Prosody, вы можете отключить эту функцию, добавив следующую строку в конфигурационный файл:

/etc/prosody/prosody.cfg.lua
component_ports = {}

Многопользовательский чат

Одним из основных компонентов серверов XMPP является многопользовательский чат (MUC), позволяющий пользователям общаться в режиме конференции. Многопользовательский чат предоставляется в виде внутреннего компонента вместе с Prosody. Для его активации в конфигурационный файл необходимо добавить следующую строку:

/etc/prosody/prosody.cfg.lua
Component "conference.example.com" "muc"

Благодаря этому компонент многопользовательского чата активируется на стороне хоста conference.example.com.

Модули Prosody

Модули Prosody - это набор дополнительных модулей, предоставляемых отдельно от Prosody. Эти модели находятся на разных стадиях разработки, от экспериментальной до стабильной. Для более подробной информации смотрите вики-страницу, на которой размещена информация о модулях. Примером дополнительного модуля является pastebin, который преобразует длинные сообщения (например, данные логов) в ссылку на фрагмент текста, хранящийся на внутреннем HTTP-сервере Prosody (предоставляемом основным модулем httpserver).

Для подключения дополнительного модуля необходимо скачать двоичный файл из источника. В качестве более простой альтернативы можно воспользоваться инструментом Mercurial и клонировать весь репозиторий:

Prosody 0.9+

$ hg clone https://hg.prosody.im/prosody-modules/ prosody-modules

Prosody 0.8

$ hg clone http://0-8.prosody-modules.googlecode.com/hg/ prosody-modules

Теперь можно копировать модуль (и все необходимые файлы) в каталог модулей Prosody /usr/lib/prosody/modules. Для активации модуля его необходимо добавить в список modules_enabled в файле prosody.cfg.lua для хоста или компонента, которые будут использовать этот модуль. Например, чтобы использовать модуль pastebin для компонента многопользовательского чата необходимо добавить следующие строки:

/etc/prosody/prosody.cfg.lua
Component "conference.example.com" "muc"
    modules_enabled = { "pastebin" }
Примечание: В соответствии с принятыми для Prosody правилами модули имеют название mod_foo.lua и активируются после добавления foo в список modules_enabled.

Командная строка

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

При помощи модуля console пользователю предоставляется терминал с протоколом telnet, через который можно осуществлять операции и запросы от имени администратора. Подключиться к терминалу можно при помощи команды:

$ telnet localhost 5582

Вам также потребуется программа для работы с telnet, включённая в пакет inetutils. Используйте команду help в терминале для получения более подробной информации об использовании.

Использование символа > в начале команды позволяет выполнять команды на языке Lua через консоль напрямую на сервере. К примеру, проверить сжатие соединения клиента можно следующей командой:

> full_sessions["romeo@montague.lit/Resource"].compressed

Флаг true означает наличие сжатия, а флаг nil означает его отсутствие.

Устранение неполадок

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

  • Изучите список известных проблем
    Ознакомьтесь с информацией о вашей версии Prosody в соответствующем разделе release notes чтобы найти жалобы на такую же проблему. Кроме того, проверьте issue tracker на наличие возможного решения вашей проблемы.
  • Проверьте синтаксис конфигурации
    Запустите luac5.1 -p /etc/prosody/prosody.cfg.lua для поиска каких-либо ошибок в синтаксисе конфигурационного файла. Пустой вывод означает отсутствие ошибок.
  • Проверьте лог
    В лог попадают только серьёзные сбои, поэтому их следует проверять всегда. Если вы полагаете, что ваша проблема не настолько серьёзная (например, проблема совместимости протокола между клиентами и серверами Prosody), вы можете включить уровень логирования debug.
  • Проверьте права
    При установке пакета Prosody в систему добавляется новый пользователь и группа prosody, которые получают необходимые права. Не будет лишним проверить их правильность. Следует убедиться, что пользователь prosody является владельцем /etc/prosody и /var/lib/prosody и у него есть необходимые права на чтение и запись всех расположенных там файлов.
  • Проверьте прослушиваемые порты
    При решении проблем с подключением следует убедиться, что Prosody прослушивает соединения. Для этого нужно запустить команду ss -tul и проверить xmpp-client (port 5222) и xmpp-server (port 5269).
  • Перезапустите сервис
    Как и во многих других случаях, стоит попробовать перезапустить prosody.service и посмотреть на результат.

Если вы не можете решить возникающую проблему самостоятельно, существует множество ресурсов, на которых можно поискать помощь. Ниже приведены некоторые из них:

  1. XMPP Conference: prosody@conference.prosody.im
  2. Почтовая рассылка: prosody-users@googlegroups.com, web-интерфейс
  3. Arch Forums (проблемы с пакетами)

Разработка

Поддержка пакетов Prosody для разработчиков осуществляется в AUR, prosody-hgAUR. prosody-hg отслеживает репозиторий Mercurial для Prosody, и всегда содержит актуальный код. Оба пакета схожи со стабильной версией.

Обратная связь

Смотрите также