{"id":25138432,"url":"https://github.com/xaqron/synapse","last_synced_at":"2025-10-14T15:06:17.358Z","repository":{"id":94526023,"uuid":"127578583","full_name":"Xaqron/synapse","owner":"Xaqron","description":"راه اندازی سرور سیناپس برای پیامرسان های مبتنی بر پروتکل ماتریکس","archived":false,"fork":false,"pushed_at":"2018-04-06T16:11:57.000Z","size":176,"stargazers_count":7,"open_issues_count":1,"forks_count":3,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-14T15:02:24.558Z","etag":null,"topics":["e2ee","matrix","messenger","riot","synapse","videocall","voicecall"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Xaqron.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-03-31T23:11:37.000Z","updated_at":"2024-05-18T18:33:32.000Z","dependencies_parsed_at":null,"dependency_job_id":"a2492a71-3173-47aa-b04d-b68efb051c49","html_url":"https://github.com/Xaqron/synapse","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Xaqron/synapse","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xaqron%2Fsynapse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xaqron%2Fsynapse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xaqron%2Fsynapse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xaqron%2Fsynapse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Xaqron","download_url":"https://codeload.github.com/Xaqron/synapse/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xaqron%2Fsynapse/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279019293,"owners_count":26086709,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-14T02:00:06.444Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["e2ee","matrix","messenger","riot","synapse","videocall","voicecall"],"created_at":"2025-02-08T17:16:29.482Z","updated_at":"2025-10-14T15:06:17.353Z","avatar_url":"https://github.com/Xaqron.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 dir=\"rtl\"\u003e\n# سیناپس\n\u003c/h1\u003e\n\u003ch2 dir=\"rtl\"\u003e\nدستورالعمل راه اندازی سرور سیناپس برای پیامرسان های مبتنی بر پروتکل ماتریکس.\n\u003c/h2\u003e\n\u003chr /\u003e\n\u003cp dir=\"rtl\"\u003e\nاگر قصد راه اندازی سرور سیناپس را ندارید و صرفا به دنبال پیامرسانی امن با امکانات بالا می گردید توصیه می شود \u003ca href=\"https://riot.im/\"\u003eرایوت\u003c/a\u003e را نصب کنید و ادامه ی این آموزش برای شما مناسب نمی باشد.\nاستفاده از این آموزش مستلزم دانش متوسط از سرورهای لینوکس و تنظیمات مرتبط با دامنه می باشد.\n\u003c/p\u003e\n\u003chr /\u003e\n\u003cp dir=\"rtl\"\u003e\nپیامرسانهای متنوعی بر اساس پروتکل \u003ca href=\"https://matrix.org/blog/home/\"\u003eماتریکس\u003c/a\u003e ساخته شده اند که لیستی از آنها را در \u003ca href=\"https://matrix.org/docs/projects/try-matrix-now.html\"\u003eاینجا\u003c/a\u003e می توانید مشاهده کنید.\nاین پروتکل بر اساس بلاک چین بوده و پیامرسانهای مبتنی بر آن غیرمتمرکز می باشند. بدین معنی که تعدادی کاربر به یک سرور متصل می شوند و قادر به تبادل پیام خواهند بود. در صورتی که این سرور به سرور های دیگری متصل باشد امکان ارتباط بین کاربران آنها فراهم خواهد شد.\n\u003c/p\u003e\n\u003cp dir=\"rtl\"\u003e\nاکثر سرویسهای امروزی به صورت متمرکز طراحی شده اند یعنی کنترل تمامی سیستم در اختیار شخصیتی حقوقی قرار دارد. نظیر پیامرسان تلگرام، سرویس توییتر و یا فیسبوک. در شکل زیر در سمت چپ مدل متمرکز و در سمت راست مدل نیمه متمرکز را ملاحظه می فرمایید. پیامرسانهای مبتنی بر پروتکل ماتریکس مطابق مدل سمت راست می باشند. دقت کنید تفاوت این نوع از طراحی در عدم کنترل یک شخصیت حقوقی واحد بر مجموعه ها می باشد و نه صرفا آرایش فیزیکی زیرا در عمل سرویسهای متمرکز هم با استفاده از CDN ها بار را توزیع می نمایند.\n\u003c/p\u003e\n\u003cimg src=\"resources/centralized-vs-decentralized.png\" alt=\"سیستمهای متمرکز و نیمه متمرکز\"\u003e\n\u003cp dir=\"rtl\"\u003e\nهدف از این آموزش راه اندازی یکی از سرورهای سمت راست نظیر دایره ی قرمز (دایره ی وسط) در بخش نیمه متمرکز» می باشد.\nبدین صورت شما و دوستانتان قادر خواهید بود با ارتباطی امن به تبادل پیام بپردازید. در صورتی که سرور خود را به سایر سرورهای مبتنی بر پروتکل ماتریکس متصل نمایید امکان ارتباط بین کاربران شما و کاربران آن سرورها به وجود خواهد آمد.\n\u003c/p\u003e\n\u003cp dir=\"rtl\"\u003e\nمزیت این مدل ارتباطی این است که حتی بر روی اینترنت ملی نیز پیامرسان شما قادر به ارائه سرویس خواهد بود ضمن اینکه همیشه اطلاعات شما در اختیار خودتان خواهد بود.\nشما کماکان قادر به استفاده از انواع پیامرسان های سازگار با پروتکل ماتریکس نظیر \u003ca href=\"https://riot.im/\"\u003eرایوت\u003c/a\u003e خواهید بود با این تفاوت که به جای سرور پیش فرض می توانید به سرور خود متصل شوید. نظیر شکل زیر:\n\u003c/p\u003e\n\u003cimg style=\"border: 10px solid transparent; align: center\" src=\"resources/custom-server.png\" alt=\"سرور اختصاصی\"\u003e\n\u003ch2 dir=\"rtl\"\u003e\nدستورالعمل راه اندازی سرور سیناپس\n\u003c/h2\u003e\n\n\u003ch3 dir=\"rtl\"\u003e\n- توجه: در تمامی مراحل این آموزش example.com باید با دامنه خود شما جایگزین گردد.\n\u003c/h3\u003e\n\n\u003cp dir=\"rtl\"\u003e\nاین دستورالعمل برای سرورهای مبتنی بر دبیان (debian) می باشد هر چند برای سایر سرورهای لینوکسی هم کمابیش قابل استفاده می باشد.\n\u003c/p\u003e\n\u003cp dir=\"rtl\"\u003e\nابتدا از آپدیت بودن سرور اطمینان حاصل نمایید:\n\u003c/p\u003e\n\u003ccode\u003e$ sudo apt update\u003c/code\u003e\n\n\u003ccode\u003e$ sudo apt full-upgrade -y\u003c/code\u003e\n\n\u003ccode\u003e$ sudo apt autoremove\u003c/code\u003e\n\n\u003ccode\u003e$ sudo apt autoclean\u003c/code\u003e\n\n\u003cp dir=\"rtl\"\u003e\nnginx را نصب نمایید:\n\u003c/p\u003e\n\n\u003ccode\u003e$ sudo apt install nginx -y\u003c/code\u003e\n\n\u003cp dir=\"rtl\"\u003e\nمخزن سیناپس و کلید آنرا اضافه کنید:\n\u003c/p\u003e\n\u003ccode\u003e$ sudo add-apt-repository https://matrix.org/packages/debian/\u003c/code\u003e\n\n\u003ccode\u003e$ wget -qO - https://matrix.org/packages/debian/repo-key.asc | sudo apt-key add -\u003c/code\u003e\n\u003cp dir=\"rtl\"\u003e\nسیستم عامل را آپدیت و سیناپس را نصب نمایید:\n\u003c/p\u003e\n\u003ccode\u003e$ sudo apt-get update\u003c/code\u003e\n\n\u003ccode\u003e$ sudo apt-get install matrix-synapse\u003c/code\u003e\n\n\u003cp dir=\"rtl\"\u003e\nدر هنگام نصب تصویری نظیر شکل زیر خواهید دید که از شما نام دامنه مورد نظرتان را خواهد پرسید و اینکه آیا مایل به ارسال آمار سرور خود به صورت ناشناس به سایت سیناپس هستید یا خیر. اگر دامنه ی شما example.com می باشد نظیر تصویر زیر در پنجره ی مربوطه آنرا وارد کنید (یا هر دامنه ی دیگر)\n\u003c/p\u003e\n\u003cimg src=\"resources/domain.png\" alt=\"ثبت دامنه\"\u003e\n\u003cp dir=\"rtl\"\u003e\nتوجه داشته باشید که شما باید پیش از این یک رکورد دی ان اس منطبق با آی پی سرور خود و دامنه تان در دی ان اس سرور تان ثبت کرده باشید.\n\nDNS: A Record for example.com =\u003e x.x.x.x\n\u003c/p\u003e\n\u003cp dir=\"rtl\"\u003e\nمثلا x.x.x.x می تواند 87.22.131.95 باشد که آدرس سرور شماست.\nاگر دامنه ی شما بر روی سی پانل تنظیم شده است می توانید با simple zone editor اقدام به ثبت یک A Record‌ برای آی پی سرور خود نمایید.\n\u003c/p\u003e\n\u003cp dir=\"rtl\"\u003e\nسیناپس را برای شروع در هر بار روشن شدن سرور فعال نمایید:\n\u003c/p\u003e\n\n\u003ccode\u003e$ sudo systemctl enable matrix-synapse\u003c/code\u003e\n\n\u003ccode\u003e$ sudo systemctl start matrix-synapse\u003c/code\u003e\n\n\u003cp dir=\"rtl\"\u003e\nاز آنجا که به پسوردی رندم نیاز داریم برنامه ی pwgen را نصب و با دستور زیر پسورد مربوطه را تولید و در گوشه ای یادداشت نمایید:\n\u003c/p\u003e\n\n\u003ccode\u003e$ sudo apt install pwgen\u003c/code\u003e\n\n\u003ccode\u003e$ pwgen -1aB 32 1\u003c/code\u003e\n\n\u003cp dir=\"rtl\"\u003e\nنوبت به تغییر تنظیمات سیناپس رسیده است. قبل از این کار یک پشتیبان از فایل مربوطه تهیه نمایید تا در صورت وقوع هر مشکلی بتوانید از ابتدا شروع کنید:\n\u003c/p\u003e\n\n\u003ccode\u003e$ sudo cp /etc/matrix-synapse/homeserver.yaml /etc/matrix-synapse/homeserver.yaml.bak\u003c/code\u003e\n\n\u003cp dir=\"rtl\"\u003e\nحالا با ادیتور متنی دلخواه خود اقدام به ویرایش فایل تنظیمات نمایید:\n\u003c/p\u003e\n\n\u003ccode\u003e$ sudo nano /etc/matrix-synapse/homeserver.yaml\u003c/code\u003e\n\n\u003cp dir=\"rtl\"\u003e\nرمز تولید شده در مرحله ی قبل را داخل گیومه جایگزین عبارت randomly_generated_string نمایید و علامت # را از ابتدای خط حذف نمایید. شبیه به خط زیر:\n\u003c/p\u003e\n\n\u003ccode\u003eregistration_shared_secret: \"Pheinahkahgaibo7aaH4EingozaduuTh\"\u003c/code\u003e\n\n\u003cp dir=\"rtl\"\u003e\nکلیدهای CTRL+X و سپس y‌ را فشار دهید تا فایل ذخیره گردد و از ویرایشگر فایل خارج شوید. سپس سیناپس را مجددا با دستور زیر راه اندازی نمایید:\n\u003c/p\u003e\n\n\u003ccode\u003e$ sudo systemctl restart matrix-synapse\u003c/code\u003e\n\n\u003cp dir=\"rtl\"\u003e\nیک کاربر جدید به سیناپس اضافه نمایید. لزومی ندارد این کاربر دسترسی روت داشته باشه پس با دستور زیر فقط برای آن نام کاربری و کلمه ی عبور انتخاب نمایید:\n\u003c/p\u003e\n\n\u003ccode\u003e$ register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml https://localhost:8448\u003c/code\u003e\n\n\u003ch2 dir=\"rtl\"\u003e\nتنظیمات وب سرور\n\u003c/h2\u003e\n\n\u003cp dir=\"rtl\"\u003e\nبرای ارسال درخواستها به سیناپس از nginx به عنوان reverse proxy استفاده می کنیم. یعنی وب سرور nginx درخواستها را دریافت کرده، به سیناپس ارسال می کند و پاسخ آنرا برای کاربر ارسال می نماید.\nبرای تنظیم وب سرور فایلی با نام دامنه ی خود در مسیر زیر می سازیم:\n\u003c/p\u003e\n\n\u003ccode\u003e$ sudo nano /etc/nginx/sites-available/example.com\u003c/code\u003e\n\n\u003cp dir=\"rtl\"\u003e\nو محتویات زیر را در آن قرار می دهیم. دقت کنید به جای example.com‌ باید نام دامنه ی خود را قرار دهید:\n\u003c/p\u003e\n\n\u003ccode\u003e\nserver {\n    listen 80;\n  listen [::]:80;\n\n  root /var/www/html;\n  index index.html index.htm index.nginx-debian.html;\n\n  server_name example.com www.example.com;\n\n  location /_matrix {\n      proxy_pass http://localhost:8008;\n  }\n  location ~ /.well-known {\n      allow all;\n  }\n}\n\u003c/code\u003e\n\n\u003cp dir=\"rtl\"\u003e\nسافت لینک مربوطه را در بخش sites-enabled قرار دهید:\n\u003c/p\u003e\n\n\u003ccode\u003e$ sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com\u003c/code\u003e\n\n\u003cp dir=\"rtl\"\u003e\nبررسی کنید تا تنظیمات وب سرور خطایی نداشته باشد:\n\u003c/p\u003e\n\n\u003ccode\u003e$ sudo nginx -t\u003c/code\u003e\n\n\u003cp dir=\"rtl\"\u003e\nراه اندازی مجدد وب سرور:\n\u003c/p\u003e\n\n\u003ccode\u003e$ sudo systemctl reload nginx\u003c/code\u003e\n\n\u003ch2 dir=\"rtl\"\u003e\nتنظیمات SSL\n\u003c/h2\u003e\n\n\u003cp dir=\"rtl\"\u003e\nقبل از این مرحله حتما باید رکورد DNS مربوط به سروری که بر روی آن کار می کنید را تنظیم کرده باشید تا آدرس سایت شما به سرور فعلی اشاره نماید.\nبرای دریافت گواهی SSL از Let's Encrypt که رایگان است استفاده می کنیم و آنرا بر روی تمدید خودکار قرار می دهیم.\n\u003c/p\u003e\n\n\u003ccode\u003e$ sudo add-apt-repository ppa:certbot/certbot\u003c/code\u003e\n\n\u003ccode\u003e$ sudo apt-get update\u003c/code\u003e\n\n\u003ccode\u003e$ sudo apt-get install python-certbot-nginx\u003c/code\u003e\n\n\u003cp dir=\"rtl\"\u003e\nتنظیمات مربوط به سایت خود را تغییر دهید:\n\u003c/p\u003e\n\n\u003ccode\u003e$ sudo nano /etc/nginx/sites-available/example.com\u003c/code\u003e\n\n\u003cp dir=\"rtl\"\u003e\nشبیه به فایل زیر:\n\u003c/p\u003e\n\n\u003ccode\u003e\n...\n  root /var/www/html;\n  index index.html index.htm index.nginx-debian.html;\n\n  server_name example.com www.example.com;\n\n  location /_matrix {\n      proxy_pass http://localhost:8008;\n  }\n\n  location ~ /.well-known {\n      allow all;\n  }\n...\n\u003c/code\u003e\n\n\u003cp dir=\"rtl\"\u003e\nبررسی کنید تا تنظیمات وب سرور خطایی نداشته باشد:\n\u003c/p\u003e\n\n\u003ccode\u003e$ sudo nginx -t\u003c/code\u003e\n\n\u003cp dir=\"rtl\"\u003e\nراه اندازی مجدد وب سرور:\n\u003c/p\u003e\n\n\u003ccode\u003e$ sudo systemctl reload nginx\u003c/code\u003e\n\n\u003cp dir=\"rtl\"\u003e\nدرخواست سرتیفیکیت بدهید:\n\u003c/p\u003e\n\n\u003ccode\u003e$ sudo certbot --nginx -d example.com -d www.example.com\u003c/code\u003e\n\n\u003ccode\u003e$ sudo certbot renew --dry-run\u003c/code\u003e\n\n\u003cp dir=\"rtl\"\u003e\nبرای تمدید خودکار سرتیفیکیت خطوط زیر را به کرون تب اضافه نمایید (گزینه ۲)\n\u003c/p\u003e\n\n\u003ccode\u003e$ sudo crontab -e\u003c/code\u003e\n\n\u003ccode\u003e\n35 2 * * 1 sudo cp /etc/letsencrypt/live/example.com/fullchain.pem /etc/matrix-synapse/fullchain.pem\n\n35 2 * * 1 sudo cp /etc/letsencrypt/live/example.com/privkey.pem /etc/matrix-synapse/privkey.pem\n\n36 2 * * 1 sudo systemctl restart matrix-synapse\n\u003c/code\u003e\n\n\u003cp dir=\"rtl\"\u003e\nفایل را ذخیره و از آن خارج شوید.\nفایل تنظیمات سیناپس را به شکل زیر ویرایش کنید:\n\u003c/p\u003e\n\n\u003ccode\u003e$ sudo nano /etc/matrix-synapse/homeserver.yaml\u003c/code\u003e\n\n\u003ccode\u003e\n... \u003cbr /\u003e\ntls_certificate_path: \"/etc/matrix-synapse/fullchain.pem\" \u003cbr /\u003e\n# PEM encoded private key for TLS \u003cbr /\u003e\ntls_private_key_path: \"/etc/matrix-synapse/privkey.pem\" \u003cbr /\u003e\n# PEM dh parameters for ephemeral keys \u003cbr /\u003e\ntls_dh_params_path: \"/etc/ssl/certs/dhparam.pem\" \u003cbr /\u003e\n... \u003cbr /\u003e\n\u003c/code\u003e\n\n\u003ch2 dir=\"rtl\"\u003e\nتنظیمات فایروال\n\u003c/h2\u003e\n\n\u003cp dir=\"rtl\"\u003e\nفایروال را راه اندازی کنید:\n\u003c/p\u003e\n\n\u003ccode\u003e$ sudo ufw start\u003c/code\u003e\n\n\u003cp dir=\"rtl\"\u003e\nاجازه ی دسترسی به سرویسهای مورد نظر را بدهید:\n\u003c/p\u003e\n\n\u003ccode\u003e\n$ sudo ufw allow 'Nginx Full' \u003cbr /\u003e\n$ sudo ufw delete allow 'Nginx HTTP' \u003cbr /\u003e\n$ sudo ufw allow 8448 \u003cbr /\u003e\n$ sudo systemctl restart matrix-synapse\n\u003c/code\u003e\n\n\u003ch2 dir=\"rtl\"\u003e\nارتباط با سایر سرورها به صورت امن\n\u003c/h2\u003e\n\n\u003cp dir=\"rtl\"\u003e\nدستورات زیر را اجرا نمایید:\n\u003c/p\u003e\n\n\u003ccode\u003e$ sudo cp /etc/letsencrypt/live/example.com/fullchain.pem /etc/matrix-synapse/fullchain.pem\u003c/code\u003e\n\n\u003ccode\u003e$ sudo cp /etc/letsencrypt/live/example.com/privkey.pem /etc/matrix-synapse/privkey.pem\u003c/code\u003e\n\n\u003ccode\u003e$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048\u003c/code\u003e\n\n\u003ccode\u003e$ sudo reboot\u003c/code\u003e\n\n\u003cp dir=\"rtl\"\u003e\nحالا باید قادر باشید همانند شکل زیر به سرور اختصاصی خود متصل شوید:\n\u003c/p\u003e\n\n\u003cimg style=\"border: 10px solid transparent; align: center\" src=\"resources/custom-server.png\" alt=\"سرور اختصاصی\"\u003e\n\n\u003cp dir=\"rtl\"\u003e\nبرای اضافه کردن لیست سایر سرورهای مورد اعتماد خود در فایل homeserver.yaml به بخش trusted_third_party_id_servers مراجعه کنید.\n\u003c/p\u003e\n\n\u003ch2 dir=\"rtl\"\u003e\nراه اندازی سرویس TURN/STUN\n\u003c/h2\u003e\n\n\u003cp dir=\"rtl\"\u003e\nبرای تماس صوتی / تصویری در صورتی که کلاینت پشت NAT‌ قرار داشته باشد به این سرویس نیاز خواهید داشت.\nدر اینجا از \u003ca href=\"https://github.com/coturn/coturn\"\u003eCOTURN\u003c/a\u003e استفاده شده است. برای نصب آن دستور زیر را اجرا نمایید:\n\u003c/p\u003e\n\n\u003ccode\u003e$ bash \u003ca href=\"https://github.com/Xaqron/synapse/blob/master/resources/install-coturn.sh\"\u003einstall-coturn.sh\u003c/a\u003e yourdomain.com\u003c/code\u003e\n\n\u003cp dir=\"rtl\"\u003e\nکلیه تنظیمات مربوط به COTURN و سیناپس به صورت خودکار انجام خواهند شد.\n\u003c/p\u003e\n\n\u003cbr /\u003e\n\u003ch3 dir=\"rtl\"\u003e\n\u003ca href=\"https://twitter.com/xaqron\"\u003e* تماس با من\u003c/a\u003e\n\u003c/h3\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxaqron%2Fsynapse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxaqron%2Fsynapse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxaqron%2Fsynapse/lists"}