Prosody (Русский)
Цитата с официального сайта:
- 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
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" }
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-hgAUR. prosody-hg
отслеживает репозиторий Mercurial для Prosody, и всегда содержит актуальный код. Оба пакета схожи со стабильной версией.
Обратная связь
- Почтовая рассылка: prosody-dev, prosody-users
- Конференция:
prosody@conference.prosody.im
- Блог: Prosodical Thoughts
Смотрите также
- Официальная документация
- Prosodical Thoughts (Блог)
- Issue Tracker
- Prosody Modules (Дополнительные модули)