{"id":6738,"date":"2026-07-28T17:00:43","date_gmt":"2026-07-28T13:30:43","guid":{"rendered":"https:\/\/parmin.cloud\/blog\/?p=6738"},"modified":"2026-07-28T17:00:43","modified_gmt":"2026-07-28T13:30:43","slug":"%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d9%86%d8%b5%d8%a8-%d9%88-%d8%b1%d8%a7%d9%87%d8%a7%d9%86%d8%af%d8%a7%d8%b2%db%8c-%d8%b3%d8%b1%d9%88%d8%b1-%da%86%d8%aa-prosody-%d8%b1%d9%88%db%8c-%d8%a7%d9%88","status":"publish","type":"post","link":"https:\/\/parmin.cloud\/blog\/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d9%86%d8%b5%d8%a8-%d9%88-%d8%b1%d8%a7%d9%87%d8%a7%d9%86%d8%af%d8%a7%d8%b2%db%8c-%d8%b3%d8%b1%d9%88%d8%b1-%da%86%d8%aa-prosody-%d8%b1%d9%88%db%8c-%d8%a7%d9%88\/","title":{"rendered":"\u0622\u0645\u0648\u0632\u0634 \u0646\u0635\u0628 \u0648 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0633\u0631\u0648\u0631 \u0686\u062a Prosody \u0631\u0648\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648 24.04"},"content":{"rendered":"<div class=\"container\">\n<div id=\"model-response-message-contentr_845e2d13c0648d0c\" class=\"markdown markdown-main-panel enable-luminous-fast-follows enable-updated-hr-color md-content stronger\" dir=\"rtl\" aria-live=\"off\">\n<p class=\"svelte-4sys19\" dir=\"auto\"><strong>\u0645\u0642\u062f\u0645\u0647<\/strong> \u067e\u0631\u0648\u0632\u0648\u062f\u06cc (Prosody) \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u0686\u062a XMPP \u0627\u0633\u062a \u06a9\u0647 \u0627\u0632 \u067e\u06cc\u0627\u0645\u200c\u0631\u0633\u0627\u0646\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc\u200c\u0634\u062f\u0647 \u0628\u0627 TLS (\u0628\u0647\u200c\u0635\u0648\u0631\u062a \u06cc\u06a9\u200c\u0628\u0647\u200c\u06cc\u06a9 \u0648 \u06af\u0631\u0648\u0647\u06cc) \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f. \u067e\u0631\u0648\u062a\u06a9\u0644 XMPP (Extensible Messaging and Presence Protocol) \u06cc\u06a9 \u067e\u0631\u0648\u062a\u06a9\u0644 \u067e\u06cc\u0627\u0645\u200c\u0631\u0633\u0627\u0646\u06cc \u0628\u0627\u0632 \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u06af\u0630\u0634\u062a\u0647 \u0628\u0627 \u0646\u0627\u0645 \u062c\u064e\u0628\u0631 (Jabber) \u0646\u06cc\u0632 \u0634\u0646\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u062f. \u0627\u06cc\u0646 \u0628\u062f\u0627\u0646 \u0645\u0639\u0646\u0627\u0633\u062a \u06a9\u0647 \u0647\u0631 \u06a9\u0644\u0627\u06cc\u0646\u062a \u0686\u062a XMPP \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0633\u0631\u0648\u0631 Prosody \u0645\u062a\u0635\u0644 \u0634\u062f\u0647 \u0648 \u06af\u0641\u062a\u06af\u0648 \u0631\u0627 \u0622\u063a\u0627\u0632 \u06a9\u0646\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">XMPP \u06cc\u06a9 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0628\u0627\u0644\u063a \u0648 \u0645\u062a\u0646\u200c\u0628\u0627\u0632 \u0627\u0633\u062a \u06a9\u0647 \u062a\u0648\u0633\u0637 \u0646\u06cc\u0631\u0648\u06cc \u0645\u0647\u0646\u062f\u0633\u06cc \u0627\u06cc\u0646\u062a\u0631\u0646\u062a (IETF) \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f. \u0627\u06cc\u0646 \u067e\u0631\u0648\u062a\u06a9\u0644 \u0628\u0647\u200c\u0637\u0648\u0631 \u0641\u0639\u0627\u0644 \u062a\u0648\u0633\u0639\u0647 \u067e\u06cc\u062f\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u062f\u0631 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f\u061b \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646\u200c\u0645\u062b\u0627\u0644\u060c \u0633\u0631\u0648\u06cc\u0633 Google Talk \u06a9\u0647 \u062a\u0648\u0633\u0637 \u0645\u06cc\u0644\u06cc\u0648\u0646\u200c\u0647\u0627 \u06a9\u0627\u0631\u0628\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u062f\u060c \u0628\u0631 \u067e\u0627\u06cc\u0647 \u0647\u0645\u06cc\u0646 \u067e\u0631\u0648\u062a\u06a9\u0644 \u0628\u0646\u0627 \u0634\u062f\u0647 \u0628\u0648\u062f. \u0633\u0631\u0648\u0631\u0647\u0627\u06cc XMPP \u0645\u0627\u0646\u0646\u062f Prosody\u060c \u06af\u0632\u06cc\u0646\u0647\u200c\u0627\u06cc \u0627\u0646\u0639\u0637\u0627\u0641\u200c\u067e\u0630\u06cc\u0631 \u0628\u0631\u0627\u06cc \u067e\u06cc\u0627\u0645\u200c\u0631\u0633\u0627\u0646\u06cc \u0645\u062d\u0633\u0648\u0628 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u06a9\u0647 \u0628\u06cc\u0634 \u0627\u0632 \u062f\u0648 \u062f\u0647\u0647 \u0627\u0632 \u0639\u0645\u0631 \u0622\u0646\u200c\u0647\u0627 \u0645\u06cc\u200c\u06af\u0630\u0631\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c \u0634\u0645\u0627 \u06cc\u06a9 \u0633\u0631\u0648\u0631 Prosody \u0631\u0627 \u0646\u0635\u0628 \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0627\u0632 \u0686\u062a\u200c\u0647\u0627\u06cc \u06cc\u06a9\u200c\u0628\u0647\u200c\u06cc\u06a9 \u0648 \u06af\u0631\u0648\u0647\u06cc \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0642\u0627\u0628\u0644\u06cc\u062a \u0622\u067e\u0644\u0648\u062f \u0641\u0627\u06cc\u0644 \u062f\u0631 \u067e\u0646\u0644 \u0686\u062a \u0628\u0631\u0627\u06cc \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9\u200c\u06af\u0630\u0627\u0631\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f. \u062a\u0645\u0627\u0645\u06cc \u0627\u0631\u062a\u0628\u0627\u0637\u0627\u062a \u062a\u0648\u0633\u0637 \u06af\u0648\u0627\u0647\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc TLS \u0645\u062d\u0627\u0641\u0638\u062a \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u062a\u0627 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0634\u062e\u0635\u06cc \u0634\u0645\u0627 \u06a9\u0627\u0645\u0644\u0627\u064b \u062e\u0635\u0648\u0635\u06cc \u0628\u0645\u0627\u0646\u0646\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\"><strong>\u067e\u06cc\u0634\u200c\u0646\u06cc\u0627\u0632\u0647\u0627<\/strong> \u067e\u06cc\u0634 \u0627\u0632 \u0634\u0631\u0648\u0639 \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627\u060c \u0628\u0647 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f:<\/p>\n<ul dir=\"auto\">\n<li class=\"text-start\">\u06cc\u06a9 \u0633\u0631\u0648\u0631 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 24.04 \u0628\u0627 \u062d\u062f\u0627\u0642\u0644 \u06f5\u06f1\u06f2 \u0645\u06af\u0627\u0628\u0627\u06cc\u062a \u0631\u0645 \u06a9\u0647 \u0637\u0628\u0642 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0633\u0631\u0648\u0631 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u0628\u0627\u0634\u062f (\u0634\u0627\u0645\u0644 \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u063a\u06cc\u0631 \u0631\u0648\u062a \u0628\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc sudo \u0648 \u0641\u0627\u06cc\u0631\u0648\u0627\u0644).<\/li>\n<li class=\"text-start\">\u06cc\u06a9 \u06a9\u0644\u0627\u06cc\u0646\u062a \u0686\u062a XMPP \u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0645\u062d\u0644\u06cc \u062e\u0648\u062f. \u0647\u0631 \u06cc\u06a9 \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0686\u062a \u0644\u06cc\u0633\u062a\u200c\u0634\u062f\u0647 \u062f\u0631 \u0635\u0641\u062d\u0647 \u06a9\u0644\u0627\u06cc\u0646\u062a\u200c\u0647\u0627\u06cc XMPP \u0628\u0627 \u0633\u0631\u0648\u0631 Prosody \u0634\u0645\u0627 \u0633\u0627\u0632\u06af\u0627\u0631 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/li>\n<li class=\"text-start\">\u062f\u0648 \u0632\u06cc\u0631\u062f\u0627\u0645\u0646\u0647 (Hostname) \u06a9\u0647 \u0628\u0647 \u0633\u0631\u0648\u0631 \u0634\u0645\u0627 pointing \u0634\u062f\u0647 \u0628\u0627\u0634\u0646\u062f. \u0634\u0645\u0627 \u0628\u0647 \u062f\u0648 \u0632\u06cc\u0631\u062f\u0627\u0645\u0646\u0627 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f \u0632\u06cc\u0631\u0627 Prosody \u0627\u0632 \u06cc\u06a9\u06cc \u0628\u0631\u0627\u06cc \u0686\u062a \u0645\u0633\u062a\u0642\u06cc\u0645 \u0648 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0631\u0627\u06cc \u0627\u062a\u0627\u0642\u200c\u0647\u0627\u06cc \u0686\u062a \u06af\u0631\u0648\u0647\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u0631\u0627\u06cc \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0646\u062d\u0648\u0647 \u0627\u062a\u0635\u0627\u0644 \u062f\u0627\u0645\u0646\u0647\u200c\u0647\u0627 \u0628\u0647 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u0627\u0628\u0631\u06cc \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f (Parmin Cloud) \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0645\u0633\u062a\u0646\u062f\u0627\u062a DNS \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627 \u0627\u0632 \u062f\u0648 \u0632\u06cc\u0631\u062f\u0627\u0645\u0646\u0647 \u0646\u0645\u0648\u0646\u0647 \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:\n<ul dir=\"auto\">\n<li class=\"text-start\"><code class=\"cursor-pointer codespan\">chat.your-domain<\/code>: \u0628\u0631\u0627\u06cc \u0686\u062a\u200c\u0647\u0627\u06cc \u06cc\u06a9\u200c\u0628\u0647\u200c\u06cc\u06a9.<\/li>\n<li class=\"text-start\"><code class=\"cursor-pointer codespan\">room.your-domain<\/code>: \u0628\u0631\u0627\u06cc \u0627\u062a\u0627\u0642\u200c\u0647\u0627\u06cc \u0686\u062a \u06af\u0631\u0648\u0647\u06cc.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u06a9\u0627\u0631\u0628\u0631 \u063a\u06cc\u0631 \u0631\u0648\u062a \u0628\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc sudo \u0648\u0627\u0631\u062f \u0633\u0631\u0648\u0631 \u062e\u0648\u062f \u0634\u0648\u06cc\u062f \u062a\u0627 \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627 \u0631\u0627 \u0622\u063a\u0627\u0632 \u06a9\u0646\u06cc\u062f.<\/p>\n<div><\/div>\n<hr class=\"border-[#EBEBEB] dark:border-[#EBEBEB]\/16\" \/>\n<h3 class=\"svelte-4sys19\" dir=\"auto\">\u0645\u0631\u062d\u0644\u0647 \u06f1 \u2014 \u0646\u0635\u0628 Prosody<\/h3>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u0645\u062e\u0632\u0646 APT \u0627\u062e\u062a\u0635\u0627\u0635\u06cc Prosody \u0631\u0627 \u0628\u0647 \u0633\u0631\u0648\u0631 \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u0633\u067e\u0633 Prosody \u0631\u0627 \u0627\u0632 \u0622\u0646 \u0646\u0635\u0628 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f. \u0645\u0627 \u0627\u0632 \u0645\u062e\u0632\u0646 \u0631\u0633\u0645\u06cc Prosody \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u0645 \u062c\u062f\u06cc\u062f\u062a\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627 \u0646\u0635\u0628 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0627\u0628\u062a\u062f\u0627 \u0628\u0627 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u0645\u062a\u0646 \u062e\u0648\u062f \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0645\u062e\u0632\u0646 \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u0648 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u062e\u0632\u0646 Prosody \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u06af\u0631 \u067e\u06a9\u06cc\u062c APT \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1491\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c8i \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">sudo nano \/etc\/apt\/sources.list.d\/prosody.list<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-19\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062e\u0637 \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f (\u062f\u0642\u062a \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648 24.04 \u0627\u0632 \u06a9\u0644\u0645\u0647 <code class=\"cursor-pointer codespan\">noble<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u0645):<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\"><strong>\/etc\/apt\/sources.list.d\/prosody.list<\/strong><\/p>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">text<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1493\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-text rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c8j \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">deb https:\/\/packages.prosody.im\/debian noble main<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-24\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0627\u06a9\u0646\u0648\u0646 \u0628\u0627\u06cc\u062f \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc APT \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Prosody \u0631\u0627 \u062f\u0627\u0646\u0644\u0648\u062f \u0648 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f. \u0633\u0631\u0648\u0631 \u0634\u0645\u0627 \u0627\u0632 \u0627\u06cc\u0646 \u06a9\u0644\u06cc\u062f \u0628\u0631\u0627\u06cc \u062a\u0627\u06cc\u06cc\u062f \u0635\u062d\u062a \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0627\u0632 \u0627\u0628\u0632\u0627\u0631 <code class=\"cursor-pointer codespan\">wget<\/code> \u0628\u0631\u0627\u06cc \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0644\u06cc\u062f \u0628\u0647 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0641\u0639\u0644\u06cc \u0634\u0645\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1495\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c8k \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">wget https:\/\/prosody.im\/files\/prosody-debian-packages.key<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-30\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0633\u062a\u0648\u0631 <code class=\"cursor-pointer codespan\">apt-key add<\/code> \u062f\u0631 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0627\u0648\u0628\u0648\u0646\u062a\u0648 \u0645\u0646\u0633\u0648\u062e \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u06a9\u0644\u06cc\u062f \u0631\u0627 \u0628\u0627 \u0641\u0631\u0645\u062a \u0645\u0646\u0627\u0633\u0628 \u062f\u0631 \u0645\u0633\u06cc\u0631 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u0639\u062a\u0628\u0631 \u0633\u06cc\u0633\u062a\u0645 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1497\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c8l \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">sudo gpg &#8211;dearmor -o \/etc\/apt\/trusted.gpg.d\/prosody.gpg prosody-debian-packages.key<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-34\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0641\u0627\u06cc\u0644 \u06a9\u0644\u06cc\u062f \u062f\u0627\u0646\u0644\u0648\u062f \u0634\u062f\u0647 \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f\u060c \u0632\u06cc\u0631\u0627 \u062f\u06cc\u06af\u0631 \u0628\u0647 \u0622\u0646 \u0646\u06cc\u0627\u0632 \u0646\u062f\u0627\u0631\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1499\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c8m \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">rm prosody-debian-packages.key<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-38\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627\u06cc \u0633\u0631\u0648\u0631 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f\u062a\u0631 \u0627\u0632 \u0645\u062e\u0632\u0646 Prosody \u0634\u0627\u0645\u0644 \u0634\u0648\u0646\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1501\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c8n \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">sudo apt update<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-42\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u067e\u06a9\u06cc\u062c \u0633\u0631\u0648\u0631 Prosody \u0648 \u0628\u0631\u062e\u06cc \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627\u06cc \u0627\u0641\u0632\u0627\u06cc\u0646\u062f\u0647 \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1502\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c8o \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">sudo apt install prosody prosody-modules lua-dbi-sqlite3 lua-event<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-46\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u067e\u06a9\u06cc\u062c\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0646\u0635\u0628 \u06a9\u0631\u062f\u06cc\u062f \u0628\u0647 \u0634\u0631\u062d \u0632\u06cc\u0631 \u0647\u0633\u062a\u0646\u062f:<\/p>\n<ul dir=\"auto\">\n<li class=\"text-start\"><strong>prosody<\/strong>: \u062e\u0648\u062f \u0633\u0631\u0648\u0631 Prosody.<\/li>\n<li class=\"text-start\"><strong>prosody-modules<\/strong>: \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc Prosody \u06a9\u0647 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc \u0633\u0631\u0648\u0631 \u0631\u0627 \u06af\u0633\u062a\u0631\u0634 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f.<\/li>\n<li class=\"text-start\"><strong>lua-dbi-sqlite3<\/strong>: \u0628\u0647 Prosody \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u0627\u0632 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 SQLite \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f.<\/li>\n<li class=\"text-start\"><strong>lua-event<\/strong>: \u0628\u0647 Prosody \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u0627\u0631\u062a\u0628\u0627\u0637 \u06a9\u0644\u0627\u06cc\u0646\u062a\u200c\u0647\u0627\u06cc \u0647\u0645\u0632\u0645\u0627\u0646 \u0628\u06cc\u0634\u062a\u0631\u06cc \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u062f.<\/li>\n<\/ul>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0646\u0635\u0628 Prosody \u06a9\u0627\u0645\u0644 \u0634\u062f. \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u062f\u0648 \u06af\u0648\u0627\u0647\u06cc TLS \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u06a9\u0647 Prosody \u0628\u0631\u0627\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0634\u0645\u0627 \u0647\u0646\u06af\u0627\u0645 \u0639\u0628\u0648\u0631 \u0627\u0632 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u062f \u06a9\u0631\u062f.<\/p>\n<div><\/div>\n<hr class=\"border-[#EBEBEB] dark:border-[#EBEBEB]\/16\" \/>\n<h3 class=\"svelte-4sys19\" dir=\"auto\">\u0645\u0631\u062d\u0644\u0647 \u06f2 \u2014 \u062f\u0631\u06cc\u0627\u0641\u062a \u06af\u0648\u0627\u0647\u06cc\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc TLS<\/h3>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u067e\u0631\u0648\u0632\u0648\u062f\u06cc \u0627\u0632 \u06af\u0648\u0627\u0647\u06cc\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc TLS \u0628\u0631\u0627\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u06cc\u0646 \u0633\u0631\u0648\u0631 \u0648 \u06a9\u0644\u0627\u06cc\u0646\u062a\u200c\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627 \u0647\u0645\u0627\u0646 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0647\u0646\u06af\u0627\u0645 \u0628\u0627\u0632\u062f\u06cc\u062f \u0627\u0632 \u0648\u0628\u200c\u0633\u0627\u06cc\u062a\u200c\u0647\u0627\u06cc \u0628\u0627 \u0622\u062f\u0631\u0633 HTTPS \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u0633\u0627\u0632\u0645\u0627\u0646 Let&#8217;s Encrypt \u06af\u0648\u0627\u0647\u06cc\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc TLS \u0631\u0627\u06cc\u06af\u0627\u0646 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u0648 \u0627\u0628\u0632\u0627\u0631 <code class=\"cursor-pointer codespan\">certbot<\/code> \u0631\u0627 \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0622\u0646\u200c\u0647\u0627 \u0641\u0631\u0627\u0647\u0645 \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u0627\u0628\u0632\u0627\u0631 certbot \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0631\u062f\u0647 \u0648 \u0627\u0632 \u0622\u0646 \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u06cc\u06a9 \u062c\u0641\u062a \u06af\u0648\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u062f\u0648 \u0632\u06cc\u0631\u062f\u0627\u0645\u0646\u0647 \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0627\u0628\u062a\u062f\u0627 certbot \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f (\u062f\u0631 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 24.04 \u0627\u06cc\u0646 \u067e\u06a9\u06cc\u062c \u062f\u0631 \u0645\u062e\u0627\u0632\u0646 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0645\u0648\u062c\u0648\u062f \u0627\u0633\u062a):<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1505\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c8p \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">sudo apt install certbot<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-59\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0633\u067e\u0633\u060c \u0627\u062c\u0627\u0632\u0647 \u0639\u0628\u0648\u0631 \u062a\u0631\u0627\u0641\u06cc\u06a9 HTTP \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0641\u0627\u06cc\u0631\u0648\u0627\u0644 UFW \u0631\u0627 \u0628\u062f\u0647\u06cc\u062f \u062a\u0627 certbot \u0628\u062a\u0648\u0627\u0646\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06af\u0648\u0627\u0647\u06cc \u0634\u0645\u0627 \u0631\u0627 \u062a\u0627\u06cc\u06cc\u062f \u06a9\u0646\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1507\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c8q \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">sudo ufw allow http<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-63\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062f\u0633\u062a\u0648\u0631 certbot \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u06af\u0648\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u06cc\u06a9\u06cc \u0627\u0632 \u0632\u06cc\u0631\u062f\u0627\u0645\u0646\u0647\u200c\u0647\u0627\u06cc \u0634\u0645\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0634\u0648\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1509\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c8r \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">sudo certbot certonly &#8211;standalone &#8211;agree-tos &#8211;email your_email -d chat.your-domain<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-67\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647:<\/p>\n<ul dir=\"auto\">\n<li class=\"text-start\"><code class=\"cursor-pointer codespan\">--certonly<\/code>: \u0641\u0642\u0637 \u06af\u0648\u0627\u0647\u06cc \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646 \u0648 \u0647\u06cc\u0686 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u06cc\u06af\u0631\u06cc \u062f\u0631 \u0633\u0631\u0648\u0631 \u0627\u06cc\u062c\u0627\u062f \u0646\u06a9\u0646.<\/li>\n<li class=\"text-start\"><code class=\"cursor-pointer codespan\">--standalone<\/code>: \u06cc\u06a9 \u0648\u0628\u200c\u0633\u0631\u0648\u0631 \u0645\u0648\u0642\u062a \u0628\u0631\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u06af\u0648\u0627\u0647\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646.<\/li>\n<li class=\"text-start\"><code class=\"cursor-pointer codespan\">--agree-tos<\/code>: \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u0627 \u0634\u0631\u0627\u06cc\u0637 \u062e\u062f\u0645\u0627\u062a Let&#8217;s Encrypt \u0645\u0648\u0627\u0641\u0642\u062a \u06a9\u0646.<\/li>\n<li class=\"text-start\"><code class=\"cursor-pointer codespan\">--email your_email<\/code>: \u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644\u06cc \u06a9\u0647 \u0628\u0647 Let&#8217;s Encrypt \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f \u062a\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0622\u0646 \u062f\u0631 \u0645\u0648\u0631\u062f \u0645\u0633\u0627\u0626\u0644 \u0627\u0645\u0646\u06cc\u062a\u06cc\u060c \u0627\u0646\u0642\u0636\u0627\u06cc \u06af\u0648\u0627\u0647\u06cc \u0648 &#8230; \u0628\u0647 \u0634\u0645\u0627 \u0627\u0637\u0644\u0627\u0639\u200c\u0631\u0633\u0627\u0646\u06cc \u0634\u0648\u062f. (\u0628\u0647 \u062c\u0627\u06cc <code class=\"cursor-pointer codespan\">your_email<\/code> \u0627\u06cc\u0645\u06cc\u0644 \u0648\u0627\u0642\u0639\u06cc \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f).<\/li>\n<li class=\"text-start\"><code class=\"cursor-pointer codespan\">-d chat.your-domain<\/code>: \u0646\u0627\u0645 \u062f\u0627\u0645\u0646\u0647\u200c\u0627\u06cc \u06a9\u0647 \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u062f \u0628\u0631\u0627\u06cc \u0633\u0631\u0648\u0631 Prosody \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0647\u0646\u06af\u0627\u0645 \u0627\u062c\u0631\u0627\u06cc \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631\u060c \u0627\u0632 \u0634\u0645\u0627 \u067e\u0631\u0633\u06cc\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u0645\u0627\u06cc\u0644\u06cc\u062f \u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 Electronic Frontier Foundation \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0628\u06af\u0630\u0627\u0631\u06cc\u062f \u06cc\u0627 \u062e\u06cc\u0631 (\u0627\u06cc\u0646 \u0628\u062e\u0634 \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u0627\u0633\u062a). \u0633\u067e\u0633 \u062b\u0628\u062a \u06af\u0648\u0627\u0647\u06cc \u0628\u0627 \u062e\u0631\u0648\u062c\u06cc \u0632\u06cc\u0631 \u0627\u062f\u0627\u0645\u0647 \u0645\u06cc\u200c\u06cc\u0627\u0628\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">text<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1511\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-text rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c8s \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">Output<\/div>\n<div class=\"cm-line\">Saving debug log to \/var\/log\/letsencrypt\/letsencrypt.log<\/div>\n<div class=\"cm-line\">Plugins selected: Authenticator standalone, Installer None<\/div>\n<div class=\"cm-line\">Obtaining a new certificate<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">IMPORTANT NOTES:<\/div>\n<div class=\"cm-line\">&#8211; Congratulations! Your certificate and chain have been saved at:<\/div>\n<div class=\"cm-line\">\/etc\/letsencrypt\/live\/chat.your-domain\/fullchain.pem<\/div>\n<div class=\"cm-line\">Your key file has been saved at:<\/div>\n<div class=\"cm-line\">\/etc\/letsencrypt\/live\/chat.your-domain\/privkey.pem<\/div>\n<div class=\"cm-line\">Your cert will expire on 2020-07-26. To obtain a new or tweaked<\/div>\n<div class=\"cm-line\">version of this certificate in the future, simply run certbot<\/div>\n<div class=\"cm-line\">again. To non-interactively renew *all* of your certificates, run<\/div>\n<div class=\"cm-line\">&#8220;certbot renew&#8221;<\/div>\n<div class=\"cm-line\">&#8230;<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-74\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0647\u0645\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0631\u0627 \u0645\u062c\u062f\u062f\u0627\u064b \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u06af\u0648\u0627\u0647\u06cc \u0632\u06cc\u0631\u062f\u0627\u0645\u0646\u0647 \u062f\u0648\u0645 \u062e\u0648\u062f \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1513\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c8t \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">sudo certbot certonly &#8211;standalone &#8211;agree-tos &#8211;email your_email -d room.your-domain<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-78\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0627\u06a9\u0646\u0648\u0646 \u062f\u0648 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u062f\u0631 \u0645\u0633\u06cc\u0631 \u0632\u06cc\u0631 \u062f\u0627\u0631\u06cc\u062f:<\/p>\n<ul dir=\"auto\">\n<li class=\"text-start\"><code class=\"cursor-pointer codespan\">\/etc\/letsencrypt\/live\/room.your-domain<\/code><\/li>\n<li class=\"text-start\"><code class=\"cursor-pointer codespan\">\/etc\/letsencrypt\/live\/chat.your-domain<\/code><\/li>\n<\/ul>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0627\u06cc\u0646 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc\u200c\u0647\u0627 \u062d\u0627\u0648\u06cc \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u06af\u0648\u0627\u0647\u06cc \u0648 \u06a9\u0644\u06cc\u062f \u0628\u0631\u0627\u06cc \u062f\u0627\u0645\u0646\u0647\u200c\u0647\u0627\u06cc \u0634\u0645\u0627 \u0647\u0633\u062a\u0646\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0633\u0631\u0648\u0631 Prosody \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u06a9\u0627\u0631\u0628\u0631 root \u0627\u062c\u0631\u0627 \u0646\u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0645\u0627\u0644\u06a9\u06cc\u062a \u0648 \u0645\u062c\u0648\u0632\u0647\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc (Permissions) \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc\u200c\u0647\u0627 \u0648 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u06a9\u0644\u06cc\u062f \u0628\u0627\u06cc\u062f \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0646\u0646\u062f \u062a\u0627 \u0633\u0631\u0648\u0631 Prosody \u0628\u062a\u0648\u0627\u0646\u062f \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0628\u062e\u0648\u0627\u0646\u062f \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0627\u0648\u0644\u06cc\u0646 \u0642\u062f\u0645\u060c \u062a\u063a\u06cc\u06cc\u0631 \u06af\u0631\u0648\u0647 \u0645\u0627\u0644\u06a9 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u062e\u0635\u0648\u0635\u06cc \u0628\u0647 \u06af\u0631\u0648\u0647 <code class=\"cursor-pointer codespan\">prosody<\/code> \u0627\u0633\u062a:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1515\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c8u \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">sudo chgrp prosody \/etc\/letsencrypt\/live\/room.your-domain\/privkey.pem<\/div>\n<div class=\"cm-line\">sudo chgrp prosody \/etc\/letsencrypt\/live\/chat.your-domain\/privkey.pem<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-89\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0633\u067e\u0633\u060c \u0645\u062c\u0648\u0632\u0647\u0627\u06cc \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062d\u0627\u0648\u06cc \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u06af\u0648\u0627\u0647\u06cc TLS \u0647\u0633\u062a\u0646\u062f \u0631\u0627 \u0628\u0647 <code class=\"cursor-pointer codespan\">0755<\/code> \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1517\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c8v \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">sudo chmod 0755 \/etc\/letsencrypt\/archive<\/div>\n<div class=\"cm-line\">sudo chmod 0755 \/etc\/letsencrypt\/live<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-93\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0627\u06a9\u0646\u0648\u0646\u060c \u0645\u062c\u0648\u0632\u0647\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u062e\u0635\u0648\u0635\u06cc TLS \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1519\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c8w \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">sudo chmod 0640 \/etc\/letsencrypt\/live\/room.your-domain\/privkey.pem<\/div>\n<div class=\"cm-line\">sudo chmod 0640 \/etc\/letsencrypt\/live\/chat.your-domain\/privkey.pem<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-97\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0645\u062c\u0648\u0632 <code class=\"cursor-pointer codespan\">0640<\/code> \u0631\u0648\u06cc \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u0627\u0633\u062a \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631 root \u062f\u0633\u062a\u0631\u0633\u06cc \u062e\u0648\u0627\u0646\u062f\u0646 \u0648 \u0646\u0648\u0634\u062a\u0646 \u062f\u0627\u0631\u062f. \u0627\u0639\u0636\u0627\u06cc \u06af\u0631\u0648\u0647 <code class=\"cursor-pointer codespan\">prosody<\/code> (\u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0627\u062c\u0631\u0627\u06cc \u0633\u0631\u0648\u0631 Prosody \u062f\u0631 \u0622\u0646 \u0639\u0636\u0648 \u0627\u0633\u062a) \u062f\u0633\u062a\u0631\u0633\u06cc \u062e\u0648\u0627\u0646\u062f\u0646 \u062f\u0627\u0631\u0646\u062f \u0648 \u0633\u0627\u06cc\u0631 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0633\u06cc\u0633\u062a\u0645 \u0647\u06cc\u0686 \u062f\u0633\u062a\u0631\u0633\u06cc\u200c\u0627\u06cc \u0628\u0647 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0646\u062f\u0627\u0631\u0646\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 <code class=\"cursor-pointer codespan\">cat<\/code> \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u06a9\u0627\u0631\u0628\u0631 prosody \u062a\u0633\u062a \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u0633\u0631\u0648\u0631 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u06a9\u0644\u06cc\u062f \u062e\u0635\u0648\u0635\u06cc \u0631\u0627 \u0628\u062e\u0648\u0627\u0646\u062f \u06cc\u0627 \u062e\u06cc\u0631:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1521\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c8x \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">sudo -u prosody cat \/etc\/letsencrypt\/live\/chat.your-domain\/privkey.pem<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-103\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0627\u06af\u0631 \u0645\u0648\u0641\u0642\u06cc\u062a\u200c\u0622\u0645\u06cc\u0632 \u0628\u0627\u0634\u062f\u060c \u0645\u062d\u062a\u0648\u0627\u06cc \u0641\u0627\u06cc\u0644 \u06a9\u0644\u06cc\u062f \u0631\u0648\u06cc \u0635\u0641\u062d\u0647 \u0646\u0645\u0627\u06cc\u0634 \u0634\u0645\u0627 \u0638\u0627\u0647\u0631 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u067e\u0631\u0648\u0632\u0648\u062f\u06cc \u0628\u0631\u0627\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0627\u0631\u062a\u0628\u0627\u0637\u0627\u062a \u0622\u067e\u0644\u0648\u062f \u0648 \u062f\u0627\u0646\u0644\u0648\u062f \u0641\u0627\u06cc\u0644\u060c \u0628\u0647 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0648\u0627\u062d\u062f \u0634\u0627\u0645\u0644 \u06af\u0648\u0627\u0647\u06cc \u0648 \u06a9\u0644\u06cc\u062f \u062e\u0635\u0648\u0635\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f. \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u062a\u0648\u0633\u0637 certbot \u0627\u06cc\u062c\u0627\u062f \u0646\u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0627\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0628\u0633\u0627\u0632\u06cc\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0627\u0628\u062a\u062f\u0627 \u0628\u0647 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u06a9\u0647 \u062d\u0627\u0648\u06cc \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u06a9\u0644\u06cc\u062f \u0648 \u06af\u0648\u0627\u0647\u06cc \u0627\u0633\u062a \u0628\u0631\u0648\u06cc\u062f \u0648 \u0633\u067e\u0633 \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 <code class=\"cursor-pointer codespan\">cat<\/code> \u0645\u062d\u062a\u0648\u0627\u06cc \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u062c\u062f\u06cc\u062f \u0628\u0647 \u0646\u0627\u0645 <code class=\"cursor-pointer codespan\">key-and-cert.pem<\/code> \u062a\u0631\u06a9\u06cc\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1523\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c8y \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">cd \/etc\/letsencrypt\/live\/chat.your-domain\/<\/div>\n<div class=\"cm-line\">sudo sh -c &#8216;cat privkey.pem fullchain.pem &gt;key-and-cert.pem&#8217;<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-111\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0628\u062e\u0634 \u0627\u0628\u062a\u062f\u0627\u06cc\u06cc \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 (<code class=\"cursor-pointer codespan\">sudo sh -c<\/code>) \u06cc\u06a9 \u0632\u06cc\u0631\u0634\u0644 (sub-shell) \u0628\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc \u06a9\u0627\u0631\u0628\u0631 root \u0628\u0627\u0632 \u0645\u06cc\u200c\u06a9\u0646\u062f \u062a\u0627 \u0628\u062a\u0648\u0627\u0646\u062f \u0641\u0627\u06cc\u0644 \u062c\u062f\u06cc\u062f \u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0633\u06cc\u0631 \u0628\u0646\u0648\u06cc\u0633\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0627\u06a9\u0646\u0648\u0646 \u06af\u0631\u0648\u0647 \u0648 \u0645\u062c\u0648\u0632\u0647\u0627\u06cc \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u062c\u062f\u06cc\u062f \u0631\u0627 \u0628\u0627 \u06af\u0631\u0648\u0647 \u0648 \u0645\u062c\u0648\u0632\u06cc \u06a9\u0647 \u0628\u0631\u0627\u06cc \u06a9\u0644\u06cc\u062f \u062e\u0635\u0648\u0635\u06cc \u0642\u0628\u0644\u06cc \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0631\u062f\u06cc\u062f \u0645\u0637\u0627\u0628\u0642\u062a \u062f\u0647\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1525\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c8z \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">sudo chmod 0640 key-and-cert.pem<\/div>\n<div class=\"cm-line\">sudo chgrp prosody key-and-cert.pem<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-117\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0628\u0647 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u062e\u0627\u0646\u0647 \u06a9\u0627\u0631\u0628\u0631 \u062e\u0648\u062f \u0628\u0631\u06af\u0631\u062f\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1527\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c90 \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">cd<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-121\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u062f \u0647\u0631 \u0628\u0627\u0631 \u06a9\u0647 \u06af\u0648\u0627\u0647\u06cc \u062a\u0645\u062f\u06cc\u062f \u0645\u06cc\u200c\u0634\u0648\u062f \u0628\u0627\u0632\u0633\u0627\u0632\u06cc \u06af\u0631\u062f\u062f \u062a\u0627 \u0627\u0632 \u06af\u0648\u0627\u0647\u06cc \u0645\u0646\u0642\u0636\u06cc\u200c\u0634\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0634\u0648\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0627\u0628\u0632\u0627\u0631 certbot \u062f\u0627\u0631\u0627\u06cc \u0642\u0627\u0628\u0644\u06cc\u062a\u06cc \u0628\u0647 \u0646\u0627\u0645 &#8220;hook&#8221; (\u0642\u0644\u0627\u0628) \u0627\u0633\u062a \u06a9\u0647 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u0642\u0628\u0644 \u06cc\u0627 \u0628\u0639\u062f \u0627\u0632 \u062a\u0645\u062f\u06cc\u062f \u06af\u0648\u0627\u0647\u06cc\u060c \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u062c\u0631\u0627 \u0634\u0648\u062f. \u0634\u0645\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0645\u06a9\u0627\u0646\u06cc\u0632\u0645 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0641\u0627\u06cc\u0644 \u062a\u0631\u06a9\u06cc\u0628\u06cc \u0634\u0645\u0627 \u0631\u0627 \u067e\u0633 \u0627\u0632 \u0647\u0631 \u062a\u0645\u062f\u06cc\u062f \u0628\u0627\u0632\u0633\u0627\u0632\u06cc \u06a9\u0646\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0641\u0627\u06cc\u0644 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062c\u062f\u06cc\u062f\u06cc \u0628\u0647 \u0646\u0627\u0645 <code class=\"cursor-pointer codespan\">\/etc\/letsencrypt\/renewal-hooks\/post\/key-and-cert-combiner.sh<\/code> \u0628\u0627 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u0645\u062a\u0646 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1529\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c91 \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">sudo nano \/etc\/letsencrypt\/renewal-hooks\/post\/key-and-cert-combiner.sh<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-129\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0633\u067e\u0633 \u06a9\u062f\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u0622\u0646 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f:<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\"><strong>\/etc\/letsencrypt\/renewal-hooks\/post\/key-and-cert-combiner.sh<\/strong><\/p>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1531\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c92 \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">#!\/usr\/bin\/env bash<\/div>\n<div class=\"cm-line\">set -e<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\"># combines the certificate and key into a single file with cat<\/div>\n<div class=\"cm-line\">cat \/etc\/letsencrypt\/live\/chat.your-domain\/privkey.pem \\<\/div>\n<div class=\"cm-line\">\/etc\/letsencrypt\/live\/chat.your-domain\/fullchain.pem \\<\/div>\n<div class=\"cm-line\">&gt;\/etc\/letsencrypt\/live\/chat.your-domain\/key-and-cert.pem<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-134\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062a\u0648\u0636\u06cc\u062d \u0628\u062e\u0634\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0627\u06cc\u0646 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a Bash:<\/p>\n<ul dir=\"auto\">\n<li class=\"text-start\"><code class=\"cursor-pointer codespan\">#!\/usr\/bin\/env bash<\/code>: \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f \u06a9\u0647 \u0627\u0632 \u0645\u0641\u0633\u0631 Bash \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f.<\/li>\n<li class=\"text-start\"><code class=\"cursor-pointer codespan\">set -e<\/code>: \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u0647\u0631 \u06cc\u06a9 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0628\u0627 \u062e\u0637\u0627 \u0645\u0648\u0627\u062c\u0647 \u0634\u062f\u060c \u0645\u062a\u0648\u0642\u0641 \u0634\u0648\u062f.<\/li>\n<li class=\"text-start\"><code class=\"cursor-pointer codespan\">&gt;<\/code>: \u062e\u0631\u0648\u062c\u06cc \u062f\u0633\u062a\u0648\u0631 cat \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u062c\u062f\u06cc\u062f\u06cc \u062f\u0631 \u0633\u0645\u062a \u0631\u0627\u0633\u062a \u0647\u062f\u0627\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<\/ul>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0645\u062c\u0648\u0632 \u0627\u062c\u0631\u0627 \u0628\u0647 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0646\u062f\u0647\u06cc\u062f\u060c \u0642\u0627\u0628\u0644 \u0627\u062c\u0631\u0627 \u0646\u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1533\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c93 \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">sudo chmod +x \/etc\/letsencrypt\/renewal-hooks\/post\/key-and-cert-combiner.sh<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-141\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0633\u067e\u0633\u060c \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631 certbot \u0632\u06cc\u0631 \u062a\u0633\u062a \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627 \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u0646\u0635\u0628 \u0634\u062f\u0647\u200c\u0627\u0646\u062f \u0648 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u067e\u0633 \u0627\u0632 \u062a\u0645\u062f\u06cc\u062f (hook) \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06cc\u0627 \u062e\u06cc\u0631:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1535\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c94 \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">sudo certbot renew &#8211;dry-run<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-145\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0628\u0647 certbot \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f \u06a9\u0647 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627 \u0631\u0627 \u062a\u0645\u062f\u06cc\u062f \u06a9\u0646\u062f \u0627\u0645\u0627 \u0628\u0627 \u06af\u0632\u06cc\u0646\u0647 <code class=\"cursor-pointer codespan\">--dry-run<\/code> \u0627\u0632 \u0627\u06cc\u062c\u0627\u062f \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0648\u0627\u0642\u0639\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f. \u062f\u0631 \u0635\u0648\u0631\u062a \u0645\u0648\u0641\u0642\u06cc\u062a\u060c \u062e\u0631\u0648\u062c\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">text<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1537\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-text rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c95 \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">Output<\/div>\n<div class=\"cm-line\">Congratulations, all renewals succeeded. The following certs have been renewed:<\/div>\n<div class=\"cm-line\">\/etc\/letsencrypt\/live\/chat.your-domain\/fullchain.pem (success)<\/div>\n<div class=\"cm-line\">\/etc\/letsencrypt\/live\/room.your-domain\/fullchain.pem (success)<\/div>\n<div class=\"cm-line\">** DRY RUN: simulating &#8216;certbot renew&#8217; close to cert expiry<\/div>\n<div class=\"cm-line\">** (The test certificates above have not been saved.)<\/div>\n<div class=\"cm-line\">&#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211;<\/div>\n<div class=\"cm-line\">Running post-hook command: \/etc\/letsencrypt\/renewal-hooks\/post\/key-and-cert-combiner.sh<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-149\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0627\u06a9\u0646\u0648\u0646 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc TLS \u0631\u0627 \u0628\u0631\u0627\u06cc \u0633\u0631\u0648\u0631 Prosody \u062e\u0648\u062f \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f. \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0627\u0635\u0644\u06cc Prosody \u0631\u0627 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f.<\/p>\n<div><\/div>\n<hr class=\"border-[#EBEBEB] dark:border-[#EBEBEB]\/16\" \/>\n<h3 class=\"svelte-4sys19\" dir=\"auto\">\u0645\u0631\u062d\u0644\u0647 \u06f3 \u2014 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Prosody<\/h3>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u067e\u0631\u0648\u0632\u0648\u062f\u06cc \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0632\u06cc\u0627\u062f\u06cc \u062f\u0627\u0631\u062f \u0648 \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u062f\u0631 \u062d\u062c\u0645 \u0628\u0627\u0644\u0627\u06cc \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0627\u0635\u0644\u06cc <code class=\"cursor-pointer codespan\">\/etc\/prosody\/prosody.cfg.lua<\/code> \u0645\u0634\u0647\u0648\u062f \u0627\u0633\u062a. \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0647\u062a\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634\u060c \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0627\u0632 \u0627\u0628\u062a\u062f\u0627 \u062a\u0627 \u0627\u0646\u062a\u0647\u0627 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u067e\u06cc\u0634 \u0627\u0632 \u0634\u0631\u0648\u0639 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0628\u0632\u0631\u06af\u060c \u0647\u0645\u06cc\u0634\u0647 \u062e\u0648\u0628 \u0627\u0633\u062a \u06cc\u06a9 \u06a9\u067e\u06cc \u0627\u0632 \u0622\u0646 \u0628\u06af\u06cc\u0631\u06cc\u062f \u062a\u0627 \u062f\u0631 \u0635\u0648\u0631\u062a \u0646\u06cc\u0627\u0632 \u0628\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0646\u0633\u062e\u0647 \u0627\u0635\u0644\u06cc \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1539\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c96 \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">sudo cp \/etc\/prosody\/prosody.cfg.lua \/etc\/prosody\/prosody.cfg.lua.original<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-159\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0633\u067e\u0633 \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1541\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c97 \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">sudo nano \/etc\/prosody\/prosody.cfg.lua<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-163\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062f\u0631 \u0628\u062e\u0634\u200c\u0647\u0627\u06cc \u06a9\u0648\u0686\u06a9\u200c\u062a\u0631\u06cc \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\"><strong>\u0627\u06cc\u062c\u0627\u062f \u0645\u062f\u06cc\u0631 (Administrator)<\/strong> \u0645\u062f\u06cc\u0631\u0627\u0646 Prosody \u06a9\u0627\u0631\u0628\u0631\u0627\u0646\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0632 \u0637\u0631\u06cc\u0642 \u06a9\u0644\u0627\u06cc\u0646\u062a \u0686\u062a \u062e\u0648\u062f \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a\u06cc \u062f\u0631 \u0633\u0631\u0648\u0631 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u0646\u062f\u060c \u0628\u0647 \u0647\u0645\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u067e\u06cc\u0627\u0645 \u0628\u062f\u0647\u0646\u062f \u0648 \u0633\u0627\u06cc\u0631 \u0627\u0642\u062f\u0627\u0645\u0627\u062a \u0645\u0645\u062a\u0627\u0632 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u0646\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0645\u062f\u06cc\u0631\u0627\u0646 \u0628\u0627 \u062e\u0637 \u0632\u06cc\u0631 \u062f\u0631 \u0641\u0627\u06cc\u0644 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">lua<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1543\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-lua rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c98 \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">&#8230;<\/div>\n<div class=\"cm-line\">admins = { }<\/div>\n<div class=\"cm-line\">&#8230;<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-171\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644\u060c \u06a9\u0627\u0631\u0628\u0631 <code class=\"cursor-pointer codespan\">admin<\/code> \u0628\u0647 \u0633\u0631\u0648\u0631 \u0646\u0645\u0648\u0646\u0647 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">lua<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1545\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-lua rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c99 \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">&#8230;<\/div>\n<div class=\"cm-line\">admins = { &#8220;admin@chat.your-domain&#8221; }<\/div>\n<div class=\"cm-line\">&#8230;<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-175\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0648\u062f\u0646 \u06a9\u0627\u0631\u0628\u0631 \u062f\u06cc\u06af\u0631\u060c \u0628\u0627\u06cc\u062f \u0628\u0639\u062f \u0627\u0632 \u06a9\u0627\u0631\u0628\u0631 \u0627\u0648\u0644 \u06a9\u0627\u0645\u0627 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">lua<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1547\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-lua rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c9a \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">&#8230;<\/div>\n<div class=\"cm-line\">admins = { &#8220;admin@chat.your-domain&#8221;, &#8220;sammy@chat.your-domain&#8221; }<\/div>\n<div class=\"cm-line\">&#8230;<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-179\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\"><strong>\u0641\u0639\u0627\u0644\u200c\u0633\u0627\u0632\u06cc \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc Prosody<\/strong> \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u06af\u0627\u0646 Prosody \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0642\u0627\u0644\u0628 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc\u06cc \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0647\u200c\u0627\u0646\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0641\u0639\u0627\u0644 \u06cc\u0627 \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u0634\u0648\u0646\u062f. \u06cc\u06a9 \u0645\u0627\u0698\u0648\u0644 \u0628\u0627 \u062d\u0630\u0641 \u0639\u0644\u0627\u0645\u062a <code class=\"cursor-pointer codespan\">--<\/code> (\u06a9\u0647 \u062f\u0631 \u0632\u0628\u0627\u0646 Lua \u0646\u0634\u0627\u0646\u200c\u062f\u0647\u0646\u062f\u0647 \u06a9\u0627\u0645\u0646\u062a \u0627\u0633\u062a) \u062f\u0631 \u0627\u0628\u062a\u062f\u0627\u06cc \u0622\u0646 \u0641\u0639\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0628\u062e\u0634 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc \u0648\u06cc\u0631\u0627\u06cc\u0634\u200c\u0634\u062f\u0647 \u062f\u0631 \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0627\u0633\u062a (\u062e\u0637\u0648\u0637\u06cc \u06a9\u0647 \u0627\u0632 \u062d\u0627\u0644\u062a \u06a9\u0627\u0645\u0646\u062a \u062e\u0627\u0631\u062c \u0634\u062f\u0647\u200c\u0627\u0646\u062f):<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">lua<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1549\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-lua rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c9b \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">&#8230;<\/div>\n<div class=\"cm-line\">modules_enabled = {<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">&#8212; Generally required<\/div>\n<div class=\"cm-line\">&#8220;roster&#8221;; &#8212; Allow users to have a roster. Recommended \ud83d\ude09<\/div>\n<div class=\"cm-line\">&#8220;saslauth&#8221;; &#8212; Authentication for clients and servers. Recommended if you want to log in.<\/div>\n<div class=\"cm-line\">&#8220;tls&#8221;; &#8212; Add support for secure TLS on c2s\/s2s connections<\/div>\n<div class=\"cm-line\">&#8220;dialback&#8221;; &#8212; s2s dialback support<\/div>\n<div class=\"cm-line\">&#8220;disco&#8221;; &#8212; Service discovery<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">&#8212; Not essential, but recommended<\/div>\n<div class=\"cm-line\">&#8220;carbons&#8221;; &#8212; Keep multiple clients in sync<\/div>\n<div class=\"cm-line\">&#8220;pep&#8221;; &#8212; Enables users to publish their avatar, mood, activity, playing music and more<\/div>\n<div class=\"cm-line\">&#8220;private&#8221;; &#8212; Private XML storage (for room bookmarks, etc.)<\/div>\n<div class=\"cm-line\">&#8220;blocklist&#8221;; &#8212; Allow users to block communications with other users<\/div>\n<div class=\"cm-line\">&#8220;vcard4&#8221;; &#8212; User profiles (stored in PEP)<\/div>\n<div class=\"cm-line\">&#8220;vcard_legacy&#8221;; &#8212; Conversion between legacy vCard and PEP Avatar, vcard<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">&#8212; Nice to have<\/div>\n<div class=\"cm-line\">&#8220;version&#8221;; &#8212; Replies to server version requests<\/div>\n<div class=\"cm-line\">&#8220;uptime&#8221;; &#8212; Report how long server has been running<\/div>\n<div class=\"cm-line\">&#8220;time&#8221;; &#8212; Let others know the time here on this server<\/div>\n<div class=\"cm-line\">&#8220;ping&#8221;; &#8212; Replies to XMPP pings with pongs<\/div>\n<div class=\"cm-line\">&#8220;register&#8221;; &#8212; Allow users to register on this server using a client and change passwords<\/div>\n<div class=\"cm-line\">&#8220;mam&#8221;; &#8212; Store messages in an archive and allow users to access it<\/div>\n<div class=\"cm-line\">&#8220;csi_simple&#8221;; &#8212; Simple Mobile optimizations<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">&#8212; Admin interfaces<\/div>\n<div class=\"cm-line\">&#8220;admin_adhoc&#8221;; &#8212; Allows administration via an XMPP client that supports ad-hoc commands<\/div>\n<div class=\"cm-line\">&#8211;&#8220;admin_telnet&#8221;; &#8212; Opens telnet console interface on localhost port 5582<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">&#8212; HTTP modules<\/div>\n<div class=\"cm-line\">&#8211;&#8220;bosh&#8221;; &#8212; Enable BOSH clients, aka &#8220;Jabber over HTTP&#8221;<\/div>\n<div class=\"cm-line\">&#8211;&#8220;websocket&#8221;; &#8212; XMPP over WebSockets<\/div>\n<div class=\"cm-line\">&#8220;http_files&#8221;; &#8212; Serve static files from a directory over HTTP<\/div>\n<div class=\"cm-line\">&#8220;http_upload&#8221;; &#8212; Enables file sharing between users<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">&#8212; Other specific functionality<\/div>\n<div class=\"cm-line\">&#8211;&#8220;limits&#8221;; &#8212; Enable bandwidth limiting for XMPP connections<\/div>\n<div class=\"cm-line\">&#8220;groups&#8221;; &#8212; Shared roster support<\/div>\n<div class=\"cm-line\">&#8211;&#8220;server_contact_info&#8221;; &#8212; Publish contact information for this service<\/div>\n<div class=\"cm-line\">&#8220;announce&#8221;; &#8212; Send announcement to all online users<\/div>\n<div class=\"cm-line\">&#8211;&#8220;welcome&#8221;; &#8212; Welcome users who register accounts<\/div>\n<div class=\"cm-line\">&#8211;&#8220;watchregistrations&#8221;; &#8212; Alert admins of registrations<\/div>\n<div class=\"cm-line\">&#8211;&#8220;motd&#8221;; &#8212; Send a message to users when they log in<\/div>\n<div class=\"cm-line\">&#8211;&#8220;legacyauth&#8221;; &#8212; Legacy authentication. Only used by some old clients and bots.<\/div>\n<div class=\"cm-line\">&#8211;&#8220;proxy65&#8221;; &#8212; Enables a file transfer proxy service which clients behind NAT can use<\/div>\n<div class=\"cm-line\">}<\/div>\n<div class=\"cm-line\">&#8230;<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-185\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f \u0639\u0628\u0627\u0631\u062a\u0646\u062f \u0627\u0632:<\/p>\n<ul dir=\"auto\">\n<li class=\"text-start\"><code class=\"cursor-pointer codespan\">mam<\/code>: \u067e\u06cc\u0627\u0645\u200c\u0647\u0627\u06cc \u0686\u062a \u0631\u0627 \u062f\u0631 \u0633\u0631\u0648\u0631 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f \u062a\u0627 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0639\u062f\u0627\u064b \u0628\u0647 \u0622\u0646\u200c\u0647\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0646\u0646\u062f.<\/li>\n<li class=\"text-start\"><code class=\"cursor-pointer codespan\">csi_simple<\/code>: \u0628\u0647\u06cc\u0646\u0647\u200c\u0633\u0627\u0632\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u06a9\u0644\u0627\u06cc\u0646\u062a\u200c\u0647\u0627\u06cc \u0645\u0648\u0628\u0627\u06cc\u0644 \u0641\u0639\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li class=\"text-start\"><code class=\"cursor-pointer codespan\">http_files<\/code>: \u0627\u0634\u062a\u0631\u0627\u06a9\u200c\u06af\u0630\u0627\u0631\u06cc \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0641\u0639\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li class=\"text-start\"><code class=\"cursor-pointer codespan\">http_upload<\/code>: \u0627\u0645\u06a9\u0627\u0646 \u0622\u067e\u0644\u0648\u062f \u0641\u0627\u06cc\u0644 \u0628\u0631\u0627\u06cc \u0627\u0634\u062a\u0631\u0627\u06a9\u200c\u06af\u0630\u0627\u0631\u06cc \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li class=\"text-start\"><code class=\"cursor-pointer codespan\">groups<\/code>: \u0642\u0627\u0628\u0644\u06cc\u062a \u062f\u06cc\u062f \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062a\u0648\u0633\u0637 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li class=\"text-start\"><code class=\"cursor-pointer codespan\">announce<\/code>: \u0628\u0647 \u0645\u062f\u06cc\u0631\u0627\u0646 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u0628\u0647 \u0647\u0645\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0622\u0646\u0644\u0627\u06cc\u0646 \u067e\u06cc\u0627\u0645 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u0646\u062f.<\/li>\n<\/ul>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\"><strong>\u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633<\/strong> \u0628\u062e\u0634 \u0628\u0639\u062f\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f\u060c \u0645\u062d\u0644 \u0630\u062e\u06cc\u0631\u0647 \u067e\u06cc\u0627\u0645\u200c\u0647\u0627 \u0648 \u0633\u0627\u06cc\u0631 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0627 \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u062a\u0646\u0638\u06cc\u0645 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0645\u062a\u0646\u06cc \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u06cc\u06a9 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u0642\u06cc\u0627\u0633\u200c\u067e\u0630\u06cc\u0631\u062a\u0631\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0627\u0633\u062a. Prosody \u0627\u0632 MySQL\u060c PostgreSQL \u0648 SQLite \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f. SQLite \u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0648 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0633\u0627\u062f\u0647\u200c\u062a\u0631 \u0627\u0633\u062a \u0648 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631\u0647\u0627\u06cc \u06a9\u0648\u0686\u06a9 \u0645\u0646\u0627\u0633\u0628 \u0645\u06cc\u200c\u0628\u0627\u0634\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062f\u0648 \u062e\u0637 \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0627 \u062d\u0630\u0641 \u0639\u0644\u0627\u0645\u062a <code class=\"cursor-pointer codespan\">--<\/code> \u0627\u0632 \u0627\u0628\u062a\u062f\u0627\u06cc \u0622\u0646\u200c\u0647\u0627 \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">lua<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1551\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-lua rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c9c \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">&#8230;<\/div>\n<div class=\"cm-line\">storage = &#8220;sql&#8221; &#8212; Default is &#8220;internal&#8221;<\/div>\n<div class=\"cm-line\">&#8230;<\/div>\n<div class=\"cm-line\">sql = { driver = &#8220;SQLite3&#8221;, database = &#8220;prosody.sqlite&#8221; } &#8212; Default. &#8216;database&#8217; is the filename.<\/div>\n<div class=\"cm-line\">&#8230;<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-194\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\"><strong>\u0622\u0631\u0634\u06cc\u0648 \u067e\u06cc\u0627\u0645\u200c\u0647\u0627<\/strong> \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062a\u0639\u06cc\u06cc\u0646 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0633\u0631\u0648\u0631 \u067e\u06cc\u0627\u0645\u200c\u0647\u0627\u06cc \u0686\u062a \u0642\u062f\u06cc\u0645\u06cc \u0631\u0627 \u0686\u0642\u062f\u0631 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">lua<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1553\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-lua rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c9d \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">&#8230;<\/div>\n<div class=\"cm-line\">archive_expires_after = &#8220;1w&#8221; &#8212; Remove archived messages after 1 week<\/div>\n<div class=\"cm-line\">&#8230;<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-198\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062f\u0648\u0631\u0647 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 <code class=\"cursor-pointer codespan\">1w<\/code> (\u06cc\u06a9 \u0647\u0641\u062a\u0647) \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 <code class=\"cursor-pointer codespan\">d<\/code> \u0628\u0631\u0627\u06cc \u0631\u0648\u0632\u060c <code class=\"cursor-pointer codespan\">w<\/code> \u0628\u0631\u0627\u06cc \u0647\u0641\u062a\u0647 \u0648 <code class=\"cursor-pointer codespan\">y<\/code> \u0628\u0631\u0627\u06cc \u0633\u0627\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\"><strong>\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0622\u067e\u0644\u0648\u062f \u0648 \u062f\u0627\u0646\u0644\u0648\u062f \u0641\u0627\u06cc\u0644<\/strong> \u062e\u0637 <code class=\"cursor-pointer codespan\">https_certificate<\/code> \u0628\u0647 Prosody \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f \u06a9\u0647 \u06a9\u062c\u0627 \u0628\u0647 \u062f\u0646\u0628\u0627\u0644 \u0641\u0627\u06cc\u0644 \u062a\u0631\u06a9\u06cc\u0628\u06cc \u06af\u0648\u0627\u0647\u06cc \u0648 \u06a9\u0644\u06cc\u062f \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u0633\u0627\u062e\u062a\u06cc\u062f \u0628\u06af\u0631\u062f\u062f \u062a\u0627 \u0627\u0632 \u0622\u0646 \u0628\u0631\u0627\u06cc \u0627\u0646\u062a\u0642\u0627\u0644 \u0641\u0627\u06cc\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f. \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0645\u0633\u06cc\u0631 \u0641\u0627\u06cc\u0644 \u062a\u0631\u06a9\u06cc\u0628\u06cc \u062e\u0648\u062f \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">lua<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1555\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-lua rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c9e \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">&#8230;<\/div>\n<div class=\"cm-line\">https_certificate = &#8220;\/etc\/letsencrypt\/live\/chat.your-domain\/key-and-cert.pem&#8221;<\/div>\n<div class=\"cm-line\">&#8230;<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-204\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\"><strong>\u062d\u0630\u0641 localhost<\/strong> \u062f\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u067e\u06cc\u0634\u200c\u0641\u0631\u0636\u060c Prosody \u0631\u0648\u06cc <code class=\"cursor-pointer codespan\">localhost<\/code> \u06cc\u0627 <code class=\"cursor-pointer codespan\">127.0.0.1<\/code> \u0628\u0631\u0627\u06cc \u0627\u0631\u062a\u0628\u0627\u0637\u0627\u062a \u0686\u062a \u06af\u0648\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u0631\u0648\u06cc \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u0631\u06cc\u0645\u0648\u062a \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a. \u0627\u06cc\u0646 \u0631\u0641\u062a\u0627\u0631 \u0631\u0627 \u0628\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 <code class=\"cursor-pointer codespan\">--<\/code> \u0628\u0647 \u0627\u0628\u062a\u062f\u0627\u06cc \u062e\u0637 \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">lua<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1557\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-lua rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c9f \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">&#8230;<\/div>\n<div class=\"cm-line\">&#8211;VirtualHost &#8220;localhost&#8221;<\/div>\n<div class=\"cm-line\">&#8230;<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-208\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\"><strong>\u062a\u063a\u06cc\u06cc\u0631 \u062d\u062f\u0627\u06a9\u062b\u0631 \u062d\u062c\u0645 \u0622\u067e\u0644\u0648\u062f \u0641\u0627\u06cc\u0644<\/strong> \u0633\u0631\u0648\u0631 Prosody \u0634\u0645\u0627 \u0627\u0632 \u0627\u0634\u062a\u0631\u0627\u06a9\u200c\u06af\u0630\u0627\u0631\u06cc \u0641\u0627\u06cc\u0644 \u062a\u0648\u0633\u0637 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062f\u0631 \u067e\u0646\u062c\u0631\u0647 \u0686\u062a \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f. \u062d\u062f\u0627\u06a9\u062b\u0631 \u0627\u0646\u062f\u0627\u0632\u0647 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u06f1 \u0645\u06af\u0627\u0628\u0627\u06cc\u062a \u0627\u0633\u062a. \u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0627\u06cc\u0634 \u0622\u0646\u060c \u062e\u0637 \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0627\u0646\u062a\u0647\u0627\u06cc \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">lua<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1559\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-lua rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c9g \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">&#8230;<\/div>\n<div class=\"cm-line\">http_upload_file_size_limit = 10485760<\/div>\n<div class=\"cm-line\">&#8230;<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-212\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0639\u062f\u062f \u0627\u0646\u062a\u0647\u0627\u06cc \u062e\u0637\u060c \u062d\u062f\u0627\u06a9\u062b\u0631 \u062d\u062c\u0645 \u0641\u0627\u06cc\u0644 \u0628\u0647 \u0628\u0627\u06cc\u062a \u0627\u0633\u062a. \u0645\u0642\u062f\u0627\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0631\u0627\u0628\u0631 \u0628\u0627 \u06f1\u06f0 \u0645\u06af\u0627\u0628\u0627\u06cc\u062a (\u06f1\u06f0\u06f4\u06f8\u06f5\u06f7\u06f6\u06f0 \u0628\u0627\u06cc\u062a) \u0627\u0633\u062a. \u0627\u06af\u0631 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u0627\u062c\u0627\u0632\u0647 \u0622\u067e\u0644\u0648\u062f \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0628\u0632\u0631\u06af\u062a\u0631 \u0627\u0632 \u06f1\u06f0 \u0645\u06af\u0627\u0628\u0627\u06cc\u062a \u0631\u0627 \u0628\u062f\u0647\u06cc\u062f \u0628\u0627\u06cc\u062f \u062e\u0637 \u062f\u06cc\u06af\u0631\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u0645\u062a\u063a\u06cc\u0631 <code class=\"cursor-pointer codespan\">http_max_content_size<\/code> \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631 \u0628\u0627\u06cc\u062f \u0628\u0632\u0631\u06af\u062a\u0631 \u0627\u0632 \u062d\u062f\u0627\u06a9\u062b\u0631 \u062d\u062c\u0645 \u0622\u067e\u0644\u0648\u062f \u0641\u0627\u06cc\u0644 \u0628\u0627\u0634\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\"><strong>\u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0641\u0627\u06cc\u0644 \u06af\u0631\u0648\u0647\u200c\u0647\u0627<\/strong> \u0645\u0627\u0698\u0648\u0644 <code class=\"cursor-pointer codespan\">groups<\/code> \u06a9\u0647 \u062f\u0631 \u0628\u062e\u0634 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627 \u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u06cc\u062f\u060c \u0628\u0647 \u06a9\u0644\u0627\u06cc\u0646\u062a\u200c\u0647\u0627\u06cc \u0686\u062a \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0631\u0627 \u0628\u0628\u06cc\u0646\u0646\u062f. \u0627\u06cc\u0646 \u0645\u0627\u0698\u0648\u0644 \u0641\u0627\u06cc\u0644\u06cc \u0631\u0627 \u0645\u06cc\u200c\u062e\u0648\u0627\u0646\u062f \u06a9\u0647 \u0646\u0627\u0645 \u06af\u0631\u0648\u0647\u200c\u0647\u0627 \u0648 \u0627\u0639\u0636\u0627\u06cc \u0622\u0646\u200c\u0647\u0627 \u062f\u0631 \u0622\u0646 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f. \u0628\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u062e\u0637 \u0632\u06cc\u0631 \u0628\u0647 \u0627\u0646\u062a\u0647\u0627\u06cc \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc\u060c \u0645\u0633\u06cc\u0631 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0645\u0634\u062e\u0635 \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">lua<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1561\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-lua rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c9h \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">&#8230;<\/div>\n<div class=\"cm-line\">groups_file = &#8220;\/etc\/prosody\/sharedgroups.txt&#8221;<\/div>\n<div class=\"cm-line\">&#8230;<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-218\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u062f\u0631 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u062f\u06cc\u06af\u0631\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1563\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c9i \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">sudo touch \/etc\/prosody\/sharedgroups.txt<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-222\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\"><strong>\u0627\u0641\u0632\u0648\u062f\u0646 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a VirtualHost \u0633\u0631\u0648\u0631 \u0686\u062a<\/strong> \u067e\u0631\u0648\u0632\u0648\u062f\u06cc \u0627\u0632 \u0628\u0644\u0648\u06a9\u06cc \u06a9\u0647 \u0628\u0627 <code class=\"cursor-pointer codespan\">VirtualHost<\/code> \u0634\u0631\u0648\u0639 \u0645\u06cc\u200c\u0634\u0648\u062f \u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0633\u0631\u0648\u0631 \u0686\u062a \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0627\u0645\u0646\u0647 \u0634\u0645\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u0644\u0648\u06a9 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0627\u0646\u062a\u0647\u0627\u06cc \u0641\u0627\u06cc\u0644 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">lua<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1565\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-lua rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c9j \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">&#8230;<\/div>\n<div class=\"cm-line\">VirtualHost &#8220;chat.your-domain&#8221;<\/div>\n<div class=\"cm-line\">ssl = {<\/div>\n<div class=\"cm-line\">key = &#8220;\/etc\/letsencrypt\/live\/chat.your-domain\/privkey.pem&#8221;;<\/div>\n<div class=\"cm-line\">certificate = &#8220;\/etc\/letsencrypt\/live\/chat.your-domain\/fullchain.pem&#8221;;<\/div>\n<div class=\"cm-line\">}<\/div>\n<div class=\"cm-line\">&#8230;<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-226\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647:<\/p>\n<ul dir=\"auto\">\n<li class=\"text-start\"><code class=\"cursor-pointer codespan\">VirtualHost<\/code>: \u062f\u0627\u0645\u0646\u0647\u200c\u0627\u06cc \u06a9\u0647 Prosody \u0628\u0631\u0627\u06cc \u0633\u0631\u0648\u0631 \u0686\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li class=\"text-start\"><code class=\"cursor-pointer codespan\">key<\/code>: \u06a9\u0644\u06cc\u062f \u062e\u0635\u0648\u0635\u06cc TLS \u0628\u0631\u0627\u06cc \u0627\u0645\u0646\u200c\u0633\u0627\u0632\u06cc \u0627\u0631\u062a\u0628\u0627\u0637\u0627\u062a.<\/li>\n<li class=\"text-start\"><code class=\"cursor-pointer codespan\">certificate<\/code>: \u06af\u0648\u0627\u0647\u06cc TLS \u0628\u0631\u0627\u06cc \u0627\u0645\u0646\u200c\u0633\u0627\u0632\u06cc \u0627\u0631\u062a\u0628\u0627\u0637\u0627\u062a.<\/li>\n<\/ul>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\"><strong>\u0627\u0641\u0632\u0648\u062f\u0646 \u0633\u0631\u0648\u0631 \u0627\u062a\u0627\u0642 \u0686\u062a (\u0686\u062a \u06af\u0631\u0648\u0647\u06cc)<\/strong> \u0627\u06cc\u0646 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0628\u0647 Prosody \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u0627\u062a\u0627\u0642\u200c\u0647\u0627\u06cc \u0686\u062a \u0686\u0646\u062f\u06a9\u0627\u0631\u0628\u0631\u0647 (Multi-User Chat) \u0631\u0627 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u062f. \u0627\u06cc\u0646 \u0628\u0644\u0648\u06a9 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0628\u062e\u0634 \u062c\u062f\u06cc\u062f \u062f\u0631 \u0627\u0646\u062a\u0647\u0627\u06cc \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">lua<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1567\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-lua rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c9k \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">&#8230;<\/div>\n<div class=\"cm-line\">Component &#8220;room.your-domain&#8221; &#8220;muc&#8221;<\/div>\n<div class=\"cm-line\">modules_enabled = { &#8220;mam_muc&#8221;; }<\/div>\n<div class=\"cm-line\">storage = { muc_log = &#8220;sql&#8221;; }<\/div>\n<div class=\"cm-line\">ssl = {<\/div>\n<div class=\"cm-line\">key = &#8220;\/etc\/letsencrypt\/live\/room.your-domain\/privkey.pem&#8221;;<\/div>\n<div class=\"cm-line\">certificate = &#8220;\/etc\/letsencrypt\/live\/room.your-domain\/fullchain.pem&#8221;;<\/div>\n<div class=\"cm-line\">}<\/div>\n<div class=\"cm-line\">&#8230;<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-233\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647:<\/p>\n<ul dir=\"auto\">\n<li class=\"text-start\"><code class=\"cursor-pointer codespan\">Component<\/code>: \u0645\u0627\u0698\u0648\u0644 <code class=\"cursor-pointer codespan\">muc<\/code> (\u0686\u062a \u0686\u0646\u062f\u06a9\u0627\u0631\u0628\u0631\u0647) \u0631\u0627 \u0628\u0631\u0627\u06cc \u062f\u0627\u0645\u0646\u0647 <code class=\"cursor-pointer codespan\">room.your-domain<\/code> \u0641\u0639\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li class=\"text-start\"><code class=\"cursor-pointer codespan\">modules_enabled = { \"mam_muc\"; }<\/code>: \u0622\u0631\u0634\u06cc\u0648 \u06a9\u0631\u062f\u0646 \u067e\u06cc\u0627\u0645\u200c\u0647\u0627\u06cc \u0686\u062a \u06af\u0631\u0648\u0647\u06cc \u0631\u0627 \u0641\u0639\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li class=\"text-start\"><code class=\"cursor-pointer codespan\">storage<\/code>: \u067e\u06cc\u0627\u0645\u200c\u0647\u0627\u06cc \u0686\u062a \u0631\u0627 \u062f\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 SQLite \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li class=\"text-start\"><code class=\"cursor-pointer codespan\">key<\/code> \u0648 <code class=\"cursor-pointer codespan\">certificate<\/code>: \u06a9\u0644\u06cc\u062f \u0648 \u06af\u0648\u0627\u0647\u06cc TLS \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u062f\u0627\u0645\u0646\u0647.<\/li>\n<\/ul>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u0627\u0632 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0627\u06a9\u0646\u0648\u0646 \u0633\u0631\u0648\u06cc\u0633 Prosody \u0631\u0627 \u0631\u06cc\u200c\u0627\u0633\u062a\u0627\u0631\u062a \u06a9\u0646\u06cc\u062f \u062a\u0627 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062c\u062f\u06cc\u062f \u0627\u0639\u0645\u0627\u0644 \u0634\u0648\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1569\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c9l \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">sudo systemctl restart prosody.service<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-242\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<hr class=\"border-[#EBEBEB] dark:border-[#EBEBEB]\/16\" \/>\n<h3 class=\"svelte-4sys19\" dir=\"auto\">\u0645\u0631\u062d\u0644\u0647 \u06f4 \u2014 \u0627\u0641\u0632\u0648\u062f\u0646 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0648 \u06af\u0631\u0648\u0647\u200c\u0647\u0627\u06cc Prosody<\/h3>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u067e\u06cc\u0634 \u0627\u0632 \u0622\u0646\u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u062a\u0648\u0627\u0646\u0646\u062f \u0648\u0627\u0631\u062f \u0634\u0648\u0646\u062f\u060c \u0628\u0627\u06cc\u062f \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u062e\u0637 \u0641\u0631\u0645\u0627\u0646 \u0628\u0647 \u0633\u0631\u0648\u0631 Prosody \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f. \u0627\u0632 \u0627\u0628\u0632\u0627\u0631 <code class=\"cursor-pointer codespan\">prosodyctl<\/code> \u06a9\u0647 \u0628\u0647\u200c\u0647\u0645\u0631\u0627\u0647 \u067e\u06a9\u06cc\u062c \u0646\u0635\u0628 \u0634\u062f\u0647 \u0627\u0633\u062a \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0633\u0631\u0648\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0628\u0627 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u062c\u062f\u06cc\u062f \u062b\u0628\u062a \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1571\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c9m \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">sudo prosodyctl register sammy chat.your-domain password<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-250\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\"><em>(\u0628\u0647 \u062c\u0627\u06cc <code class=\"cursor-pointer codespan\">sammy<\/code> \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631 \u0648 \u0628\u0647 \u062c\u0627\u06cc <code class=\"cursor-pointer codespan\">password<\/code> \u06cc\u06a9 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0642\u0648\u06cc \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f).<\/em> \u0627\u06cc\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0633\u0631\u0648\u0631 Prosody \u0634\u0645\u0627 \u0645\u062a\u0635\u0644 \u0634\u0648\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0634\u0645\u0627 \u0628\u062a\u0648\u0627\u0646\u0646\u062f \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0631\u0627 \u0648 \u0648\u0636\u0639\u06cc\u062a \u0622\u0646\u0644\u0627\u06cc\u0646\/\u0622\u0641\u0644\u0627\u06cc\u0646 \u0628\u0648\u062f\u0646 \u0647\u0645 \u0631\u0627 \u0628\u0628\u06cc\u0646\u0646\u062f\u060c \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u06af\u0631\u0648\u0647\u200c\u0647\u0627\u06cc\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0628\u0627 \u0627\u06cc\u062c\u0627\u062f \u06af\u0631\u0648\u0647\u200c\u0647\u0627 \u0648 \u0627\u0641\u0632\u0648\u062f\u0646 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u0647 \u0622\u0646\u200c\u0647\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644\u06cc \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u06cc\u0645 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0641\u0627\u06cc\u0644 \u06af\u0631\u0648\u0647\u200c\u0647\u0627 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1573\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c9n \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">sudo nano \/etc\/prosody\/sharedgroups.txt<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-258\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u06cc\u06a9 \u06af\u0631\u0648\u0647 \u0628\u0627 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 \u0646\u0627\u0645 \u0622\u0646 \u0628\u06cc\u0646 \u0628\u0631\u0627\u06a9\u062a\u200c\u0647\u0627 <code class=\"cursor-pointer codespan\">[]<\/code> \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0627\u0639\u0636\u0627\u06cc \u06af\u0631\u0648\u0647 \u062f\u0631 \u062e\u0637\u0648\u0637 \u0632\u06cc\u0631\u0650 \u0646\u0627\u0645 \u06af\u0631\u0648\u0647 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0646\u062f. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06af\u0631\u0648\u0647\u06cc \u0628\u0647 \u0646\u0627\u0645 <code class=\"cursor-pointer codespan\">Everyone<\/code> \u0628\u0627 \u062f\u0648 \u0639\u0636\u0648 <code class=\"cursor-pointer codespan\">sammy<\/code> \u0648 <code class=\"cursor-pointer codespan\">admin<\/code> \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\"><strong>\/etc\/prosody\/sharedgroups.txt<\/strong><\/p>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">text<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1575\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-text rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c9o \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">[Everyone]<\/div>\n<div class=\"cm-line\">sammy@chat.your-domain<\/div>\n<div class=\"cm-line\">admin@chat.your-domain<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-263\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062a\u0645\u0627\u0645 \u0627\u0639\u0636\u0627\u06cc \u06cc\u06a9 \u06af\u0631\u0648\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0631\u0627 \u0628\u0628\u06cc\u0646\u0646\u062f. \u0647\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062c\u062f\u06cc\u062f\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u06cc\u062f \u06cc\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06af\u0631\u0648\u0647 \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0627\u062f\u06cc\u062f\u060c \u0628\u0627\u06cc\u062f \u0633\u0631\u0648\u0631 Prosody \u0631\u0627 \u0631\u06cc\u200c\u0627\u0633\u062a\u0627\u0631\u062a \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1577\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c9p \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\">\n<div class=\"cm-line\">sudo systemctl restart prosody.service<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-267\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<hr class=\"border-[#EBEBEB] dark:border-[#EBEBEB]\/16\" \/>\n<h3 class=\"svelte-4sys19\" dir=\"auto\">\u0645\u0631\u062d\u0644\u0647 \u06f5 \u2014 \u0627\u062c\u0627\u0632\u0647 \u0639\u0628\u0648\u0631 \u062a\u0631\u0627\u0641\u06cc\u06a9 Prosody \u0627\u0632 \u0641\u0627\u06cc\u0631\u0648\u0627\u0644<\/h3>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u067e\u0631\u0648\u0632\u0648\u062f\u06cc \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0631\u062a\u0628\u0627\u0637\u0627\u062a \u0627\u0632 \u06a9\u0644\u0627\u06cc\u0646\u062a\u200c\u0647\u0627 \u0631\u0648\u06cc \u067e\u0648\u0631\u062a\u200c\u0647\u0627\u06cc TCP \u0634\u0645\u0627\u0631\u0647 <code class=\"cursor-pointer codespan\">5222<\/code> \u0648 <code class=\"cursor-pointer codespan\">5322<\/code> \u06af\u0648\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0628\u0627 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0632\u06cc\u0631 \u0627\u06cc\u0646 \u067e\u0648\u0631\u062a\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0631\u0648\u0627\u0644 UFW \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1579\" class=\"flex\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037c9q \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\">\n<div class=\"cm-content\" role=\"textbox\" data-language=\"shell\">\n<div class=\"cm-line\"><span class=\"\u037c5m\">sudo<\/span> ufw allow <span class=\"\u037c5n\">5222<\/span>,5322\/tcp<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-5f09f7aa-9c32-43cf-bc38-3a4c7defffb9-273\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0633\u0631\u0648\u0631 Prosody \u0627\u06a9\u0646\u0648\u0646 \u0628\u0647\u200c\u0637\u0648\u0631 \u06a9\u0627\u0645\u0644 \u0646\u0635\u0628 \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<div><\/div>\n<hr class=\"border-[#EBEBEB] dark:border-[#EBEBEB]\/16\" \/>\n<h3 class=\"svelte-4sys19\" dir=\"auto\">\u0645\u0631\u062d\u0644\u0647 \u06f6 \u2014 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0644\u0627\u06cc\u0646\u062a \u0686\u062a XMPP<\/h3>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u06a9\u0644\u0627\u06cc\u0646\u062a XMPP \u062e\u0648\u062f \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u0633\u0631\u0648\u0631 Prosody \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u0633\u0631\u0648\u0631 \u0628\u0627\u06cc\u062f \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc\u060c \u0646\u0627\u0645 \u0633\u0631\u0648\u0631 (Hostname) \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0633\u0631\u0648\u0631 \u0631\u0627 \u0631\u0648\u06cc \u067e\u0648\u0631\u062a\u200c\u0647\u0627\u06cc \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f XMPP \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f \u0648 \u0627\u0645\u0646\u06cc\u062a TLS \u0628\u0647\u200c\u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u0631\u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062f\u0633\u062a\u06cc \u067e\u0648\u0631\u062a\u200c\u0647\u0627 \u062f\u0631 \u06a9\u0644\u0627\u06cc\u0646\u062a \u0646\u062f\u0627\u0631\u06cc\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u06a9\u0644\u0627\u06cc\u0646\u062a\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc\u060c \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0648 \u0622\u062f\u0631\u0633 \u0633\u0631\u0648\u0631 \u0631\u0627 \u062f\u0631 \u0642\u0627\u0644\u0628\u200c\u0647\u0627\u06cc \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0646\u0646\u062f. \u06af\u0627\u0647\u06cc \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u0622\u062f\u0631\u0633 \u0633\u0631\u0648\u0631 \u0628\u0647\u200c\u0647\u0645\u0631\u0627\u0647 \u0639\u0644\u0627\u0645\u062a <code class=\"cursor-pointer codespan\">@<\/code> \u062f\u0631 \u0642\u0627\u0644\u0628 \u06cc\u06a9 \u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644 \u0648\u0627\u0631\u062f \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u061b \u0645\u0627\u0646\u0646\u062f <code class=\"cursor-pointer codespan\">sammy@chat.your-domain<\/code>. \u06a9\u0644\u0627\u06cc\u0646\u062a\u200c\u0647\u0627 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0647 \u0627\u06cc\u0646 \u0641\u0631\u0645\u062a \u0628\u06af\u0648\u06cc\u0646\u062f Username \u06cc\u0627 XMPP Address.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u06a9\u0644\u0627\u06cc\u0646\u062a\u200c\u0647\u0627\u06cc XMPP \u0628\u0631\u0627\u06cc \u0648\u0631\u0648\u062f \u0628\u0647 \u062c\u0632\u0626\u06cc\u0627\u062a \u0645\u0630\u06a9\u0648\u0631 \u0628\u0647 \u0686\u06cc\u0632 \u062f\u06cc\u06af\u0631\u06cc \u0646\u06cc\u0627\u0632 \u0646\u062f\u0627\u0631\u0646\u062f. \u067e\u0633 \u0627\u0632 \u0648\u0631\u0648\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0639\u0636\u0627\u06cc \u062f\u06cc\u06af\u0631 \u06af\u0631\u0648\u0647 \u0686\u062a \u0631\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f \u0648 \u062f\u0631 \u0635\u0648\u0631\u062a \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u06a9\u0644\u0627\u06cc\u0646\u062a \u0634\u0645\u0627\u060c \u0627\u062a\u0627\u0642\u200c\u0647\u0627\u06cc \u0686\u062a \u06af\u0631\u0648\u0647\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<div><\/div>\n<hr class=\"border-[#EBEBEB] dark:border-[#EBEBEB]\/16\" \/>\n<p class=\"svelte-4sys19\" dir=\"auto\"><strong>\u0646\u062a\u06cc\u062c\u0647\u200c\u06af\u06cc\u0631\u06cc<\/strong><\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c \u0634\u0645\u0627 \u06cc\u06a9 \u0633\u0631\u0648\u0631 Prosody \u0631\u0627 \u0628\u0627 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0631\u062f\u06cc\u062f:<\/p>\n<ul dir=\"auto\">\n<li class=\"text-start\">\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc TLS<\/li>\n<li class=\"text-start\">\u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 \u0686\u062a \u06cc\u06a9\u200c\u0628\u0647\u200c\u06cc\u06a9 \u0648 \u0627\u062a\u0627\u0642\u200c\u0647\u0627\u06cc \u0686\u062a \u06af\u0631\u0648\u0647\u06cc<\/li>\n<li class=\"text-start\">\u0627\u0634\u062a\u0631\u0627\u06a9\u200c\u06af\u0630\u0627\u0631\u06cc \u0641\u0627\u06cc\u0644<\/li>\n<\/ul>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0634\u0645\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u06cc\u06a9 \u06a9\u0644\u0627\u06cc\u0646\u062a \u0686\u062a XMPP \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062a\u0645\u0627\u0645 \u0627\u06cc\u0646 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0631\u062f\u06cc\u062f \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u06af\u0641\u062a\u06af\u0648\u06cc \u067e\u0631feature\u0627\u06cc \u0628\u0627 \u062f\u0648\u0633\u062a\u0627\u0646 \u0648 \u0647\u0645\u06a9\u0627\u0631\u0627\u0646 \u062e\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f.<\/p>\n<\/div>\n<\/div>\n<p dir=\"auto\">\n<p dir=\"auto\">\n<p dir=\"auto\">\n<p dir=\"auto\">\u0627\u0632 \u0647\u0645\u0631\u0627\u0647\u06cc \u0634\u0645\u0627 \u0628\u0627 <strong><a href=\"https:\/\/parmin.cloud\/\">\u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f<\/a><\/strong> \u0633\u067e\u0627\u0633\u06af\u0632\u0627\u0631\u06cc\u0645.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0645\u0642\u062f\u0645\u0647 \u067e\u0631\u0648\u0632\u0648\u062f\u06cc (Prosody) \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u0686\u062a XMPP \u0627\u0633\u062a \u06a9\u0647 \u0627\u0632 \u067e\u06cc\u0627\u0645\u200c\u0631\u0633\u0627\u0646\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc\u200c\u0634\u062f\u0647 \u0628\u0627 TLS (\u0628\u0647\u200c\u0635\u0648\u0631\u062a \u06cc\u06a9\u200c\u0628\u0647\u200c\u06cc\u06a9 \u0648 \u06af\u0631\u0648\u0647\u06cc) \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f. \u067e\u0631\u0648\u062a\u06a9\u0644 XMPP (Extensible Messaging and Presence Protocol) \u06cc\u06a9 \u067e\u0631\u0648\u062a\u06a9\u0644 \u067e\u06cc\u0627\u0645\u200c\u0631\u0633\u0627\u0646\u06cc \u0628\u0627\u0632 \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u06af\u0630\u0634\u062a\u0647 \u0628\u0627 \u0646\u0627\u0645 \u062c\u064e\u0628\u0631 (Jabber) \u0646\u06cc\u0632 \u0634\u0646\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u062f. \u0627\u06cc\u0646 \u0628\u062f\u0627\u0646 \u0645\u0639\u0646\u0627\u0633\u062a \u06a9\u0647 \u0647\u0631 \u06a9\u0644\u0627\u06cc\u0646\u062a \u0686\u062a XMPP \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0633\u0631\u0648\u0631 Prosody \u0645\u062a\u0635\u0644 &hellip;<\/p>\n","protected":false},"author":9,"featured_media":6739,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[215,150,9],"tags":[],"class_list":["post-6738","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server","category-linux","category-9"],"_links":{"self":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/6738","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/comments?post=6738"}],"version-history":[{"count":0,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/6738\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media\/6739"}],"wp:attachment":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media?parent=6738"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/categories?post=6738"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/tags?post=6738"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}