Jump to content

# 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, и всегда содержит актуальный код. Оба пакета схожи со стабильной версией.

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

- Почтовая рассылка: prosody-dev, prosody-users
- Конференция: `prosody@conference.prosody.im`
- Блог: Prosodical Thoughts

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

- Официальная документация
- Prosodical Thoughts (Блог)
- Issue Tracker
- Prosody Modules (Дополнительные модули)

Category:

- XMPP (Русский)

Prosody (Русский)
Add topic