{"id":274811,"date":"2016-02-24T08:29:02","date_gmt":"2016-02-24T05:29:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=274811"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=274811","title":{"rendered":"Metronome IM \u0438 Jappix: \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 Jabber \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0431\u0435\u0437 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435"},"content":{"rendered":"<p>       <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/d27\/fd5\/390\/d27fd53901887adb98471de642665d58.png\"\/><br \/>  \u0427\u0442\u043e \u0435\u0441\u043b\u0438 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u0432\u0430\u043c \u043a\u0430\u043a \u0431\u0435\u0437 \u043e\u0441\u043e\u0431\u044b\u0445 \u0443\u0441\u0438\u043b\u0438\u0439 \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 jabber-\u0441\u0435\u0440\u0432\u0435\u0440 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043d\u043e\u0432\u043e\u043c\u043e\u0434\u043d\u044b\u043c\u0438 \u0444\u0438\u0447\u0430\u043c\u0438, \u0442\u0430\u043a\u0438\u043c\u0438 \u043a\u0430\u043a: \u0430\u0440\u0445\u0438\u0432\u0430\u0446\u0438\u044f, \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u043a\u043b\u0442\u0435\u043d\u0442\u0430\u043c\u0438, \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043e \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u0438, \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 \u0447\u0430\u0442\u044b \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435\u2026<br \/>  \u0422\u0430\u043a \u0436\u0435 \u043f\u043e\u0434\u0435\u043b\u044e\u0441\u044c \u0441 \u0432\u0430\u043c\u0438 \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c Jabber-\u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0435\u043d, \u043e\u043d \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0430\u0443\u0434\u0438\u043e \u0438 \u0432\u0438\u0434\u0435\u043e \u0437\u0432\u043e\u043d\u043a\u0438, \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430. <br \/>  \u0422\u043e \u0438 \u0434\u0440\u0443\u0433\u043e\u0435 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e, \u0442\u0430\u043a-\u043a\u0430\u043a \u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u043a\u043b\u0438\u0435\u043d\u0442 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043b\u0439 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438.<\/p>\n<p>  \u0420\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0435\u0442 \u043e\u0431 <b>Metronome IM<\/b> \u0438 <b>Jappix<\/b>.<a name=\"habracut\"><\/a><\/p>\n<p>  <i>\u0421\u0442\u043e\u0438\u0442 \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0432\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0442\u043e, \u0447\u0442\u043e \u043e\u0431\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043c\u043e\u0433\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430, \u043a Metronome IM, \u0432\u0441\u0435 \u0442\u0430\u043a \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043b\u044e\u0431\u044b\u043c Jabber-\u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c, \u0430 Jappix \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e Jabber-\u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0435\u0433\u043e BOSH.<\/i><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/5c2\/cb6\/09b\/5c2cb609bc8cf8e84d1e487785095a9c.png\" alt=\"image\" align=\"left\"\/><br \/>  <a name=\"metronome\"><\/a><\/p>\n<h1>Metronome IM<\/h1>\n<p>  <b>Author:<\/b> Marco Cirillo<br \/>  <b>Site:<\/b> <a href=\"https:\/\/lightwitch.org\/metronome\">lightwitch.org\/metronome<\/a><br \/>  <b>License:<\/b> MIT<br \/>  <b>Written in:<\/b> Lua<\/p>\n<p>  \u0418 \u0442\u0430\u043a, \u043d\u0430\u0447\u043d\u0435\u043c \u043c\u044b \u043f\u043e\u0436\u0430\u043b\u0443\u0439 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438.<\/p>\n<p>  Metronome IM \u2014 \u044d\u0442\u043e Jabber-\u0441\u0435\u0440\u0432\u0435\u0440, \u0444\u043e\u0440\u043a \u043d\u0435\u0431\u0435\u0437\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0433\u043e <a href=\"https:\/\/prosody.im\/\">Prosody IM<\/a>, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0443\u0436\u0435 \u043d\u0435 \u0440\u0430\u0437 <a href=\"https:\/\/habrahabr.ru\/search\/?q=[prosody]&amp;target_type=posts\">\u043f\u0438\u0441\u0430\u043b\u0438<\/a> \u043d\u0430 \u0425\u0430\u0431\u0440\u0435. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 Prosody, Metronome \u0441\u043e\u0437\u0434\u0430\u043d \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0444\u0438\u0448\u0435\u043a, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a <a href=\"http:\/\/www.xmpp.org\/extensions\/xep-0060.html\">pubsub<\/a>, <a href=\"http:\/\/xmpp.org\/extensions\/xep-0108.html\">user activity<\/a>, <a href=\"http:\/\/xmpp.org\/extensions\/xep-0107.html\">mood<\/a>, \u0438 \u0434\u0440\u0443\u0433\u0438\u0445, \u043d\u043e \u043d\u0435 \u043e\u043d\u0438 \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442.<br \/>  \u041f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 XEP, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u043d\u0430 <a href=\"https:\/\/lightwitch.org\/metronome\/supported-xeps-list\">\u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435<\/a>. \u0421\u043e\u0433\u043b\u0430\u0441\u0438\u0442\u0435\u0441\u044c, \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0432\u043d\u0443\u0448\u0430\u044e\u0449\u0438\u0439!<\/p>\n<p>  \u0421\u0440\u0435\u0434\u0438 \u0432\u0441\u0435\u0445 XEP \u0435\u0441\u0442\u044c: \u0438 Message archive (\u0430\u0440\u0445\u0438\u0432\u0430\u0446\u0438\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439), \u0438 Carbons (\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c\u0438), \u0438 Offline Messages (\u043e\u0444\u043b\u0430\u0439\u043d\u043e\u0432\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f)\u2026 \u0414\u043b\u044f \u0442\u0435\u0445 \u043a\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 jabber-\u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0432\u0441\u0435 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u0435\u0441\u044c\u043c\u0430 \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430\u043f\u0438\u043b\u044c\u043d\u0438\u043a\u043e\u043c.<br \/>  \u0412 Metronome IM \u0436\u0435 \u0432\u0441\u0435 XEP \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0441\u0440\u0430\u0437\u0443 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0438 \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 Jabber-\u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432.<br \/>  \u0418\u0437 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u043c\u043e\u0433\u0443 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u0438\u0445 \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0445 \u0433\u043b\u044e\u043a\u043e\u0432, \u043a\u043e\u0433\u0434\u0430 \u0432\u0430\u0448\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043a\u0443\u0434\u0430-\u0442\u043e \u043f\u043e\u0442\u0435\u0440\u044f\u0435\u0442\u0441\u044f, \u043f\u0440\u043e\u0434\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0438\u043b\u0438 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u043a\u043b\u0438\u0435\u043d\u0442\u0435, \u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u0435\u0433\u043e \u0434\u0430\u0436\u0435 \u043d\u0435 \u0443\u0432\u0438\u0434\u0438\u0442.<\/p>\n<p>  \u041f\u043b\u044e\u0441 \u043a\u043e \u0432\u0441\u0435\u043c\u0443, \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 lua, \u0438\u043c\u0435\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0438 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433.<br \/>  \u0422\u0430\u043a \u0436\u0435 \u043a \u043d\u0435\u043c\u0443 \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u043e\u0442 Prosody IM \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0434\u043e\u043f\u0438\u043b\u0430, \u043d\u043e \u044d\u0442\u043e\u0433\u043e, \u044f \u0443\u0432\u0435\u0440\u0435\u043d, \u0432\u0430\u043c, \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u0434\u0430\u0436\u0435 \u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f.<\/p>\n<h2>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/h2>\n<p>  \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u043c\u044e Metronome IM \u043d\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u0431\u0443\u0434\u0435\u043c \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0435\u0433\u043e \u0438\u0437 <a href=\"https:\/\/github.com\/maranda\/metronome\/releases\">\u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432<\/a>, \u0432\u044b \u0442\u0430\u043a \u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <a href=\"https:\/\/hub.docker.com\/search\/?isAutomated=1&amp;q=metronome\">Docker<\/a><\/p>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438:<\/p>\n<p>  Ubuntu \/ Debian:  <\/p>\n<pre><code class=\"bash\">apt-get update apt-get -y install libssl-dev libidn11-dev build-essentials lua5.1 liblua5.1-dev liblua5.1-bitop-dev liblua5.1-expat-dev liblua5.1-event-dev lua5.1-posix-dev lua5.1-sec-dev lua5.1-socket-dev lua5.1-filesystem-dev <\/code><\/pre>\n<p>  CentOS:  <\/p>\n<pre><code class=\"bash\">yum -y install epel-release yum -y install gcc lua-devel openssl-devel libidn-devel lua-expat lua-socket lua-filesystem lua-sec lua-dbi lua-event  # Install lua-zlib module curl https:\/\/codeload.github.com\/brimworks\/lua-zlib\/tar.gz\/v0.4 | tar xzv -C \/usr\/src\/ cd \/usr\/src\/lua-zlib-0.4\/ make linux make install  # Install lua-bitop module curl http:\/\/bitop.luajit.org\/download\/LuaBitOp-1.0.2.tar.gz | tar xzv -C \/usr\/src\/ cd \/usr\/src\/LuaBitOp-1.0.2 make make install <\/code><\/pre>\n<p>  \u0421\u043a\u0430\u0447\u0430\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438, \u0441\u043e\u0431\u0435\u0440\u0435\u043c \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0438\u0445:  <\/p>\n<pre><code class=\"bash\">useradd -r -s \/sbin\/nologin -d \/var\/lib\/metronome metronome git clone https:\/\/github.com\/maranda\/metronome.git \/usr\/src\/metronome curl -L https:\/\/github.com\/maranda\/metronome\/archive\/v3.7.tar.gz  | sudo tar xz -C \/usr\/src\/ cd \/usr\/src\/metronome* .\/configure --prefix=\/usr --sysconfdir=\/etc\/prosody --datadir=\/var\/lib\/prosody --require-config --ostype=debian # --ostype=linux make && make install mkdir \/var\/log\/metronome \/var\/run\/metronome chown metronome: \/var\/lib\/metronome \/var\/log\/metronome \/var\/run\/metronome <\/code><\/pre>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c unit \u0434\u043b\u044f systemd: \/etc\/systemd\/system\/metronome.service  <\/p>\n<pre><code>[Unit] Description=XMPP (Jabber) Server After=network.target  [Service] Type=forking PIDFile=\/run\/metronome\/metronome.pid ExecStart=\/usr\/bin\/metronomectl start ExecStop=\/usr\/bin\/metronomectl stop  [Install] WantedBy=multi-user.target <\/code><\/pre>\n<p>  \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430<\/p>\n<h2>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430<\/h2>\n<p>  \u0421\u043a\u0430\u0447\u0430\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433 <a href=\"https:\/\/raw.githubusercontent.com\/jappix\/jappix-tools\/master\/metronome\/configs\/config_metronome.cfg.lua\">metronome.cfg.lua<\/a> \u043b\u044e\u0431\u0435\u0437\u043d\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c jappix.com<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0440\u0430\u0432\u043e\u043a \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">metronome.cfg.lua<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"lua\">-- Prosody XMPP Server Configuration -- -- Information on configuring Prosody can be found on our -- website at http:\/\/metronome.im\/doc\/configure -- -- Tip: You can check that the syntax of this file is correct -- when you have finished by running: metronomectl check config -- If there are any errors, it will let you know what and where -- they are, otherwise it will keep quiet. -- -- Good luck, and happy Jabbering!   ---------- Server-wide settings ---------- -- Settings in this section apply to the whole server and are the default settings -- for any virtual hosts  -- This is a (by default, empty) list of accounts that are admins -- for the server. Note that you must create the accounts separately -- (see http:\/\/metronome.im\/doc\/creating_accounts for info) -- Example: admins = { &quot;user1@example.com&quot;, &quot;user2@example.net&quot; } admins = { }  -- Required for init scripts and metronomectl pidfile = &quot;\/var\/run\/metronome\/metronome.pid&quot;  -- ulimit metronome_max_files_soft = 200000 metronome_max_files_hard = 200000   -- HTTP server http_ports = { 5280 } http_interfaces = { &quot;0.0.0.0&quot;, &quot;::&quot; }  https_ports = { 5281 } https_interfaces = { &quot;0.0.0.0&quot;, &quot;::&quot; }  -- Enable IPv6 use_ipv6 = true  -- This is the list of modules Prosody will load on startup. -- It looks for mod_modulename.lua in the plugins folder, so make sure that exists too. -- Documentation on modules can be found at: http:\/\/metronome.im\/doc\/modules  modules_enabled = {      -- Generally required         --&quot;roster&quot;; -- Allow users to have a roster. Recommended ;)         &quot;saslauth&quot;; -- Authentication for clients and servers. Recommended if you want to log in.         &quot;tls&quot;; -- Add support for secure TLS on c2s\/s2s connections         &quot;dialback&quot;; -- s2s dialback support         &quot;disco&quot;; -- Service discovery         &quot;extdisco&quot;; -- External Service Discovery       -- Not essential, but recommended         --&quot;private&quot;; -- Private XML storage (for room bookmarks, etc.)         --&quot;vcard&quot;; -- Allow users to set vCards          -- These are commented by default as they have a performance impact         &quot;compression&quot;; -- Stream compression (requires the lua-zlib package installed)      -- Nice to have         &quot;version&quot;; -- Replies to server version requests         &quot;uptime&quot;; -- Report how long server has been running         &quot;time&quot;; -- Let others know the time here on this server         &quot;ping&quot;; -- Replies to XMPP pings with pongs         --&quot;pep&quot;; -- Enables users to publish their mood, activity, playing music and more         --&quot;register&quot;; -- Allow users to register on this server using a client and change passwords      -- Admin interfaces         &quot;admin_adhoc&quot;; -- Allows administration via an XMPP client that supports ad-hoc commands         --&quot;admin_telnet&quot;; -- Opens telnet console interface on localhost port 5582          -- HTTP modules         &quot;bosh&quot;; -- Enable BOSH clients, aka &quot;Jabber over HTTP&quot;         &quot;websocket&quot;; -- Enable WebSocket clients          --&quot;http_files&quot;; -- Serve static files from a directory over HTTP      -- Other specific functionality         &quot;posix&quot;; -- POSIX functionality, sends server to background, enables syslog, etc.         &quot;bidi&quot;; -- Bidirectional Streams for S2S connections         &quot;stream_management&quot;; -- Stream Management support         --&quot;groups&quot;; -- Shared roster support         --&quot;announce&quot;; -- Send announcement to all online users         --&quot;welcome&quot;; -- Welcome users who register accounts         --&quot;watchregistrations&quot;; -- Alert admins of registrations         --&quot;motd&quot;; -- Send a message to users when they log in         &quot;legacyauth&quot;; -- Legacy authentication. Only used by some old clients and bots.          &quot;log_auth&quot;; }  -- These modules are auto-loaded, but should you want -- to disable them then uncomment them here: modules_disabled = {     -- &quot;offline&quot;; -- Store offline messages     -- &quot;c2s&quot;; -- Handle client connections     -- &quot;s2s&quot;; -- Handle server-to-server connections }  -- Discovery items disco_items = {     { &quot;muc.example.org&quot; },     { &quot;proxy.example.org&quot; },     { &quot;pubsub.example.org&quot; },     { &quot;vjud.example.org&quot; } };  -- External Service Discovery (mod_extdisco) external_services = {     [&quot;stun.example.org&quot;] = {         [1] = {             port = &quot;3478&quot;,             transport = &quot;udp&quot;,             type = &quot;stun&quot;         },          [2] = {             port = &quot;3478&quot;,             transport = &quot;tcp&quot;,             type = &quot;stun&quot;         }     } };  -- Bidirectional Streams configuration (mod_bidi) bidi_exclusion_list = { &quot;jabber.org&quot; }  -- BOSH configuration (mod_bosh) bosh_max_inactivity = 30 consider_bosh_secure = true cross_domain_bosh = true  -- WebSocket configuration (mod_websockets) consider_websockets_secure = true cross_domain_websockets = true  -- Disable account creation by default, for security allow_registration = false  -- Ignore priority settings ignore_presence_priority = true  -- These are the SSL\/TLS-related settings. If you don't want -- to use SSL\/TLS, you may comment or remove this ssl = { \tkey = &quot;\/etc\/metronome\/certs\/localhost.key&quot;;   \tcertificate = &quot;\/etc\/metronome\/certs\/localhost.cert&quot;;         options = {             &quot;no_sslv2&quot;,             &quot;no_sslv3&quot;,             &quot;no_ticket&quot;,             &quot;no_compression&quot;,             &quot;cipher_server_preference&quot;         };  }  -- Force clients to use encrypted connections? This option will -- prevent clients from authenticating unless they are using encryption.  c2s_require_encryption = true  -- Force servers to use encrypted connections? This option will -- prevent servers from connecting unless they are using encryption.  s2s_require_encryption = true  -- Allow servers to use an unauthenticated encryption channel  s2s_allow_encryption = true  -- Don't require encryption for listed servers s2s_encryption_exceptions = {     &quot;cisco.com&quot;,     &quot;gmail.com&quot; }  -- Logging configuration -- For advanced logging see http:\/\/metronome.im\/doc\/logging log = {     info = &quot;\/var\/log\/metronome\/metronome.log&quot;; -- Change 'info' to 'debug' for verbose logging     error = &quot;\/var\/log\/metronome\/metronome.err&quot;;     -- &quot;*syslog&quot;; -- Uncomment this for logging to syslog     -- &quot;*console&quot;; -- Log to the console, useful for debugging with daemonize=false }  activity_log_dir = &quot;\/var\/log\/metronome\/activity_log&quot;  -- For the &quot;sql&quot; backend, you can uncomment *one* of the below to configure: sql = { driver = &quot;SQLite3&quot;, database = &quot;metronome.sqlite&quot; } -- Default. 'database' is the filename. --sql = { driver = &quot;MySQL&quot;, database = &quot;metronome&quot;, username = &quot;metronome&quot;, password = &quot;password&quot;, host = &quot;localhost&quot; } --sql = { driver = &quot;PostgreSQL&quot;, database = &quot;metronome&quot;, username = &quot;metronome&quot;, password = &quot;secret&quot;, host = &quot;localhost&quot; }  ----------- Virtual hosts ----------- -- You need to add a VirtualHost entry for each domain you wish Prosody to serve. -- Settings under each VirtualHost entry apply *only* to that host.  VirtualHost &quot;example.org&quot;     enabled = true     default_storage = &quot;sql&quot;      modules_enabled = {         -- Generally required             &quot;roster&quot;; -- Allow users to have a roster. Recommended ;)          -- Not essential, but recommended             &quot;private&quot;; -- Private XML storage (for room bookmarks, etc.)             &quot;vcard&quot;; -- Allow users to set vCards          -- These are commented by default as they have a performance impact             &quot;mam&quot;; -- Message Archive Management             &quot;privacy&quot;; -- Support privacy lists          -- Nice to have             &quot;lastactivity&quot;; -- Logs the user last activity timestamp             &quot;pep&quot;; -- Enables users to publish their mood, activity, playing music and more             &quot;message_carbons&quot;; -- Allow clients to keep in sync with messages send on other resources             --&quot;register&quot;; -- Allow users to register on this server using a client and change passwords             --&quot;register_redirect&quot;; -- Redirects users registering to the registration form             &quot;public_service&quot;; -- Provides some information about the XMPP server             --&quot;log_activity&quot;; -- Activity log, module from https:\/\/github.com\/jappix\/jappix-xmppd-modules             &quot;groups&quot;; -- Shared groups          -- Admin interfaces             --&quot;admin_adhoc&quot;; -- Allows administration via an XMPP client that supports ad-hoc commands     }      groups_file = &quot;\/etc\/metronome\/groups.txt&quot;      resources_limit = 10      no_registration_whitelist = true     registration_url = &quot;https:\/\/example.org\/&quot;     registration_text = &quot;Please register your account on Jappix itself (open example.org in your Web browser). Then you'll be able to use it anywhere you want.&quot;      public_service_vcard = {         name = &quot;Jappix XMPP service&quot;,         url = &quot;https:\/\/example.org\/&quot;,         foundation_year = &quot;2010&quot;,         country = &quot;RU&quot;,         email = &quot;admin@example.org&quot;,         admin_jid = &quot;admin@example.org&quot;,         geo = &quot;48.87,2.33&quot;,         ca = { name = &quot;StartSSL&quot;, url = &quot;https:\/\/www.startssl.com\/&quot; },         oob_registration_uri = &quot;https:\/\/example.org\/&quot;     }  VirtualHost &quot;anonymous.example.org&quot;     enabled = true     authentication = &quot;anonymous&quot;     allow_anonymous_multiresourcing = true     allow_anonymous_s2s = true     anonymous_jid_gentoken = &quot;Jappix Anonymous User&quot;     anonymous_randomize_for_trusted_addresses = { &quot;127.0.0.1&quot;, &quot;::1&quot; }  ------ Components ------ -- You can specify components to add hosts that provide special services, -- like multi-user conferences, and transports.  ---Set up a MUC (multi-user chat) room server on muc.example.org: Component &quot;muc.example.org&quot; &quot;muc&quot;     name = &quot;Jappix Chatrooms&quot;      modules_enabled = {         &quot;muc_limits&quot;;         &quot;muc_log&quot;;         &quot;muc_log_http&quot;;         &quot;pastebin&quot;;     }      muc_event_rate = 0.5     muc_burst_factor = 10      muc_log_http_config = {         url_base = &quot;logs&quot;;         theme = &quot;metronome&quot;;     }      pastebin_url = &quot;https:\/\/muc.example.org\/paste\/&quot;     pastebin_path = &quot;\/paste\/&quot;     pastebin_expire_after = 0     pastebin_trigger = &quot;!paste&quot;  ---Set up a PubSub server Component &quot;pubsub.example.org&quot; &quot;pubsub&quot;     name = &quot;Jappix Publish\/Subscribe&quot;      --unrestricted_node_creation = true -- Anyone can create a PubSub node (from any server)  ---Set up a VJUD service Component &quot;vjud.example.org&quot; &quot;vjud&quot;     ud_disco_name = &quot;Jappix User Directory&quot;     synchronize_to_host_vcards = &quot;example.org&quot;  ---Set up a BOSH service ( https:\/\/bind.example.org:5281\/http-bind ) Component &quot;bind.example.org&quot; &quot;http&quot;     modules_enabled = { &quot;bosh&quot; }  ---Set up a WebSocket service Component &quot;websocket.example.org&quot; &quot;http&quot;     modules_enabled = { &quot;websocket&quot; }  ---Set up a BOSH + WebSocket service Component &quot;me.example.org&quot; &quot;http&quot;     modules_enabled = { &quot;bosh&quot;, &quot;websocket&quot; }  ---Set up a statistics service Component &quot;stats.example.org&quot; &quot;http&quot;     modules_enabled = { &quot;server_status&quot; }      server_status_basepath = &quot;\/xmppd\/&quot;     server_status_show_hosts = { &quot;example.org&quot;, &quot;anonymous.example.org&quot; }     server_status_show_comps = { &quot;muc.example.org&quot;, &quot;proxy.example.org&quot;, &quot;pubsub.example.org&quot;, &quot;vjud.example.org&quot; }  -- Set up a SOCKS5 bytestream proxy for server-proxied file transfers: Component &quot;proxy.example.org&quot; &quot;proxy65&quot;     proxy65_acl = { &quot;example.org&quot;, &quot;anonymous.example.org&quot; } <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041a\u043e\u043d\u0444\u0438\u0433 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u0440\u043e\u043a\u043e\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u0438 \u044f \u043d\u0435 \u0432\u0438\u0436\u0443 \u043e\u0441\u043e\u0431\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0441 \u043c\u043e\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b.<br \/>  \u0421\u043a\u0430\u0436\u0443 \u043b\u0438\u0448\u044c \u0442\u043e, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 <a href=\"#jappix\">jappix<\/a> \u0438\u043b\u0438 \u043b\u044e\u0431\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e web-\u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u0442\u043e \u0432\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 BOSH. \u0418\u043c\u0435\u043d\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e \u0432\u0430\u0448 web-\u043a\u043b\u0438\u0435\u043d\u0442 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u0441 \u0432\u0430\u0448\u0438\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c.<\/p>\n<p>  \u0423\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 <a href=\"https:\/\/lightwitch.org\/metronome\/documentation\/configuration\">\u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435<\/a> \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/p>\n<p>  \u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 DNS-\u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0430 \u043d\u0430\u0448\u0435\u043c DNS-\u0441\u0435\u0440\u0432\u0435\u0440\u0435:  <\/p>\n<pre><code>xmpp IN A 1.2.3.4 muc CNAME xmpp pubsub CNAME xmpp vjud CNAME xmpp bind CNAME xmpp websocket CNAME xmpp me CNAME xmpp stats CNAME xmpp proxy CNAME xmpp anonymous CNAME xmpp _xmpp-client._tcp.example.org. IN SRV 0 5 5222 xmpp.example.org. _xmpp-server._tcp.example.org. IN SRV 0 5 5269 xmpp.example.org.       <\/code><\/pre>\n<p>  \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441:  <\/p>\n<pre><code class=\"bash\">systemctl enable metronome systemctl start metronome <\/code><\/pre>\n<p>  \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043b\u043e\u0433\u0438.<br \/>  \u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u043e\u043a, \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f:  <\/p>\n<pre><code class=\"bash\">prosodyctl adduser me@example.com <\/code><\/pre>\n<p>  \u0418 \u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.<br \/>  \u041d\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440 \u0433\u043e\u0442\u043e\u0432!<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/3f7\/214\/9d9\/3f72149d9d5d80b23d1d222d7db40604.jpg\" alt=\"image\" align=\"left\"\/><br \/>  <a name=\"jappix\"><\/a><\/p>\n<h1>Jappix<\/h1>\n<p>  <b>Author:<\/b> Val\u00e9rian Saliou, Julien Barrier<br \/>  <b>Site:<\/b> <a href=\"https:\/\/jappix.org\/\">jappix.org<\/a><br \/>  <b>License:<\/b> AGPL<br \/>  <b>Written in:<\/b> JavaScript<br \/>  <b>Demo:<\/b> <a href=\"https:\/\/jappix.com\/\">jappix.com<\/a><\/p>\n<p>  \u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b Jappix \u2014 \u044d\u0442\u043e Jabber-\u043a\u043b\u0438\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0435\u0435\u0442 \u0432\u0435\u0441\u044c\u043c\u0430 \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0430\u0443\u0434\u0438\u043e \u0438 \u0432\u0438\u0434\u0435\u043e \u0437\u0432\u043e\u043d\u043a\u0438, \u0442\u0430\u043a \u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 XEP \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u043e\u043a\u043d\u0430 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430. <\/p>\n<p>  C\u0430\u043c \u043a\u043b\u0438\u0435\u043d\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/ff9\/30f\/4aa\/ff930f4aa370fca79b182f433dfaa029.png\" alt=\"image\"\/><\/div>\n<\/div>\n<p>  \u0422\u0430\u043a \u0436\u0435 \u043e\u043d \u0438\u043c\u0435\u0435\u0442 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e, \u0434\u043b\u044f \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u0441\u0430\u0439\u0442:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/393\/690\/2a9\/3936902a9fdf1681eff0f3aa29fe558d.png\" alt=\"image\"\/><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/66e\/b16\/c36\/66eb16c3616ee0efaa93ef004536329a.png\" alt=\"image\"\/><\/div>\n<\/div>\n<h1>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/h1>\n<p>  \u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430. <\/p>\n<p>  \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442 \u0441\u0441\u043e\u0431\u043e\u0439 \u0447\u0442\u043e-\u0442\u043e \u043d\u0435\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u043e\u0435. \u0412\u0441\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0431\u044b \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u041d\u043e \u0432\u044b \u0432\u0441\u0435 \u0442\u0430\u043a-\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Jappix \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <a href=\"https:\/\/hub.docker.com\/search\/?isAutomated=1&amp;q=jappix\">Docker<\/a>.<\/p>\n<p>  \u0418 \u0442\u0430\u043a \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438:<\/p>\n<p>  Debian\/Ubuntu:  <\/p>\n<pre><code class=\"bash\">apt-get install php5-gd php5-curl <\/code><\/pre>\n<p>  CentOS:  <\/p>\n<pre><code class=\"bash\">yum install php-mbstring <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043a\u0430\u0447\u0430\u0435\u043c <a href=\"https:\/\/download.jappix.org\/1.1.6\/jappix-1.1.6-primo.tar.bz2\">jappix-1.1.6-primo.tar.bz2<\/a> \u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u0443\u0435\u043c \u0435\u0433\u043e \u0432 \/var\/www  <\/p>\n<pre><code class=\"bash\">curl -L https:\/\/download.jappix.org\/1.1.6\/jappix-1.1.6-primo.tar.bz2 | tar xvj -C \/var\/www <\/code><\/pre>\n<p>  \u041d\u0430\u043f\u0438\u0448\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f nginx \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">jappix.conf<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"nginx\">server {         listen  80;         server_name jappix.example.org;         return 301 https:\/\/jappix.example.org$request_uri; }   server {         listen 443 ssl;         server_name jappix.example.org;         root \/var\/www\/jappix;         index index.html index.php;           access_log \/var\/log\/nginx\/jappix-access.log;         error_log \/var\/log\/nginx\/jappix-error.log;           # Configuration SSL         # Support du HSTS (HTTP Strict Transport Security)         add_header Strict-Transport-Security &quot;max-age=315360000; includeSubdomains&quot;;           # Configuration SSL         ssl_certificate                 \/etc\/nginx\/certificates\/common-ssl.cert;         ssl_certificate_key             \/etc\/nginx\/certificates\/common-ssl.key;         ssl_protocols                   TLSv1 TLSv1.1 TLSv1.2;         ssl_prefer_server_ciphers       on;         ssl_ciphers                     &quot;EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH EDH+aRSA !RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS&quot;;           location \/ {                 try_files $uri $uri\/ \/index.php?$args;         }           location ~ \\.php$ {                 try_files $uri =404;                 fastcgi_index index.php;                 fastcgi_pass php5-fpm-sock;                 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;                 include \/etc\/nginx\/fastcgi_params;                 fastcgi_param PHP_VALUE &quot;upload_max_filesize = 25M \\n                                          post_max_size = 25M \\n                                          max_execution_time = 600&quot;;         }           location ~ \/(app|i18n|log|test|tmp|tools)\/ {                 deny all;         } } <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440.<\/p>\n<p>  \u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0431 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 <a href=\"https:\/\/github.com\/jappix\/jappix\/wiki\">wiki<\/a> \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/p>\n<h2>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430<\/h2>\n<p>  Jappix \u0438\u043c\u0435\u0435\u0442 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a. \u0417\u0430\u0445\u043e\u0434\u0438\u043c \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435:  <\/p>\n<pre><code>https:\/\/jappix.example.org\/?m=install <\/code><\/pre>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430, \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u043c \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u0432\u0432\u043e\u0434\u0438\u043c \u0430\u0434\u0440\u0435\u0441\u0430 \u0434\u043e \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<p>  \u0412\u043e\u0442 \u0442\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u0442\u0440\u0430\u0433\u0438\u0447\u043a\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0430:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/b><\/p>\n<div class=\"spoiler_text\"><a href=\"https:\/\/habrastorage.org\/files\/42f\/981\/fd2\/42f981fd22d141afbad1e59daecd25b1.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/42f\/981\/fd2\/42f981fd22d141afbad1e59daecd25b1.png\" alt=\"image\"\/><\/a><\/div>\n<\/div>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430, \u0432\u0430\u0441 \u043f\u0435\u0440\u0435\u043a\u0438\u043d\u0435\u0442 \u043d\u0430 \u043e\u043a\u043d\u043e \u043b\u043e\u0433\u0438\u043d\u0430.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/b><\/p>\n<div class=\"spoiler_text\"><a href=\"https:\/\/habrastorage.org\/files\/2ac\/27f\/31a\/2ac27f31a7f54c7386329391d995035a.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/2ac\/27f\/31a\/2ac27f31a7f54c7386329391d995035a.png\" alt=\"image\"\/><\/a><\/div>\n<\/div>\n<p>  \u0412 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0443 \u043f\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0441\u044b\u043b\u043a\u0435:  <\/p>\n<pre><code>https:\/\/jappix.example.org\/?m=manager <\/code><\/pre>\n<h1>Let&#8217;s Encrypt<\/h1>\n<p>  \u041f\u0430\u0440\u0430 \u0441\u043b\u043e\u0432 \u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430\u0445.<\/p>\n<p>  \u041e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440 \u0441 \u0441\u0430\u043c\u043e\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430\u043c\u0438 \u043d\u0435 \u0435\u0441\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u043e, \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0445\u043e\u0442\u044f \u0431\u044b \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439.<br \/>  \u041c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0434\u043e\u0432\u043e\u043b\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0441\u0443\u0431\u0434\u043e\u043c\u0435\u043d\u043e\u0432, \u0442\u0430\u043a \u0447\u0442\u043e \u043e\u0434\u043d\u043e\u0433\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u043d\u0430\u043c \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043d\u0435 \u0445\u0432\u0430\u0442\u0438\u0442, \u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u043e. \u0412\u044b\u0445\u043e\u0434 \u0435\u0441\u0442\u044c \u2014 \u044d\u0442\u043e Let&#8217;s Encrypt.<\/p>\n<p>  \u041d\u0430 \u0445\u0430\u0431\u0440\u0435  <a href=\"https:\/\/habrahabr.ru\/users\/malcolmreynolds\/\" class=\"user_link\">MalcolmReynolds<\/a> \u0443\u0436\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u043b <a href=\"https:\/\/habrahabr.ru\/post\/270273\/\">\u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443<\/a> \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u0443 Let&#8217;s Encrypt.<br \/>  \u0422\u0430\u043a \u0436\u0435 \u0435\u0441\u0442\u044c \u043f\u0430\u0440\u0430 \u043a\u043b\u0430\u0441\u0441\u043d\u044b\u0445 \u0441\u0442\u0430\u0442\u0435\u0439 \u043d\u0430 DigitalOcean \u2014 <a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-14-04\">nginx<\/a>, <a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-14-04\">apache<\/a> <\/p>\n<p>  \u041d\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 Docker, \u0442\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0432\u0430\u043c \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0439 \u043e\u0431\u0440\u0430\u0437: <a href=\"https:\/\/hub.docker.com\/r\/kvaps\/letsencrypt-webroot\/\">kvaps\/letsencrypt-webroot<\/a><\/p>\n<p>  \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044e \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435!               <\/p>\n<div class=\"clear\"><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/270207\/\"> https:\/\/habrahabr.ru\/post\/270207\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>       <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/d27\/fd5\/390\/d27fd53901887adb98471de642665d58.png\"\/><br \/>  \u0427\u0442\u043e \u0435\u0441\u043b\u0438 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u0432\u0430\u043c \u043a\u0430\u043a \u0431\u0435\u0437 \u043e\u0441\u043e\u0431\u044b\u0445 \u0443\u0441\u0438\u043b\u0438\u0439 \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 jabber-\u0441\u0435\u0440\u0432\u0435\u0440 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043d\u043e\u0432\u043e\u043c\u043e\u0434\u043d\u044b\u043c\u0438 \u0444\u0438\u0447\u0430\u043c\u0438, \u0442\u0430\u043a\u0438\u043c\u0438 \u043a\u0430\u043a: \u0430\u0440\u0445\u0438\u0432\u0430\u0446\u0438\u044f, \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u043a\u043b\u0442\u0435\u043d\u0442\u0430\u043c\u0438, \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043e \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u0438, \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 \u0447\u0430\u0442\u044b \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435\u2026<br \/>  \u0422\u0430\u043a \u0436\u0435 \u043f\u043e\u0434\u0435\u043b\u044e\u0441\u044c \u0441 \u0432\u0430\u043c\u0438 \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c Jabber-\u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0435\u043d, \u043e\u043d \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0430\u0443\u0434\u0438\u043e \u0438 \u0432\u0438\u0434\u0435\u043e \u0437\u0432\u043e\u043d\u043a\u0438, \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430. <br \/>  \u0422\u043e \u0438 \u0434\u0440\u0443\u0433\u043e\u0435 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e, \u0442\u0430\u043a-\u043a\u0430\u043a \u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u043a\u043b\u0438\u0435\u043d\u0442 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043b\u0439 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438.<\/p>\n<p>  \u0420\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0435\u0442 \u043e\u0431 <b>Metronome IM<\/b> \u0438 <b>Jappix<\/b>.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-274811","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/274811","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=274811"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/274811\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=274811"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=274811"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=274811"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}