Редактирование: Свой сервер: подробное руководство по установке Prosody
Материал из Мир Jabber
Перейти к навигацииПерейти к поиску
Внимание: Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы войдёте или создадите учётную запись, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
В этой статье приводится пример настройки [[Prosody]] - одного из самых популярных и легковесных jabber-серверов. Для сервера написано просто-таки | В этой статье приводится пример настройки [[Prosody]] - одного из самых популярных и легковесных jabber-серверов. Для сервера написано просто-таки огромное число модулей на все случаи жизни, поэтому в руководстве, основанном на версии 0.12.4, будет показано подключение актуальных и популярных функций. В качестве сертификатов будем использовать Let's Encrypt - и все это на Debian GNU/Linux. | ||
Рассмотрим особенности данной конфигурации. | Рассмотрим особенности данной конфигурации. | ||
Строка 90: | Строка 90: | ||
}} | }} | ||
В каталогах сервера не обязательно должен быть какой-то контент, хотя, например, на основном домене можно разместить какую-то страничку, посвященную jabber-серверу, а на поддомене '''conference''' разместить чат-логи [[Конференции|конференций]]. Субдомен '''upload''' можно приспособить под загружаемые через HTTP Upload файлы, чтобы в дальнейшем их раздавал веб-сервер<ref name="http_upload">В таком случае ему нужно обеспечить доступ к каталогу '''/var/lib/prosody/ | В каталогах сервера не обязательно должен быть какой-то контент, хотя, например, на основном домене можно разместить какую-то страничку, посвященную jabber-серверу, а на поддомене '''conference''' разместить чат-логи [[Конференции|конференций]]. Субдомен '''upload''' можно приспособить под загружаемые через HTTP Upload файлы, чтобы в дальнейшем их раздавал веб-сервер<ref name="http_upload">В таком случае ему нужно обеспечить доступ к каталогу '''/var/lib/prosody/http_upload/''' - а лучше указать опцию '''http_upload_path''' с путем за пределами домашнего каталога Prosody, плюс обеспечить нужные права веб-серверу, чтобы он мог читать файлы, загруженные через jabber-сервер. Такое решение имеет еще одно преимущество: разнообразные клиенты (не только Jabber) будут гораздо охотнее показывать превью для обычных HTTP/HTTPS-ссылок (т.е., на 80 или 443-м порту), а не тех, где контент отдается на "необычном" порту - вроде 5281 в данном примере.</ref>. | ||
После всех приготовлений<ref>Более подробно можно почитать тут: [[Свой сервер: подготовка веб-сервера и сертификатов]]</ref> создайте все необходимые сертификаты. Для этого воспользуйтесь следующими командами (выполнять надо от пользователя '''root'''): | После всех приготовлений<ref>Более подробно можно почитать тут: [[Свой сервер: подготовка веб-сервера и сертификатов]]</ref> создайте все необходимые сертификаты. Для этого воспользуйтесь следующими командами (выполнять надо от пользователя '''root'''): | ||
Строка 104: | Строка 104: | ||
После успешного выполнения команд будет выдана информация о созданном сертификате, в том числе 2 файла - цепочка ключей и приватный ключ - сохраните эти пути для дальнейшего использования, они нам еще пригодятся. Всего получится 10 файлов. certbot обновляет сертификаты автоматически, если срок их истечения составляет менее 30 дней - т.е., обновление происходит раз в 2 месяца. | После успешного выполнения команд будет выдана информация о созданном сертификате, в том числе 2 файла - цепочка ключей и приватный ключ - сохраните эти пути для дальнейшего использования, они нам еще пригодятся. Всего получится 10 файлов. certbot обновляет сертификаты автоматически, если срок их истечения составляет менее 30 дней - т.е., обновление происходит раз в 2 месяца. | ||
Так как Prosody работает от своего пользователя и не имеет доступа к сертификатам, созданным certbot от рута, то надо каким-то образом предоставить | Так как Prosody работает от своего пользователя и не имеет доступа к сертификатам, созданным certbot от рута, то надо каким-то образом предоставить доступ ejabberd'у к сертификатам. Самым простым и корректным вариантом на сейчас является выполнение следующей команды от рута<ref>https://prosody.im/doc/letsencrypt</ref>: | ||
prosodyctl --root cert import /etc/letsencrypt/live | prosodyctl --root cert import /etc/letsencrypt/live | ||
Строка 112: | Строка 112: | ||
== Установка и настройка Prosody == | == Установка и настройка Prosody == | ||
Все подготовительные процедуры завершены, теперь можно приступать непосредственно к установке и настройке своего jabber-сервера. Для поддержки звонков потребуется еще STUN/TURN-сервер - в качестве него будем использовать Coturn. В Debian установить Prosody с поддержкой MySQL<ref | Все подготовительные процедуры завершены, теперь можно приступать непосредственно к установке и настройке своего jabber-сервера. Для поддержки звонков потребуется еще STUN/TURN-сервер - в качестве него будем использовать Coturn. В Debian установить Prosody с поддержкой MySQL<ref>На самом деле выбор MySQL обусловлен с одной стороны ее популярностью на веб-хостингах, с другой - возможностью хранить большие объемы данных, которые могут потребоваться, если вы хотите хранить, например, архив сообщений за длительное время. Однако если таких планов нет и это будет сервер для одного или нескольких человек со скромными запросами - то вполне можно обойтись Sqlite.</ref> и Coturn можно командой | ||
apt-get install prosody coturn lua-dbi-mysql | apt-get install prosody coturn lua-dbi-mysql | ||
Строка 167: | Строка 167: | ||
prosodyctl install --server=https://modules.prosody.im/rocks/ mod_cloud_notify # Поддержка PUSH-уведомлений | prosodyctl install --server=https://modules.prosody.im/rocks/ mod_cloud_notify # Поддержка PUSH-уведомлений | ||
prosodyctl install --server=https://modules.prosody.im/rocks/ mod_cloud_notify_extensions # Дополнительные модули для PUSH | prosodyctl install --server=https://modules.prosody.im/rocks/ mod_cloud_notify_extensions # Дополнительные модули для PUSH | ||
prosodyctl install --server=https://modules.prosody.im/rocks/ mod_http_upload # Поддержка файлообмена через HTTP Upload | |||
prosodyctl install --server=https://modules.prosody.im/rocks/ mod_register_web # Поддержка регистрации через веб-страницу | prosodyctl install --server=https://modules.prosody.im/rocks/ mod_register_web # Поддержка регистрации через веб-страницу | ||
prosodyctl install --server=https://modules.prosody.im/rocks/ mod_muc_hats_adhoc # Указание дополнительных ролей в конференциях | |||
prosodyctl install --server=https://modules.prosody.im/rocks/ mod_muc_hats_api # См. выше | |||
prosodyctl install --server=https://modules.prosody.im/rocks/ mod_mam_adhoc # Возможность управлять настройками MAM-архива из jabber-клиента | prosodyctl install --server=https://modules.prosody.im/rocks/ mod_mam_adhoc # Возможность управлять настройками MAM-архива из jabber-клиента | ||
Строка 241: | Строка 244: | ||
-- Nice to have | -- Nice to have | ||
"csi_simple"; -- Simple but effective traffic optimizations for mobile devices | "csi_simple"; -- Simple but effective traffic optimizations for mobile devices | ||
--"invites"; -- Create and manage invites | |||
--"invites_adhoc"; -- Allow admins/users to create invitations via their client | |||
--"invites_register"; -- Allows invited users to create accounts | |||
"ping"; -- Replies to XMPP pings with pongs | "ping"; -- Replies to XMPP pings with pongs | ||
"register"; -- Allow users to register on this server using a client and change passwords | "register"; -- Allow users to register on this server using a client and change passwords | ||
Строка 536: | Строка 542: | ||
modules_enabled = { | modules_enabled = { | ||
"admin_web" | "admin_web" | ||
} | } | ||
allow_registration = false -- Allow users to register new accounts via in-band | allow_registration = false -- Allow users to register new accounts via in-band | ||
Строка 555: | Строка 558: | ||
options = { "no_sslv2", "no_sslv3" } | options = { "no_sslv2", "no_sslv3" } | ||
} | } | ||
proxy65_address = "proxy.EXAMPLE.COM" | |||
proxy65_acl = { "EXAMPLE.COM" } | proxy65_acl = { "EXAMPLE.COM" } | ||
Строка 563: | Строка 566: | ||
"muc_mam", | "muc_mam", | ||
"vcard_muc", | "vcard_muc", | ||
"muc_moderation" | "muc_moderation", | ||
"muc_hats_adhoc" | |||
} | } | ||
ssl = { | ssl = { | ||
Строка 577: | Строка 581: | ||
restrict_room_creation = "local" | restrict_room_creation = "local" | ||
Component "upload.EXAMPLE.COM" " | Component "upload.EXAMPLE.COM" "http_upload" | ||
ssl = { | ssl = { | ||
key = "/etc/prosody/certs/upload.EXAMPLE.COM.key"; | key = "/etc/prosody/certs/upload.EXAMPLE.COM.key"; | ||
Строка 584: | Строка 588: | ||
} | } | ||
http_upload_file_size_limit = 1024*1024*10 -- 10 MB | |||
-- http_max_content_size = 1024*1024*30 | |||
http_upload_quota = 1024*1024*250 -- 250 MB | |||
http_upload_expire_after = 60*60*24*7 -- 1 week | |||
Component "pubsub.EXAMPLE.COM" "pubsub" | Component "pubsub.EXAMPLE.COM" "pubsub" | ||
Строка 602: | Строка 607: | ||
* В '''plugin_paths''' добавляется путь к каталогу с устанавливаемыми плагинами. | * В '''plugin_paths''' добавляется путь к каталогу с устанавливаемыми плагинами. | ||
* Далее идет обширный список модулей. Рассмотрим некоторые: | * Далее идет обширный список модулей. Рассмотрим некоторые: | ||
** '''invites''' и сопутствующие ему модули позволяют сделать регистрацию по приглашениям. Однако есть одно но (на сейчас): это отключит обычную регистрацию. Поэтому какой вариант оставить - решайте сами. | |||
** '''turn_external''' позволит нам подключить настроенный ранее Coturn к Prosody для работы звонков. | ** '''turn_external''' позволит нам подключить настроенный ранее Coturn к Prosody для работы звонков. | ||
** '''cloud_notify''' включит поддержку PUSH-уведомлений. | ** '''cloud_notify''' включит поддержку PUSH-уведомлений. | ||
Строка 608: | Строка 614: | ||
* Далее следуют настройки, в которых можно усилить или ослабить проверки сертификатов для других серверов. | * Далее следуют настройки, в которых можно усилить или ослабить проверки сертификатов для других серверов. | ||
* Следующей ключевой настройкой будет указание сервера баз данных. Как мы уже условились выше, для хранения данных сервера [[Свой сервер: подготовка базы данных|будем использовать MySQL или MariaDB]]. Prosody имеет весьма простую структуру базы и встроенную схему, поэтому дополнительных действий не требуется. | * Следующей ключевой настройкой будет указание сервера баз данных. Как мы уже условились выше, для хранения данных сервера [[Свой сервер: подготовка базы данных|будем использовать MySQL или MariaDB]]. Prosody имеет весьма простую структуру базы и встроенную схему, поэтому дополнительных действий не требуется. | ||
* В '''archive_expires_after''' можем указать, как скоро нужно чистить архив сообщений для MAM | * В '''archive_expires_after''' можем указать, как скоро нужно чистить архив сообщений для MAM. | ||
* В '''turn_external_host''' и '''turn_external_secret''' указывается адрес Coturn и тот самый ключ, который прописывали в '''/etc/turnserver.conf'''. | * В '''turn_external_host''' и '''turn_external_secret''' указывается адрес Coturn и тот самый ключ, который прописывали в '''/etc/turnserver.conf'''. | ||
* Далее - несколько опций касательно безопасности: | * Далее - несколько опций касательно безопасности: | ||
Строка 619: | Строка 625: | ||
На этом настройка основной части завершена и далее идет настройка виртуальных хостов и их сервисов: | На этом настройка основной части завершена и далее идет настройка виртуальных хостов и их сервисов: | ||
* | * | ||
{{ToDo|Доделать}} | |||
==Сноски== | ==Сноски== | ||
Строка 653: | Строка 638: | ||
* [https://open-networks.ru/d/67-prosody-im-v012x-ustanovka-i-nastroyka-xmpp-servera-coturn-fail2ban Очень подробное пользовательское руководство по настройке Prosody] | * [https://open-networks.ru/d/67-prosody-im-v012x-ustanovka-i-nastroyka-xmpp-servera-coturn-fail2ban Очень подробное пользовательское руководство по настройке Prosody] | ||
* [https://www.8host.com/blog/ustanovka-prosody-v-ubuntu-18-04/ Еще одно руководство по установке и настройке] | * [https://www.8host.com/blog/ustanovka-prosody-v-ubuntu-18-04/ Еще одно руководство по установке и настройке] | ||
[[Category:Свой сервер]] | [[Category:Свой сервер]] |