Prosody (Русский)

Состояние перевода:
На этой странице представлен перевод статьи
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-event
AUR
Потоковое сжатие
Предоставьте 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
и посмотреть на результат.
Если вы не можете решить возникающую проблему самостоятельно, существует множество ресурсов, на которых можно поискать помощь. Ниже приведены некоторые из них:
XMPP Conference:
prosody@conference.prosody.im
Почтовая рассылка:
prosody-users@googlegroups.com
,
web-интерфейс
Arch Forums
(проблемы с пакетами)
Разработка
Поддержка пакетов Prosody для разработчиков осуществляется в AUR,
prosody-hg
AUR
.
prosody-hg
отслеживает репозиторий
Mercurial
для Prosody, и всегда содержит актуальный код. Оба пакета схожи со стабильной версией.
Обратная связь
Почтовая рассылка:
prosody-dev
,
prosody-users
Конференция:
prosody@conference.prosody.im
Блог:
Prosodical Thoughts
Смотрите также
Официальная документация
Prosodical Thoughts
(Блог)
Issue Tracker
Prosody Modules
(Дополнительные модули)