{"id":472862,"date":"2025-09-01T15:00:48","date_gmt":"2025-09-01T15:00:48","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=472862"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=472862","title":{"rendered":"<span>\u041a\u0430\u043a \u044f \u0437\u0430\u043c\u0435\u043d\u0443 MAX&#8217;\u0443 \u0438\u0441\u043a\u0430\u043b, \u0438\u043b\u0438 \u00abMatrix \u0438 XMPP \u043d\u0430 \u0441\u0432\u043e\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0434\u043b\u044f \u0441\u0430\u043c\u044b\u0445 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445\u00bb<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/643\/a98\/bb7\/643a98bb73bb5d0cdfc53080d5d70f68.png\" alt=\"\u041a - \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c\" title=\"\u041a - \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c\" width=\"740\" height=\"440\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/643\/a98\/bb7\/643a98bb73bb5d0cdfc53080d5d70f68.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/643\/a98\/bb7\/643a98bb73bb5d0cdfc53080d5d70f68.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041a &#8212; \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c<\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u0441\u0432\u0435\u0442\u0435 \u043d\u0435\u0431\u0435\u0437\u044b\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0432 \u0437\u0430\u043a\u043e\u043d\u043e\u0442\u0432\u043e\u0440\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438, \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043d\u0430\u043b \u0434\u043b\u044f \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0435\u043c\u044c\u0438, \u0442.\u043a. \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0437\u0432\u043e\u043d\u043a\u0430\u043c\u0438 \u0432 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u043c\u0435\u0441\u0441\u0435\u043d\u0434\u0436\u0435\u0440\u0430\u0445 \u2013 \u0437\u043d\u0430\u0447\u0438\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u0434\u0432\u0435\u0440\u0436\u0435\u043d\u043d\u044b\u043c \u0443\u0433\u0440\u043e\u0437\u0430\u043c \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043c\u043e\u0448\u0435\u043d\u043d\u0438\u043a\u043e\u0432 \u0438 \u0441\u043f\u043e\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u0440\u0440\u043e\u0440\u0438\u0437\u043c, \u0430 \u0437\u0432\u043e\u043d\u0438\u0442\u044c \u043f\u043e \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0441 \u0435\u0435 \u0443\u0436\u0430\u0441\u043d\u044b\u043c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0441\u0432\u044f\u0437\u0438 (\u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0432\u0441\u0435 \u043f\u043e\u0442\u0443\u0433\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0432 VoLTE \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 VoiceHD)\u00a0 \u0432 2025 \u0433\u043e\u0434\u0443 \u2013 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u0432\u0435\u0442\u043e\u043d. \u0410 MAX \u043d\u0430 \u043c\u043e\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0441\u044f, \u043d\u0435 \u0437\u043d\u0430\u044e \u043f\u043e\u0447\u0435\u043c\u0443, \u044f \u0434\u0430\u0436\u0435 \u043d\u0435 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u0440\u043e\u0432\u043e\u0436\u0443 \u0432 \u043b\u0438\u0444\u0442\u0435 \u0438 \u043d\u0430 \u043f\u0430\u0440\u043a\u043e\u0432\u043a\u0435?<\/p>\n<p>\u0415\u0449\u0435 \u0441 2013 \u0433\u043e\u0434\u0430 \u044f \u0437\u0430\u0440\u0430\u0437\u0438\u043b\u0441\u044f NAS&#8217;\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u0432\u044b\u0431\u043e\u0440\u043e\u043c VDS\/VPS \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0431\u044b\u043b\u043e: \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0439 &#171;NAS&#187; \u0437\u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0441\u044f \u0438\u0437 WD MyCloud \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c OpenMediaVault \u0432 \u0443\u0436\u0435 \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u0435\u0431\u0435 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0438\u043d\u0438-\u0441\u0435\u0440\u0432\u0435\u0440, \u043d\u043e \u0432\u0441\u0435 \u0441 \u0442\u0435\u043c \u0436\u0435 OpenMediaVault \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b (\u0434\u0430-\u0434\u0430, Debian \u0441 \u0432\u0435\u0431-\u043c\u043e\u0440\u0434\u043e\u0439, \u044f \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0438 Proxmox \u0438 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u2013 \u043d\u0435 \u0437\u0430\u0448\u043b\u043e \u043f\u043e \u0442\u0435\u043c \u0438\u043b\u0438 \u0438\u043d\u044b\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c. \u0415\u0441\u043b\u0438 \u0441\u0442\u0430\u0442\u044c\u044f \u0437\u0430\u0439\u0434\u0435\u0442 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0438 \u0425\u0430\u0431\u0440\u0430 &#8212; \u043d\u0430\u043f\u0438\u0448\u0443 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043f\u0440\u043e \u0432\u0441\u0435 \u044d\u0442\u0430\u043f\u044b \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0444\u0430\u0439\u043b\u043e\u043f\u043e\u043c\u043e\u0439\u043a\u0438 \u0432\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u0435\u0431\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u044f\u0449\u0438\u0447\u0435\u043a). <\/p>\n<details class=\"spoiler\">\n<summary>\u041e\u0434\u0438\u043d\u043e\u043a\u043e \u0441\u043a\u0443\u0447\u0430\u044e\u0449\u0438\u0439 \u0434\u0435\u0442\u0451\u043d\u044b\u0448 \u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/392\/2ef\/fd3\/3922effd3cb225e95278549690f38b48.jpg\" alt=\"\u0441\u0442\u043e\u0438\u0442-\u043f\u044b\u043b\u0438\u0442\u0441\u044f\" title=\"\u0441\u0442\u043e\u0438\u0442-\u043f\u044b\u043b\u0438\u0442\u0441\u044f\" width=\"960\" height=\"1280\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/392\/2ef\/fd3\/3922effd3cb225e95278549690f38b48.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/392\/2ef\/fd3\/3922effd3cb225e95278549690f38b48.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0441\u0442\u043e\u0438\u0442-\u043f\u044b\u043b\u0438\u0442\u0441\u044f<\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/details>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0440\u0435\u0434\u044b \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e, \u0447\u0442\u043e \u043c\u044b \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0431\u0443\u0434\u0435\u043c \u0433\u043e\u0440\u043e\u0434\u0438\u0442\u044c, \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0435\u043b Docker. \u0410 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u043e \u043b\u0438\u0447\u043d\u043e \u043c\u043d\u0435 \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0447\u0435\u0440\u0435\u0437 Portainer.<\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c \u0432\u0441\u0442\u0430\u043b \u0432\u044b\u0431\u043e\u0440 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0437\u0432\u043e\u043d\u043a\u043e\u0432 \u0432\u043c\u0435\u0441\u0442\u043e \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u043c\u043e\u0448\u0435\u043d\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 Telegram \u0438 \u0442\u0435\u0440\u0440\u043e\u0440\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 WhatsApp. <\/p>\n<p>\u0421\u0443\u0434\u044f \u043f\u043e \u0444\u043e\u0440\u0443\u043c\u0430\u043c, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u0441\u0430\u043c\u043e\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0435 \u0434\u043b\u044f \u0441\u0435\u043b\u0444\u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430 \u2013 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/Matrix\" rel=\"noopener noreferrer nofollow\"><strong>Matrix<\/strong><\/a><strong> <\/strong>\u0438 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/XMPP\" rel=\"noopener noreferrer nofollow\"><strong>XMPP<\/strong><\/a>. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0436\u0435 \u043b\u0443\u0447\u0448\u0435, \u043f\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f\u043c \u0438 \u043e\u0442\u0437\u044b\u0432\u0430\u043c \u044f \u043d\u0435 \u0441\u043c\u043e\u0433 \u2013 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u0434\u0432\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b, \u0438 \u0443\u0436\u0435 \u043f\u043e \u0445\u043e\u0434\u0443 \u0434\u0435\u043b\u0430 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044f. <\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 Matrix \u0432\u044b\u0431\u043e\u0440 \u043f\u0430\u043b \u043d\u0430 <a href=\"https:\/\/github.com\/element-hq\/synapse\" rel=\"noopener noreferrer nofollow\"><strong>Synapse<\/strong><\/a>, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 XMPP &#8212; <a href=\"https:\/\/www.ejabberd.im\/index.html\" rel=\"noopener noreferrer nofollow\"><strong>Ejabberd<\/strong><\/a>. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0435\u0441\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043b\u0443\u0447\u0448\u0435, \u043d\u043e \u0443 \u044d\u0442\u0438\u0445 \u0434\u0432\u043e\u0438\u0445 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0435 \u043c\u0430\u043d\u0443\u0430\u043b\u044b \u0438 \u043e\u0431\u0430 \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432 Docker. <\/p>\n<p>\u041f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u044f \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0441\u044f \u043f\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u044d\u0441\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438, \u0432\u044b\u0431\u0438\u0440\u0430\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u044e\u0437\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0441\u0438\u043c\u043f\u0430\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432, \u0432\u0435\u0434\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u043e \u0431\u0443\u0434\u0443\u0442 \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0438 \u0438 \u0441\u0443\u043f\u0440\u0443\u0433\u0430, \u0430 \u043a\u0430\u043a \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0436\u0435\u043d\u0449\u0438\u043d\u0430 \u2013 \u043b\u0443\u0447\u0448\u0438\u0439 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438. \u0415\u0441\u043b\u0438 \u0436\u0435\u043d\u0449\u0438\u043d\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 \u0447\u0435\u043c-\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u2013 \u0437\u043d\u0430\u0447\u0438\u0442 \u043e\u043d\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.  \u0411\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u0438\u0433\u043b\u044f\u043d\u0443\u043b\u0441\u044f <a href=\"https:\/\/element.io\" rel=\"noopener noreferrer nofollow\"><strong>Element<\/strong><\/a> \u0434\u043b\u044f Matrix (\u043d\u0435 <a href=\"https:\/\/github.com\/element-hq\/element-x-android\" rel=\"noopener noreferrer nofollow\">X<\/a>, \u0432 \u0425 \u0447\u0442\u043e\u0431 \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0437\u0432\u043e\u043d\u043a\u0438 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0443\u0436 \u0437\u0430\u043c\u043e\u0440\u043e\u0447\u0430\u0442\u044c\u0441\u044f) \u2013 \u00a0\u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0439, \u0431\u0435\u0437 \u043b\u0438\u0448\u043d\u0438\u0445 \u0440\u044e\u0448\u0435\u0447\u0435\u043a, \u0438<strong> <\/strong><a href=\"https:\/\/conversations.im\" rel=\"noopener noreferrer nofollow\"><strong>Conversation<\/strong><\/a> \u0434\u043b\u044f XMPP, \u043d\u043e \u0442\u0430\u043a \u043a\u0430\u043a \u0441 \u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u0443 \u043d\u0435\u0433\u043e \u0442\u0443\u0433\u043e &#8212; \u043d\u0430 iOS \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0432\u044b\u0431\u043e\u0440 \u043f\u0430\u043b \u043d\u0430 <a href=\"https:\/\/monal-im.org\" rel=\"noopener noreferrer nofollow\"><strong>Monal<\/strong><\/a>. <\/p>\n<details class=\"spoiler\">\n<summary>Element \u043d\u0430 Android \u0438 iOS \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/271\/7ca\/1e2\/2717ca1e23516dd162431a1b29b035bc.png\" width=\"1336\" height=\"1401\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/271\/7ca\/1e2\/2717ca1e23516dd162431a1b29b035bc.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/271\/7ca\/1e2\/2717ca1e23516dd162431a1b29b035bc.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a6a\/969\/a0d\/a6a969a0d4ae3c03294a034d115ae0dc.png\" width=\"1123\" height=\"1157\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/a6a\/969\/a0d\/a6a969a0d4ae3c03294a034d115ae0dc.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a6a\/969\/a0d\/a6a969a0d4ae3c03294a034d115ae0dc.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u041a\u043b\u0438\u0435\u043d\u0442\u044b XMPP \u043d\u0430 Android \u0438 iOS \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b5f\/bf6\/daf\/b5fbf6daf29d5c14691acf5700154458.png\" width=\"1510\" height=\"1379\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/b5f\/bf6\/daf\/b5fbf6daf29d5c14691acf5700154458.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b5f\/bf6\/daf\/b5fbf6daf29d5c14691acf5700154458.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6ed\/d32\/59e\/6edd3259e14b9aecb923c27485c23bce.png\" width=\"1480\" height=\"1382\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/6ed\/d32\/59e\/6edd3259e14b9aecb923c27485c23bce.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6ed\/d32\/59e\/6edd3259e14b9aecb923c27485c23bce.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<\/div>\n<\/details>\n<p>\u0418\u0442\u043e\u0433\u043e &#171;\u0441\u0442\u0435\u043a&#187; \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a: \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0431\u0443\u0434\u0435\u043c \u0432 Docker \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Portainer, \u0434\u043b\u044f \u043d\u0435\u0438\u0441\u043a\u0443\u0448\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u044d\u0442\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434. <\/p>\n<p>\u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b Matrix \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c Synapse, XMPP \u2013 \u00a0Ejjaberd. <\/p>\n<p>\u0422\u0430\u043a \u0436\u0435 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0430\u0443\u0434\u0438\u043e\u0437\u0432\u043e\u043d\u043a\u043e\u0432 \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u0435\u0440\u0432\u0435\u0440 <strong>Coturn<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0431\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0437\u0430 NAT (\u0441 \u043d\u0438\u043c \u043a\u0441\u0442\u0430\u0442\u0438 \u043f\u043b\u044f\u0441\u043e\u043a \u0441 \u0431\u0443\u0431\u043d\u0430\u043c\u0438 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e). <\/p>\n<p>\u041d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0443 \u043c\u0435\u043d\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d <strong>Nginx Proxy Manage<\/strong>r (\u0434\u0430\u043b\u0435\u0435 \u0434\u043b\u044f \u043a\u0440\u0430\u0442\u043a\u043e\u0441\u0442\u0438 \u2013 <strong>NPM<\/strong>), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b, \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e \u043d\u0430\u0448\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u044b \u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u0432 \u0432\u0438\u0434\u0435 \u0431\u043b\u043e\u043a-\u0441\u0445\u0435\u043c\u044b, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0442\u0430\u043a\u043e\u0435:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/eb8\/b7d\/3fd\/eb8b7d3fd0eea58c11a43b14298e1c9b.png\" alt=\"\u0421\u0442\u0438\u043b\u044c\u043d\u043e, \u043c\u043e\u0434\u043d\u043e, \u043c\u043e\u043b\u043e\u0434\u0435\u0436\u043d\u043e\" title=\"\u0421\u0442\u0438\u043b\u044c\u043d\u043e, \u043c\u043e\u0434\u043d\u043e, \u043c\u043e\u043b\u043e\u0434\u0435\u0436\u043d\u043e\" width=\"974\" height=\"693\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/eb8\/b7d\/3fd\/eb8b7d3fd0eea58c11a43b14298e1c9b.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/eb8\/b7d\/3fd\/eb8b7d3fd0eea58c11a43b14298e1c9b.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0421\u0442\u0438\u043b\u044c\u043d\u043e, \u043c\u043e\u0434\u043d\u043e, \u043c\u043e\u043b\u043e\u0434\u0435\u0436\u043d\u043e<\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0435 \u044f \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u044e, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d Docker, Portainer, NPM, \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f \u0438 \u0432\u044b +\/- \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0435, \u0447\u0442\u043e \u0441 \u044d\u0442\u0438\u043c \u0432\u0441\u0435\u043c \u0434\u0435\u043b\u0430\u0442\u044c. \u042f \u043d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u044e \u043d\u0430 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0445 \u043d\u0438\u0436\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u2013<strong> \u044f \u0443 \u043c\u0430\u043c\u044b \u0438\u043d\u0436\u0435\u043d\u0435\u0440-\u0444\u0438\u0437\u0438\u043a, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442<\/strong>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441 \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u0435\u043c \u043f\u0440\u0438\u0441\u043b\u0443\u0448\u0430\u044e\u0441\u044c \u043a \u0432\u0430\u0448\u0438\u043c \u0441\u043e\u0432\u0435\u0442\u0430\u043c \u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u044f\u043c. \u0418\u0442\u0430\u043a, \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c.<\/p>\n<p>\u00a0\u041f\u0435\u0440\u0432\u044b\u043c \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u2013 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 DNS. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c \u0447\u0442\u043e \u0432\u0430\u0448 \u043b\u0438\u0447\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438\u043c\u0435\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 <strong>myserver.ru<\/strong>. \u0418\u0434\u0435\u043c \u043a \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0443 \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438:<\/p>\n<ul>\n<li>\n<p>\u0410\u2011\u0437\u0430\u043f\u0438\u0441\u044c:<strong> synapse<\/strong>.myserver.ru\u00a0\u2014 \u0434\u043b\u044f\u00a0\u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u0443 Synapse;<\/p>\n<\/li>\n<li>\n<p>\u0410\u2011\u0437\u0430\u043f\u0438\u0441\u044c: <strong>element<\/strong>.myserver.ru\u00a0\u2014 \u0434\u043b\u044f\u00a0\u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a\u00a0web\u2011\u043a\u043b\u0438\u0435\u043d\u0442\u0443 Element;<\/p>\n<\/li>\n<li>\n<p>\u0410\u2011\u0437\u0430\u043f\u0438\u0441\u044c: <strong>xmpp<\/strong>.myserver.ru\u00a0\u2014 \u0434\u043b\u044f\u00a0\u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a\u00a0Ejabberd, \u0447\u0435\u0440\u0435\u0437\u00a0\u043d\u0435\u0435\u00a0\u0436\u0435 \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043a Coturn \u0438 \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b;<\/p>\n<\/li>\n<li>\n<p>SRV\u2011\u0437\u0430\u043f\u0438\u0441\u044c: <strong><em>xmpp\u2011client.<\/em>tcp<\/strong>.myserver.ru \u0441\u00a0\u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c target <strong>xmpp<\/strong>.myserver.ru \u0438 \u043f\u043e\u0440\u0442\u0430 5222\u00a0\u2014 \u0434\u043b\u044f\u00a0\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 xmpp;<\/p>\n<\/li>\n<li>\n<p>SRV\u2011\u0437\u0430\u043f\u0438\u0441\u044c: <strong><em>xmpp\u2011server.<\/em>tcp<\/strong>.myserver.ru \u0441\u00a0\u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c target <strong>xmpp<\/strong>.myserver.ru \u0438 \u043f\u043e\u0440\u0442\u0430 5269\u00a0\u2014 \u0434\u043b\u044f\u00a0\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0444\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 xmpp.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u0442\u043e\u0440\u044b\u043c \u2013 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0430\u043f\u043a\u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u0433\u0434\u0435 \u0431\u0443\u0434\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0438 \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u043f\u043e\u0442\u0440\u043e\u0445\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u0414\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0447\u0442\u043e \u0432\u044b \u0432\u044b\u0434\u0435\u043b\u0438\u043b\u0438 \u043f\u043e\u0434 \u0432\u0441\u0435 \u044d\u0442\u043e \u043f\u0430\u043f\u043a\u0443 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435<strong> \/opt <\/strong>\u0438 \u043d\u0430\u0437\u0432\u0430\u043b\u0438 \u0435\u0435 <strong>\/myservice<\/strong>. <\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u0430\u043f\u043e\u043a:<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e42\/39a\/b51\/e4239ab516383b8a1ec3d30742c2252d.png\" width=\"500\" height=\"792\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/e42\/39a\/b51\/e4239ab516383b8a1ec3d30742c2252d.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e42\/39a\/b51\/e4239ab516383b8a1ec3d30742c2252d.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<pre><code>mkdir -p \/opt\/myservice\/ejabberd\/{certs,conf,data,logs,upload} \/opt\/matrix\/{data,element,pg}<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0438 \u043f\u043e\u0434 \u043d\u0430\u0448\u0438 \u0431\u0443\u0434\u0443\u0449\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b:<\/p>\n<p><strong>\u0421\u0435\u0440\u0432\u0435\u0440 Ejabberd<\/strong>: <\/p>\n<p>\u0434\u0435\u043b\u0430\u0435\u043c \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 <\/p>\n<pre><code>nano \/opt\/myservice\/ejabberd\/conf\/ejabberd.yml<\/code><\/pre>\n<p> \u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0443\u0434\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u043d\u0444\u0438\u0433:<\/p>\n<details class=\"spoiler\">\n<summary>ejabberd.yml<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"yaml\">loglevel: 4                # \u0423\u0440\u043e\u0432\u0435\u043d\u044c \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (0 - \u043c\u0438\u043d\u0438\u043c\u0443\u043c, 5 - \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c). 4 = \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u043b\u043e\u0433\u0438 log_rotate_size: 10485760  # \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u043b\u043e\u0433\u0430 (10 \u041c\u0411) log_rotate_count: 1        # \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c\u044b\u0445 \u0441\u0442\u0430\u0440\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u043b\u043e\u0433\u043e\u0432 (1 \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0430\u0440\u0445\u0438\u0432)  hosts:                     # \u0421\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u043c\u0435\u043d\u043e\u0432, \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c XMPP   - \"xmpp.myserver.ru\"     # \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 XMPP-\u0434\u043e\u043c\u0435\u043d \u0441\u0435\u0440\u0432\u0435\u0440\u0430  acl:                       # Access Control Lists \u2014 \u0441\u043f\u0438\u0441\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430   admin:                   # \u0413\u0440\u0443\u043f\u043f\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432     user:       - \"admin@xmpp.myserver.ru\"  # \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430  acme:   auto: false              # \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 SSL-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 Let's Encrypt \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043e  access_rules:              # \u041f\u0440\u0430\u0432\u0438\u043b\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432   local:                   # \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043a\u0440\u0438\u043f\u0442\u044b)     allow: all             # \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u0432\u0441\u0435\u043c   c2s:                     # Client-to-Server (\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432)     allow: all             # \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u0432\u0441\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c   s2s:                     # Server-to-Server (\u0444\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u044f XMPP)     allow: all             # \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u043b\u044e\u0431\u044b\u043c\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438   configure:               # \u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c     allow: admin           # \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430\u043c  listen:                    # \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043f\u043e\u0440\u0442\u043e\u0432   - port: 5222             # TCP-\u043f\u043e\u0440\u0442 \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 (c2s)     module: ejabberd_c2s   # \u041c\u043e\u0434\u0443\u043b\u044c \u0434\u043b\u044f Client-to-Server \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439     starttls: true         # \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 STARTTLS     starttls_required: true# \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c TLS     max_stanza_size: 65536 # \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 XMPP-\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f (\u0432 \u0431\u0430\u0439\u0442\u0430\u0445)     shaper: c2s_shaper     # \u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432    - port: 5269             # TCP-\u043f\u043e\u0440\u0442 \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 (s2s)     module: ejabberd_s2s_in# \u041c\u043e\u0434\u0443\u043b\u044c \u0434\u043b\u044f Server-to-Server \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439     max_stanza_size: 131072# \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u0430 (128 \u041a\u0411)     shaper: s2s_shaper     # \u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432    - port: 5280             # HTTP-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441     module: ejabberd_http  # \u041c\u043e\u0434\u0443\u043b\u044c \u0432\u0435\u0431-\u0434\u043e\u0441\u0442\u0443\u043f\u0430     request_handlers:      # \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u0443\u0442\u0435\u0439       \"\/admin\": ejabberd_web_admin # \u0412\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0430\u0434\u043c\u0438\u043d\u0438\u043a\u0438       \"\/api\": mod_http_api        # HTTP API       \"\/bosh\": mod_bosh           # BOSH (HTTP-\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 XMPP-\u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432)       \"\/ws\": ejabberd_http_ws     # WebSocket-\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f       \"\/upload\": mod_http_upload  # HTTP File Upload     tls: false             # HTTPS \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f (\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 HTTP)    - port: 3478             # UDP-\u043f\u043e\u0440\u0442 \u0434\u043b\u044f STUN\/TURN (VoIP, WebRTC)     transport: udp     module: ejabberd_stun  # \u041c\u043e\u0434\u0443\u043b\u044c STUN\/TURN     use_turn: true         # \u0412\u043a\u043b\u044e\u0447\u0435\u043d TURN (\u0440\u0435\u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u044f \u043c\u0435\u0434\u0438\u0430-\u0442\u0440\u0430\u0444\u0438\u043a\u0430)     turn_min_port: 49152   # \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u0442 \u0434\u043b\u044f \u043c\u0435\u0434\u0438\u0430\u043f\u043e\u0442\u043e\u043a\u043e\u0432     turn_max_port: 65535   # \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u0442 \u0434\u043b\u044f \u043c\u0435\u0434\u0438\u0430\u043f\u043e\u0442\u043e\u043a\u043e\u0432    - port: 5349             # TCP-\u043f\u043e\u0440\u0442 \u0434\u043b\u044f STUN\/TURN \u0441 TLS     transport: tcp     module: ejabberd_stun     use_turn: true     tls: true              # \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f TLS     turn_min_port: 49152     turn_max_port: 65535  certfiles:                 # \u041f\u0443\u0442\u0438 \u043a SSL-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430\u043c   - \"\/etc\/letsencrypt\/fullchain.pem\" # \u041f\u043e\u043b\u043d\u0430\u044f \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432   - \"\/etc\/letsencrypt\/privkey.pem\"   # \u041f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 \u043a\u043b\u044e\u0447  default_db: internal       # \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 ejabberd (Mnesia)  modules:                   # \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 ejabberd   mod_adhoc: {}            # Ad-hoc \u043a\u043e\u043c\u0430\u043d\u0434\u044b (XEP-0050)   mod_admin_extra: {}      # \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438   mod_announce:            # \u041c\u043e\u0434\u0443\u043b\u044c \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0439 (broadcast)     access: admin          # \u0422\u043e\u043b\u044c\u043a\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u044b \u043c\u043e\u0433\u0443\u0442 \u0440\u0430\u0441\u0441\u044b\u043b\u0430\u0442\u044c   mod_avatar: {}           # \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0430\u0432\u0430\u0442\u0430\u0440\u043e\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439   mod_blocking: {}         # \u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 (XEP-0191)   mod_bosh: {}             # \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 BOSH   mod_caps: {}             # Entity Capabilities (XEP-0115)   mod_carboncopy: {}       # \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043a\u043e\u043f\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043d\u0430 \u0432\u0441\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 (XEP-0280)   mod_client_state: {}     # \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 (idle\/active)   mod_configure: {}        # \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0447\u0435\u0440\u0435\u0437 XMPP   mod_disco: {}            # Service Discovery (XEP-0030)   mod_http_api: {}         # REST API   mod_http_upload:         # HTTP File Upload (XEP-0363)     put_url: \"https:\/\/xmpp.myserver.ru\/upload\" # URL \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0444\u0430\u0439\u043b\u043e\u0432     get_url: \"https:\/\/xmpp.myserver.ru\/upload\" # URL \u0434\u043b\u044f \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432     docroot: \"\/home\/ejabberd\/upload\"           # \u041f\u0430\u043f\u043a\u0430 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432     max_size: 104857600    # \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 (100 \u041c\u0411)   mod_last: {}             # \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (XEP-0012)   mod_mam:                 # Message Archive Management (XEP-0313)     default: always        # \u0412\u0441\u0435\u0433\u0434\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f   mod_muc:                 # Multi-User Chat (XEP-0045)     access: all            # \u0414\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432\u0441\u0435\u043c     access_create: all     # \u041b\u044e\u0431\u043e\u0439 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u043d\u0430\u0442\u044b     access_persistent: all # \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0435 \u043a\u043e\u043c\u043d\u0430\u0442\u044b     access_admin: admin    # \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u043d\u0430\u0442 \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u0434\u043c\u0438\u043d   mod_ping: {}             # Ping (XEP-0199)   mod_privacy: {}          # Privacy Lists (XEP-0016)   mod_private: {}          # \u0425\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 (XEP-0049)   mod_pubsub:              # PubSub (XEP-0060)     access_createnode: all # \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u0432\u0441\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0443\u0437\u043b\u044b     plugins:               # \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b       - \"flat\"             # \u041f\u0440\u043e\u0441\u0442\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430       - \"pep\"              # Personal Eventing Protocol (XEP-0163)     force_node_config:     # \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0443\u0437\u043b\u043e\u0432       \"urn:xmpp:microblog:0\": # \u041c\u0438\u043a\u0440\u043e\u0431\u043b\u043e\u0433\u0438         deliver_payloads: true # \u0414\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0440\u0430\u0437\u0443         notify_retract: true   # \u0423\u0432\u0435\u0434\u043e\u043c\u043b\u044f\u0442\u044c \u043e\u0431 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438         persist_items: true    # \u0425\u0440\u0430\u043d\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435         max_items: 100         # \u041c\u0430\u043a\u0441\u0438\u043c\u0443\u043c 100 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439   mod_push: {}             # Push-\u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f   mod_push_keepalive: {}   # \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 keepalive \u0434\u043b\u044f push   mod_register:            # \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439     access: none           # \u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0430 (\u0437\u0430\u043f\u0440\u0435\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438)     ip_access: none        # \u041d\u0435\u043b\u044c\u0437\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0438 \u0441 \u043a\u0430\u043a\u043e\u0433\u043e IP     registration_watchers: # \u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438       - \"admin@xmpp.myserver.ru\" # \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f <\/code><\/pre>\n<\/div>\n<\/details>\n<p><strong>\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0443 Synapse. <\/strong><\/p>\n<p>\u0414\u0435\u043b\u0430\u0435\u043c:<\/p>\n<pre><code class=\"bash\">nano \/opt\/myservice\/matrix\/data\/homeserver.yaml<\/code><\/pre>\n<p>  \u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043d\u0435\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<details class=\"spoiler\">\n<summary>homeserver.yaml<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"yaml\">server_name: \"synapse.myserver.ru\" # \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u0438\u043c\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 Matrix  pid_file: \/data\/homeserver.pid     # \u0424\u0430\u0439\u043b, \u0433\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f PID \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 Synapse  # \u0417\u0430\u0434\u0430\u0435\u043c \u043f\u043e\u0440\u0442\u044b \u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0438 \u0444\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u0438 listeners:   - port: 8008              # \u041f\u043e\u0440\u0442, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Synapse     tls: false              # TLS \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d      type: http              # \u0422\u0438\u043f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430     x_forwarded: true       # \u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0443 X-Forwarded-For \u043e\u0442 \u043f\u0440\u043e\u043a\u0441\u0438     resources:       - names: [client, federation]  # \u0420\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b: \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u0444\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u044f         compress: false              # \u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0441\u0436\u0430\u0442\u0438\u0435 (\u0434\u043b\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438)  # \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 (PostgreSQL) database:   name: psycopg2             # \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 PostgreSQL   txn_limit: 10000           # \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u0432 \u043e\u0434\u043d\u043e\u043c \u043f\u0443\u043b\u0435   args:     user: synapse            # \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0411\u0414     password: mypassword     # \u041f\u0430\u0440\u043e\u043b\u044c     database: synapse        # \u0418\u043c\u044f \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445     host: synapse-db         # \u0425\u043e\u0441\u0442 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 (\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\/\u0441\u0435\u0440\u0432\u0435\u0440)     port: 5432               # \u041f\u043e\u0440\u0442 PostgreSQL     cp_min: 5                # \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u0432 \u043f\u0443\u043b\u0435     cp_max: 10               # \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u0432 \u043f\u0443\u043b\u0435  # \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043b\u043e\u0433\u043e\u0432 (\u0440\u0430\u0441\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438) #log_config: \"log.yaml\"  # \u0414\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043c\u0435\u0434\u0438\u0430 (\u0444\u0430\u0439\u043b\u044b, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u0442.\u043f.) media_store_path: \/data\/media_store  # \u0423\u0431\u0438\u0440\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u043e key \u0441\u0435\u0440\u0432\u0435\u0440\u0435 suppress_key_server_warning: true  # \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 max_upload_size: 400M  # \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u0430 (false) enable_registration: false  # \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u0444\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u044f \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 Matrix-\u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438 matrix_synapse_federation_enabled: true matrix_synapse_federation_port_enabled: true  # \u041e\u0431\u0449\u0438\u0439 \u0441\u0435\u043a\u0440\u0435\u0442 \u0434\u043b\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 API registration_shared_secret: \"mypassword\"  # \u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u043f\u043e \u0432\u0441\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0430 search_all_users: true  # \u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 (\u0432\u043c\u0435\u0441\u0442\u043e \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0445 \u0438\u0437 \u0444\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u0438) prefer_local_users: true  # \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 TURN-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 (\u0434\u043b\u044f \u0437\u0432\u043e\u043d\u043a\u043e\u0432 \u0438 WebRTC) turn_uris:   - \"turn:xmpp.myserver.ru:3478?transport=udp\"   - \"turn:xmpp.myserver.ru:3478?transport=tcp\"   - \"turns:xmpp.myserver.ru:5349?transport=udp\"   - \"turns:xmpp.myserver.ru:5349?transport=tcp\"  turn_shared_secret: \"mysecret\"      # \u0421\u0435\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0443\u0447\u0435\u0442\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 TURN turn_user_lifetime: 86400000        # \u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 (\u043c\u0441) turn_allow_guests: true             # \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0433\u043e\u0441\u0442\u044f\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c TURN turn_server_name: \"synapse.myserver.ru\"  # \u0418\u043c\u044f TURN-\u0441\u0435\u0440\u0432\u0435\u0440\u0430  # \u0421\u043f\u0438\u0441\u043e\u043a \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 admin_users:   - \"@admin:synapse.myserver.ru\"  # \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c Synapse report_stats: false  # \u0421\u0435\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u0434\u043b\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0442\u043e\u043a\u0435\u043d\u043e\u0432 macaroon_secret_key: \"mnogobukv\" form_secret: \"mnogobukv\"  # \u041a\u043b\u044e\u0447 \u0434\u043b\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 (\u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u0442\u044c - \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u043e\u0442\u043e\u043c \u043d\u0435 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u0443\u044e\u0442\u0441\u044f) signing_key_path:  \"\/data\/synapse.myserver.ru.signing.key\"  # \u042d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Matrix (\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043d\u043e\u0432\u044b\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438) experimental_features:   call: true   msc3266_enabled: true   msc4222_enabled: true   msc4140_enabled: true  # \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f max_event_delay_duration: 24h  # \u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 (rate limiting) rc_message:   per_second: 0.5   # \u0421\u0440\u0435\u0434\u043d\u044f\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c (0.5 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443)   burst_count: 30   # \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \"\u0432\u0441\u043f\u043b\u0435\u0441\u043a\" \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439  # \u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u043c\u0438 rc_delayed_event_mgmt:   per_second: 1   burst_count: 20  # \u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043c\u0435\u0434\u0438\u0430 (\u043e\u0447\u0438\u0441\u0442\u043a\u0430 \u0441\u0442\u0430\u0440\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432) media_retention:     local_media_lifetime: 120d   # \u0421\u0440\u043e\u043a \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432     remote_media_lifetime: 120d  # \u0421\u0440\u043e\u043a \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 <\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0437\u0430\u0442\u0435\u043c <\/p>\n<pre><code>nano \/opt\/myservice\/matrix\/config.json<\/code><\/pre>\n<p> \u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c:<\/p>\n<details class=\"spoiler\">\n<summary>config.json<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"json\">{     \"homeserver_url\": \"https:\/\/synapse.myserver.ru\",     \"enable_presence_by_hs_url\": {         \"https:\/\/synapse.myserver.ru\": true     },     \"turn\": {         \"urls\": [             \"turn:xmpp.myserver.ru:3478?transport=udp\",             \"turn:xmpp.myserver.ru:3478?transport=tcp\",             \"turns:xmpp.myserver.ru:5349?transport=udp\",             \"turns:xmpp.myserver.ru:5349?transport=tcp\"         ],         \"secret\": \"mysecret\",         \"expiry\": 864000000,         \"turn_allow_guest\": true     },     \"terms_and_conditions_links\": [         {             \"url\": \"https:\/\/myserver.ru\/privacy\",             \"text\": \"Privacy Policy\"         },         {             \"url\": \"https:\/\/myserver.ru\/cookie-policy\",             \"text\": \"Cookie Policy\"         }     ],     \"privacy_policy_url\": \"https:\/\/myserver.ru\/privacy\" }<\/code><\/pre>\n<\/div>\n<\/details>\n<p><strong>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u043a\u043b\u0438\u0435\u043d\u0442 Element-web:<\/strong><\/p>\n<p>\u0441\u043d\u043e\u0432\u0430 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b<\/p>\n<pre><code>nano \/opt\/myservice\/matrix\/element\/config.json<\/code><\/pre>\n<p>\u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c<\/p>\n<details class=\"spoiler\">\n<summary>config.json<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"json\">{     \"default_server_config\": {         \"m.homeserver\": {             \"base_url\": \"https:\/\/synapse.myserver.ru\",             \"server_name\": \"synapse.myserver.ru\"         },         \"io.element.call\": {             \"url\": \"https:\/\/call.element.io\"         },          \"io.element.e2ee\": {              \"default\": true         },         \"m.identity_server\": {             \"base_url\": \"https:\/\/vector.im\"         }     },     \"disable_custom_urls\": true,     \"disable_guests\": true,     \"disable_login_language_selector\": true,     \"disable_3pid_login\": true,     \"brand\": \"My Personal Server\",     \"enable_element_call\": true,     \"integrations_ui_url\": \"https:\/\/scalar.vector.im\/\",     \"integrations_rest_url\": \"https:\/\/scalar.vector.im\/api\",     \"integrations_widgets_urls\": [         \"https:\/\/scalar.vector.im\/_matrix\/integrations\/v1\",         \"https:\/\/scalar.vector.im\/api\",         \"https:\/\/scalar-staging.vector.im\/_matrix\/integrations\/v1\",         \"https:\/\/scalar-staging.vector.im\/api\",         \"https:\/\/scalar-staging.riot.im\/scalar\/api\"     ],     \"bug_report_endpoint_url\": \"https:\/\/element.io\/bugreports\/submit\",     \"uisi_autorageshake_app\": \"element-auto-uisi\",     \"default_country_code\": \"RU\",     \"show_labs_settings\": false,     \"features\": {},     \"default_federate\": false,     \"default_theme\": \"light\",     \"room_directory\": {         \"servers\": [\"synapse.myserver.ru\"]     },     \"element_call\": {         \"url\": \"https:\/\/call.element.io\",         \"participant_limit\": 8,         \"brand\": \"Element Call\"     },     \"enable_presence_by_hs_url\": {         \"https:\/\/synapse.myserver.ru\": true     },     \"terms_and_conditions_links\": [         {             \"url\": \"https:\/\/element.io\/privacy\",             \"text\": \"Privacy Policy\"         },         {             \"url\": \"https:\/\/element.io\/cookie-policy\",             \"text\": \"Cookie Policy\"         }     ],     \"privacy_policy_url\": \"https:\/\/element.io\/cookie-policy\" }<\/code><\/pre>\n<\/div>\n<\/details>\n<p><strong>\u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u0432\u0441\u0435 \u044d\u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c \u0447\u0442\u043e \u0432\u0430\u0448 Docker \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u044d\u0442\u0438 \u043f\u0430\u043f\u043a\u0438 \u0438 \u0444\u0430\u0439\u043b\u044b!<\/strong><\/p>\n<p>\u0418\u0434\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b. <\/p>\n<p><strong>\u041f\u0435\u0440\u0432\u044b\u043c \u043f\u043e\u0439\u0434\u0435\u0442 Coturn. <\/strong><\/p>\n<p>\u0418\u0434\u0435\u043c \u0432 Portainer, \u0440\u0430\u0437\u0434\u0435\u043b <strong>Stacks<\/strong> \u0438 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c <strong>Add Stack<\/strong>:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/afe\/7f5\/e49\/afe7f5e49c6a55ba21111ff4c181e175.png\" width=\"974\" height=\"377\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/afe\/7f5\/e49\/afe7f5e49c6a55ba21111ff4c181e175.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/afe\/7f5\/e49\/afe7f5e49c6a55ba21111ff4c181e175.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041f\u0438\u0448\u0435\u043c \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 \u0441\u0442\u0435\u043a\u0430 <strong>coturn<\/strong>, \u0432 \u043e\u043a\u043d\u043e web-editor \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:\u00a0<\/p>\n<details class=\"spoiler\">\n<summary>coturn<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"yaml\">services:   coturn:     image: coturn\/coturn               # \u041e\u0431\u0440\u0430\u0437 coturn      container_name: coturn             # \u0418\u043c\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430     restart: unless-stopped            # \u0410\u0432\u0442\u043e\u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a     ports:                             # \u041f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u0440\u0442\u044b \u043d\u0430\u0440\u0443\u0436\u0443       - \"3478:3478\/udp\"                # TURN (UDP)       - \"3478:3478\/tcp\"                # TURN (TCP)       - \"5349:5349\/tcp\"                # TLS-over-TCP (TURNs)       - \"5349:5349\/udp\"                # TLS-over-UDP (TURNs)       - \"49152-65535:49152-65535\/udp\"  # \u0414\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u043f\u043e\u0440\u0442\u043e\u0432 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445 (\u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043d\u0430 \u0440\u043e\u0443\u0442\u0435\u0440\u0435)     volumes:        - \/opt\/myservices\/ejabberd\/certs:\/etc\/letsencrypt:ro  # \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b Let's Encrypt (\u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f)     command: &gt;       -n                                # \u0420\u0435\u0436\u0438\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430       --turn_allow_guests=true          # \u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c \u0433\u043e\u0441\u0442\u0435\u0432\u044b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0431\u0435\u0437 \u0443\u0447\u0451\u0442\u043a\u0438       --use-auth-secret                 # \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e       --static-auth-secret=mysecret     # \u0421\u0435\u043a\u0440\u0435\u0442 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043b\u043e\u0433\u0438\u043d\u043e\u0432\/\u043f\u0430\u0440\u043e\u043b\u0435\u0439       --rearm=xmpp.myserver.ru          # \u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435        --cert=\/etc\/letsencrypt\/fullchain.pem # \u041f\u0443\u0442\u044c \u043a TLS-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0443       --pkey=\/etc\/letsencrypt\/privkey.pem   # \u041f\u0443\u0442\u044c \u043a \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u043c\u0443 \u043a\u043b\u044e\u0447\u0443 <\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0432\u0441\u0435 \u044d\u0442\u043e \u0434\u0435\u043b\u043e \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432 \u043b\u043e\u0433\u0438. \u0414\u043e\u043b\u0436\u0435\u043d \u0440\u0443\u0433\u043d\u0443\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b, \u0438\u0445 \u043f\u043e\u043a\u0430 \u043d\u0435\u0442, \u043d\u043e \u0431\u0443\u0434\u0443\u0442. \u041e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0447\u0442\u043e\u0431 \u043d\u0435 \u043c\u0435\u0448\u0430\u043b.<\/p>\n<p>\u00a0<strong>\u0414\u0430\u043b\u0435\u0435 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c Ejabberd:<\/strong><\/p>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043a\u0430\u043a \u0438 \u0441 Coturn, \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043e\u043a\u043d\u043e Web-editor, \u043e\u0431\u0437\u044b\u0432\u0430\u0435\u043c \u0441\u0442\u0435\u043a \u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0443\u0434\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<details class=\"spoiler\">\n<summary>ejabberd<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"yaml\">services:   ejabberd:     image: ejabberd\/ecs                  # \u041e\u0431\u0440\u0430\u0437 ejabberd      container_name: ejabberd             # \u0418\u043c\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430     restart: unless-stopped              # \u0410\u0432\u0442\u043e\u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430      environment:       - ERLANG_NODE=ejabberd@localhost  # \u0418\u043c\u044f Erlang-\u043d\u043e\u0434\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 ejabberd       - XMPP_DOMAIN=xmpp.myserver.ru    # \u0414\u043e\u043c\u0435\u043d XMPP \u0441\u0435\u0440\u0432\u0435\u0440\u0430 (Jabber ID \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434\u0430 user@xmpp.myserver.ru)     volumes:       - \/opt\/myservice\/ejabberd\/conf:\/home\/ejabberd\/conf     # \u041a\u043e\u043d\u0444\u0438\u0433\u0438 ejabberd       - \/opt\/myservice\/ejabberd\/data:\/home\/ejabberd\/database # \u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 (\u0431\u0430\u0437\u044b)       - \/opt\/myservice\/ejabberd\/logs:\/home\/ejabberd\/logs     # \u041b\u043e\u0433\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430       - \/opt\/myservice\/ejabberd\/upload:\/home\/ejabberd\/upload # \u0424\u0430\u0439\u043b\u044b, \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438       - \/opt\/myservice\/ejabberd\/certs:\/etc\/letsencrypt:ro   # \u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b Let's Encrypt \u0434\u043b\u044f TLS (\u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u0435\u043d\u0438\u0435)     ports:       - \"5222:5222\" # \u041a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0439 \u043f\u043e\u0440\u0442 XMPP (TCP, STARTTLS)       - \"5269:5269\" # \u041f\u043e\u0440\u0442 \u0444\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u0438 XMPP (\u0441\u0435\u0440\u0432\u0435\u0440-\u0441\u0435\u0440\u0432\u0435\u0440)       - \"5280:5280\" # HTTP(S) \u043f\u043e\u0440\u0442\u044b (\u0432\u0435\u0431-\u0430\u0434\u043c\u0438\u043d\u043a\u0430) <\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c, \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c. <\/p>\n<p><strong>\u0414\u0430\u043b\u0435\u0435 \u2013 \u0441\u0442\u0435\u043a Synapse:<\/strong>    <\/p>\n<details class=\"spoiler\">\n<summary>synapse<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"yaml\">services:   synapse:     image: matrixdotorg\/synapse:latest        # \u041e\u0431\u0440\u0430\u0437 Synapse      container_name: matrix-synapse            # \u0418\u043c\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430     restart: unless-stopped                    # \u0410\u0432\u0442\u043e\u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430     environment:       - SYNAPSE_SERVER_NAME=synapse.myserver.ru  # \u0414\u043e\u043c\u0435\u043d \u0441\u0435\u0440\u0432\u0435\u0440\u0430       - SYNAPSE_REPORT_STATS=false               # \u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c     volumes:       - \/opt\/myservice\/matrix\/data:\/data       # \u0422\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0438 Synapse      ports:       - 8008:8008   # \u041f\u043e\u0440\u0442 \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432        - 8448:8448   # \u041f\u043e\u0440\u0442 \u0434\u043b\u044f \u0444\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438      healthcheck:       test: [\"CMD\", \"curl\", \"-f\", \"http:\/\/localhost:8008\/health\"] # \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0447\u0442\u043e \u043d\u0435 \u0441\u0434\u043e\u0445       interval: 30s  # \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0435 30 \u0441\u0435\u043a\u0443\u043d\u0434       timeout: 10s   # \u0422\u0430\u0439\u043c\u0430\u0443\u0442 \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 healthcheck       retries: 5     # \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0445 \u043f\u043e\u043f\u044b\u0442\u043e\u043a    element-web:     image: vectorim\/element-web:latest         # \u041e\u0431\u0440\u0430\u0437 Element Web      container_name: element-web     restart: unless-stopped     volumes:       - \/opt\/myservice\/matrix\/element\/config.json:\/app\/config.json  # \u041a\u043e\u043d\u0444\u0438\u0433\u0438 Element Web     ports:       - 8009:80   # \u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u043f\u043e\u0440\u0442 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0432\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442\u0443    synapse-db:     image: docker.io\/postgres:latest          # \u041e\u0431\u0440\u0430\u0437 PostgreSQL \u0434\u043b\u044f Synapse     container_name: synapse-db     hostname: synapse-db     restart: unless-stopped     environment:       TZ: \"Europe\/Moscow\"                     # \u0427\u0430\u0441\u043e\u0432\u043e\u0439 \u043f\u043e\u044f\u0441       POSTGRES_USER: synapse                  # \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0411\u0414       POSTGRES_PASSWORD: password             # \u041f\u0430\u0440\u043e\u043b\u044c \u0411\u0414       POSTGRES_INITDB_ARGS: --encoding=UTF-8 --lc-collate=C --lc-ctype=C # \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0431\u0430\u0437\u044b \u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u044e     volumes:       - \/opt\/myservice\/matrix\/pg:\/var\/lib\/postgresql\/data  # \u0414\u0430\u043d\u043d\u044b\u0435 \u0411\u0414 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u0432\u043d\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430    synapse-admin:     image: awesometechnologies\/synapse-admin:latest  # \u0412\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f Synapse     container_name: synapse-admin     restart: unless-stopped     ports:       - 8007:80  # \u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u043f\u043e\u0440\u0442 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0432\u0435\u0431-\u0430\u0434\u043c\u0438\u043d\u043a\u0435     environment:       - SYNAPSE_ADMIN_API=http:\/\/matrix-synapse:8008  # \u0410\u0434\u0440\u0435\u0441 \u0430\u0434\u043c\u0438\u043d\u043a\u0438 <\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438, \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438. \u0418\u0434\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b.<\/p>\n<p>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c NPM \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0440\u043e\u043a\u0441\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0445\u043e\u0441\u0442\u044b:<\/p>\n<p><strong>\u0414\u043b\u044f xmpp.myserver.ru:<\/strong><\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/785\/e7b\/c0f\/785e7bc0f78b3fc4984f01c251cab466.png\" width=\"3163\" height=\"1730\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/785\/e7b\/c0f\/785e7bc0f78b3fc4984f01c251cab466.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/785\/e7b\/c0f\/785e7bc0f78b3fc4984f01c251cab466.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0412\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 <strong>SSL<\/strong> \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b, \u0438\u0445 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043b\u0435\u0435.<\/p>\n<p><strong>\u0412\u0430\u0436\u043d\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435<\/strong> \u0434\u043b\u044f xmpp \u2013 \u0447\u0442\u043e\u0431 \u043a\u043b\u0438\u0435\u043d\u0442\u044b \u043c\u043e\u0433\u043b\u0438 \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u2013 \u0435\u043c\u0443 \u043d\u0430\u0434\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u0443\u0434\u0430 \u044d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b \u043b\u043e\u0436\u0438\u0442\u044c \u0438 \u043e\u0442\u043a\u0443\u0434\u0430 \u0431\u0440\u0430\u0442\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <strong>Custom Location<\/strong> \u0434\u0435\u043b\u0430\u0435\u043c \u0442\u0430\u043a, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044f IP \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432 \u043b\u043e\u043a\u0430\u043b\u043a\u0435:<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c77\/e39\/bc7\/c77e39bc7fd814f8bcfec77c6f41f008.PNG\" width=\"494\" height=\"883\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/c77\/e39\/bc7\/c77e39bc7fd814f8bcfec77c6f41f008.PNG 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c77\/e39\/bc7\/c77e39bc7fd814f8bcfec77c6f41f008.PNG 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><strong>\u0414\u043b\u044f synapse.myserver.ru:<\/strong><\/p>\n<figure class=\"bordered full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2cd\/0db\/9c7\/2cd0db9c74d0eb9f94cfad04863b6070.png\" width=\"3191\" height=\"1755\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/2cd\/0db\/9c7\/2cd0db9c74d0eb9f94cfad04863b6070.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2cd\/0db\/9c7\/2cd0db9c74d0eb9f94cfad04863b6070.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<div class=\"floating-image\">\n<p>\u0422\u0443\u0442 \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c \u043d\u044e\u0430\u043d\u0441, \u0447\u0442\u043e\u0431 Element \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u2013 \u0435\u043c\u0443 \u043d\u0443\u0436\u0435\u043d <strong>.well-known<\/strong>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b <strong>Advanced <\/strong>\u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<\/div>\n<details class=\"spoiler\">\n<summary>.well-known<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"json\">location \/.well-known\/matrix\/server {     default_type application\/json;     add_header Access-Control-Allow-Origin *;     return 200 '{\"m.server\": \"synapse.myserver.ru:443\"}'; }  location \/.well-known\/matrix\/client {     default_type application\/json;     add_header Access-Control-Allow-Origin *;     return 200 '{         \"m.homeserver\": {             \"base_url\": \"https:\/\/synapse.myserver.ru\"         },         \"io.element.e2ee\": {             \"default\": true         }     }'; } proxy_read_timeout 360s; proxy_buffering off;<\/code><\/pre>\n<\/div>\n<\/details>\n<p><strong>\u0414\u043b\u044f Element-Web:<\/strong><\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d06\/54a\/b42\/d0654ab4272d51faa29e5b91709296ce.png\" width=\"3184\" height=\"1730\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/d06\/54a\/b42\/d0654ab4272d51faa29e5b91709296ce.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d06\/54a\/b42\/d0654ab4272d51faa29e5b91709296ce.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0422\u0443\u0442 \u0442\u043e\u0436\u0435 \u043d\u0430\u0434\u043e \u0434\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432<strong> Advanced<\/strong>:<\/p>\n<details class=\"spoiler\">\n<summary>location<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"json\">location \/.well-known\/matrix\/client {     add_header Access-Control-Allow-Origin \"*\";     add_header Content-Type \"application\/json\";     return 200 '{\"m.homeserver\":{\"base_url\":\"https:\/\/synapse.myserver.ru\"}}'; }<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u041f\u043e \u0438\u0442\u043e\u0433\u0443 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e \u0443 \u0432\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f2d\/3d1\/dd1\/f2d3d1dd1043e782a4f9d085aecf68e2.png\" width=\"3508\" height=\"730\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/f2d\/3d1\/dd1\/f2d3d1dd1043e782a4f9d085aecf68e2.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f2d\/3d1\/dd1\/f2d3d1dd1043e782a4f9d085aecf68e2.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0425\u043e\u0441\u0442\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438, \u0442\u0435\u043f\u0435\u0440\u044c \u0438\u0434\u0435\u043c \u0437\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430\u043c\u0438. \u041a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 NPM \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438. <strong>\u041d\u0435 \u0437\u0430\u0431\u044b\u043b\u0438 \u0436\u0435?<\/strong> \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e NPM \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u043a \u0441\u0435\u0431\u0435 \u0432 \u043f\u0430\u043f\u043a\u0443 <strong>\/live\/npm-xxx<\/strong>, \u0433\u0434\u0435 \u0445\u0445\u0445 \u2013 \u043d\u043e\u043c\u0435\u0440 \u043f\u0440\u043e\u043a\u0441\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0434\u0435\u043c \u0437\u0430 \u043d\u0438\u043c\u0438. \u0421\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u043a\u043e\u0439 \u043d\u043e\u043c\u0435\u0440 \u0443 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 <strong>xmpp.myserver.ru<\/strong>:<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9d6\/0aa\/611\/9d60aa611e8707e7d5498f7b858dcae5.PNG\" alt=\"Certificate #142\" title=\"Certificate #142\" width=\"257\" height=\"345\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/9d6\/0aa\/611\/9d60aa611e8707e7d5498f7b858dcae5.PNG 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9d6\/0aa\/611\/9d60aa611e8707e7d5498f7b858dcae5.PNG 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>Certificate #142<\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 142, \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0438\u0445 \u043a \u043d\u0430\u043c \u0432 \u043f\u0430\u043f\u043a\u0443,<strong> \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0443\u0442\u044c \u043a \u043f\u0430\u043f\u043a\u0435 \u0441 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430\u043c\u0438 \u043d\u0430 \u0441\u0432\u043e\u0439!<\/strong> \u0412 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0430\u043f\u043a\u0430 NPM \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0430 \u043f\u043e \u043f\u0443\u0442\u0438 \/portainer\/npm\/live\/:<\/p>\n<pre><code>cp \/portainer\/npm\/live\/npm-142\/fullchain.pem \/opt\/myservice\/ejabberd\/certs\/fullchain.pem cp \/portainer\/npm\/live\/npm-142\/privkey.pem \/opt\/myservice\/ejabberd\/certs\/privkey.pem<\/code><\/pre>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u044b, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u0432 Portainer \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043d\u0430\u0448\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b. <\/p>\n<p>\u0414\u043b\u044f Ejabberd \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0430\u0434\u043c\u0438\u043d\u0441\u043a\u0443\u044e \u0443\u0447\u0435\u0442\u043a\u0443, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code>docker exec -it ejabberd ejabberdctl register admin myserver.ru password<\/code><\/pre>\n<p>\u0414\u043b\u044f Synapse \u043c\u044b \u0435\u0433\u043e \u0443\u0436\u0435 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043b\u0438 \u0432 homeserver.yaml<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043d\u043d\u043e\u0433\u043e<\/p>\n<details class=\"spoiler\">\n<summary>\u0410\u0434\u043c\u0438\u043d\u043a\u0430 Ejabberd \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 ip:5280\/admin<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/947\/e14\/7e6\/947e147e67e6af51478e6b7cfd7306ba.png\" width=\"1280\" height=\"768\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/947\/e14\/7e6\/947e147e67e6af51478e6b7cfd7306ba.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/947\/e14\/7e6\/947e147e67e6af51478e6b7cfd7306ba.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u0410\u0434\u043c\u0438\u043d\u043a\u0430 Synapse \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 ip:8007<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ee5\/0ea\/a5e\/ee50eaa5e744cc59a0af9293771fd543.png\" width=\"2504\" height=\"910\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/ee5\/0ea\/a5e\/ee50eaa5e744cc59a0af9293771fd543.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ee5\/0ea\/a5e\/ee50eaa5e744cc59a0af9293771fd543.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>Web-\u043a\u043b\u0438\u0435\u043d\u0442 Element \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 element.myserver.ru<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/374\/cae\/8e2\/374cae8e290259e185aa040fea43de86.png\" width=\"2508\" height=\"1229\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/374\/cae\/8e2\/374cae8e290259e185aa040fea43de86.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/374\/cae\/8e2\/374cae8e290259e185aa040fea43de86.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<\/div>\n<\/details>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0438\u0433\u0434\u0435 \u043d\u0435 \u043e\u0448\u0438\u0431\u043b\u0438\u0441\u044c \u2013 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u0432\u0448\u0438\u0435\u0441\u044f \u0432\u0430\u043c \u043a\u043b\u0438\u0435\u043d\u0442\u044b \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435, \u043f\u043e\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432\u0448\u0438\u0441\u044c \u0432\u0441\u0435\u043c \u044d\u0442\u0438\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043d\u0435\u0439, \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u043d\u0430 Synapse \u0438 Element. \u0425\u043e\u0442\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e Conversation \u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u043e &#8212; \u043d\u0438\u0447\u0435\u0433\u043e \u043b\u0438\u0448\u043d\u0435\u0433\u043e, \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e XMPP \u043c\u043d\u0435 \u043d\u0435 \u0437\u0430\u0448\u0435\u043b, \u043f\u043e\u0434\u0432\u0435\u043b\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 Apple, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0438 \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u043d\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u043b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u0444\u043e\u043d\u0435. \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u043a\u0440\u044b\u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u043f\u043e\u0434\u043e\u0436\u0434\u0430\u0432 \u043f\u043e\u043a\u0430 \u043e\u043d\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u044f\u0442\u0441\u044f. \u041f\u043b\u044e\u0441 \u043d\u0435 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u043e\u0441\u044c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u043f\u043e \u0441\u0443\u0442\u0438 \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u043d\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0435 \u043f\u0430\u043f\u043a\u0438. \u0415\u0441\u043b\u0438 \u043a\u0442\u043e \u043f\u043e\u0434\u0441\u043a\u0430\u0436\u0435\u0442 \u043f\u0443\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c &#8212; \u0431\u0443\u0434\u0443 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u0435\u043d.<\/p>\n<p>\u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u0436\u0438\u0440\u043d\u044b\u0445 \u043f\u043b\u044e\u0441\u043e\u0432 \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u0442\u0430\u043a \u0436\u0435 \u0432\u044b\u0434\u0435\u043b\u0438\u043b \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 &#8212; \u043d\u043e\u0432\u043e\u0441\u0442\u0438, \u043c\u0435\u043c\u0447\u0438\u043a\u0438 \u0438 \u043a\u043e\u0442\u0438\u043a\u0438 \u0432 Telegram, \u0441\u0435\u043c\u044c\u044f &#8212; \u0432 Element. <\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \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:\/\/habr.com\/ru\/articles\/942758\/\"> https:\/\/habr.com\/ru\/articles\/942758\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\">\n<div><figcaption>\u041a &#8212; \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c<\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u0441\u0432\u0435\u0442\u0435 \u043d\u0435\u0431\u0435\u0437\u044b\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0432 \u0437\u0430\u043a\u043e\u043d\u043e\u0442\u0432\u043e\u0440\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438, \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043d\u0430\u043b \u0434\u043b\u044f \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0435\u043c\u044c\u0438, \u0442.\u043a. \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0437\u0432\u043e\u043d\u043a\u0430\u043c\u0438 \u0432 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u043c\u0435\u0441\u0441\u0435\u043d\u0434\u0436\u0435\u0440\u0430\u0445 \u2013 \u0437\u043d\u0430\u0447\u0438\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u0434\u0432\u0435\u0440\u0436\u0435\u043d\u043d\u044b\u043c \u0443\u0433\u0440\u043e\u0437\u0430\u043c \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043c\u043e\u0448\u0435\u043d\u043d\u0438\u043a\u043e\u0432 \u0438 \u0441\u043f\u043e\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u0440\u0440\u043e\u0440\u0438\u0437\u043c, \u0430 \u0437\u0432\u043e\u043d\u0438\u0442\u044c \u043f\u043e \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0441 \u0435\u0435 \u0443\u0436\u0430\u0441\u043d\u044b\u043c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0441\u0432\u044f\u0437\u0438 (\u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0432\u0441\u0435 \u043f\u043e\u0442\u0443\u0433\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0432 VoLTE \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 VoiceHD)\u00a0 \u0432 2025 \u0433\u043e\u0434\u0443 \u2013 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u0432\u0435\u0442\u043e\u043d. \u0410 MAX \u043d\u0430 \u043c\u043e\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0441\u044f, \u043d\u0435 \u0437\u043d\u0430\u044e \u043f\u043e\u0447\u0435\u043c\u0443, \u044f \u0434\u0430\u0436\u0435 \u043d\u0435 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u0440\u043e\u0432\u043e\u0436\u0443 \u0432 \u043b\u0438\u0444\u0442\u0435 \u0438 \u043d\u0430 \u043f\u0430\u0440\u043a\u043e\u0432\u043a\u0435?<\/p>\n<p>\u0415\u0449\u0435 \u0441 2013 \u0433\u043e\u0434\u0430 \u044f \u0437\u0430\u0440\u0430\u0437\u0438\u043b\u0441\u044f NAS&#8217;\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u0432\u044b\u0431\u043e\u0440\u043e\u043c VDS\/VPS \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0431\u044b\u043b\u043e: \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0439 &#171;NAS&#187; \u0437\u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0441\u044f \u0438\u0437 WD MyCloud \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c OpenMediaVault \u0432 \u0443\u0436\u0435 \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u0435\u0431\u0435 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0438\u043d\u0438-\u0441\u0435\u0440\u0432\u0435\u0440, \u043d\u043e \u0432\u0441\u0435 \u0441 \u0442\u0435\u043c \u0436\u0435 OpenMediaVault \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b (\u0434\u0430-\u0434\u0430, Debian \u0441 \u0432\u0435\u0431-\u043c\u043e\u0440\u0434\u043e\u0439, \u044f \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0438 Proxmox \u0438 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u2013 \u043d\u0435 \u0437\u0430\u0448\u043b\u043e \u043f\u043e \u0442\u0435\u043c \u0438\u043b\u0438 \u0438\u043d\u044b\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c. \u0415\u0441\u043b\u0438 \u0441\u0442\u0430\u0442\u044c\u044f \u0437\u0430\u0439\u0434\u0435\u0442 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0438 \u0425\u0430\u0431\u0440\u0430 &#8212; \u043d\u0430\u043f\u0438\u0448\u0443 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043f\u0440\u043e \u0432\u0441\u0435 \u044d\u0442\u0430\u043f\u044b \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0444\u0430\u0439\u043b\u043e\u043f\u043e\u043c\u043e\u0439\u043a\u0438 \u0432\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u0435\u0431\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u044f\u0449\u0438\u0447\u0435\u043a). <\/p>\n<details class=\"spoiler\">\n<summary>\u041e\u0434\u0438\u043d\u043e\u043a\u043e \u0441\u043a\u0443\u0447\u0430\u044e\u0449\u0438\u0439 \u0434\u0435\u0442\u0451\u043d\u044b\u0448 \u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\">\n<div><figcaption>\u0441\u0442\u043e\u0438\u0442-\u043f\u044b\u043b\u0438\u0442\u0441\u044f<\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/details>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0440\u0435\u0434\u044b \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e, \u0447\u0442\u043e \u043c\u044b \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0431\u0443\u0434\u0435\u043c \u0433\u043e\u0440\u043e\u0434\u0438\u0442\u044c, \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0435\u043b Docker. \u0410 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u043e \u043b\u0438\u0447\u043d\u043e \u043c\u043d\u0435 \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0447\u0435\u0440\u0435\u0437 Portainer.<\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c \u0432\u0441\u0442\u0430\u043b \u0432\u044b\u0431\u043e\u0440 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0437\u0432\u043e\u043d\u043a\u043e\u0432 \u0432\u043c\u0435\u0441\u0442\u043e \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u043c\u043e\u0448\u0435\u043d\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 Telegram \u0438 \u0442\u0435\u0440\u0440\u043e\u0440\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 WhatsApp. <\/p>\n<p>\u0421\u0443\u0434\u044f \u043f\u043e \u0444\u043e\u0440\u0443\u043c\u0430\u043c, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u0441\u0430\u043c\u043e\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0435 \u0434\u043b\u044f \u0441\u0435\u043b\u0444\u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430 \u2013 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/Matrix\" rel=\"noopener noreferrer nofollow\"><strong>Matrix<\/strong><\/a><strong> <\/strong>\u0438 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/XMPP\" rel=\"noopener noreferrer nofollow\"><strong>XMPP<\/strong><\/a>. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0436\u0435 \u043b\u0443\u0447\u0448\u0435, \u043f\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f\u043c \u0438 \u043e\u0442\u0437\u044b\u0432\u0430\u043c \u044f \u043d\u0435 \u0441\u043c\u043e\u0433 \u2013 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u0434\u0432\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b, \u0438 \u0443\u0436\u0435 \u043f\u043e \u0445\u043e\u0434\u0443 \u0434\u0435\u043b\u0430 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044f. <\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 Matrix \u0432\u044b\u0431\u043e\u0440 \u043f\u0430\u043b \u043d\u0430 <a href=\"https:\/\/github.com\/element-hq\/synapse\" rel=\"noopener noreferrer nofollow\"><strong>Synapse<\/strong><\/a>, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 XMPP &#8212; <a href=\"https:\/\/www.ejabberd.im\/index.html\" rel=\"noopener noreferrer nofollow\"><strong>Ejabberd<\/strong><\/a>. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0435\u0441\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043b\u0443\u0447\u0448\u0435, \u043d\u043e \u0443 \u044d\u0442\u0438\u0445 \u0434\u0432\u043e\u0438\u0445 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0435 \u043c\u0430\u043d\u0443\u0430\u043b\u044b \u0438 \u043e\u0431\u0430 \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432 Docker. <\/p>\n<p>\u041f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u044f \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0441\u044f \u043f\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u044d\u0441\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438, \u0432\u044b\u0431\u0438\u0440\u0430\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u044e\u0437\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0441\u0438\u043c\u043f\u0430\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432, \u0432\u0435\u0434\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u043e \u0431\u0443\u0434\u0443\u0442 \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0438 \u0438 \u0441\u0443\u043f\u0440\u0443\u0433\u0430, \u0430 \u043a\u0430\u043a \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0436\u0435\u043d\u0449\u0438\u043d\u0430 \u2013 \u043b\u0443\u0447\u0448\u0438\u0439 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438. \u0415\u0441\u043b\u0438 \u0436\u0435\u043d\u0449\u0438\u043d\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 \u0447\u0435\u043c-\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u2013 \u0437\u043d\u0430\u0447\u0438\u0442 \u043e\u043d\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.  \u0411\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u0438\u0433\u043b\u044f\u043d\u0443\u043b\u0441\u044f <a href=\"https:\/\/element.io\" rel=\"noopener noreferrer nofollow\"><strong>Element<\/strong><\/a> \u0434\u043b\u044f Matrix (\u043d\u0435 <a href=\"https:\/\/github.com\/element-hq\/element-x-android\" rel=\"noopener noreferrer nofollow\">X<\/a>, \u0432 \u0425 \u0447\u0442\u043e\u0431 \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0437\u0432\u043e\u043d\u043a\u0438 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0443\u0436 \u0437\u0430\u043c\u043e\u0440\u043e\u0447\u0430\u0442\u044c\u0441\u044f) \u2013 \u00a0\u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0439, \u0431\u0435\u0437 \u043b\u0438\u0448\u043d\u0438\u0445 \u0440\u044e\u0448\u0435\u0447\u0435\u043a, \u0438<strong> <\/strong><a href=\"https:\/\/conversations.im\" rel=\"noopener noreferrer nofollow\"><strong>Conversation<\/strong><\/a> \u0434\u043b\u044f XMPP, \u043d\u043e \u0442\u0430\u043a \u043a\u0430\u043a \u0441 \u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u0443 \u043d\u0435\u0433\u043e \u0442\u0443\u0433\u043e &#8212; \u043d\u0430 iOS \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0432\u044b\u0431\u043e\u0440 \u043f\u0430\u043b \u043d\u0430 <a href=\"https:\/\/monal-im.org\" rel=\"noopener noreferrer nofollow\"><strong>Monal<\/strong><\/a>. <\/p>\n<details class=\"spoiler\">\n<summary>Element \u043d\u0430 Android \u0438 iOS \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><\/figure>\n<figure class=\"full-width\"><\/figure>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u041a\u043b\u0438\u0435\u043d\u0442\u044b XMPP \u043d\u0430 Android \u0438 iOS \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><\/figure>\n<figure class=\"full-width\"><\/figure>\n<\/div>\n<\/details>\n<p>\u0418\u0442\u043e\u0433\u043e &#171;\u0441\u0442\u0435\u043a&#187; \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a: \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0431\u0443\u0434\u0435\u043c \u0432 Docker \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Portainer, \u0434\u043b\u044f \u043d\u0435\u0438\u0441\u043a\u0443\u0448\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u044d\u0442\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434. <\/p>\n<p>\u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b Matrix \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c Synapse, XMPP \u2013 \u00a0Ejjaberd. <\/p>\n<p>\u0422\u0430\u043a \u0436\u0435 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0430\u0443\u0434\u0438\u043e\u0437\u0432\u043e\u043d\u043a\u043e\u0432 \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u0435\u0440\u0432\u0435\u0440 <strong>Coturn<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0431\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0437\u0430 NAT (\u0441 \u043d\u0438\u043c \u043a\u0441\u0442\u0430\u0442\u0438 \u043f\u043b\u044f\u0441\u043e\u043a \u0441 \u0431\u0443\u0431\u043d\u0430\u043c\u0438 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e). <\/p>\n<p>\u041d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0443 \u043c\u0435\u043d\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d <strong>Nginx Proxy Manage<\/strong>r (\u0434\u0430\u043b\u0435\u0435 \u0434\u043b\u044f \u043a\u0440\u0430\u0442\u043a\u043e\u0441\u0442\u0438 \u2013 <strong>NPM<\/strong>), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b, \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e \u043d\u0430\u0448\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u044b \u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u0432 \u0432\u0438\u0434\u0435 \u0431\u043b\u043e\u043a-\u0441\u0445\u0435\u043c\u044b, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0442\u0430\u043a\u043e\u0435:<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0421\u0442\u0438\u043b\u044c\u043d\u043e, \u043c\u043e\u0434\u043d\u043e, \u043c\u043e\u043b\u043e\u0434\u0435\u0436\u043d\u043e<\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0435 \u044f \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u044e, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d Docker, Portainer, NPM, \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f \u0438 \u0432\u044b +\/- \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0435, \u0447\u0442\u043e \u0441 \u044d\u0442\u0438\u043c \u0432\u0441\u0435\u043c \u0434\u0435\u043b\u0430\u0442\u044c. \u042f \u043d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u044e \u043d\u0430 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0445 \u043d\u0438\u0436\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u2013<strong> \u044f \u0443 \u043c\u0430\u043c\u044b \u0438\u043d\u0436\u0435\u043d\u0435\u0440-\u0444\u0438\u0437\u0438\u043a, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442<\/strong>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441 \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u0435\u043c \u043f\u0440\u0438\u0441\u043b\u0443\u0448\u0430\u044e\u0441\u044c \u043a \u0432\u0430\u0448\u0438\u043c \u0441\u043e\u0432\u0435\u0442\u0430\u043c \u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u044f\u043c. \u0418\u0442\u0430\u043a, \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c.<\/p>\n<p>\u00a0\u041f\u0435\u0440\u0432\u044b\u043c \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u2013 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 DNS. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c \u0447\u0442\u043e \u0432\u0430\u0448 \u043b\u0438\u0447\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438\u043c\u0435\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 <strong>myserver.ru<\/strong>. \u0418\u0434\u0435\u043c \u043a \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0443 \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438:<\/p>\n<ul>\n<li>\n<p>\u0410\u2011\u0437\u0430\u043f\u0438\u0441\u044c:<strong> synapse<\/strong>.myserver.ru\u00a0\u2014 \u0434\u043b\u044f\u00a0\u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u0443 Synapse;<\/p>\n<\/li>\n<li>\n<p>\u0410\u2011\u0437\u0430\u043f\u0438\u0441\u044c: <strong>element<\/strong>.myserver.ru\u00a0\u2014 \u0434\u043b\u044f\u00a0\u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a\u00a0web\u2011\u043a\u043b\u0438\u0435\u043d\u0442\u0443 Element;<\/p>\n<\/li>\n<li>\n<p>\u0410\u2011\u0437\u0430\u043f\u0438\u0441\u044c: <strong>xmpp<\/strong>.myserver.ru\u00a0\u2014 \u0434\u043b\u044f\u00a0\u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a\u00a0Ejabberd, \u0447\u0435\u0440\u0435\u0437\u00a0\u043d\u0435\u0435\u00a0\u0436\u0435 \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043a Coturn \u0438 \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b;<\/p>\n<\/li>\n<li>\n<p>SRV\u2011\u0437\u0430\u043f\u0438\u0441\u044c: <strong><em>xmpp\u2011client.<\/em>tcp<\/strong>.myserver.ru \u0441\u00a0\u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c target <strong>xmpp<\/strong>.myserver.ru \u0438 \u043f\u043e\u0440\u0442\u0430 5222\u00a0\u2014 \u0434\u043b\u044f\u00a0\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 xmpp;<\/p>\n<\/li>\n<li>\n<p>SRV\u2011\u0437\u0430\u043f\u0438\u0441\u044c: <strong><em>xmpp\u2011server.<\/em>tcp<\/strong>.myserver.ru \u0441\u00a0\u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c target <strong>xmpp<\/strong>.myserver.ru \u0438 \u043f\u043e\u0440\u0442\u0430 5269\u00a0\u2014 \u0434\u043b\u044f\u00a0\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0444\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 xmpp.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u0442\u043e\u0440\u044b\u043c \u2013 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0430\u043f\u043a\u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u0433\u0434\u0435 \u0431\u0443\u0434\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0438 \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u043f\u043e\u0442\u0440\u043e\u0445\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u0414\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0447\u0442\u043e \u0432\u044b \u0432\u044b\u0434\u0435\u043b\u0438\u043b\u0438 \u043f\u043e\u0434 \u0432\u0441\u0435 \u044d\u0442\u043e \u043f\u0430\u043f\u043a\u0443 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435<strong> \/opt <\/strong>\u0438 \u043d\u0430\u0437\u0432\u0430\u043b\u0438 \u0435\u0435 <strong>\/myservice<\/strong>. <\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u0430\u043f\u043e\u043a:<\/p>\n<figure class=\"\"><\/figure>\n<pre><code>mkdir -p \/opt\/myservice\/ejabberd\/{certs,conf,data,logs,upload} \/opt\/matrix\/{data,element,pg}<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0438 \u043f\u043e\u0434 \u043d\u0430\u0448\u0438 \u0431\u0443\u0434\u0443\u0449\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b:<\/p>\n<p><strong>\u0421\u0435\u0440\u0432\u0435\u0440 Ejabberd<\/strong>: <\/p>\n<p>\u0434\u0435\u043b\u0430\u0435\u043c \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 <\/p>\n<pre><code>nano \/opt\/myservice\/ejabberd\/conf\/ejabberd.yml<\/code><\/pre>\n<p> \u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0443\u0434\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u043d\u0444\u0438\u0433:<\/p>\n<details class=\"spoiler\">\n<summary>ejabberd.yml<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"yaml\">loglevel: 4                # \u0423\u0440\u043e\u0432\u0435\u043d\u044c \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (0 - \u043c\u0438\u043d\u0438\u043c\u0443\u043c, 5 - \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c). 4 = \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u043b\u043e\u0433\u0438 log_rotate_size: 10485760  # \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u043b\u043e\u0433\u0430 (10 \u041c\u0411) log_rotate_count: 1        # \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c\u044b\u0445 \u0441\u0442\u0430\u0440\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u043b\u043e\u0433\u043e\u0432 (1 \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0430\u0440\u0445\u0438\u0432)  hosts:                     # \u0421\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u043c\u0435\u043d\u043e\u0432, \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c XMPP   - \"xmpp.myserver.ru\"     # \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 XMPP-\u0434\u043e\u043c\u0435\u043d \u0441\u0435\u0440\u0432\u0435\u0440\u0430  acl:                       # Access Control Lists \u2014 \u0441\u043f\u0438\u0441\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430   admin:                   # \u0413\u0440\u0443\u043f\u043f\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432     user:       - \"admin@xmpp.myserver.ru\"  # \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430  acme:   auto: false              # \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 SSL-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 Let's Encrypt \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043e  access_rules:              # \u041f\u0440\u0430\u0432\u0438\u043b\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432   local:                   # \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043a\u0440\u0438\u043f\u0442\u044b)     allow: all             # \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u0432\u0441\u0435\u043c   c2s:                     # Client-to-Server (\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432)     allow: all             # \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u0432\u0441\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c   s2s:                     # Server-to-Server (\u0444\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u044f XMPP)     allow: all             # \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u043b\u044e\u0431\u044b\u043c\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438   configure:               # \u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c     allow: admin           # \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430\u043c  listen:                    # \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043f\u043e\u0440\u0442\u043e\u0432   - port: 5222             # TCP-\u043f\u043e\u0440\u0442 \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 (c2s)     module: ejabberd_c2s   # \u041c\u043e\u0434\u0443\u043b\u044c \u0434\u043b\u044f Client-to-Server \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439     starttls: true         # \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 STARTTLS     starttls_required: true# \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c TLS     max_stanza_size: 65536 # \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 XMPP-\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f (\u0432 \u0431\u0430\u0439\u0442\u0430\u0445)     shaper: c2s_shaper     # \u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432    - port: 5269             # TCP-\u043f\u043e\u0440\u0442 \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 (s2s)     module: ejabberd_s2s_in# \u041c\u043e\u0434\u0443\u043b\u044c \u0434\u043b\u044f Server-to-Server \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439     max_stanza_size: 131072# \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u0430 (128 \u041a\u0411)     shaper: s2s_shaper     # \u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432    - port: 5280             # HTTP-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441     module: ejabberd_http  # \u041c\u043e\u0434\u0443\u043b\u044c \u0432\u0435\u0431-\u0434\u043e\u0441\u0442\u0443\u043f\u0430     request_handlers:      # \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u0443\u0442\u0435\u0439       \"\/admin\": ejabberd_web_admin # \u0412\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0430\u0434\u043c\u0438\u043d\u0438\u043a\u0438       \"\/api\": mod_http_api        # HTTP API       \"\/bosh\": mod_bosh           # BOSH (HTTP-\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 XMPP-\u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432)       \"\/ws\": ejabberd_http_ws     # WebSocket-\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f       \"\/upload\": mod_http_upload  # HTTP File Upload     tls: false             # HTTPS \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f (\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 HTTP)    - port: 3478             # UDP-\u043f\u043e\u0440\u0442 \u0434\u043b\u044f STUN\/TURN (VoIP, WebRTC)     transport: udp     module: ejabberd_stun  # \u041c\u043e\u0434\u0443\u043b\u044c STUN\/TURN     use_turn: true         # \u0412\u043a\u043b\u044e\u0447\u0435\u043d TURN (\u0440\u0435\u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u044f \u043c\u0435\u0434\u0438\u0430-\u0442\u0440\u0430\u0444\u0438\u043a\u0430)     turn_min_port: 49152   # \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u0442 \u0434\u043b\u044f \u043c\u0435\u0434\u0438\u0430\u043f\u043e\u0442\u043e\u043a\u043e\u0432     turn_max_port: 65535   # \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u0442 \u0434\u043b\u044f \u043c\u0435\u0434\u0438\u0430\u043f\u043e\u0442\u043e\u043a\u043e\u0432    - port: 5349             # TCP-\u043f\u043e\u0440\u0442 \u0434\u043b\u044f STUN\/TURN \u0441 TLS     transport: tcp     module: ejabberd_stun     use_turn: true     tls: true              # \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f TLS     turn_min_port: 49152     turn_max_port: 65535  certfiles:                 # \u041f\u0443\u0442\u0438 \u043a SSL-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430\u043c   - \"\/etc\/letsencrypt\/fullchain.pem\" # \u041f\u043e\u043b\u043d\u0430\u044f \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432   - \"\/etc\/letsencrypt\/privkey.pem\"   # \u041f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 \u043a\u043b\u044e\u0447  default_db: internal       # \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 ejabberd (Mnesia)  modules:                   # \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 ejabberd   mod_adhoc: {}            # Ad-hoc \u043a\u043e\u043c\u0430\u043d\u0434\u044b (XEP-0050)   mod_admin_extra: {}      # \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438   mod_announce:            # \u041c\u043e\u0434\u0443\u043b\u044c \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0439 (broadcast)     access: admin          # \u0422\u043e\u043b\u044c\u043a\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u044b \u043c\u043e\u0433\u0443\u0442 \u0440\u0430\u0441\u0441\u044b\u043b\u0430\u0442\u044c   mod_avatar: {}           # \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0430\u0432\u0430\u0442\u0430\u0440\u043e\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439   mod_blocking: {}         # \u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 (XEP-0191)   mod_bosh: {}             #<\/code><\/pre>\n<\/div>\n<\/details>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\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-472862","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/472862","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=472862"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/472862\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=472862"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=472862"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=472862"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}