{"id":21854,"date":"2026-09-14T10:57:56","date_gmt":"2026-09-14T07:27:56","guid":{"rendered":"https:\/\/maralhost.com\/kb\/docs\/devops\/%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%ac%d8%a7%d9%85%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-%d8%b3%d8%b1%d9%88%d8%b1-element\/"},"modified":"2026-09-14T11:41:34","modified_gmt":"2026-09-14T08:11:34","slug":"element-help","status":"publish","type":"docs","link":"https:\/\/maralhost.com\/kb\/docs\/devops\/element-help\/","title":{"rendered":"\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062c\u0627\u0645\u0639 \u06a9\u0627\u0631 \u0628\u0627 \u0633\u0631\u0648\u0631 Element"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\u0645\u062f\u06cc\u0631\u06cc\u062a Element\u060c Synapse \u0648 Synapse Admin \u062f\u0631 Docker<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0642\u062f\u0645\u0647<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Element \u06cc\u06a9\u06cc \u0627\u0632 \u06a9\u0644\u0627\u06cc\u0646\u062a\u200c\u0647\u0627\u06cc \u0634\u0646\u0627\u062e\u062a\u0647\u200c\u0634\u062f\u0647 \u067e\u0631\u0648\u062a\u06a9\u0644 <strong>Matrix<\/strong> \u0628\u0631\u0627\u06cc \u067e\u06cc\u0627\u0645\u200c\u0631\u0633\u0627\u0646\u06cc \u0648 \u0627\u0631\u062a\u0628\u0627\u0637\u0627\u062a \u0633\u0627\u0632\u0645\u0627\u0646\u06cc \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 Element \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a Self-Hosted \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0627 \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u0648\u0627\u062d\u062f \u0631\u0648\u0628\u0647\u200c\u0631\u0648 \u0646\u06cc\u0633\u062a\u06cc\u0645.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u06cc\u06a9 \u0646\u0635\u0628 Docker \u0645\u0639\u0645\u0648\u0644\u06cc \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Element Web\nSynapse\nSynapse Admin\nPostgreSQL\nReverse Proxy\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648 \u062f\u0631 \u0635\u0648\u0631\u062a \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062a\u0645\u0627\u0633 \u0635\u0648\u062a\u06cc \u0648 \u062a\u0635\u0648\u06cc\u0631\u06cc\u060c \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f TURN \u06cc\u0627 \u0633\u0627\u06cc\u0631 \u0627\u062c\u0632\u0627\u06cc \u0645\u0631\u062a\u0628\u0637 \u0646\u06cc\u0632 \u0628\u0647 \u0645\u062c\u0645\u0648\u0639\u0647 \u0627\u0636\u0627\u0641\u0647 \u0634\u0648\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0639\u0645\u0627\u0631\u06cc\u060c <strong>Synapse \u0647\u0633\u062a\u0647 \u0627\u0635\u0644\u06cc \u0633\u0631\u0648\u0631 Matrix \u0627\u0633\u062a\u060c Element \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0648 Synapse Admin \u067e\u0646\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a\u06cc \u0633\u0631\u0648\u0631 \u0645\u062d\u0633\u0648\u0628 \u0645\u06cc\u200c\u0634\u0648\u062f<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0641\u0631\u0636 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u0628\u0627 Docker Compose \u0646\u0635\u0628 \u0634\u062f\u0647\u200c\u0627\u0646\u062f \u0648 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u062f\u0631 \u0645\u0633\u06cc\u0631\u06cc \u0645\u0627\u0646\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>~\/matrix-stack\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u062f\u0641 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0627\u0631\u0647\u0627\u06cc \u0631\u0648\u0632\u0645\u0631\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a\u06cc\u060c \u0633\u0627\u062e\u062a\u0627\u0631 \u0633\u0631\u0648\u06cc\u0633\u060c \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646\u060c \u062a\u0646\u0638\u06cc\u0645\u0627\u062a\u060c Log\u0647\u0627\u060c Backup \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0631\u0648\u0634 \u0635\u062d\u06cc\u062d Update \u06a9\u0631\u062f\u0646 Container\u0647\u0627 \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0645\u0639\u0645\u0627\u0631\u06cc \u0633\u0631\u0648\u0631 Element \u0686\u06af\u0648\u0646\u0647 \u0627\u0633\u062a\u061f<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u06a9 \u0633\u0627\u062e\u062a\u0627\u0631 \u0633\u0627\u062f\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0628\u0627\u0634\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> <code>                   Internet\n                       |\n                       v\n                Reverse Proxy\n                 HTTPS \/ TLS\n                       |\n          +------------+-------------+\n          |                          |\n          v                          v\n     Element Web                Synapse Admin\n          |                          |\n          |                          |\n          +------------+-------------+\n                       |\n                       v\n                    Synapse\n                       |\n              +--------+--------+\n              |                 |\n              v                 v\n          PostgreSQL         Media Store\n<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0631 \u06a9\u062f\u0627\u0645 \u0627\u0632 \u0627\u06cc\u0646 \u0627\u062c\u0632\u0627 \u0648\u0638\u06cc\u0641\u0647 \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u062f\u0627\u0631\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Element Web \u0686\u06cc\u0633\u062a\u061f<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Element Web \u0631\u0627\u0628\u0637\u06cc \u0627\u0633\u062a \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0627\u0632 \u0637\u0631\u06cc\u0642 Browser \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Element \u062e\u0648\u062f\u0634 Database \u067e\u06cc\u0627\u0645\u200c\u0647\u0627 \u06cc\u0627 User\u0647\u0627 \u0646\u06cc\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0638\u06cc\u0641\u0647 Element \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0632 \u0637\u0631\u06cc\u0642 Matrix API \u0628\u0627 Synapse \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0627\u0631\u0628\u0631 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0622\u062f\u0631\u0633\u06cc \u0645\u0627\u0646\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;element.example.com\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0627\u0631\u062f Element \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Element Web \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0631\u0633\u0645\u06cc \u0646\u06cc\u0632 \u0628\u0647 \u0634\u06a9\u0644 Docker Image \u0642\u0627\u0628\u0644 \u0627\u062c\u0631\u0627 \u0627\u0633\u062a \u0648 \u0641\u0627\u06cc\u0644 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0633\u0641\u0627\u0631\u0634\u06cc \u0622\u0646 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0647 <code>\/app\/config.json<\/code> \u062f\u0627\u062e\u0644 Container Mount \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Synapse \u0686\u06cc\u0633\u062a\u061f<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Synapse \u0647\u0645\u0627\u0646 <strong>Matrix Homeserver<\/strong> \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u062a\u0645\u0627\u0645 \u0639\u0645\u0644\u06cc\u0627\u062a \u0627\u0635\u0644\u06cc \u0633\u0645\u062a Server \u062f\u0631 Synapse \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 \u062c\u0645\u0644\u0647:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0645\u062f\u06cc\u0631\u06cc\u062a User\u0647\u0627<\/li>\n\n\n\n<li>Authentication<\/li>\n\n\n\n<li>\u0645\u062f\u06cc\u0631\u06cc\u062a Room\u0647\u0627<\/li>\n\n\n\n<li>\u0630\u062e\u06cc\u0631\u0647 Event\u0647\u0627\u06cc Matrix<\/li>\n\n\n\n<li>\u0646\u06af\u0647\u062f\u0627\u0631\u06cc Message Metadata<\/li>\n\n\n\n<li>\u0645\u062f\u06cc\u0631\u06cc\u062a Media<\/li>\n\n\n\n<li>Federation<\/li>\n\n\n\n<li>Device Management<\/li>\n\n\n\n<li>Admin API<\/li>\n\n\n\n<li>\u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u0631\u062a\u0628\u0627\u0637 \u0645\u06cc\u0627\u0646 Matrix Server\u0647\u0627<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 Container \u0627\u06cc\u0646 Stack \u0645\u0639\u0645\u0648\u0644\u0627\u064b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>synapse\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Synapse Admin \u0686\u06cc\u0633\u062a\u061f<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Synapse Admin \u06cc\u06a9 Web Interface \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a Synapse \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u067e\u0646\u0644 \u0627\u0632 <strong>Synapse Admin API<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0639\u0645\u0644\u06cc\u0627\u062a \u0631\u0627 \u0628\u062f\u0648\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0627\u0632 API \u06cc\u0627 Database \u0633\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0633\u062a\u0647 \u0628\u0647 \u0646\u0633\u062e\u0647 Synapse Admin \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646<\/li>\n\n\n\n<li>\u0627\u06cc\u062c\u0627\u062f User<\/li>\n\n\n\n<li>\u062a\u063a\u06cc\u06cc\u0631 Password<\/li>\n\n\n\n<li>\u0641\u0639\u0627\u0644 \u06cc\u0627 \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 User<\/li>\n\n\n\n<li>\u062a\u0628\u062f\u06cc\u0644 User \u0628\u0647 Server Admin<\/li>\n\n\n\n<li>\u0645\u0634\u0627\u0647\u062f\u0647 Last Activity<\/li>\n\n\n\n<li>\u0645\u0634\u0627\u0647\u062f\u0647 Room\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631<\/li>\n\n\n\n<li>\u0645\u062f\u06cc\u0631\u06cc\u062a Room\u0647\u0627<\/li>\n\n\n\n<li>\u0628\u0631\u0631\u0633\u06cc Device\u0647\u0627<\/li>\n\n\n\n<li>\u0645\u0634\u0627\u0647\u062f\u0647 Media<\/li>\n\n\n\n<li>Deactivate \u06a9\u0631\u062f\u0646 Account<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0648\u062f Synapse Admin \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0635\u0644\u06cc \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0647\u0645\u0686\u0646\u0627\u0646 \u062f\u0627\u062e\u0644 Synapse \u0648 Database \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Synapse Admin \u0627\u0632 Admin API \u0631\u0633\u0645\u06cc Synapse \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u062e\u0648\u062f Synapse API\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a User\u060c Room \u0648 Media \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">PostgreSQL \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u062f\u061f<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 Environment\u0647\u0627\u06cc Production \u0628\u0647\u062a\u0631 \u0627\u0633\u062a Synapse \u0627\u0632 PostgreSQL \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u0645\u0627\u0646\u0646\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u06a9\u0627\u0631\u0628\u0631\u0627\u0646<\/li>\n\n\n\n<li>Room\u0647\u0627<\/li>\n\n\n\n<li>Event\u0647\u0627<\/li>\n\n\n\n<li>Membership\u0647\u0627<\/li>\n\n\n\n<li>Device\u0647\u0627<\/li>\n\n\n\n<li>Federation State<\/li>\n\n\n\n<li>Metadata<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 Database \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Docker Image \u0631\u0633\u0645\u06cc Synapse \u0646\u06cc\u0632 \u0628\u0631\u0627\u06cc Production \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 PostgreSQL \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0631\u0627 \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Media Store \u0686\u06cc\u0633\u062a\u061f<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u062f\u0627\u062e\u0644 Media Store \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Image\nVideo\nAudio\nDocument\nAvatar\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 Docker Image \u0631\u0633\u0645\u06cc Synapse\u060c \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc Persistent \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0632\u06cc\u0631 \u0645\u0633\u06cc\u0631:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/data\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0646\u062f \u0648 Media Store \u0646\u06cc\u0632 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u062e\u0634\u06cc \u0627\u0632 \u0647\u0645\u06cc\u0646 Persistent Data \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 Volume \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Synapse \u0646\u0628\u0627\u06cc\u062f \u0647\u0646\u06af\u0627\u0645 Update \u062d\u0630\u0641 \u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0645\u0634\u0627\u0647\u062f\u0647 Container\u0647\u0627\u06cc \u0633\u0631\u0648\u0631<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0628\u062a\u062f\u0627 \u0648\u0627\u0631\u062f Directory \u067e\u0631\u0648\u0698\u0647 \u0634\u0648\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd ~\/matrix-stack\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose ps\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0645\u0648\u0646\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>NAME             STATUS\nsynapse          Up\nelement          Up\nsynapse-admin    Up\npostgres         Up\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0628\u0639\u0636\u06cc Stack\u0647\u0627 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a Container\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631\u06cc \u0645\u0627\u0646\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>coturn\nnginx\ntraefik\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u06cc\u0632 \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0645\u0634\u0627\u0647\u062f\u0647 \u062a\u0645\u0627\u0645 Container\u0647\u0627\u06cc Docker<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u06a9\u0644\u06cc:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker ps\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 Container\u0647\u0627\u06cc \u0645\u062a\u0648\u0642\u0641\u200c\u0634\u062f\u0647 \u0646\u06cc\u0632:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker ps -a\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 Container \u0645\u0631\u062a\u0628 Restart \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0633\u062a\u0648\u0646:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>STATUS\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0627\u0648\u0644\u06cc\u0646 \u0633\u0631\u0646\u062e \u0645\u0634\u06a9\u0644 \u0628\u0627\u0634\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0645\u0634\u0627\u0647\u062f\u0647 Image\u0647\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647\u200c\u0634\u062f\u0647<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 Image\u0647\u0627\u06cc Stack:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose images\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0641\u0627\u06cc\u0644 Compose \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>grep -n \"image:\" docker-compose.yml\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0645\u0648\u0646\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>synapse:\n  image: matrixdotorg\/synapse:v1.x.x\n\nelement:\n  image: vectorim\/element-web:v1.x.x\n\nsynapse-admin:\n  image: awesometechnologies\/synapse-admin:latest\n\npostgres:\n  image: postgres:15\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0633\u062e\u0647\u200c\u0647\u0627 \u062f\u0631 Server \u0648\u0627\u0642\u0639\u06cc \u0634\u0645\u0627 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0645\u062a\u0641\u0627\u0648\u062a \u0628\u0627\u0634\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0645\u0634\u0627\u0647\u062f\u0647 Log\u0647\u0627\u06cc Synapse<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u06a9\u06cc \u0627\u0632 \u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 Command\u0647\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose logs synapse\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u0622\u062e\u0631\u06cc\u0646 100 \u062e\u0637:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose logs --tail=100 synapse\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 Log \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0632\u0646\u062f\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose logs -f synapse\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 Command \u0647\u0646\u06af\u0627\u0645 Troubleshooting \u0628\u0633\u06cc\u0627\u0631 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0645\u0634\u0627\u0647\u062f\u0647 Log \u0628\u0642\u06cc\u0647 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Element:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose logs element\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Synapse Admin:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose logs synapse-admin\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">PostgreSQL:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose logs postgres\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0627\u0633\u0645 Service \u062f\u0631 \u0641\u0627\u06cc\u0644 Compose \u0645\u062a\u0641\u0627\u0648\u062a \u0627\u0633\u062a\u060c \u0627\u0628\u062a\u062f\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose ps\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Restart \u06a9\u0631\u062f\u0646 Synapse<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0641\u0642\u0637 Synapse \u0628\u0627\u06cc\u062f Restart \u0634\u0648\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose restart synapse\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc Element:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose restart element\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc Synapse Admin:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose restart synapse-admin\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc Restart \u062a\u0645\u0627\u0645 Stack:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose restart\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0641\u0642\u0637 \u0647\u0645\u0627\u0646 Service \u06a9\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0631\u062f\u0647 Restart \u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Stop \u0648 Start \u06a9\u0631\u062f\u0646 Stack<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc Stop:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose stop\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc Start:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose start\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06a9\u0627\u0631 Container\u0647\u0627 \u0631\u0627 \u062d\u0630\u0641 \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Recreate \u06a9\u0631\u062f\u0646 Container\u0647\u0627<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0641\u0627\u06cc\u0644 Compose \u06cc\u0627 Image \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0631\u062f\u0647 \u0628\u0627\u0634\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose up -d\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Docker Compose \u062f\u0631 \u0635\u0648\u0631\u062a \u062a\u063a\u06cc\u06cc\u0631 Image \u06cc\u0627 Configuration\u060c Container \u0645\u0631\u0628\u0648\u0637\u0647 \u0631\u0627 Recreate \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 Mounted Volume\u0647\u0627 \u0631\u0627 \u062d\u0641\u0638 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u062a\u0641\u0627\u0648\u062a Restart \u0648 Recreate<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0633\u062a\u0648\u0631:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose restart synapse\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0642\u0637 \u0647\u0645\u0627\u0646 Container \u0645\u0648\u062c\u0648\u062f \u0631\u0627 Restart \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose up -d synapse\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0635\u0648\u0631\u062a \u062a\u063a\u06cc\u06cc\u0631 Image \u06cc\u0627 Configuration \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f Container \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc Upgrade \u0645\u0639\u0645\u0648\u0644\u0627\u064b <code>restart<\/code> \u06a9\u0627\u0641\u06cc \u0646\u06cc\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0641\u0627\u06cc\u0644 homeserver.yaml \u0686\u06cc\u0633\u062a\u061f<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u06a9\u06cc \u0627\u0632 \u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc Synapse:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>homeserver.yaml\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 Docker \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u062f\u0627\u062e\u0644 Container \u062f\u0631 \u0645\u0633\u06cc\u0631:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/data\/homeserver.yaml\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 Bind Mount \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u0628\u0627\u0634\u062f \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0631\u0648\u06cc Host \u0686\u06cc\u0632\u06cc \u0645\u0634\u0627\u0628\u0647 \u0632\u06cc\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.\/synapse\/data\/homeserver.yaml\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0686\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a\u06cc \u062f\u0627\u062e\u0644 homeserver.yaml \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u0646\u062f\u061f<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0627\u0635\u0644\u06cc Synapse \u0631\u0627 \u06a9\u0646\u062a\u0631\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server_name:\nlisteners:\ndatabase:\nmedia_store_path:\nmax_upload_size:\nregistration_shared_secret:\ntrusted_key_servers:\nlog_config:\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0686\u0646\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Registration<\/li>\n\n\n\n<li>Federation<\/li>\n\n\n\n<li>Media<\/li>\n\n\n\n<li>Authentication<\/li>\n\n\n\n<li>Rate Limit<\/li>\n\n\n\n<li>Server Notice<\/li>\n\n\n\n<li>Logging<\/li>\n\n\n\n<li>Database<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0647\u0645\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0633\u062a\u0646\u062f\u0627\u062a \u0631\u0633\u0645\u06cc Synapse \u062a\u0645\u0627\u0645 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0645\u0648\u062c\u0648\u062f \u0631\u0627 \u062f\u0631 Configuration Manual \u062a\u0648\u0636\u06cc\u062d \u0645\u06cc\u200c\u062f\u0647\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0642\u0628\u0644 \u0627\u0632 \u062a\u063a\u06cc\u06cc\u0631 homeserver.yaml \u0686\u0647 \u06a9\u0646\u06cc\u0645\u061f<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u06cc\u0634\u0647 Backup \u0628\u06af\u06cc\u0631\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cp synapse\/data\/homeserver.yaml \\\nsynapse\/data\/homeserver.yaml.bak.$(date +%Y-%m-%d-%H%M)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano synapse\/data\/homeserver.yaml\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0628\u0631\u0631\u0633\u06cc \u0635\u062d\u062a homeserver.yaml<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 \u062a\u063a\u06cc\u06cc\u0631 \u0641\u0627\u06cc\u0644\u060c \u0642\u0628\u0644 \u0627\u0632 Restart \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 Configuration \u0631\u0627 Validate \u06a9\u0631\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker exec synapse \\\npython -m synapse.config \\\n-c \/data\/homeserver.yaml\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 Configuration \u0635\u062d\u06cc\u062d \u0628\u0627\u0634\u062f\u060c \u0645\u0639\u0645\u0648\u0644\u0627\u064b Error \u062f\u0631\u06cc\u0627\u0641\u062a \u0646\u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0631\u0648\u0634 Validation \u062f\u0631 \u0645\u0633\u062a\u0646\u062f\u0627\u062a \u0631\u0633\u0645\u06cc Synapse \u0646\u06cc\u0632 \u0645\u0639\u0631\u0641\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0627\u0639\u0645\u0627\u0644 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a Synapse<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 Validation:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose restart synapse\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633 Log \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose logs -f --tail=100 synapse\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 Error \u0645\u0634\u0627\u0647\u062f\u0647 \u0646\u0634\u062f\u060c \u0633\u0631\u0648\u06cc\u0633 \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u0628\u0627\u0644\u0627 \u0622\u0645\u062f\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0628\u0631\u0631\u0633\u06cc \u0633\u0644\u0627\u0645\u062a Synapse<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0628\u062a\u062f\u0627 Container:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose ps\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f Client API \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl http:\/\/127.0.0.1:8008\/_matrix\/client\/versions\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 Synapse \u067e\u0627\u0633\u062e JSON \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f\u060c Client API \u0641\u0639\u0627\u0644 \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Port \u062f\u0627\u062e\u0644\u06cc \u0645\u0639\u0645\u0648\u0644 Synapse:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>8008\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a\u060c \u0647\u0631\u0686\u0646\u062f \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062f\u0631 Configuration \u0634\u0645\u0627 \u0645\u062a\u0641\u0627\u0648\u062a \u0628\u0627\u0634\u062f. Docker Image \u0631\u0633\u0645\u06cc \u0646\u06cc\u0632 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0627\u0632 Port 8008 \u0628\u0631\u0627\u06cc HTTP \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0641\u0627\u06cc\u0644 config.json \u062f\u0631 Element<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Element Web \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062e\u0648\u062f \u0631\u0627 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0627\u0632:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>config.json\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0631\u0648\u06cc Host \u062f\u0631 \u0645\u0633\u06cc\u0631\u06cc \u0645\u0627\u0646\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.\/element\/config.json\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0631\u0627\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f \u0648 \u0628\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/app\/config.json\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 Container \u0645\u062a\u0635\u0644 \u0634\u0648\u062f. \u0627\u06cc\u0646 \u0647\u0645\u0627\u0646 \u0631\u0648\u0634 \u0631\u0633\u0645\u06cc \u0627\u0631\u0627\u0626\u0647 Configuration \u0633\u0641\u0627\u0631\u0634\u06cc \u0628\u0647 Element Web Docker \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u06a9\u0627\u0631\u0628\u0631\u062f config.json<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Element \u0628\u0627\u06cc\u062f \u0628\u062f\u0627\u0646\u062f \u0628\u0647 \u06a9\u062f\u0627\u0645 Homeserver \u0645\u062a\u0635\u0644 \u0634\u0648\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644 \u0633\u0627\u062e\u062a\u0627\u0631 \u0622\u0646 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0634\u0627\u0645\u0644 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a\u06cc \u0645\u0627\u0646\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"default_server_config\": {\n    \"m.homeserver\": {\n      \"base_url\": \"https:\/\/matrix.example.com\",\n      \"server_name\": \"example.com\"\n    }\n  }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 \u062a\u063a\u06cc\u06cc\u0631:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose restart element\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc \u0627\u0635\u0644\u06cc Element<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0627\u0632 \u0637\u0631\u06cc\u0642 Element \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0632 \u0627\u0645\u06a9\u0627\u0646\u0627\u062a Matrix \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 \u062c\u0645\u0644\u0647:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Direct Message<\/li>\n\n\n\n<li>Group Room<\/li>\n\n\n\n<li>Private Room<\/li>\n\n\n\n<li>Public Room<\/li>\n\n\n\n<li>End-to-End Encryption<\/li>\n\n\n\n<li>\u0627\u0631\u0633\u0627\u0644 \u0641\u0627\u06cc\u0644<\/li>\n\n\n\n<li>\u0627\u0631\u0633\u0627\u0644 \u0639\u06a9\u0633 \u0648 \u0648\u06cc\u062f\u0626\u0648<\/li>\n\n\n\n<li>Reply<\/li>\n\n\n\n<li>Reaction<\/li>\n\n\n\n<li>Thread<\/li>\n\n\n\n<li>Search<\/li>\n\n\n\n<li>Notification<\/li>\n\n\n\n<li>Spaces<\/li>\n\n\n\n<li>\u0645\u062f\u06cc\u0631\u06cc\u062a Device\u0647\u0627<\/li>\n\n\n\n<li>Federation \u0628\u0627 Server\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u0636\u06cc \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627 \u0645\u0627\u0646\u0646\u062f \u062a\u0645\u0627\u0633 \u0635\u0648\u062a\u06cc \u0648 \u062a\u0635\u0648\u06cc\u0631\u06cc \u0628\u0647 Infrastructure \u0648 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062a\u06a9\u0645\u06cc\u0644\u06cc Server \u0628\u0633\u062a\u06af\u06cc \u062f\u0627\u0631\u0646\u062f \u0648 \u0635\u0631\u0641 \u0646\u0635\u0628 Element Web \u0648 Synapse \u0627\u0644\u0632\u0627\u0645\u0627\u064b \u062a\u0645\u0627\u0645 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc Call \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Room \u0686\u06cc\u0633\u062a\u061f<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Room \u0627\u0635\u0644\u06cc\u200c\u062a\u0631\u06cc\u0646 \u0641\u0636\u0627\u06cc \u06af\u0641\u062a\u06af\u0648 \u062f\u0631 Matrix \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Room \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Public\nPrivate\nEncrypted\nUnencrypted\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627\u0634\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0631 Room \u062f\u0627\u0631\u0627\u06cc:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Room ID\nMembers\nPower Levels\nEvents\nAliases\nState\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Space \u0686\u06cc\u0633\u062a\u061f<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Space \u0631\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0634\u0628\u06cc\u0647 \u06cc\u06a9 \u0645\u062c\u0645\u0648\u0639\u0647 \u06cc\u0627 \u0633\u0627\u062e\u062a\u0627\u0631 \u0633\u0627\u0632\u0645\u0627\u0646\u200c\u062f\u0647\u06cc \u0628\u0631\u0627\u06cc Room\u0647\u0627 \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Company\n\u251c\u2500\u2500 Management\n\u251c\u2500\u2500 Technical\n\u251c\u2500\u2500 Sales\n\u251c\u2500\u2500 Support\n\u2514\u2500\u2500 Announcements\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0642\u0627\u0628\u0644\u06cc\u062a \u0628\u0631\u0627\u06cc \u0633\u0627\u0632\u0645\u0627\u0646\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062a\u0639\u062f\u0627\u062f \u0632\u06cc\u0627\u062f\u06cc Room \u062f\u0627\u0631\u0646\u062f \u0628\u0633\u06cc\u0627\u0631 \u0645\u0641\u06cc\u062f \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Federation \u0686\u06cc\u0633\u062a\u061f<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Federation \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062f\u0648 Matrix Server \u0645\u062e\u062a\u0644\u0641 \u062f\u0627\u062e\u0644 Room \u0645\u0634\u062a\u0631\u06a9 \u062d\u0636\u0648\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@ali:company-a.com\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@sara:company-b.com\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 \u06cc\u06a9 Room \u06af\u0641\u062a\u06af\u0648 \u06a9\u0646\u062f\u060c \u0628\u0647 \u0634\u0631\u0637 \u0622\u0646\u06a9\u0647 Federation Server\u0647\u0627 \u0641\u0639\u0627\u0644 \u0648 \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633 \u0628\u0627\u0634\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0633\u062a\u0646\u062f\u0627\u062a Synapse \u062a\u0648\u0636\u06cc\u062d \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u06a9\u0647 Federation \u0627\u0645\u06a9\u0627\u0646 \u0634\u0631\u06a9\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 Server\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u062f\u0631 Room \u0645\u0634\u062a\u0631\u06a9 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 Server \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u062f\u0627\u062e\u0644\u06cc \u0634\u0631\u06a9\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0628\u0627\u06cc\u062f \u062a\u0635\u0645\u06cc\u0645 \u0628\u06af\u06cc\u0631\u06cc\u062f Federation \u0648\u0627\u0642\u0639\u0627\u064b \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \u0627\u0633\u062a \u06cc\u0627 \u062e\u06cc\u0631.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u0627 Synapse Admin<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Synapse Admin \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0633\u0627\u062f\u0647\u200c\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634 \u0645\u062f\u06cc\u0631\u06cc\u062a User\u0647\u0627 \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 Login \u0628\u0627 Server Admin \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f User\u0647\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u0645\u0627\u0646\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>User ID\nDisplay Name\nAdmin Status\nAccount Status\nCreation Time\nLast Seen\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0627\u0628\u0644 \u0645\u0634\u0627\u0647\u062f\u0647 \u0647\u0633\u062a\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Synapse Admin API \u0631\u0633\u0645\u06cc \u0647\u0645\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u0628\u0631\u0627\u06cc User\u0647\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u062a\u0641\u0627\u0648\u062a Server Admin \u0648 Room Admin<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062f\u0648 \u0645\u0641\u0647\u0648\u0645 \u0645\u062a\u0641\u0627\u0648\u062a \u0647\u0633\u062a\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Server Admin<\/strong> \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a\u06cc \u0631\u0648\u06cc Synapse \u062f\u0627\u0631\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 <strong>Room Admin<\/strong> \u0641\u0642\u0637 Permission \u0628\u0627\u0644\u0627\u06cc\u06cc \u062f\u0627\u062e\u0644 \u06cc\u06a9 Room \u0645\u0634\u062e\u0635 \u062f\u0627\u0631\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u0634\u062a\u0646 Power Level \u0628\u0627\u0644\u0627 \u062f\u0627\u062e\u0644 Room \u0628\u0647 \u0645\u0639\u0646\u06cc Server Administrator \u0628\u0648\u062f\u0646 \u0646\u06cc\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0627\u06cc\u062c\u0627\u062f Administrator \u062c\u062f\u06cc\u062f \u0627\u0632 Command Line<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Synapse \u0627\u0628\u0632\u0627\u0631:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>register_new_matrix_user\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 <code>registration_shared_secret<\/code> \u062f\u0631 Configuration \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u0628\u0627\u0634\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker exec -it synapse \\\nregister_new_matrix_user \\\nhttp:\/\/localhost:8008 \\\n-c \/data\/homeserver.yaml\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633 \u0627\u0628\u0632\u0627\u0631 \u0645\u0648\u0627\u0631\u062f\u06cc \u0645\u0627\u0646\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>New user localpart\nPassword\nMake admin\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0627 \u0627\u0632 \u0634\u0645\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Docker Image \u0631\u0633\u0645\u06cc Synapse \u0646\u06cc\u0632 \u0647\u0645\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f User \u0648 Admin \u0645\u0639\u0631\u0641\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 <code>registration_shared_secret<\/code> \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647\u060c \u0646\u06af\u0647 \u062f\u0627\u0634\u062a\u0646 \u063a\u06cc\u0631\u0636\u0631\u0648\u0631\u06cc \u0622\u0646 \u062a\u0648\u0635\u06cc\u0647 \u0646\u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Deactivate \u06a9\u0631\u062f\u0646 User<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u06a9\u0627\u0631\u0628\u0631\u06cc \u062f\u06cc\u06af\u0631 \u0646\u0628\u0627\u06cc\u062f \u0628\u0647 Server \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\u060c \u0628\u0647\u062a\u0631 \u0627\u0633\u062a Account \u0627\u0648 Deactivate \u0634\u0648\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0639\u0645\u0644\u06cc\u0627\u062a \u0631\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0627\u0632 Synapse Admin \u06cc\u0627 Admin API \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Deactivate \u0628\u0627 \u062d\u0630\u0641 \u0633\u0627\u062f\u0647 User \u0645\u062a\u0641\u0627\u0648\u062a \u0627\u0633\u062a \u0648 \u0628\u0627\u06cc\u062f \u0642\u0628\u0644 \u0627\u0632 \u0627\u0646\u062c\u0627\u0645 \u0622\u0646 \u0648\u0636\u0639\u06cc\u062a Room\u0647\u0627\u060c Media \u0648 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u0633\u0627\u0632\u0645\u0627\u0646 \u0628\u0631\u0631\u0633\u06cc \u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0645\u0634\u0627\u0647\u062f\u0647 Room\u0647\u0627\u06cc \u06cc\u06a9 User<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Synapse Admin API \u0627\u0645\u06a9\u0627\u0646 \u0645\u0634\u0627\u0647\u062f\u0647 Room\u0647\u0627\u06cc\u06cc \u06a9\u0647 User \u0639\u0636\u0648 \u0622\u0646\u0647\u0627\u0633\u062a \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0642\u0627\u0628\u0644\u06cc\u062a \u0628\u0631\u0627\u06cc \u0645\u0648\u0627\u0631\u062f\u06cc \u0645\u0627\u0646\u0646\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0628\u0631\u0631\u0633\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u06a9\u0627\u0631\u0628\u0631<\/li>\n\n\n\n<li>Offboarding<\/li>\n\n\n\n<li>Incident Investigation<\/li>\n\n\n\n<li>\u0645\u062f\u06cc\u0631\u06cc\u062a Account<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0627\u0631\u0628\u0631\u062f \u062f\u0627\u0631\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0645\u062f\u06cc\u0631\u06cc\u062a Media<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Media \u06cc\u06a9\u06cc \u0627\u0632 \u0628\u062e\u0634\u200c\u0647\u0627\u06cc\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0645\u0631\u0648\u0631 \u0641\u0636\u0627\u06cc Disk \u0632\u06cc\u0627\u062f\u06cc \u0645\u0635\u0631\u0641 \u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Synapse Admin API \u0627\u0645\u06a9\u0627\u0646 \u0645\u0634\u0627\u0647\u062f\u0647 Media \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0648 Room\u0647\u0627 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 Media \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u062f\u0631 \u0635\u0648\u0631\u062a \u0646\u06cc\u0627\u0632 Quarantine \u0646\u06cc\u0632 \u0634\u0648\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc Disk:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>df -h\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u0645\u0635\u0631\u0641 Directory\u0647\u0627\u06cc Stack:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>du -sh *\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>du -sh synapse\/data\/*\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u0635\u0631\u0641 Container\u0647\u0627<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc CPU \u0648 RAM:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker stats\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 Server\u0647\u0627\u06cc \u067e\u0631\u06a9\u0627\u0631 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u0627\u0632 \u0646\u0638\u0631 Resource \u0639\u0628\u0627\u0631\u062a\u200c\u0627\u0646\u062f \u0627\u0632:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Synapse\nPostgreSQL\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 RAM \u06cc\u0627 CPU \u062f\u0627\u0626\u0645\u0627\u064b \u0628\u0627\u0644\u0627 \u0627\u0633\u062a\u060c Log \u0648 Database Performance \u0628\u0627\u06cc\u062f \u0628\u0631\u0631\u0633\u06cc \u0634\u0648\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0645\u0634\u0627\u0647\u062f\u0647 \u0641\u0636\u0627\u06cc Docker<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u0635\u0631\u0641 Docker:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker system df\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 Command \u062d\u062c\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Images\nContainers\nVolumes\nBuild Cache\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0627 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Backup \u0686\u0647 \u0686\u06cc\u0632\u0647\u0627\u06cc\u06cc \u0636\u0631\u0648\u0631\u06cc \u0627\u0633\u062a\u061f<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 Stack \u062d\u062f\u0627\u0642\u0644 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0627\u0647\u0645\u06cc\u062a \u062f\u0627\u0631\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker-compose.yml\nhomeserver.yaml\nSynapse Signing Key\nElement config.json\nSynapse Admin config\nPostgreSQL Database\nMedia Store\nReverse Proxy Configuration\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u06cc\u06a9\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0628\u062e\u0634\u200c\u0647\u0627 \u0628\u062f\u0648\u0646 Backup \u0627\u0632 \u0628\u06cc\u0646 \u0628\u0631\u0648\u062f\u060c Recovery \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u062f\u0634\u0648\u0627\u0631 \u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Backup \u0641\u0627\u06cc\u0644 Compose<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>cp docker-compose.yml \\\ndocker-compose.yml.bak.$(date +%Y-%m-%d-%H%M)\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Backup \u062a\u0646\u0638\u06cc\u0645\u0627\u062a Synapse<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 Data Directory \u0634\u0645\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>synapse\/data\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a\u060c \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0645\u0647\u0645 Configuration \u0631\u0627 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 Backup \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cp synapse\/data\/homeserver.yaml \\\nsynapse\/data\/homeserver.yaml.bak.$(date +%Y-%m-%d-%H%M)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Signing Key \u0646\u06cc\u0632 \u0628\u0633\u06cc\u0627\u0631 \u0645\u0647\u0645 \u0627\u0633\u062a \u0648 \u0628\u0627\u06cc\u062f \u062f\u0631 Backup \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Backup Element<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 Configuration \u062f\u0631:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>element\/config.json\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cp element\/config.json \\\nelement\/config.json.bak.$(date +%Y-%m-%d-%H%M)\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Backup PostgreSQL<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 Container Database \u0634\u0645\u0627 <code>postgres<\/code> \u0646\u0627\u0645 \u062f\u0627\u0631\u062f\u060c \u0627\u0628\u062a\u062f\u0627 Environment \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Database \u0631\u0627 \u062f\u0631 Compose \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 <code>pg_dump<\/code> \u06cc\u0627 <code>pg_dumpall<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker exec -t postgres \\\npg_dumpall -U postgres \\\n&gt; postgres-backup-$(date +%Y-%m-%d).sql\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Username \u0648\u0627\u0642\u0639\u06cc PostgreSQL \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062f\u0631 Stack \u0634\u0645\u0627 \u0645\u062a\u0641\u0627\u0648\u062a \u0628\u0627\u0634\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0628\u0644 \u0627\u0632 Upgrade \u0645\u0647\u0645 Synapse\u060c Backup Database \u0636\u0631\u0648\u0631\u06cc \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Update \u06a9\u0631\u062f\u0646 Container\u0647\u0627 \u0686\u06af\u0648\u0646\u0647 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u0634\u0648\u062f\u061f<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0646\u06a9\u062a\u0647 \u0627\u06cc\u0646 \u0627\u0633\u062a:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Update \u06a9\u0631\u062f\u0646 Docker Container \u06cc\u0639\u0646\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a Image \u062c\u062f\u06cc\u062f \u0648 Recreate \u06a9\u0631\u062f\u0646 Container \u0628\u0627 \u0647\u0645\u0627\u0646 Persistent Data.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0635\u0631\u0641 \u0627\u062c\u0631\u0627\u06cc:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose restart\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0633\u062e\u0647 \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0646\u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0645\u0631\u062d\u0644\u0647 \u0627\u0648\u0644: \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u0641\u0639\u0644\u06cc \u0631\u0627 \u062b\u0628\u062a \u06a9\u0646\u06cc\u062f<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0628\u0644 \u0627\u0632 Update:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose images\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0686\u0646\u06cc\u0646:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose ps\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>grep -n \"image:\" docker-compose.yml\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06cc\u0627 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u0631\u0627\u06cc Rollback \u0628\u0633\u06cc\u0627\u0631 \u0645\u0647\u0645 \u0647\u0633\u062a\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">latest \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u06cc\u0627 Version \u0645\u0634\u062e\u0635\u061f<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0648 \u0631\u0648\u0634 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0648\u0634 \u0627\u0648\u0644:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>image: matrixdotorg\/synapse:latest\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0648\u0634 \u062f\u0648\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>image: matrixdotorg\/synapse:vX.Y.Z\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc Production \u0645\u0639\u0645\u0648\u0644\u0627\u064b <strong>Pin \u06a9\u0631\u062f\u0646 \u0646\u0633\u062e\u0647 \u0645\u0634\u062e\u0635<\/strong> \u06a9\u0646\u062a\u0631\u0644 \u0628\u06cc\u0634\u062a\u0631\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0627\u0628\u062a\u062f\u0627 Release Note \u0648 Upgrade Note \u0646\u0633\u062e\u0647 \u062c\u062f\u06cc\u062f \u0628\u0631\u0631\u0633\u06cc \u0634\u0648\u062f \u0648 \u0633\u067e\u0633 Tag \u062f\u0631 Compose \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0627\u0626\u0645\u06cc \u0627\u0632 <code>latest<\/code> \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f \u062f\u0642\u06cc\u0642\u0627\u064b \u0645\u0634\u062e\u0635 \u0646\u0628\u0627\u0634\u062f Update \u0628\u0639\u062f\u06cc \u0686\u0647 Version\u06cc \u0648\u0627\u0631\u062f Server \u062e\u0648\u0627\u0647\u062f \u06a9\u0631\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0642\u0628\u0644 \u0627\u0632 Update Synapse \u0686\u0647 \u06a9\u0646\u06cc\u0645\u061f<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc Synapse \u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062e\u0648\u0627\u0646\u062f\u0646 Upgrade Notes \u0627\u0632 Version \u0641\u0639\u0644\u06cc \u062a\u0627 Version \u0645\u0642\u0635\u062f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Synapse \u06af\u0627\u0647\u06cc:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Database Migration<\/li>\n\n\n\n<li>Configuration Change<\/li>\n\n\n\n<li>Dependency Change<\/li>\n\n\n\n<li>PostgreSQL Requirement<\/li>\n\n\n\n<li>Module Compatibility Change<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u0631\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0633\u062a\u0646\u062f\u0627\u062a \u0631\u0633\u0645\u06cc Synapse \u062a\u0623\u06a9\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u0627\u06af\u0631 \u0627\u0632 Version \u0642\u062f\u06cc\u0645\u06cc Upgrade \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u0628\u0627\u06cc\u062f Upgrade Note\u0647\u0627\u06cc \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u0628\u06cc\u0646 \u0646\u0633\u062e\u0647 \u0641\u0639\u0644\u06cc \u0648 \u0645\u0642\u0635\u062f \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f\u061b Migration\u0647\u0627\u06cc Database \u0646\u06cc\u0632 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0647\u0646\u06af\u0627\u0645 Start \u0627\u0646\u062c\u0627\u0645 \u0634\u0648\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0631\u0648\u06cc Server \u0642\u062f\u06cc\u0645\u06cc \u0646\u0628\u0627\u06cc\u062f \u0628\u062f\u0648\u0646 \u0628\u0631\u0631\u0633\u06cc \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0647 \u062c\u062f\u06cc\u062f\u062a\u0631\u06cc\u0646 Tag Jump \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Update \u06a9\u0631\u062f\u0646 Synapse \u0628\u0627 Docker Compose<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646\u06cc\u062f Tag \u062c\u062f\u06cc\u062f \u0631\u0627 \u062f\u0631 Compose \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0647\u200c\u0627\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>synapse:\n  image: matrixdotorg\/synapse:vX.Y.Z\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0628\u062a\u062f\u0627 Image \u0631\u0627 Pull \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose pull synapse\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0633\u062a\u0648\u0631 <code>docker compose pull<\/code> \u0641\u0642\u0637 Image \u062c\u062f\u06cc\u062f \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 Container \u0631\u0627 Start \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose up -d synapse\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Docker Container \u0642\u0628\u0644\u06cc \u0631\u0627 \u062f\u0631 \u0635\u0648\u0631\u062a \u062a\u063a\u06cc\u06cc\u0631 Image Recreate \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 Volume\u0647\u0627\u06cc Mount \u0634\u062f\u0647 \u062d\u0641\u0638 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0628\u0639\u062f \u0627\u0632 Update Synapse \u0686\u0647 \u06a9\u0646\u06cc\u0645\u061f<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0628\u062a\u062f\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose ps\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose logs -f --tail=200 synapse\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647 \u0645\u0648\u0627\u0631\u062f\u06cc \u0645\u0627\u0646\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ERROR\nCRITICAL\ndatabase migration\nfailed\ntraceback\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633 Client API \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl http:\/\/127.0.0.1:8008\/_matrix\/client\/versions\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a Login \u0627\u0632 Element\u060c \u0627\u0631\u0633\u0627\u0644 Message \u0648 Upload \u0641\u0627\u06cc\u0644 \u0631\u0627 \u062a\u0633\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Update \u06a9\u0631\u062f\u0646 Element Web<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 Compose \u0627\u0632 Tag \u0645\u0634\u062e\u0635 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0627\u0628\u062a\u062f\u0627 Tag \u062c\u062f\u06cc\u062f \u0631\u0627 \u062f\u0631:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker-compose.yml\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose pull element\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose up -d element\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose logs --tail=100 element\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Element Web Docker \u0631\u0633\u0645\u06cc \u0627\u0632 Image \u0627\u0632 \u067e\u06cc\u0634 \u0633\u0627\u062e\u062a\u0647\u200c\u0634\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 Configuration \u0633\u0641\u0627\u0631\u0634\u06cc \u0631\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0627\u0632 \u0637\u0631\u06cc\u0642 <code>\/app\/config.json<\/code> \u0628\u0647 \u0622\u0646 Mount \u06a9\u0631\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Update \u06a9\u0631\u062f\u0646 Synapse Admin<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0628\u062a\u062f\u0627 Image \u0648\u0627\u0642\u0639\u06cc Stack \u0631\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose config | grep -A5 synapse-admin\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>grep -n \"synapse-admin\" docker-compose.yml\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0645\u06a9\u0646 \u0627\u0633\u062a Image \u0634\u0645\u0627 \u06cc\u06a9\u06cc \u0627\u0632 Variant\u0647\u0627\u06cc Synapse Admin \u0628\u0627\u0634\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 \u0645\u0634\u062e\u0635 \u0634\u062f\u0646 Image:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose pull synapse-admin\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose up -d synapse-admin\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose logs --tail=100 synapse-admin\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0631\u0648\u0698\u0647 \u06a9\u0644\u0627\u0633\u06cc\u06a9 Synapse Admin \u0647\u0645\u0686\u0646\u0627\u0646 Docker Deployment \u062f\u0627\u0631\u062f \u0648 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f\u062a\u0631 \u0627\u06cc\u0646 \u0627\u06a9\u0648\u0633\u06cc\u0633\u062a\u0645 \u0646\u06cc\u0632 Container Image \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Update \u06a9\u0631\u062f\u0646 \u06a9\u0644 Stack<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 Version\u0647\u0627 \u0627\u0632 \u0642\u0628\u0644 \u062f\u0631 Compose \u0645\u0634\u062e\u0635 \u0634\u062f\u0647\u200c\u0627\u0646\u062f \u0648 Upgrade Note\u0647\u0627 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose pull\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose up -d\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0631\u0648\u0634 \u062a\u0645\u0627\u0645 Image\u0647\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641\u200c\u0634\u062f\u0647 \u0631\u0627 Pull \u0648 Service\u0647\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631\u06a9\u0631\u062f\u0647 \u0631\u0627 Recreate \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u0631\u0648\u06cc Production \u0645\u0639\u0645\u0648\u0644\u0627\u064b Update \u0645\u0631\u062d\u0644\u0647\u200c\u0627\u06cc \u0627\u0645\u0646\u200c\u062a\u0631 \u0627\u0633\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>1. PostgreSQL Compatibility\n2. Synapse\n3. Element\n4. Synapse Admin\n5. \u0633\u0627\u06cc\u0631 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0622\u06cc\u0627 \u0628\u0631\u0627\u06cc Update \u0628\u0627\u06cc\u062f docker compose down \u0628\u0632\u0646\u06cc\u0645\u061f<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0639\u0645\u0648\u0644\u0627\u064b \u062e\u06cc\u0631.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0645\u0648\u0627\u0631\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose pull\ndocker compose up -d\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0627\u0641\u06cc \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u063a\u06cc\u0631\u0636\u0631\u0648\u0631\u06cc \u0627\u0632:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose down\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627\u0639\u062b Downtime \u0628\u06cc\u0634\u062a\u0631 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0647\u0634\u062f\u0627\u0631 \u062f\u0631\u0628\u0627\u0631\u0647 docker compose down -v<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0631\u0627\u06cc Update \u0645\u0639\u0645\u0648\u0644\u06cc \u0627\u062c\u0631\u0627 \u0646\u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose down -v\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06af\u0632\u06cc\u0646\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>-v\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Volume\u0647\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641\u200c\u0634\u062f\u0647 \u062a\u0648\u0633\u0637 Compose \u0631\u0627 \u0646\u06cc\u0632 \u062d\u0630\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f. Docker \u0646\u06cc\u0632 \u0635\u0631\u0627\u062d\u062a\u0627\u064b <code>--volumes<\/code> \u0631\u0627 \u0628\u0631\u0627\u06cc \u062d\u0630\u0641 Volume\u0647\u0627 \u0645\u0639\u0631\u0641\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 Database \u06cc\u0627 Media \u062f\u0627\u062e\u0644 Volume \u0628\u0627\u0634\u0646\u062f\u060c \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0627\u0639\u062b \u0627\u0632 \u062f\u0633\u062a \u0631\u0641\u062a\u0646 \u062f\u0627\u062f\u0647 \u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0686\u06af\u0648\u0646\u0647 \u0628\u0641\u0647\u0645\u06cc\u0645 Update \u0648\u0627\u0642\u0639\u0627\u064b \u0627\u0646\u062c\u0627\u0645 \u0634\u062f\u0647 \u0627\u0633\u062a\u061f<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 Update:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose images\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0686\u0646\u06cc\u0646:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker inspect synapse --format '{{.Config.Image}}'\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 Image Synapse:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker inspect element --format '{{.Config.Image}}'\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc Element \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0627\u0645 Container \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062f\u0631 Server \u0634\u0645\u0627 \u0645\u062a\u0641\u0627\u0648\u062a \u0628\u0627\u0634\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u062d\u0630\u0641 Image\u0647\u0627\u06cc \u0642\u062f\u06cc\u0645\u06cc \u0628\u0639\u062f \u0627\u0632 Update<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0633 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0645\u0637\u0645\u0626\u0646 \u0634\u062f\u06cc\u062f Stack \u0633\u0627\u0644\u0645 \u0627\u0633\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker image prune\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f Image\u0647\u0627\u06cc Dangling \u0631\u0627 \u067e\u0627\u06a9 \u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u067e\u0627\u06a9\u200c\u0633\u0627\u0632\u06cc \u062a\u0647\u0627\u062c\u0645\u06cc\u200c\u062a\u0631 \u0639\u062c\u0644\u0647 \u0646\u06a9\u0646\u06cc\u062f\u060c \u0632\u06cc\u0631\u0627 \u0646\u06af\u0647 \u062f\u0627\u0634\u062a\u0646 Image \u0642\u0628\u0644\u06cc \u0628\u0631\u0627\u06cc Rollback \u0627\u0648\u0644\u06cc\u0647 \u0645\u0641\u06cc\u062f \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Rollback \u0686\u06af\u0648\u0646\u0647 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u0634\u0648\u062f\u061f<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646\u06cc\u062f Synapse \u0642\u0628\u0644\u0627\u064b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>image: matrixdotorg\/synapse:vOLD\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0648\u062f\u0647 \u0648 \u0628\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>image: matrixdotorg\/synapse:vNEW\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Upgrade \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc Rollback \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 Tag \u0642\u0628\u0644\u06cc \u0631\u0627 \u062f\u0631 Compose \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f \u0648 \u0627\u062c\u0631\u0627 \u06a9\u0631\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose up -d synapse\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u0627\u06cc\u0646 \u0646\u06a9\u062a\u0647 \u0628\u0633\u06cc\u0627\u0631 \u0645\u0647\u0645 \u0627\u0633\u062a:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Rollback Synapse \u0647\u0645\u06cc\u0634\u0647 \u0641\u0642\u0637 \u0628\u0627 \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f\u0646 Docker Image \u0627\u0645\u0646 \u0646\u06cc\u0633\u062a.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0645\u06a9\u0646 \u0627\u0633\u062a Version \u062c\u062f\u06cc\u062f Database Migration \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f\u0647 \u0628\u0627\u0634\u062f \u06a9\u0647 Version \u0642\u062f\u06cc\u0645\u06cc \u0628\u0627 \u0622\u0646 \u0633\u0627\u0632\u06af\u0627\u0631 \u0646\u0628\u0627\u0634\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 Database Backup \u0642\u0628\u0644 \u0627\u0632 Upgrade \u0627\u0647\u0645\u06cc\u062a \u0632\u06cc\u0627\u062f\u06cc \u062f\u0627\u0631\u062f \u0648 Upgrade Notes \u0628\u0627\u06cc\u062f \u0628\u0631\u0631\u0633\u06cc \u0634\u0648\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0627\u0645\u0646\u06cc\u062a Synapse Admin<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Synapse Admin \u06cc\u06a9 \u067e\u0646\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a\u06cc \u062d\u0633\u0627\u0633 \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647\u062a\u0631 \u0627\u0633\u062a:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0641\u0642\u0637 \u0627\u0632 HTTPS \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0628\u0627\u0634\u062f.<\/li>\n\n\n\n<li>\u062f\u0631 \u0635\u0648\u0631\u062a \u0627\u0645\u06a9\u0627\u0646 IP Restriction \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.<\/li>\n\n\n\n<li>\u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u062f\u0648\u0646 Reverse Proxy \u0631\u0648\u06cc \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0645\u0646\u062a\u0634\u0631 \u0646\u0634\u0648\u062f.<\/li>\n\n\n\n<li>Server Admin Account \u062f\u0627\u0631\u0627\u06cc Password \u0642\u0648\u06cc \u0628\u0627\u0634\u062f.<\/li>\n\n\n\n<li>\u062f\u0633\u062a\u0631\u0633\u06cc \u0622\u0646 \u0645\u062d\u062f\u0648\u062f \u0628\u0647 Administrator\u0647\u0627 \u0628\u0627\u0634\u062f.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Synapse Admin \u0628\u0627 Token \u06cc\u06a9 Server Administrator \u0628\u0647 Admin API \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u0641\u0634\u0627\u06cc Credential \u0645\u062f\u06cc\u0631\u06cc\u062a\u06cc \u062e\u0637\u0631 \u0628\u0627\u0644\u0627\u06cc\u06cc \u062f\u0627\u0631\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0627\u0645\u0646\u06cc\u062a Port 8008<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Synapse \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u062f\u0627\u062e\u0644 Container \u0631\u0648\u06cc:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>8008\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06af\u0648\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0645\u0639\u0645\u0627\u0631\u06cc Production \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0627\u0632 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0628\u0647 \u0627\u06cc\u0646 Port \u0645\u062a\u0635\u0644 \u0646\u0634\u0648\u0646\u062f \u0648 \u0627\u0631\u062a\u0628\u0627\u0637 \u0639\u0645\u0648\u0645\u06cc \u0627\u0632 \u0637\u0631\u06cc\u0642 Reverse Proxy \u0648 HTTPS \u0627\u0646\u062c\u0627\u0645 \u0634\u0648\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0633\u062a\u0646\u062f\u0627\u062a \u0631\u0633\u0645\u06cc Synapse \u0646\u06cc\u0632 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Reverse Proxy \u0631\u0627 \u0628\u0631\u0627\u06cc \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 TLS \u062f\u0631 \u062c\u0644\u0648\u06cc Synapse \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u062a\u0646\u0638\u06cc\u0645 Healthcheck<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc Synapse \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 Healthcheck \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>healthcheck:\n  test: &#91;\"CMD\", \"curl\", \"-fSs\", \"http:\/\/localhost:8008\/health\"]\n  interval: 15s\n  timeout: 5s\n  retries: 3\n  start_period: 5s\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Docker Image \u0631\u0633\u0645\u06cc Synapse \u0646\u0645\u0648\u0646\u0647 \u0645\u0634\u0627\u0628\u0647\u06cc \u0628\u0631\u0627\u06cc Healthcheck \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose ps\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0648\u0636\u0639\u06cc\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>healthy\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0627 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0647\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Monitoring \u0686\u0647 \u0686\u06cc\u0632\u0647\u0627\u06cc\u06cc \u0645\u0647\u0645 \u0627\u0633\u062a\u061f<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc Server Matrix \u062d\u062f\u0627\u0642\u0644 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0645\u0627\u0646\u06cc\u062a\u0648\u0631 \u0634\u0648\u0646\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>CPU<\/li>\n\n\n\n<li>RAM<\/li>\n\n\n\n<li>Disk Usage<\/li>\n\n\n\n<li>PostgreSQL<\/li>\n\n\n\n<li>Container Status<\/li>\n\n\n\n<li>Synapse HTTP Availability<\/li>\n\n\n\n<li>TLS Certificate<\/li>\n\n\n\n<li>Media Store Size<\/li>\n\n\n\n<li>Database Size<\/li>\n\n\n\n<li>Backup Status<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0647\u062a\u0631 \u0627\u0633\u062a Alert \u0628\u0631\u0627\u06cc Down \u0634\u062f\u0646 Container\u0647\u0627 \u0627\u06cc\u062c\u0627\u062f \u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0645\u0634\u06a9\u0644\u0627\u062a \u0631\u0627\u06cc\u062c<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u062e\u06cc \u0645\u0634\u06a9\u0644\u0627\u062a \u0645\u062a\u062f\u0627\u0648\u0644 \u062f\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u06cc\u0646 Stack \u0639\u0628\u0627\u0631\u062a\u200c\u0627\u0646\u062f \u0627\u0632:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0627\u0634\u062a\u0628\u0627\u0647 \u062f\u0631 YAML \u0641\u0627\u06cc\u0644 <code>homeserver.yaml<\/code><\/li>\n\n\n\n<li>\u062e\u0631\u0627\u0628 \u0634\u062f\u0646 <code>config.json<\/code> Element<\/li>\n\n\n\n<li>\u067e\u0631 \u0634\u062f\u0646 Disk \u062a\u0648\u0633\u0637 Media<\/li>\n\n\n\n<li>PostgreSQL Connection Error<\/li>\n\n\n\n<li>Permission \u0627\u0634\u062a\u0628\u0627\u0647 \u0631\u0648\u06cc Volume<\/li>\n\n\n\n<li>Update \u0628\u062f\u0648\u0646 Backup<\/li>\n\n\n\n<li>Update \u062c\u0647\u0634\u06cc \u0627\u0632 Version \u0628\u0633\u06cc\u0627\u0631 \u0642\u062f\u06cc\u0645\u06cc<\/li>\n\n\n\n<li>\u062d\u0630\u0641 Volume \u0647\u0646\u06af\u0627\u0645 <code>docker compose down -v<\/code><\/li>\n\n\n\n<li>Publish \u0634\u062f\u0646 Port\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a\u06cc \u0631\u0648\u06cc \u0627\u06cc\u0646\u062a\u0631\u0646\u062a<\/li>\n\n\n\n<li>Restart \u0646\u06a9\u0631\u062f\u0646 Synapse \u0628\u0639\u062f \u0627\u0632 \u062a\u063a\u06cc\u06cc\u0631 Configuration<\/li>\n\n\n\n<li>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code>latest<\/code> \u0628\u062f\u0648\u0646 \u062b\u0628\u062a Version \u0642\u0628\u0644\u06cc<\/li>\n\n\n\n<li>Update \u06a9\u0631\u062f\u0646 Synapse \u0628\u062f\u0648\u0646 \u0645\u0637\u0627\u0644\u0639\u0647 Upgrade Notes<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u200c\u0647\u0627<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0635\u062d\u06cc\u062d Server:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0647\u0645\u06cc\u0634\u0647 Docker Compose File \u0631\u0627 Version Control \u06cc\u0627 Backup \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li>\u0642\u0628\u0644 \u0627\u0632 \u062a\u063a\u06cc\u06cc\u0631 <code>homeserver.yaml<\/code> Backup \u0628\u06af\u06cc\u0631\u06cc\u062f.<\/li>\n\n\n\n<li>Configuration \u0631\u0627 \u0642\u0628\u0644 \u0627\u0632 Restart Validate \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li>PostgreSQL \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0645\u0646\u0638\u0645 Backup \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li>Media Store \u0631\u0627 Backup \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li>Signing Key \u0631\u0627 \u062e\u0627\u0631\u062c \u0627\u0632 Server \u0646\u06cc\u0632 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li>Update\u0647\u0627 \u0631\u0627 \u0645\u0631\u062d\u0644\u0647\u200c\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f.<\/li>\n\n\n\n<li>Version\u0647\u0627 \u0631\u0627 \u062f\u0631 Production Pin \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li>\u0642\u0628\u0644 \u0627\u0632 Synapse Upgrade\u060c Upgrade Notes \u0631\u0627 \u0645\u0637\u0627\u0644\u0639\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li>Log\u0647\u0627 \u0631\u0627 \u0628\u0639\u062f \u0627\u0632 \u0647\u0631 Update \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li>Admin Panel \u0631\u0627 \u0645\u062d\u062f\u0648\u062f \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li>Disk Usage \u0631\u0627 \u0645\u0627\u0646\u06cc\u062a\u0648\u0631 \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li>\u0627\u0632 \u0627\u062c\u0631\u0627\u06cc <code>docker compose down -v<\/code> \u0628\u062f\u0648\u0646 \u0634\u0646\u0627\u062e\u062a \u06a9\u0627\u0645\u0644 \u0627\u062b\u0631 \u0622\u0646 \u062e\u0648\u062f\u062f\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Workflow \u067e\u06cc\u0634\u0646\u0647\u0627\u062f\u06cc \u0628\u0631\u0627\u06cc Update \u0627\u0645\u0646<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc Update \u06cc\u06a9 Server Production \u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u0645\u0646\u0627\u0633\u0628 \u0627\u0633\u062a.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u0631\u062d\u0644\u0647 \u0627\u0648\u0644: \u0645\u0634\u0627\u0647\u062f\u0647 \u0648\u0636\u0639\u06cc\u062a<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>cd ~\/matrix-stack\ndocker compose ps\ndocker compose images\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u0631\u062d\u0644\u0647 \u062f\u0648\u0645: Backup Compose<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>cp docker-compose.yml \\\ndocker-compose.yml.bak.$(date +%Y-%m-%d-%H%M)\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u0631\u062d\u0644\u0647 \u0633\u0648\u0645: Backup Synapse Config<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>cp synapse\/data\/homeserver.yaml \\\nsynapse\/data\/homeserver.yaml.bak.$(date +%Y-%m-%d-%H%M)\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u0631\u062d\u0644\u0647 \u0686\u0647\u0627\u0631\u0645: Backup Database<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker exec -t postgres \\\npg_dumpall -U postgres \\\n&gt; postgres-before-upgrade-$(date +%Y-%m-%d).sql\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0627\u0645 Container \u0648 PostgreSQL User \u0631\u0627 \u0628\u0627 Environment \u0648\u0627\u0642\u0639\u06cc \u062e\u0648\u062f \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u0631\u062d\u0644\u0647 \u067e\u0646\u062c\u0645: Upgrade Notes<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Version \u0641\u0639\u0644\u06cc Synapse \u0631\u0627 \u0628\u0627 Version \u0645\u0642\u0635\u062f \u0645\u0642\u0627\u06cc\u0633\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u062a\u0645\u0627\u0645 Upgrade Note\u0647\u0627\u06cc \u0645\u06cc\u0627\u0646 \u0622\u0646\u0647\u0627 \u0631\u0627 \u0628\u062e\u0648\u0627\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u0631\u062d\u0644\u0647 \u0634\u0634\u0645: \u062a\u063a\u06cc\u06cc\u0631 Tag<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker-compose.yml\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Version \u062c\u062f\u06cc\u062f Stable \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u0631\u062d\u0644\u0647 \u0647\u0641\u062a\u0645: Pull<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose pull synapse\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u0631\u062d\u0644\u0647 \u0647\u0634\u062a\u0645: Recreate<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose up -d synapse\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u0631\u062d\u0644\u0647 \u0646\u0647\u0645: \u0628\u0631\u0631\u0633\u06cc Log<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose logs -f --tail=200 synapse\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u0631\u062d\u0644\u0647 \u062f\u0647\u0645: \u062a\u0633\u062a API<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>curl http:\/\/127.0.0.1:8008\/_matrix\/client\/versions\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u0631\u062d\u0644\u0647 \u06cc\u0627\u0632\u062f\u0647\u0645: \u062a\u0633\u062a \u0648\u0627\u0642\u0639\u06cc<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 Element:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Login\nSend Message\nReceive Message\nUpload File\nOpen Room\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0627 \u062a\u0633\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u0631\u062d\u0644\u0647 \u062f\u0648\u0627\u0632\u062f\u0647\u0645: Update Element \u0648 Admin<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose pull element synapse-admin\ndocker compose up -d element synapse-admin\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u067e\u0627\u06cc\u0627\u0646:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose ps\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0686\u06a9\u200c\u0644\u06cc\u0633\u062a \u0645\u062f\u06cc\u0631\u06cc\u062a \u0633\u0631\u0648\u0631 Element<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062f\u0648\u0631\u0647\u200c\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u062a\u0645\u0627\u0645 Container\u0647\u0627 Running \u0647\u0633\u062a\u0646\u062f.<\/li>\n\n\n\n<li>Synapse Healthy \u0627\u0633\u062a.<\/li>\n\n\n\n<li>PostgreSQL \u0641\u0639\u0627\u0644 \u0627\u0633\u062a.<\/li>\n\n\n\n<li>Element \u0628\u0647 Synapse \u0645\u062a\u0635\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n\n\n\n<li>Synapse Admin \u0642\u0627\u0628\u0644 Login \u0627\u0633\u062a.<\/li>\n\n\n\n<li>Disk \u0641\u0636\u0627\u06cc \u06a9\u0627\u0641\u06cc \u062f\u0627\u0631\u062f.<\/li>\n\n\n\n<li>Media Store \u0628\u06cc\u0634 \u0627\u0632 \u062d\u062f \u0628\u0632\u0631\u06af \u0646\u0634\u062f\u0647 \u0627\u0633\u062a.<\/li>\n\n\n\n<li>Database Backup \u0633\u0627\u0644\u0645 \u0627\u0633\u062a.<\/li>\n\n\n\n<li><code>homeserver.yaml<\/code> Backup \u062f\u0627\u0631\u062f.<\/li>\n\n\n\n<li>Signing Key Backup \u062f\u0627\u0631\u062f.<\/li>\n\n\n\n<li>TLS Certificate \u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a.<\/li>\n\n\n\n<li>Docker Image\u0647\u0627 \u0628\u06cc\u0634 \u0627\u0632 \u062d\u062f \u0642\u062f\u06cc\u0645\u06cc \u0646\u06cc\u0633\u062a\u0646\u062f.<\/li>\n\n\n\n<li>Upgrade Notes \u0628\u0631\u0631\u0633\u06cc \u0634\u062f\u0647\u200c\u0627\u0646\u062f.<\/li>\n\n\n\n<li>Synapse Admin \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc Administrator\u0647\u0627 \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633 \u0627\u0633\u062a.<\/li>\n\n\n\n<li>Port\u0647\u0627\u06cc \u063a\u06cc\u0631\u0636\u0631\u0648\u0631\u06cc \u0631\u0648\u06cc \u0627\u06cc\u0646\u062a\u0631\u0646\u062a Publish \u0646\u0634\u062f\u0647\u200c\u0627\u0646\u062f.<\/li>\n\n\n\n<li>Log\u0647\u0627 Error \u062c\u062f\u06cc \u0646\u062f\u0627\u0631\u0646\u062f.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0645\u0637\u0627\u0644\u0639\u0627\u062a \u0628\u06cc\u0634\u062a\u0631<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u0637\u0627\u0644\u0639\u0647 \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631\u0628\u0627\u0631\u0647 Element\u060c Synapse\u060c Synapse Admin \u0648 Docker \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0645\u0646\u0627\u0628\u0639 \u0631\u0633\u0645\u06cc \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Element Web \u2013 Docker Installation<\/strong><br>\u0646\u062d\u0648\u0647 \u0627\u062c\u0631\u0627\u06cc Element Web \u0628\u0627 Docker\u060c Mount \u06a9\u0631\u062f\u0646 <code>config.json<\/code> \u0648 \u062a\u0646\u0638\u06cc\u0645 Container.<br><a href=\"https:\/\/web-docs.element.dev\/install.html?\" target=\"_blank\" rel=\"noopener\">\u0645\u0633\u062a\u0646\u062f\u0627\u062a \u0631\u0633\u0645\u06cc Element Web<\/a><\/li>\n\n\n\n<li><strong>Synapse Docker Image<\/strong><br>\u0645\u0633\u062a\u0646\u062f\u0627\u062a Docker Image \u0631\u0633\u0645\u06cc Synapse\u060c Volume\u0647\u0627\u060c <code>\/data<\/code>\u060c Port 8008\u060c \u0627\u06cc\u062c\u0627\u062f Administrator \u0648 Healthcheck.<br><a href=\"https:\/\/hub.docker.com\/r\/matrixdotorg\/synapse\/?\" target=\"_blank\" rel=\"noopener\">Synapse Docker Image<\/a><\/li>\n\n\n\n<li><strong>Synapse Administration<\/strong><br>\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0631\u0633\u0645\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a User\u060c Room\u060c Media\u060c Monitoring \u0648 Logging.<br><a href=\"https:\/\/element-hq.github.io\/synapse\/latest\/usage\/administration\/?\" target=\"_blank\" rel=\"noopener\">Synapse Administration Documentation<\/a><\/li>\n\n\n\n<li><strong>Synapse Configuration Manual<\/strong><br>\u0645\u0631\u062c\u0639 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a <code>homeserver.yaml<\/code> \u0648 \u0631\u0648\u0634 Validate \u06a9\u0631\u062f\u0646 Configuration.<br><a href=\"https:\/\/element-hq.github.io\/synapse\/latest\/usage\/configuration\/config_documentation.html?utm_source=chatgpt.com\" target=\"_blank\" rel=\"noopener\">Synapse Configuration Manual<\/a><\/li>\n\n\n\n<li><strong>Synapse Upgrade Documentation<\/strong><br>\u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0645\u0631\u062c\u0639 \u0642\u0628\u0644 \u0627\u0632 Update \u06a9\u0631\u062f\u0646 Synapse \u0648 \u0628\u0631\u0631\u0633\u06cc Database Migration\u0647\u0627 \u0648 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a Version\u0647\u0627.<br><a href=\"https:\/\/element-hq.github.io\/synapse\/latest\/upgrade.html?\" target=\"_blank\" rel=\"noopener\">Synapse Upgrade Notes<\/a><\/li>\n\n\n\n<li><strong>Synapse Admin API<\/strong><br>\u0645\u0633\u062a\u0646\u062f\u0627\u062a API\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a\u06cc Synapse.<br><a href=\"https:\/\/element-hq.github.io\/synapse\/latest\/usage\/administration\/admin_api\/?\" target=\"_blank\" rel=\"noopener\">Synapse Admin API<\/a><\/li>\n\n\n\n<li><strong>Synapse Admin<\/strong><br>\u067e\u0646\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a\u06cc \u0628\u0631\u0627\u06cc Synapse \u0648 \u0631\u0648\u0634 \u0627\u062c\u0631\u0627\u06cc Docker \u0622\u0646.<br><a href=\"https:\/\/github.com\/Awesome-Technologies\/synapse-admin?\" target=\"_blank\" rel=\"noopener\">Synapse Admin GitHub<\/a><\/li>\n\n\n\n<li><strong>Docker Compose Pull<\/strong><br>\u0646\u062d\u0648\u0647 \u062f\u0631\u06cc\u0627\u0641\u062a Image \u062c\u062f\u06cc\u062f Service\u0647\u0627.<br><a href=\"https:\/\/docs.docker.com\/reference\/cli\/docker\/compose\/pull\/?\" target=\"_blank\" rel=\"noopener\">Docker Compose Pull Documentation<\/a><\/li>\n\n\n\n<li><strong>Docker Compose Up<\/strong><br>\u0646\u062d\u0648\u0647 Recreate \u06a9\u0631\u062f\u0646 Container\u0647\u0627 \u0628\u0639\u062f \u0627\u0632 \u062a\u063a\u06cc\u06cc\u0631 Image \u06cc\u0627 Configuration.<br><a href=\"https:\/\/docs.docker.com\/reference\/cli\/docker\/compose\/up\/?\" target=\"_blank\" rel=\"noopener\">Docker Compose Up Documentation<\/a><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u062c\u0645\u0639\u200c\u0628\u0646\u062f\u06cc<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u06a9 Server Element \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 Docker \u062f\u0631 \u0648\u0627\u0642\u0639 \u0627\u0632 \u0686\u0646\u062f \u0628\u062e\u0634 \u0645\u0633\u062a\u0642\u0644 \u062a\u0634\u06a9\u06cc\u0644 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Element Web<\/strong> \u0631\u0627\u0628\u0637\u06cc \u0627\u0633\u062a \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Synapse<\/strong> \u0647\u0633\u062a\u0647 \u0627\u0635\u0644\u06cc Matrix Homeserver \u0627\u0633\u062a \u0648 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646\u060c Room\u0647\u0627\u060c Event\u0647\u0627\u060c Media\u060c Federation \u0648 API\u0647\u0627 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Synapse Admin<\/strong> \u0631\u0627\u0628\u0637 \u0645\u062f\u06cc\u0631\u06cc\u062a\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0639\u0645\u0644\u06cc\u0627\u062a Admin API \u0631\u0627 \u0633\u0627\u062f\u0647\u200c\u062a\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648 \u062f\u0631 \u0645\u062d\u06cc\u0637 Production \u0645\u0639\u0645\u0648\u0644\u0627\u064b <strong>PostgreSQL<\/strong> \u0646\u06cc\u0632 Database \u0627\u0635\u0644\u06cc Synapse \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0631\u0648\u0632\u0645\u0631\u0647 Stack\u060c \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0632\u06cc\u0631 \u0627\u0632 \u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 Command\u0647\u0627 \u0647\u0633\u062a\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose ps\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u0648\u0636\u0639\u06cc\u062a Container\u0647\u0627\u060c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose logs -f synapse\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc Log\u060c<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose restart synapse\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc Restart \u0633\u0631\u0648\u06cc\u0633.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u0628\u0631\u0627\u06cc Update \u0628\u0627\u06cc\u062f \u062a\u0641\u0627\u0648\u062a \u0645\u0647\u0645\u06cc \u0631\u0627 \u062f\u0631 \u0646\u0638\u0631 \u062f\u0627\u0634\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose restart\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0633\u062e\u0647 \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 \u0631\u0627 Update \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a Image \u062c\u062f\u06cc\u062f \u0628\u0627\u06cc\u062f \u0627\u0632:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose pull\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648 \u0633\u067e\u0633:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose up -d\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0648\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0645\u0648\u0631\u062f Synapse\u060c Update \u0628\u0627\u06cc\u062f \u0628\u0627 \u0627\u062d\u062a\u06cc\u0627\u0637 \u0628\u06cc\u0634\u062a\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0634\u0648\u062f. \u0642\u0628\u0644 \u0627\u0632 \u062a\u063a\u06cc\u06cc\u0631 Version \u0628\u0627\u06cc\u062f Database Backup \u06af\u0631\u0641\u062a\u0647 \u0634\u0648\u062f\u060c Upgrade Notes \u0628\u06cc\u0646 \u0646\u0633\u062e\u0647 \u0641\u0639\u0644\u06cc \u0648 \u0646\u0633\u062e\u0647 \u062c\u062f\u06cc\u062f \u0645\u0637\u0627\u0644\u0639\u0647 \u0634\u0648\u0646\u062f \u0648 \u0633\u067e\u0633 Container \u062c\u062f\u06cc\u062f \u0627\u062c\u0631\u0627 \u0634\u0648\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 Production \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0628\u0647\u200c\u062c\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u062f\u0648\u0646 \u06a9\u0646\u062a\u0631\u0644 \u0627\u0632 Tag:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>latest\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Version Stable \u0645\u0634\u062e\u0635\u06cc \u062f\u0631 <code>docker-compose.yml<\/code> \u062b\u0628\u062a \u0634\u0648\u062f \u062a\u0627 Upgrade\u0647\u0627 \u0642\u0627\u0628\u0644 \u067e\u06cc\u0634\u200c\u0628\u06cc\u0646\u06cc \u0648 Rollback \u0622\u0646\u0647\u0627 \u0642\u0627\u0628\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0627\u0634\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0686\u0646\u06cc\u0646 Persistent Data\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>PostgreSQL Database\nMedia Store\nhomeserver.yaml\nSigning Key\nElement config.json\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627\u06cc\u062f \u0645\u0633\u062a\u0642\u0644 \u0627\u0632 Container \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0648 Backup \u0634\u0648\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0627\u0635\u0644 \u062f\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u06cc\u0646 Server \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 <strong>Container \u0642\u0627\u0628\u0644 \u062a\u0639\u0648\u06cc\u0636 \u0627\u0633\u062a\u060c \u0627\u0645\u0627 Data \u0648 Configuration \u0627\u0631\u0632\u0634 \u0648\u0627\u0642\u0639\u06cc \u0633\u0631\u0648\u06cc\u0633 \u0647\u0633\u062a\u0646\u062f<\/strong>. \u0627\u06af\u0631 Volume\u0647\u0627\u060c Database\u060c Signing Key \u0648 Configuration \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0648 Backup \u0634\u0648\u0646\u062f\u060c Update \u0648 Recovery Stack \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647\u200c\u062a\u0631 \u0648 \u06a9\u0645\u200c\u0631\u06cc\u0633\u06a9\u200c\u062a\u0631 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u06cc\u0627\u0646 \u067e\u0648\u0631<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0645\u062f\u06cc\u0631\u06cc\u062a Element\u060c Synapse \u0648 Synapse Admin \u062f\u0631 Docker \u0645\u0642\u062f\u0645\u0647 Element \u06cc\u06a9\u06cc \u0627\u0632 \u06a9\u0644\u0627\u06cc\u0646\u062a\u200c\u0647\u0627\u06cc \u0634\u0646\u0627\u062e\u062a\u0647\u200c\u0634\u062f\u0647 \u067e\u0631\u0648\u062a\u06a9\u0644 Matrix \u0628\u0631\u0627\u06cc \u067e\u06cc\u0627\u0645\u200c\u0631\u0633\u0627\u0646\u06cc \u0648 \u0627\u0631\u062a\u0628\u0627\u0637\u0627\u062a \u0633\u0627\u0632\u0645\u0627\u0646\u06cc \u0627\u0633\u062a. \u0627\u0645\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 Element \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a Self-Hosted \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0627 \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u0648\u0627\u062d\u062f \u0631\u0648\u0628\u0647\u200c\u0631\u0648 \u0646\u06cc\u0633\u062a\u06cc\u0645. \u062f\u0631 \u06cc\u06a9 \u0646\u0635\u0628 Docker \u0645\u0639\u0645\u0648\u0644\u06cc \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f: \u0648 \u062f\u0631 \u0635\u0648\u0631\u062a \u0646\u06cc\u0627\u0632 \u0628\u0647 [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":21861,"parent":17603,"menu_order":17,"comment_status":"open","ping_status":"closed","template":"","doc_tag":[],"class_list":["post-21854","docs","type-docs","status-publish","has-post-thumbnail","hentry"],"acf":[],"author_avatar":"https:\/\/maralhost.com\/kb\/wp-content\/litespeed\/avatar\/c59fc140fa83b542ed78a005738a60da.jpg?ver=1789947097","author_name":"Shayan Kianpoor","_links":{"self":[{"href":"https:\/\/maralhost.com\/kb\/wp-json\/wp\/v2\/docs\/21854","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/maralhost.com\/kb\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/maralhost.com\/kb\/wp-json\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/maralhost.com\/kb\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/maralhost.com\/kb\/wp-json\/wp\/v2\/comments?post=21854"}],"version-history":[{"count":2,"href":"https:\/\/maralhost.com\/kb\/wp-json\/wp\/v2\/docs\/21854\/revisions"}],"predecessor-version":[{"id":21862,"href":"https:\/\/maralhost.com\/kb\/wp-json\/wp\/v2\/docs\/21854\/revisions\/21862"}],"up":[{"embeddable":true,"href":"https:\/\/maralhost.com\/kb\/wp-json\/wp\/v2\/docs\/17603"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/maralhost.com\/kb\/wp-json\/wp\/v2\/media\/21861"}],"wp:attachment":[{"href":"https:\/\/maralhost.com\/kb\/wp-json\/wp\/v2\/media?parent=21854"}],"wp:term":[{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/maralhost.com\/kb\/wp-json\/wp\/v2\/doc_tag?post=21854"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}