{"id":17587,"date":"2026-07-02T16:08:07","date_gmt":"2026-07-02T12:38:07","guid":{"rendered":"https:\/\/maralhost.com\/kb\/?p=17587"},"modified":"2026-07-02T16:08:09","modified_gmt":"2026-07-02T12:38:09","slug":"elementwithdocker","status":"publish","type":"post","link":"https:\/\/maralhost.com\/kb\/elementwithdocker\/","title":{"rendered":"\u0622\u0645\u0648\u0632\u0634 \u0646\u0635\u0628 \u0648 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc Matrix Synapse + Element Web + Coturn \u0628\u0627 Docker \u0631\u0648\u06cc Ubuntu 24.04"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\u0645\u0642\u062f\u0645\u0647<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u062f \u06cc\u06a9 \u067e\u06cc\u0627\u0645\u200c\u0631\u0633\u0627\u0646 \u06a9\u0627\u0645\u0644\u0627\u064b \u062e\u0635\u0648\u0635\u06cc\u060c \u0645\u062a\u0646\u200c\u0628\u0627\u0632 \u0648 \u0645\u0633\u062a\u0642\u0644 \u0645\u0634\u0627\u0628\u0647 Slack \u06cc\u0627 Microsoft Teams \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f\u060c <strong>Matrix<\/strong> \u06cc\u06a9\u06cc \u0627\u0632 \u0628\u0647\u062a\u0631\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u06a9\u0627\u0645\u0644 Matrix \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Docker \u0631\u0648\u06cc Ubuntu 24.04 \u0646\u0635\u0628 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u0634\u0645\u0627 \u062e\u0648\u0627\u0647\u0646\u062f \u0628\u0648\u062f:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>\u0633\u0631\u0648\u06cc\u0633<\/th><th>\u0622\u062f\u0631\u0633<\/th><\/tr><tr><td>Matrix Homeserver<\/td><td>dataton.ir<\/td><\/tr><tr><td>Element Web Client<\/td><td>web.dataton.ir<\/td><\/tr><tr><td>TURN Server<\/td><td>turn.dataton.ir<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627 \u0634\u0627\u0645\u0644 \u0646\u0635\u0628 \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0627\u0633\u062a:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Docker \u0648 Docker Compose<\/li>\n\n\n\n<li>Matrix Synapse<\/li>\n\n\n\n<li>Element Web<\/li>\n\n\n\n<li>Coturn (TURN Server)<\/li>\n\n\n\n<li>Nginx Reverse Proxy<\/li>\n\n\n\n<li>SSL Certificate<\/li>\n\n\n\n<li>\u0633\u0627\u062e\u062a \u0627\u0648\u0644\u06cc\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a\u06cc<\/li>\n\n\n\n<li>\u062a\u0633\u062a \u062a\u0645\u0627\u0633 \u0635\u0648\u062a\u06cc \u0648 \u062a\u0635\u0648\u06cc\u0631\u06cc<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"751\" src=\"https:\/\/maralhost.com\/kb\/wp-content\/uploads\/2026\/07\/68d5439e3c6385b126b11d66_ESS-Community-architecture-dark-1024x751.webp\" alt=\"\" class=\"wp-image-17588\" style=\"aspect-ratio:1.3635344247589145;width:599px;height:auto\" title=\"\" srcset=\"https:\/\/maralhost.com\/kb\/wp-content\/uploads\/2026\/07\/68d5439e3c6385b126b11d66_ESS-Community-architecture-dark-1024x751.webp 1024w, https:\/\/maralhost.com\/kb\/wp-content\/uploads\/2026\/07\/68d5439e3c6385b126b11d66_ESS-Community-architecture-dark-300x220.webp 300w, https:\/\/maralhost.com\/kb\/wp-content\/uploads\/2026\/07\/68d5439e3c6385b126b11d66_ESS-Community-architecture-dark-768x564.webp 768w, https:\/\/maralhost.com\/kb\/wp-content\/uploads\/2026\/07\/68d5439e3c6385b126b11d66_ESS-Community-architecture-dark.webp 1352w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u067e\u06cc\u0634\u200c\u0646\u06cc\u0627\u0632\u0647\u0627<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0628\u0644 \u0627\u0632 \u0634\u0631\u0648\u0639\u060c \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0622\u0645\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ubuntu Server 24.04<\/li>\n\n\n\n<li>\u062f\u0633\u062a\u0631\u0633\u06cc Root \u06cc\u0627 Sudo<\/li>\n\n\n\n<li>\u062f\u0627\u0645\u0646\u0647 \u0641\u0639\u0627\u0644<\/li>\n\n\n\n<li>\u06af\u0648\u0627\u0647\u06cc SSL \u0645\u0639\u062a\u0628\u0631<\/li>\n\n\n\n<li>\u0622\u062f\u0631\u0633 IP \u0639\u0645\u0648\u0645\u06cc<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">\u0645\u0639\u0645\u0627\u0631\u06cc \u0646\u0647\u0627\u06cc\u06cc \u067e\u0631\u0648\u0698\u0647<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>Internet\n      \u2502\n      \u25bc\n   Nginx (SSL)\n      \u2502\n \u250c\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502                    \u2502\n \u25bc                    \u25bc\nSynapse           Element Web\n      \u2502\n      \u25bc\n   Coturn (TURN)<\/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\u0631\u062d\u0644\u0647 \u0627\u0648\u0644: \u062a\u0646\u0638\u06cc\u0645 DNS<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0628\u062a\u062f\u0627 \u0631\u06a9\u0648\u0631\u062f\u0647\u0627\u06cc DNS \u062f\u0627\u0645\u0646\u0647 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>Type<\/td><td>Host<\/td><td>\u0645\u0642\u0635\u062f<\/td><\/tr><tr><td>A<\/td><td>@<\/td><td>IP Server<\/td><\/tr><tr><td>A<\/td><td>web<\/td><td>IP Server<\/td><\/tr><tr><td>A<\/td><td>turn<\/td><td>IP Server<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0631 \u0633\u0647 \u0631\u06a9\u0648\u0631\u062f \u0628\u0627\u06cc\u062f \u0628\u0647 IP \u0627\u0635\u0644\u06cc \u0633\u0631\u0648\u0631 \u0627\u0634\u0627\u0631\u0647 \u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0633 \u0627\u0632 \u0627\u0639\u0645\u0627\u0644 DNS \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0686\u0646\u062f \u062f\u0642\u06cc\u0642\u0647 \u062a\u0627 \u0686\u0646\u062f \u0633\u0627\u0639\u062a \u0645\u0646\u062a\u0638\u0631 \u0627\u0646\u062a\u0634\u0627\u0631 \u0631\u06a9\u0648\u0631\u062f\u0647\u0627 \u0628\u0645\u0627\u0646\u06cc\u062f.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"618\" height=\"323\" src=\"https:\/\/maralhost.com\/kb\/wp-content\/uploads\/2026\/07\/images.webp\" alt=\"\" class=\"wp-image-17589\" title=\"\" srcset=\"https:\/\/maralhost.com\/kb\/wp-content\/uploads\/2026\/07\/images.webp 618w, https:\/\/maralhost.com\/kb\/wp-content\/uploads\/2026\/07\/images-300x157.webp 300w\" sizes=\"(max-width: 618px) 100vw, 618px\" \/><\/figure>\n<\/div>\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 \u062f\u0648\u0645: \u0646\u0635\u0628 Docker<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0628\u062a\u062f\u0627 \u0633\u06cc\u0633\u062a\u0645 \u0631\u0627 \u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update\nsudo apt upgrade -y<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633 Docker \u0648 Nginx \u0631\u0627 \u0646\u0635\u0628 \u0646\u0645\u0627\u06cc\u06cc\u062f.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install -y docker.io docker-compose-v2 nginx<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0639\u0627\u0644\u200c\u0633\u0627\u0632\u06cc \u0633\u0631\u0648\u06cc\u0633 Docker<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl enable docker\nsudo systemctl start docker<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0631\u0633\u06cc \u0646\u0635\u0628<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker --version\ndocker compose version<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u06af\u0631 \u0646\u0635\u0628 Docker \u0628\u0627 \u062e\u0637\u0627 \u0645\u0648\u0627\u062c\u0647 \u0634\u062f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0628\u0631\u062e\u06cc \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc Ubuntu \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0646\u0633\u062e\u0647 \u0645\u0648\u062c\u0648\u062f \u062f\u0631 Repository \u0642\u062f\u06cc\u0645\u06cc \u0628\u0627\u0634\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a Docker \u0631\u0627 \u0627\u0632 \u0645\u062e\u0632\u0646 \u0631\u0633\u0645\u06cc \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0628\u062a\u062f\u0627 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u0642\u0628\u0644\u06cc \u0631\u0627 \u062d\u0630\u0641 \u0646\u0645\u0627\u06cc\u06cc\u062f.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt remove docker docker-engine docker.io containerd runc<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0635\u0628 \u067e\u06cc\u0634\u200c\u0646\u06cc\u0627\u0632\u0647\u0627<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update\n\nsudo apt install -y ca-certificates curl gnupg nginx<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u062c\u0627\u062f Keyring<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo install -m 0755 -d \/etc\/apt\/keyrings<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u0646\u0644\u0648\u062f GPG Key<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -fsSL https:\/\/download.docker.com\/linux\/ubuntu\/gpg | \\\nsudo gpg --dearmor -o \/etc\/apt\/keyrings\/docker.gpg<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0646\u0638\u06cc\u0645 Permission<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo chmod a+r \/etc\/apt\/keyrings\/docker.gpg<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0641\u0632\u0648\u062f\u0646 Repository \u0631\u0633\u0645\u06cc Docker<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo \\\n\"deb &#91;arch=$(dpkg --print-architecture) signed-by=\/etc\/apt\/keyrings\/docker.gpg] \\\nhttps:\/\/download.docker.com\/linux\/ubuntu \\\n$(. \/etc\/os-release &amp;&amp; echo \"$VERSION_CODENAME\") stable\" | \\\nsudo tee \/etc\/apt\/sources.list.d\/docker.list &gt; \/dev\/null<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0635\u0628 Docker<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update\n\nsudo apt install -y \\\ndocker-ce \\\ndocker-ce-cli \\\ncontainerd.io \\\ndocker-buildx-plugin \\\ndocker-compose-plugin<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0631\u0633\u06cc \u0646\u0633\u062e\u0647<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker --version\n\ndocker compose version<\/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\u0631\u062d\u0644\u0647 \u0633\u0648\u0645: \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u067e\u0648\u0631\u062a\u200c\u0647\u0627\u06cc \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0635\u0648\u0631\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 UFW\u060c \u067e\u0648\u0631\u062a\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ufw allow 80\/tcp\n\nsudo ufw allow 443\/tcp\n\nsudo ufw allow 3478\/tcp\n\nsudo ufw allow 5349\/tcp\n\nsudo ufw allow 49152:49200\/udp<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u067e\u0648\u0631\u062a\u200c\u0647\u0627 \u0628\u0631\u0627\u06cc HTTPS \u0648 \u0639\u0645\u0644\u06a9\u0631\u062f \u0635\u062d\u06cc\u062d TURN Server \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \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\">\u0645\u0631\u062d\u0644\u0647 \u0686\u0647\u0627\u0631\u0645: \u0633\u0627\u062e\u062a \u067e\u0648\u0634\u0647 \u067e\u0631\u0648\u0698\u0647<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir -p ~\/matrix-stack\n\ncd ~\/matrix-stack<\/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\u0631\u062d\u0644\u0647 \u067e\u0646\u062c\u0645: \u0627\u06cc\u062c\u0627\u062f \u0641\u0627\u06cc\u0644 Docker Compose<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0627\u06cc\u0644 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano docker-compose.yml<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062d\u062a\u0648\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>services:\n\n  synapse:\n    image: matrixdotorg\/synapse:latest\n    container_name: synapse\n    restart: unless-stopped\n\n    volumes:\n      - .\/synapse\/data:\/data\n\n    environment:\n      - SYNAPSE_SERVER_NAME=dataton.ir\n      - SYNAPSE_REPORT_STATS=no\n\n    ports:\n      - \"127.0.0.1:8008:8008\"\n\n  element:\n    image: vectorim\/element-web:latest\n    container_name: element\n    restart: unless-stopped\n\n    volumes:\n      - .\/element\/config.json:\/app\/config.json:ro\n\n    ports:\n      - \"127.0.0.1:8080:80\"\n\n  coturn:\n    image: coturn\/coturn\n    container_name: coturn\n    restart: unless-stopped\n\n    network_mode: host\n\n    volumes:\n      - .\/coturn\/turnserver.conf:\/etc\/coturn\/turnserver.conf<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0630\u062e\u06cc\u0631\u0647 \u0641\u0627\u06cc\u0644:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CTRL + O\n\nENTER\n\nCTRL + X<\/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\u0631\u062d\u0644\u0647 \u0634\u0634\u0645: \u062a\u0648\u0644\u06cc\u062f \u0627\u0648\u0644\u06cc\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a Synapse<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0628\u062a\u062f\u0627 \u0645\u0633\u06cc\u0631 \u062f\u0627\u062f\u0647 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir -p synapse\/data<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0631\u0627 \u062a\u0648\u0644\u06cc\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker run -it --rm \\\n-v ~\/matrix-stack\/synapse\/data:\/data \\\n-e SYNAPSE_SERVER_NAME=dataton.ir \\\n-e SYNAPSE_REPORT_STATS=no \\\nmatrixdotorg\/synapse:latest generate<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627 \u067e\u0627\u06cc\u0627\u0646 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0641\u0627\u06cc\u0644 \u0627\u0635\u0644\u06cc <code>homeserver.yaml<\/code> \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u0627\u0647\u062f \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\u0631\u062d\u0644\u0647 \u0647\u0641\u062a\u0645: \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc TURN \u062f\u0631 Synapse<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0627\u06cc\u0644 \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano ~\/matrix-stack\/synapse\/data\/homeserver.yaml<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u0646\u062a\u0647\u0627\u06cc \u0641\u0627\u06cc\u0644\u060c \u0642\u0628\u0644 \u0627\u0632 \u0628\u062e\u0634:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># vim:ft=yaml<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>turn_uris:\n  - \"turn:turn.dataton.ir:3478?transport=udp\"\n  - \"turn:turn.dataton.ir:3478?transport=tcp\"\n\nturn_shared_secret: \"DatatonTurnSecretStrong\"\n\nturn_user_lifetime: 1h\n\nturn_allow_guests: true\n\nenable_registration: false<\/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\u0631\u062d\u0644\u0647 \u0647\u0634\u062a\u0645: \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Coturn<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0628\u062a\u062f\u0627 \u067e\u0648\u0634\u0647 \u0645\u0631\u0628\u0648\u0637\u0647 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir -p ~\/matrix-stack\/coturn<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0627\u06cc\u0644 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u062f.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano ~\/matrix-stack\/coturn\/turnserver.conf<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062d\u062a\u0648\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>use-auth-secret\nstatic-auth-secret=DatatonTurnSecretStrong\n\nrealm=turn.dataton.ir\n\nfingerprint\n\nlistening-port=3478\n\nmin-port=49152\nmax-port=49200\n\ntotal-quota=100\n\nbps-capacity=0\n\nstale-nonce\n\nno-loopback-peers\nno-multicast-peers<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>\u0646\u06a9\u062a\u0647 \u0645\u0647\u0645:<\/strong> \u0645\u0642\u062f\u0627\u0631 <code>turn_shared_secret<\/code> \u062f\u0631 \u0641\u0627\u06cc\u0644 Synapse \u0648 \u0645\u0642\u062f\u0627\u0631 <code>static-auth-secret<\/code> \u062f\u0631 \u0641\u0627\u06cc\u0644 Coturn \u0628\u0627\u06cc\u062f \u062f\u0642\u06cc\u0642\u0627\u064b \u06cc\u06a9\u0633\u0627\u0646 \u0628\u0627\u0634\u0646\u062f.<\/p>\n<\/blockquote>\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 \u0646\u0647\u0645: \u062a\u0646\u0638\u06cc\u0645 Element Web<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0648\u0634\u0647 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Element \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir -p ~\/matrix-stack\/element<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0627\u06cc\u0644 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0646\u0645\u0627\u06cc\u06cc\u062f.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano ~\/matrix-stack\/element\/config.json<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062d\u062a\u0648\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"default_server_config\": {\n    \"m.homeserver\": {\n      \"base_url\": \"https:\/\/dataton.ir\",\n      \"server_name\": \"dataton.ir\"\n    }\n  },\n\n  \"disable_custom_urls\": true,\n  \"disable_guests\": false,\n  \"brand\": \"Dataton Chat\"\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\u0631\u062d\u0644\u0647 \u062f\u0647\u0645: \u0646\u0635\u0628 \u06af\u0648\u0627\u0647\u06cc SSL<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0648\u0634\u0647 \u06af\u0648\u0627\u0647\u06cc \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo mkdir -p \/etc\/ssl\/dataton<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0646\u0638\u06cc\u0645 \u0633\u0637\u062d \u062f\u0633\u062a\u0631\u0633\u06cc<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo chmod 700 \/etc\/ssl\/dataton<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0627\u06cc\u0644 Certificate<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/ssl\/dataton\/fullchain.pem<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062d\u062a\u0648\u0627\u06cc Certificate \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0627\u06cc\u0644 Private Key<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/ssl\/dataton\/privkey.pem<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0644\u06cc\u062f \u062e\u0635\u0648\u0635\u06cc SSL \u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u0633\u0637\u062d \u062f\u0633\u062a\u0631\u0633\u06cc \u0631\u0627 \u0645\u062d\u062f\u0648\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo chmod 600 \/etc\/ssl\/dataton\/*<\/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\u0631\u062d\u0644\u0647 \u06cc\u0627\u0632\u062f\u0647\u0645: \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Nginx \u0628\u0631\u0627\u06cc Matrix Synapse<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0627\u06cc\u0644 Virtual Host \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/nginx\/sites-available\/dataton.ir<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062d\u062a\u0648\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server {\n\n    listen 443 ssl http2;\n    server_name dataton.ir;\n\n    ssl_certificate \/etc\/ssl\/dataton\/fullchain.pem;\n    ssl_certificate_key \/etc\/ssl\/dataton\/privkey.pem;\n\n    client_max_body_size 100M;\n\n    location \/ {\n\n        proxy_pass http:\/\/127.0.0.1:8008;\n\n        proxy_set_header Host $host;\n        proxy_set_header X-Forwarded-For $remote_addr;\n        proxy_set_header X-Forwarded-Proto $scheme;\n\n        proxy_http_version 1.1;\n    }\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\u0631\u062d\u0644\u0647 \u062f\u0648\u0627\u0632\u062f\u0647\u0645: \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Nginx \u0628\u0631\u0627\u06cc Element<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/nginx\/sites-available\/web.dataton.ir<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062d\u062a\u0648\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server {\n\n    listen 443 ssl http2;\n    server_name web.dataton.ir;\n\n    ssl_certificate \/etc\/ssl\/dataton\/fullchain.pem;\n    ssl_certificate_key \/etc\/ssl\/dataton\/privkey.pem;\n\n    location \/ {\n\n        proxy_pass http:\/\/127.0.0.1:8080;\n\n        proxy_set_header Host $host;\n\n    }\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\u0631\u062d\u0644\u0647 \u0633\u06cc\u0632\u062f\u0647\u0645: \u0641\u0639\u0627\u0644\u200c\u0633\u0627\u0632\u06cc Virtual Host\u0647\u0627<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ln -s \/etc\/nginx\/sites-available\/dataton.ir \\\n\/etc\/nginx\/sites-enabled\/<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ln -s \/etc\/nginx\/sites-available\/web.dataton.ir \\\n\/etc\/nginx\/sites-enabled\/<\/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\u0631\u062d\u0644\u0647 \u0686\u0647\u0627\u0631\u062f\u0647\u0645: \u0628\u0631\u0631\u0633\u06cc \u062a\u0646\u0638\u06cc\u0645\u0627\u062a Nginx<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nginx -t<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0635\u0648\u0631\u062a \u0645\u0634\u0627\u0647\u062f\u0647 \u067e\u06cc\u0627\u0645 \u0645\u0648\u0641\u0642\u06cc\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl reload nginx<\/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\u0631\u062d\u0644\u0647 \u067e\u0627\u0646\u0632\u062f\u0647\u0645: \u0627\u062c\u0631\u0627\u06cc \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>cd ~\/matrix-stack\n\ndocker compose up -d<\/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\u0631\u062d\u0644\u0647 \u0634\u0627\u0646\u0632\u062f\u0647\u0645: \u0628\u0631\u0631\u0633\u06cc \u0648\u0636\u0639\u06cc\u062a \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>docker ps<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627\u06cc\u062f \u0633\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0632\u06cc\u0631 \u062f\u0631 \u0648\u0636\u0639\u06cc\u062a Running \u0628\u0627\u0634\u0646\u062f.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>synapse<\/li>\n\n\n\n<li>element<\/li>\n\n\n\n<li>coturn<\/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\u0631\u062d\u0644\u0647 \u0647\u0641\u062f\u0647\u0645: \u0633\u0627\u062e\u062a \u0627\u0648\u0644\u06cc\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a\u06cc<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>docker exec -it synapse register_new_matrix_user \\\n-c \/data\/homeserver.yaml \\\nhttp:&#47;&#47;localhost:8008<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0645\u0648\u0646\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Username : admin\n\nPassword : StrongPassword\n\nMake Admin : yes<\/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\u0631\u062d\u0644\u0647 \u0647\u062c\u062f\u0647\u0645: \u0648\u0631\u0648\u062f \u0628\u0647 \u067e\u0646\u0644 Element<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0631\u0648\u0631\u06af\u0631 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;web.dataton.ir<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0631\u0648\u062f \u0628\u0627 \u06cc\u06a9\u06cc \u0627\u0632 \u0641\u0631\u0645\u062a\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@admin:dataton.ir<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0627<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>admin<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0642\u0633\u0645\u062a Server \u0646\u06cc\u0632 \u0645\u0642\u062f\u0627\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dataton.ir<\/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\u0631\u062d\u0644\u0647 \u0646\u0648\u0632\u062f\u0647\u0645: \u062a\u0633\u062a \u062a\u0645\u0627\u0633 \u0635\u0648\u062a\u06cc \u0648 \u062a\u0635\u0648\u06cc\u0631\u06cc<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f TURN Server\u060c \u062d\u062f\u0627\u0642\u0644 \u062f\u0648 \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u062f\u0648 \u0645\u0631\u0648\u0631\u06af\u0631 \u0645\u062a\u0641\u0627\u0648\u062a<\/li>\n\n\n\n<li>\u06cc\u0627 \u0645\u0631\u0648\u0631\u06af\u0631 \u0648 \u062a\u0644\u0641\u0646 \u0647\u0645\u0631\u0627\u0647<\/li>\n\n\n\n<li>\u06cc\u0627 \u062f\u0648 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u062c\u0632\u0627<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u06a9 \u062a\u0645\u0627\u0633 \u0635\u0648\u062a\u06cc \u0648 \u0633\u067e\u0633 \u062a\u0645\u0627\u0633 \u062a\u0635\u0648\u06cc\u0631\u06cc \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u062a\u0645\u0627\u0633 \u062f\u0631 \u0634\u0628\u06a9\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 (\u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0647\u0645\u0631\u0627\u0647\u060c \u0648\u0627\u06cc\u200c\u0641\u0627\u06cc \u0648&#8230;) \u0628\u062f\u0648\u0646 \u0645\u0634\u06a9\u0644 \u0628\u0631\u0642\u0631\u0627\u0631 \u0634\u0648\u062f\u060c \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc TURN Server \u0646\u06cc\u0632 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0627\u0646\u062c\u0627\u0645 \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\">\u062c\u0645\u0639\u200c\u0628\u0646\u062f\u06cc<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u06cc\u06a9 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u06a9\u0627\u0645\u0644 Matrix \u0628\u0631 \u067e\u0627\u06cc\u0647 Docker \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0634\u062f \u06a9\u0647 \u0634\u0627\u0645\u0644 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0627\u0633\u062a:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0646\u0635\u0628 Docker \u0648 Docker Compose<\/li>\n\n\n\n<li>\u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc Matrix Synapse<\/li>\n\n\n\n<li>\u0646\u0635\u0628 Element Web<\/li>\n\n\n\n<li>\u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Coturn \u0628\u0631\u0627\u06cc \u062a\u0645\u0627\u0633\u200c\u0647\u0627\u06cc \u0635\u0648\u062a\u06cc \u0648 \u062a\u0635\u0648\u06cc\u0631\u06cc<\/li>\n\n\n\n<li>\u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc Nginx Reverse Proxy<\/li>\n\n\n\n<li>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 SSL \u0628\u0631\u0627\u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u0627\u0645\u0646<\/li>\n\n\n\n<li>\u0633\u0627\u062e\u062a \u0627\u0648\u0644\u06cc\u0646 \u062d\u0633\u0627\u0628 \u0645\u062f\u06cc\u0631\u06cc\u062a\u06cc<\/li>\n\n\n\n<li>\u062a\u0633\u062a \u06a9\u0627\u0645\u0644 \u067e\u06cc\u0627\u0645\u200c\u0631\u0633\u0627\u0646 \u0648 \u062a\u0645\u0627\u0633 \u062a\u0635\u0648\u06cc\u0631\u06cc<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0633\u0627\u062e\u062a\u0627\u0631 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0634\u062e\u0635\u06cc\u060c \u0633\u0627\u0632\u0645\u0627\u0646\u06cc \u0648 \u062a\u06cc\u0645\u06cc \u0645\u0646\u0627\u0633\u0628 \u0628\u0648\u062f\u0647 \u0648 \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Docker\u060c \u0646\u06af\u0647\u062f\u0627\u0631\u06cc\u060c \u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0648 \u062a\u0648\u0633\u0639\u0647 \u0622\u0646 \u062f\u0631 \u0622\u06cc\u0646\u062f\u0647 \u0646\u06cc\u0632 \u0633\u0627\u062f\u0647\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","protected":false},"excerpt":{"rendered":"<p>\u0645\u0642\u062f\u0645\u0647 \u0627\u06af\u0631 \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u062f \u06cc\u06a9 \u067e\u06cc\u0627\u0645\u200c\u0631\u0633\u0627\u0646 \u06a9\u0627\u0645\u0644\u0627\u064b \u062e\u0635\u0648\u0635\u06cc\u060c \u0645\u062a\u0646\u200c\u0628\u0627\u0632 \u0648 \u0645\u0633\u062a\u0642\u0644 \u0645\u0634\u0627\u0628\u0647 Slack \u06cc\u0627 Microsoft Teams \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f\u060c Matrix \u06cc\u06a9\u06cc \u0627\u0632 \u0628\u0647\u062a\u0631\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u06a9\u0627\u0645\u0644 Matrix \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Docker \u0631\u0648\u06cc Ubuntu 24.04 \u0646\u0635\u0628 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u0634\u0645\u0627 \u062e\u0648\u0627\u0647\u0646\u062f \u0628\u0648\u062f: \u0633\u0631\u0648\u06cc\u0633 \u0622\u062f\u0631\u0633 Matrix Homeserver [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-17587","post","type-post","status-publish","format-standard","hentry","category-1","no-post-thumbnail"],"acf":[],"_links":{"self":[{"href":"https:\/\/maralhost.com\/kb\/wp-json\/wp\/v2\/posts\/17587","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/maralhost.com\/kb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/maralhost.com\/kb\/wp-json\/wp\/v2\/types\/post"}],"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=17587"}],"version-history":[{"count":1,"href":"https:\/\/maralhost.com\/kb\/wp-json\/wp\/v2\/posts\/17587\/revisions"}],"predecessor-version":[{"id":17590,"href":"https:\/\/maralhost.com\/kb\/wp-json\/wp\/v2\/posts\/17587\/revisions\/17590"}],"wp:attachment":[{"href":"https:\/\/maralhost.com\/kb\/wp-json\/wp\/v2\/media?parent=17587"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/maralhost.com\/kb\/wp-json\/wp\/v2\/categories?post=17587"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/maralhost.com\/kb\/wp-json\/wp\/v2\/tags?post=17587"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}