Prosody (Русский) - ArchWiki

Jump to content
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 (Русский)