اگر قصد راه اندازی سرور سیناپس را ندارید و صرفا به دنبال پیامرسانی امن با امکانات بالا می گردید توصیه می شود رایوت را نصب کنید و ادامه ی این آموزش برای شما مناسب نمی باشد. استفاده از این آموزش مستلزم دانش متوسط از سرورهای لینوکس و تنظیمات مرتبط با دامنه می باشد.
پیامرسانهای متنوعی بر اساس پروتکل ماتریکس ساخته شده اند که لیستی از آنها را در اینجا می توانید مشاهده کنید. این پروتکل بر اساس بلاک چین بوده و پیامرسانهای مبتنی بر آن غیرمتمرکز می باشند. بدین معنی که تعدادی کاربر به یک سرور متصل می شوند و قادر به تبادل پیام خواهند بود. در صورتی که این سرور به سرور های دیگری متصل باشد امکان ارتباط بین کاربران آنها فراهم خواهد شد.
اکثر سرویسهای امروزی به صورت متمرکز طراحی شده اند یعنی کنترل تمامی سیستم در اختیار شخصیتی حقوقی قرار دارد. نظیر پیامرسان تلگرام، سرویس توییتر و یا فیسبوک. در شکل زیر در سمت چپ مدل متمرکز و در سمت راست مدل نیمه متمرکز را ملاحظه می فرمایید. پیامرسانهای مبتنی بر پروتکل ماتریکس مطابق مدل سمت راست می باشند. دقت کنید تفاوت این نوع از طراحی در عدم کنترل یک شخصیت حقوقی واحد بر مجموعه ها می باشد و نه صرفا آرایش فیزیکی زیرا در عمل سرویسهای متمرکز هم با استفاده از CDN ها بار را توزیع می نمایند.
هدف از این آموزش راه اندازی یکی از سرورهای سمت راست نظیر دایره ی قرمز (دایره ی وسط) در بخش نیمه متمرکز» می باشد. بدین صورت شما و دوستانتان قادر خواهید بود با ارتباطی امن به تبادل پیام بپردازید. در صورتی که سرور خود را به سایر سرورهای مبتنی بر پروتکل ماتریکس متصل نمایید امکان ارتباط بین کاربران شما و کاربران آن سرورها به وجود خواهد آمد.
مزیت این مدل ارتباطی این است که حتی بر روی اینترنت ملی نیز پیامرسان شما قادر به ارائه سرویس خواهد بود ضمن اینکه همیشه اطلاعات شما در اختیار خودتان خواهد بود. شما کماکان قادر به استفاده از انواع پیامرسان های سازگار با پروتکل ماتریکس نظیر رایوت خواهید بود با این تفاوت که به جای سرور پیش فرض می توانید به سرور خود متصل شوید. نظیر شکل زیر:
این دستورالعمل برای سرورهای مبتنی بر دبیان (debian) می باشد هر چند برای سایر سرورهای لینوکسی هم کمابیش قابل استفاده می باشد.
ابتدا از آپدیت بودن سرور اطمینان حاصل نمایید:
$ sudo apt update
$ sudo apt full-upgrade -y
$ sudo apt autoremove
$ sudo apt autoclean
nginx را نصب نمایید:
$ sudo apt install nginx -y
مخزن سیناپس و کلید آنرا اضافه کنید:
$ sudo add-apt-repository https://matrix.org/packages/debian/
$ wget -qO - https://matrix.org/packages/debian/repo-key.asc | sudo apt-key add -
سیستم عامل را آپدیت و سیناپس را نصب نمایید:
$ sudo apt-get update
$ sudo apt-get install matrix-synapse
در هنگام نصب تصویری نظیر شکل زیر خواهید دید که از شما نام دامنه مورد نظرتان را خواهد پرسید و اینکه آیا مایل به ارسال آمار سرور خود به صورت ناشناس به سایت سیناپس هستید یا خیر. اگر دامنه ی شما example.com می باشد نظیر تصویر زیر در پنجره ی مربوطه آنرا وارد کنید (یا هر دامنه ی دیگر)
توجه داشته باشید که شما باید پیش از این یک رکورد دی ان اس منطبق با آی پی سرور خود و دامنه تان در دی ان اس سرور تان ثبت کرده باشید.
DNS: A Record for example.com => x.x.x.x
مثلا x.x.x.x می تواند 87.22.131.95 باشد که آدرس سرور شماست. اگر دامنه ی شما بر روی سی پانل تنظیم شده است می توانید با simple zone editor اقدام به ثبت یک A Record برای آی پی سرور خود نمایید.
سیناپس را برای شروع در هر بار روشن شدن سرور فعال نمایید:
$ sudo systemctl enable matrix-synapse
$ sudo systemctl start matrix-synapse
از آنجا که به پسوردی رندم نیاز داریم برنامه ی pwgen را نصب و با دستور زیر پسورد مربوطه را تولید و در گوشه ای یادداشت نمایید:
$ sudo apt install pwgen
$ pwgen -1aB 32 1
نوبت به تغییر تنظیمات سیناپس رسیده است. قبل از این کار یک پشتیبان از فایل مربوطه تهیه نمایید تا در صورت وقوع هر مشکلی بتوانید از ابتدا شروع کنید:
$ sudo cp /etc/matrix-synapse/homeserver.yaml /etc/matrix-synapse/homeserver.yaml.bak
حالا با ادیتور متنی دلخواه خود اقدام به ویرایش فایل تنظیمات نمایید:
$ sudo nano /etc/matrix-synapse/homeserver.yaml
رمز تولید شده در مرحله ی قبل را داخل گیومه جایگزین عبارت randomly_generated_string نمایید و علامت # را از ابتدای خط حذف نمایید. شبیه به خط زیر:
registration_shared_secret: "Pheinahkahgaibo7aaH4EingozaduuTh"
کلیدهای CTRL+X و سپس y را فشار دهید تا فایل ذخیره گردد و از ویرایشگر فایل خارج شوید. سپس سیناپس را مجددا با دستور زیر راه اندازی نمایید:
$ sudo systemctl restart matrix-synapse
یک کاربر جدید به سیناپس اضافه نمایید. لزومی ندارد این کاربر دسترسی روت داشته باشه پس با دستور زیر فقط برای آن نام کاربری و کلمه ی عبور انتخاب نمایید:
$ register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml https://localhost:8448
برای ارسال درخواستها به سیناپس از nginx به عنوان reverse proxy استفاده می کنیم. یعنی وب سرور nginx درخواستها را دریافت کرده، به سیناپس ارسال می کند و پاسخ آنرا برای کاربر ارسال می نماید. برای تنظیم وب سرور فایلی با نام دامنه ی خود در مسیر زیر می سازیم:
$ sudo nano /etc/nginx/sites-available/example.com
و محتویات زیر را در آن قرار می دهیم. دقت کنید به جای example.com باید نام دامنه ی خود را قرار دهید:
server {
listen 80;
listen [::]:80;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location /_matrix {
proxy_pass http://localhost:8008;
}
location ~ /.well-known {
allow all;
}
}
سافت لینک مربوطه را در بخش sites-enabled قرار دهید:
$ sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
بررسی کنید تا تنظیمات وب سرور خطایی نداشته باشد:
$ sudo nginx -t
راه اندازی مجدد وب سرور:
$ sudo systemctl reload nginx
قبل از این مرحله حتما باید رکورد DNS مربوط به سروری که بر روی آن کار می کنید را تنظیم کرده باشید تا آدرس سایت شما به سرور فعلی اشاره نماید. برای دریافت گواهی SSL از Let's Encrypt که رایگان است استفاده می کنیم و آنرا بر روی تمدید خودکار قرار می دهیم.
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install python-certbot-nginx
تنظیمات مربوط به سایت خود را تغییر دهید:
$ sudo nano /etc/nginx/sites-available/example.com
شبیه به فایل زیر:
...
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location /_matrix {
proxy_pass http://localhost:8008;
}
location ~ /.well-known {
allow all;
}
...
بررسی کنید تا تنظیمات وب سرور خطایی نداشته باشد:
$ sudo nginx -t
راه اندازی مجدد وب سرور:
$ sudo systemctl reload nginx
درخواست سرتیفیکیت بدهید:
$ sudo certbot --nginx -d example.com -d www.example.com
$ sudo certbot renew --dry-run
برای تمدید خودکار سرتیفیکیت خطوط زیر را به کرون تب اضافه نمایید (گزینه ۲)
$ sudo crontab -e
35 2 * * 1 sudo cp /etc/letsencrypt/live/example.com/fullchain.pem /etc/matrix-synapse/fullchain.pem
35 2 * * 1 sudo cp /etc/letsencrypt/live/example.com/privkey.pem /etc/matrix-synapse/privkey.pem
36 2 * * 1 sudo systemctl restart matrix-synapse
فایل را ذخیره و از آن خارج شوید. فایل تنظیمات سیناپس را به شکل زیر ویرایش کنید:
$ sudo nano /etc/matrix-synapse/homeserver.yaml
...
tls_certificate_path: "/etc/matrix-synapse/fullchain.pem"
# PEM encoded private key for TLS
tls_private_key_path: "/etc/matrix-synapse/privkey.pem"
# PEM dh parameters for ephemeral keys
tls_dh_params_path: "/etc/ssl/certs/dhparam.pem"
...
فایروال را راه اندازی کنید:
$ sudo ufw start
اجازه ی دسترسی به سرویسهای مورد نظر را بدهید:
$ sudo ufw allow 'Nginx Full'
$ sudo ufw delete allow 'Nginx HTTP'
$ sudo ufw allow 8448
$ sudo systemctl restart matrix-synapse
دستورات زیر را اجرا نمایید:
$ sudo cp /etc/letsencrypt/live/example.com/fullchain.pem /etc/matrix-synapse/fullchain.pem
$ sudo cp /etc/letsencrypt/live/example.com/privkey.pem /etc/matrix-synapse/privkey.pem
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
$ sudo reboot
حالا باید قادر باشید همانند شکل زیر به سرور اختصاصی خود متصل شوید:
برای اضافه کردن لیست سایر سرورهای مورد اعتماد خود در فایل homeserver.yaml به بخش trusted_third_party_id_servers مراجعه کنید.
برای تماس صوتی / تصویری در صورتی که کلاینت پشت NAT قرار داشته باشد به این سرویس نیاز خواهید داشت. در اینجا از COTURN استفاده شده است. برای نصب آن دستور زیر را اجرا نمایید:
$ bash install-coturn.sh yourdomain.com
کلیه تنظیمات مربوط به COTURN و سیناپس به صورت خودکار انجام خواهند شد.