Matrix مجموعه ای از API های باز برای ارتباطات غیرمتمرکز و رمزگذاری شده انتها به انتها است. در مجموعه ای از سرورهای فدراسیونی کار می کند
ماتریکس Matrix ، پلتفرمی برای، پیام های فوری، ویپ (VoIP) و ارتباطات اینترنت اشیا (IoT) را در زمان واقعی ارائه دهد. ماتریکس از سرورهای خانگی برای ذخیره اطلاعات حساب و تاریخچه چت استفاده می کند . فدراسیون مانند ایمیل کار می کند، به این معنی که می توانید از سروری که توسط شخصی میزبانی می شود استفاده کنید یا سرور Matrix خود را میزبانی کنید که کنترل بیشتری بر روی داده های شما فراهم می کند. ماهیت غیرمتمرکز سرورها تضمین می کند که اگر یک سرور میزبان چت، از دسترس یا آفلاین شود، بازهم ارتباط در سرورهای دیگر ادامه یابد.
آنچه در این مطلب میخوانید:
مقدمه
پیش نیازها
- پیکربندی فایروال
- نصب Matrix Synapse
- نصب و پیکربندی PostgreSQL
- نصب Nginx
- نصب SSL
- Synapse را پیکربندی کنید
- پیکربندی Nginx
- نصب Coturn
- از ماتریس استفاده کنید
- نصب المنت
- پیکربندی المنت
نتیجه گیری
مقدمه
Matrix مجموعه ای از API های باز برای ارتباطات غیرمتمرکز و رمزگذاری شده انتها به انتها است. در مجموعه ای از سرورهای فدراسیونی کار می کند تا پیام های فوری، Voice over IP (VoIP) و ارتباطات اینترنت اشیا (IoT) را در زمان واقعی ارائه دهد. ماتریکس از سرورهای خانگی برای ذخیره اطلاعات حساب و تاریخچه چت استفاده می کند . فدراسیون مانند ایمیل کار می کند، به این معنی که می توانید از سروری که توسط شخصی میزبانی می شود استفاده کنید یا سرور Matrix خود را میزبانی کنید که کنترل بیشتری بر روی داده های شما فراهم می کند. ماهیت غیرمتمرکز سرورها تضمین می کند که اگر یک سرور میزبان چت، از دسترس یا آفلاین شود، بازهم ارتباط در سرورهای دیگر ادامه یابد.
Synapse یک پیادهسازی سرور اصلی Matrix است که در پایتون نوشته شده و توسط تیم Matrix.org ایجاد شده است. این راهنما به شما آموزش می دهد که Matrix Synapse و Web Client Element را بر روی سرور اوبونتو 22.04 نصب کنید.
پیش نیازها
- یک سرور اوبونتو 22.04 با حداقل 2 گیگابایت رم و یک هسته vCPU مستقر کنید.
- یک کاربر غیر ریشه با امتیازات sudo ایجاد کنید .
- سرور را به روز کنید .
matrix.example.com
زیر دامنه ها را ایجاد کنیدelement.example.com
وcoturn.example.com
به سرور خود اشاره کنید.
1. فایروال را پیکربندی کنید
Matrix Synapse برای کار به پورت های HTTP و HTTPS نیاز دارد.
آنها را با استفاده از فایروال بدون عارضه (UFW) باز کنید.
sudo ufw allow http
sudo ufw allow https
پورت 8448 را همانطور که ماتریس نیاز دارد باز کنید.
sudo ufw allow 8448
برای تایید وضعیت فایروال را بررسی کنید.
sudo ufw status
نصب Matrix Synapse
2. Matrix Synapse را نصب کنید
کلید GPG را دانلود و وارد کنید.
sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg
https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg
مخزن رسمی APT Matrix را اضافه کنید.
echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ (lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/matrix-org.list
مشکلات:
مخزن
https://packages.matrix.org/debian
لیست مخازن سیستم را به روز کنید.
sudo apt update
Matrix Synapse را نصب کنید.
sudo apt install matrix-synapse-py3
نام دامنه Matrix خود را در حین نصب به عنوان نام سرور وارد کنید. بعداً می توانید آن را در /etc/matrix-synapse/conf.d/server_name.yaml
فایل تغییر دهید. N
برای توقف گزارش آمارهای ناشناس وارد شوید .
3. PostgreSQL را نصب و پیکربندی کنید
Synapse به طور پیش فرض از پایگاه داده SQLite پشتیبانی می کند که به دلیل مشکلات عملکرد برای یک محیط تولید مناسب نیست.
سرور PostgreSQL را نصب کنید.
sudo apt install postgresql postgresql-contrib
وارد پوسته PostgreSQL شوید.
sudo -su postgres psql
یک کاربر Synapse SQL ایجاد کنید.
CREATE ROLE syanpse LOGIN PASSWORD 'yourpassword`;
یک پایگاه داده Synapse ایجاد کنید.
CREATE DATABASE synapsedb OWNER synapse LOCALE 'C' ENCODING 'UTF-8' TEMPLATE template0;
از پوسته خارج شوید.
exit
*****
نصب Nginx
4. Nginx را نصب کنید
اوبونتو 22.04 با نسخه قدیمی Nginx عرضه می شود. برای نصب آخرین نسخه، مخزن رسمی Nginx را اضافه کنید.
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
sudo tee /etc/apt/sources.list.d/nginx.list
لیست مخزن سیستم را به روز کنید.
sudo apt update
Nginx را نصب کنید.
sudo apt install nginx
سرور Nginx را راه اندازی کنید.
sudo systemctl start nginx
5. SSL را نصب کنید
snapd
برای اطمینان از اینکه آخرین نسخه مورد نیاز برای نصب Certbot را دارید، دستورات زیر را صادر کنید .
sudo snap install core
sudo snap refresh core
Certbot را نصب کنید.
sudo snap install --classic certbot
یک سیم پیوند برای Certbot به /usr/bin
دایرکتوری ایجاد کنید.
sudo ln -s /snap/bin/certbot /usr/bin/certbot
گواهی SSL را صادر کنید.
sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m name@example.com -d matrix.example.com
گواهی گروه Diffie-Hellman را ایجاد کنید .
sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
فرآیند تمدید SSL را به صورت خشک انجام دهید تا مطمئن شوید که کار می کند.
sudo certbot renew --dry-run
6. Synapse را پیکربندی کنید
میتوانید Snypase را با استفاده از /etc/matrix-synapse/homeserver.yaml
فایل پیکربندی کنید، اما نباید از آن در محیط تولید استفاده کنید زیرا در طول بهروزرسانی APT بازنویسی میشود.
شما باید Synapse را با ایجاد فایلها در دایرکتوری /etc/matrix-synapse/conf.d/
پیکربندی کنید.
یک فایل پیکربندی پایگاه داده ایجاد کنید.
sudo nano /etc/matrix-synapse/conf.d/database.yaml
خطوط زیر را در ویرایشگر قرار دهید. yourpassword
با مجموعه کاربر پایگاه داده در مرحله 3 جایگزین کنید .
database:
name: psycopg2
args:
user: synapse
password: 'yourpassword'
database: synapsedb
host: localhost
cp_min: 5
cp_max: 10
فایل را با فشار دادن CTRL+ X و سپس ذخیره کنید Y.
یک کلید ثبت ایجاد کنید و آن را در فایل /etc/matrix-synapse/conf.d/registration_shared_secret.key
ذخیره کنید.
echo "registration_shared_secret: '(cat /dev/urandom | tr -cd '[:alnum:]' | fold -w 256 | head -n 1)'" | sudo tee /etc/matrix-synapse/conf.d/registration_shared_secret.yaml
یک کاربر جدید Matrix ایجاد کنید. تایپ کنید yes
تا آن را به عنوان مدیر تنظیم کنید.
register_new_matrix_user -c /etc/matrix-synapse/conf.d/registration_shared_secret.yaml http://localhost:8008
Synapse به طور پیش فرض اجازه ثبت عمومی را نمی دهد. برای فعال کردن آن یک فایل پیکربندی ایجاد کنید.
sudo nano /etc/matrix-synapse/conf.d/registration.yaml
خط زیر را بچسبانید.
enable_registration: true
Synapse برای کاربران جدید به تأیید نیاز دارد. برای فعال کردن تأیید ایمیل، خطوط زیر را جایگذاری کنید.
registrations_require_3pid:
- email
email:
smtp_host: mail.example.com
smtp_port: 587
# If mail server has no authentication, skip these 2 lines
smtp_user: 'noreply@example.com'
smtp_pass: 'password'
# Optional, require encryption with STARTTLS
require_transport_security: true
app_name: 'Example Chat' # defines value for %(app)s in notif_from and email subject
notif_from: "%(app)s <noreply@example.com>"
با استفاده از کد زیر می توانید تایید کاربر را غیرفعال کنید.
enable_registration_without_verification: true
فایل را با فشار دادن CTRL+ Xو سپس ذخیره کنید Y.
Synapse به طور پیش فرض وضعیت آنلاین کاربر را نشان می دهد که می تواند باعث استفاده زیاد از CPU شود. برای غیرفعال کردن وضعیت، یک فایل پیکربندی جدید ایجاد کنید.
sudo nano /etc/matrix-synapse/conf.d/presence.yaml
خطوط زیر را بچسبانید.
presence:
enabled: false
فایل را با فشار دادن CTRL+ Xو سپس ذخیره کنید Y.
برای اعمال تغییرات، سیناپس را مجددا راه اندازی کنید.
sudo systemctl restart matrix-synapse
7. Nginx را پیکربندی کنید
فایل پیکربندی Nginx را باز کنید.
sudo nano /etc/nginx/nginx.conf
خط زیر را قبل از خط اضافه کنید /etc/nginx/conf.d/*.conf
.
server_names_hash_bucket_size 64;
فایل را با فشار دادن CTRL+ Xو سپس ذخیره کنید Y.
یک فایل پیکربندی Nginx برای Synapse ایجاد کنید.
sudo nano /etc/nginx/conf.d/synapse.conf
خطوط زیر را بچسبانید.
# enforce HTTPS
server {
# Client port
listen 80;
listen [::]:80;
server_name matrix.example.com;
return 301 https://$host$request_uri;
}
server {
server_name matrix.example.com;
# Client port
listen 443 ssl http2;
listen [::]:443 ssl http2;
# Federation port
listen 8448 ssl http2 default_server;
listen [::]:8448 ssl http2 default_server;
access_log /var/log/nginx/synapse.access.log;
error_log /var/log/nginx/synapse.error.log;
# TLS configuration
ssl_certificate /etc/letsencrypt/live/matrix.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/matrix.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/matrix.example.com/chain.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
location ~ ^(/_matrix|/_synapse/client) {
proxy_pass http://localhost:8008;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
# Nginx by default only allows file uploads up to 1M in size
# Increase client_max_body_size to match max_upload_size defined in homeserver.yaml
client_max_body_size 50M;
}
}
فایل را با فشار دادن CTRL+ Xو سپس ذخیره کنید Y.
نحو فایل پیکربندی را بررسی کنید.
sudo nginx -t
سرور Nginx را مجددا راه اندازی کنید.
sudo systemctl restart nginx
نصب Coturn
8. Coturn را نصب کنید
برای استفاده از تماسهای ویدیویی و صوتی، باید یک Traversal Using Relays در اطراف سرور NAT (TURN) نصب کنید.
Coturn را نصب کنید.
sudo apt install coturn
پورت های TURN و UDP را باز کنید.
sudo ufw allow 3478
sudo ufw allow 5349
sudo ufw allow 49152:65535/udp
برای Coturn گواهی SSL صادر کنید.
sudo certbot certonly --nginx -d coturn.example.com
از فایل تنظیمات پیش فرض بک آپ بگیرید.
sudo mv /etc/turnserver.conf /etc/turnserver.conf.bak
یک راز احراز هویت ایجاد کنید و آن را در فایل پیکربندی ذخیره کنید.
echo "static-auth-secret=$(cat /dev/urandom | tr -cd '[:alnum:]' | fold -w 256 | head -n 1)" | sudo tee /etc/turnserver.conf
فایل پیکربندی Coturn را باز کنید.
sudo nano /etc/turnserver.conf
خطوط زیر را در زیر رمز احراز هویت قرار دهید.
use-auth-secret
realm=coturn.example.com
cert=/etc/letsencrypt/live/coturn.example.com/fullchain.pem
pkey=/etc/letsencrypt/live/coturn.example.com/privkey.pem
# VoIP is UDP, no need for TCP
no-tcp-relay
# Do not allow traffic to private IP ranges
no-multicast-peers
denied-peer-ip=0.0.0.0-0.255.255.255
denied-peer-ip=10.0.0.0-10.255.255.255
denied-peer-ip=100.64.0.0-100.127.255.255
denied-peer-ip=127.0.0.0-127.255.255.255
denied-peer-ip=169.254.0.0-169.254.255.255
denied-peer-ip=172.16.0.0-172.31.255.255
denied-peer-ip=192.0.0.0-192.0.0.255
denied-peer-ip=192.0.2.0-192.0.2.255
denied-peer-ip=192.88.99.0-192.88.99.255
denied-peer-ip=192.168.0.0-192.168.255.255
denied-peer-ip=198.18.0.0-198.19.255.255
denied-peer-ip=198.51.100.0-198.51.100.255
denied-peer-ip=203.0.113.0-203.0.113.255
denied-peer-ip=240.0.0.0-255.255.255.255
denied-peer-ip=::1
denied-peer-ip=64:ff9b::-64:ff9b::ffff:ffff
denied-peer-ip=::ffff:0.0.0.0-::ffff:255.255.255.255
denied-peer-ip=100::-100::ffff:ffff:ffff:ffff
denied-peer-ip=2001::-2001:1ff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=2002::-2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=fc00::-fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=fe80::-febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff
# Limit number of sessions per user
user-quota=12
# Limit total number of sessions
total-quota=1200
فایل را با فشار دادن CTRL+ X و سپس با Y ذخیره کنید.
برای اعمال تنظیمات، Coturn را مجددا راه اندازی کنید.
sudo systemctl restart coturn
یک فایل پیکربندی Synapse برای Coturn ایجاد کنید.
sudo nano /etc/matrix-synapse/conf.d/turn.yaml
خطوط زیر را در ویرایشگر قرار دهید. مقدار turn_shared_secret
را با مقدار متغیر static-auth-secret
در فایل \etc\turnserver.conf
جایگزین کنید.
turn_uris: [ "turn:coturn.example.com?transport=udp", "turn:coturn.example.com?transport=tcp" ]
turn_shared_secret: 'static-auth-secret'
turn_user_lifetime: 86400000
turn_allow_guests: True
فایل را با فشار دادن CTRL+ X و سپس با Y ذخیره کنید.
برای اعمال تنظیمات، Synapse را مجددا راه اندازی کنید.
sudo systemctl restart matrix-synapse
9. از ماتریس استفاده کنید
می توانید از Synapse با استفاده از هر یک از کلاینت های موجود Matrix استفاده کنید .
برنامه المنت Element محبوب ترین مشتری است و به عنوان یک برنامه المنت وب ، المنت سکتاپ و برنامه المنت تلفن همراه در دسترس است .
homeserver
آدرس خود را https://matrix.example.com
هنگام ورود به سیستم اضافه کنید. از اعتبارنامه هایی که در مرحله 6 ایجاد کردید استفاده کنید. پس از ورود به سیستم با استفاده از یک کلید امنیتی یا یک عبارت، یک نسخه پشتیبان امن برای پیام ها و داده های رمزگذاری شده خود ایجاد کنید.
اگر میخواهید نمونهای از سرویس گیرنده وب Element خود را میزبانی کنید، دستورالعملهای زیر را دنبال کنید.
نصب برنامه المنت
10. المنت را نصب کنید
پردازنده متن JSON را نصب کنید.
sudo apt install jq
یک فهرست عمومی برای Element ایجاد کنید.
sudo mkdir -p /var/www/element
به دایرکتوری تغییر دهید.
cd /var/www/element
آخرین نسخه Element را از صفحه انتشارات GitHub آن بگیرید.
latest="$(curl -s https://api.github.com/repos/vector-im/element-web/releases/latest | jq -r .tag_name)"
دانلود عنصر.
sudo wget https://github.com/vector-im/element-web/releases/download/${latest}/element-${latest}.tar.gz
آرشیو را استخراج کنید
sudo tar xf element-${latest}.tar.gz
یک دایرکتوری دیگر به عنوان یک پیوند نرم ایجاد کنید.
sudo ln -s element-${latest} current
برای به روز رسانی Element در آینده، دستور زیر را اجرا کنید تا پس از استخراج آرشیو، لینک نرم افزاری به روز شود.
sudo ln -nfs element-${latest} current
11. المنت را پیکربندی کنید
به current
دایرکتوری تغییر دهید.
cd current
فایل پیکربندی عنصر را با استفاده از نمونه ایجاد کنید.
sudo cp config.sample.json config.json
فایل پیکربندی را باز کنید.
sudo nano config.json
base_url
و server_name
صفات مربوط به زیر دامنه ماتریس و دامنه پایه را ویرایش کنید .
"m.homeserver": {
"base_url": "https://matrix.example.com",
"server_name": "matrix.element.com"
},
اگر می خواهید عنوان وب سایت را سفارشی کنید، نام My Example Chat را تغییر دهید.
"brand": "My Example Chat",
متغیر را ویرایش کنید disable_guests
تا مهمانان اجازه استفاده از عنصر را نداشته باشند.
"disable_guests": true,
فایل را با فشار دادن CTRL+ Xو سپس ذخیره کنید Y.
یک گواهی SSL برای مشتری Element ایجاد کنید.
sudo certbot certonly --nginx -d element.example.com
یک فایل در مسیر /etc/nginx/conf.d/element.conf
ایجاد و برای ویرایش باز کنید.
sudo nano /etc/nginx/conf.d/element.conf
خطوط زیر را در آن اضافه کنید.
server {
listen 80;
listen [::]:80;
server_name element.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name element.example.com;
root /var/www/element/current;
index index.html;
access_log /var/log/nginx/element.access.log;
error_log /var/log/nginx/element.error.log;
add_header Referrer-Policy "strict-origin" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
# TLS configuration
ssl_certificate /etc/letsencrypt/live/element.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/element.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/element.example.com/chain.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
}
فایل را با فشار دادن CTRL+ X و سپس ذخیره کنید Y.
نحو فایل پیکربندی Nginx را تأیید کنید.
sudo nginx -t
سرور Nginx را مجددا راه اندازی کنید.
sudo systemctl restart nginx
از طریق URL زیر میتوانید به المنت دسترسی داشته باشید
https://element.example.com
https://element.example.com
نتیجه گیری
امیدواریم این راهنما، به شما در نصب و راه اندازی یک سرور Matrix Synapse و یک کلاینت Element روی سرور اوبونتو 22.04 کمک کرده باشد.
برای اطلاعات بیشتر، منابع زیر را بررسی کنید.
*****
ترجمه
مقدمه Matrix مجموعه ای از API های باز برای ارتباطات غیرمتمرکز و رمزگذاری شده انتها به انتها است. در مجموعه ای از سرورهای فدراسیونی کار می کند تا پیام های فوری، Voice over IP (VoIP) و ارتباطات اینترنت اشیا (IoT) را در زمان واقعی ارائه دهد. از سرورهای خانگی برای ذخیره اطلاعات حساب و تاریخچه چت استفاده می کند . فدراسیون مانند ایمیل کار می کند، به این معنی که می توانید از سروری که توسط شخصی میزبانی می شود استفاده کنید یا سرور Matrix خود را میزبانی کنید که کنترل بیشتری بر روی داده های شما فراهم می کند. ماهیت غیرمتمرکز سرورها تضمین می کند که اگر یک سرور میزبان چت آفلاین شود، ارتباط در سرورهای دیگر ادامه می یابد. Synapse یک پیادهسازی سرور اصلی Matrix است که در پایتون نوشته شده و توسط تیم Matrix.org ایجاد شده است. این راهنما به شما آموزش می دهد که Matrix Synapse و Web Client Element را بر روی سرور اوبونتو 22.04 نصب کنید. پیش نیازها یک سرور اوبونتو 22.04 با حداقل 2 گیگابایت رم و یک هسته vCPU مستقر کنید. یک کاربر غیر ریشه با امتیازات sudo ایجاد کنید . سرور را به روز کنید . matrix.example.com زیر دامنه ها را ایجاد کنید element.example.com و coturn.example.com به سرور خود اشاره کنید.1. فایروال را پیکربندی کنید Matrix Synapse برای کار به پورت های HTTP و HTTPS نیاز دارد. آنها را با استفاده از فایروال بدون عارضه (UFW) باز کنید. $ sudo ufw allow http $ sudo ufw allow https پورت 8448 را همانطور که ماتریس نیاز دارد باز کنید. $ sudo ufw allow 8448 برای تایید وضعیت فایروال را بررسی کنید. $ sudo ufw status 2. Matrix Synapse را نصب کنید کلید GPG را دانلود و وارد کنید. $ sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg مخزن رسمی APT Matrix را اضافه کنید. $ echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/matrix-org.list لیست مخازن سیستم را به روز کنید. $ sudo apt update Matrix Synapse را نصب کنید. $ sudo apt install matrix-synapse-py3 نام دامنه Matrix خود را در حین نصب به عنوان نام سرور وارد کنید. بعداً می توانید آن را در /etc/matrix-synapse/conf.d/server_name.yaml فایل تغییر دهید. N برای توقف گزارش آمارهای ناشناس وارد شوید . 3. PostgreSQL را نصب و پیکربندی کنید Synapse به طور پیش فرض از پایگاه داده SQLite پشتیبانی می کند که به دلیل مشکلات عملکرد برای یک محیط تولید مناسب نیست. سرور PostgreSQL را نصب کنید. $ sudo apt install postgresql postgresql-contrib وارد پوسته PostgreSQL شوید. $ sudo -su postgres psql یک کاربر Synapse SQL ایجاد کنید. # CREATE ROLE syanpse LOGIN PASSWORD 'yourpassword`; یک پایگاه داده Synapse ایجاد کنید. # CREATE DATABASE synapsedb OWNER synapse LOCALE 'C' ENCODING 'UTF-8' TEMPLATE template0; از پوسته خارج شوید. # exit 4. Nginx را نصب کنید اوبونتو 22.04 با نسخه قدیمی Nginx عرضه می شود. برای نصب آخرین نسخه، مخزن رسمی Nginx را اضافه کنید. $ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ لیست مخزن سیستم را به روز کنید. $ sudo apt update Nginx را نصب کنید. $ sudo apt install nginx سرور Nginx را راه اندازی کنید. $ sudo systemctl start nginx 5. SSL را نصب کنید snapd برای اطمینان از اینکه آخرین نسخه مورد نیاز برای نصب Certbot را دارید، دستورات زیر را صادر کنید . $ sudo snap install core $ sudo snap refresh core Certbot را نصب کنید. $ sudo snap install --classic certbot یک سیم پیوند برای Certbot به /usr/bin دایرکتوری ایجاد کنید.$ sudo ln -s /snap/bin/certbot /usr/bin/certbot گواهی SSL را صادر کنید. $ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m name@example.com -d matrix.example.com گواهی گروه Diffie-Hellman را ایجاد کنید . $ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096 فرآیند تمدید SSL را به صورت خشک انجام دهید تا مطمئن شوید که کار می کند. $ sudo certbot renew --dry-run 6. Synapse را پیکربندی کنید میتوانید Snypase را با استفاده از /etc/matrix-synapse/homeserver.yaml فایل پیکربندی کنید، اما نباید از آن در محیط تولید استفاده کنید زیرا در طول بهروزرسانی APT بازنویسی میشود.شما باید Synapse را با ایجاد فایلها در /etc/matrix-synapse/conf.d/ دایرکتوری پیکربندی کنید.یک فایل پیکربندی پایگاه داده ایجاد کنید. $ sudo nano /etc/matrix-synapse/conf.d/database.yaml خطوط زیر را در ویرایشگر قرار دهید. yourpassword با مجموعه کاربر پایگاه داده در مرحله 3 جایگزین کنید . database: فایل را با فشار دادن CTRL+ Xو سپس ذخیره کنید Y. یک کلید ثبت ایجاد کنید و آن را در /etc/matrix-synapse/conf.d/registration_shared_secret.key فایل ذخیره کنید.$ echo "registration_shared_secret: '$(cat /dev/urandom | tr -cd '[:alnum:]' | fold -w 256 | head -n 1)'" | sudo tee /etc/matrix-synapse/conf.d/registration_shared_secret.yaml یک کاربر جدید Matrix ایجاد کنید. تایپ کنید yes تا آن را به عنوان مدیر تنظیم کنید.$ register_new_matrix_user -c /etc/matrix-synapse/conf.d/registration_shared_secret.yaml http://localhost:8008 Synapse به طور پیش فرض اجازه ثبت عمومی را نمی دهد. برای فعال کردن آن یک فایل پیکربندی ایجاد کنید. $ sudo nano /etc/matrix-synapse/conf.d/registration.yaml خط زیر را بچسبانید. enable_registration: true Synapse برای کاربران جدید به تأیید نیاز دارد. برای فعال کردن تأیید ایمیل، خطوط زیر را جایگذاری کنید. registrations_require_3pid: با استفاده از کد زیر می توانید تایید کاربر را غیرفعال کنید. enable_registration_without_verification: true فایل را با فشار دادن CTRL+ Xو سپس ذخیره کنید Y. Synapse به طور پیش فرض وضعیت آنلاین کاربر را نشان می دهد که می تواند باعث استفاده زیاد از CPU شود. برای غیرفعال کردن وضعیت، یک فایل پیکربندی جدید ایجاد کنید. $ sudo nano /etc/matrix-synapse/conf.d/presence.yaml خطوط زیر را بچسبانید. presence: enabled: false فایل را با فشار دادن CTRL+ Xو سپس ذخیره کنید Y. برای اعمال تغییرات، سیناپس را مجددا راه اندازی کنید. $ sudo systemctl restart matrix-synapse 7. Nginx را پیکربندی کنید فایل پیکربندی Nginx را باز کنید. $ sudo nano /etc/nginx/nginx.conf خط زیر را قبل از خط اضافه کنید /etc/nginx/conf.d/*.conf .server_names_hash_bucket_size 64; فایل را با فشار دادن CTRL+ Xو سپس ذخیره کنید Y. یک فایل پیکربندی Nginx برای Synapse ایجاد کنید. $ sudo nano /etc/nginx/conf.d/synapse.conf خطوط زیر را بچسبانید. # enforce HTTPS فایل را با فشار دادن CTRL+ Xو سپس ذخیره کنید Y. نحو فایل پیکربندی را بررسی کنید. $ sudo nginx -t سرور Nginx را مجددا راه اندازی کنید. $ sudo systemctl restart nginx 8. Coturn را نصب کنید برای استفاده از تماسهای ویدیویی و صوتی، باید یک Traversal Using Relays در اطراف سرور NAT (TURN) نصب کنید. Coturn را نصب کنید. $ sudo apt install coturn پورت های TURN و UDP را باز کنید. $ sudo ufw allow 3478 برای Coturn گواهی SSL صادر کنید. $ sudo certbot certonly --nginx -d coturn.example.com از فایل تنظیمات پیش فرض بک آپ بگیرید. $ sudo mv /etc/turnserver.conf /etc/turnserver.conf.bak یک راز احراز هویت ایجاد کنید و آن را در فایل پیکربندی ذخیره کنید. $ echo "static-auth-secret=$(cat /dev/urandom | tr -cd '[:alnum:]' | fold -w 256 | head -n 1)" | sudo tee /etc/turnserver.conf فایل پیکربندی Coturn را باز کنید. $ sudo nano /etc/turnserver.conf خطوط زیر را در زیر رمز احراز هویت قرار دهید. use-auth-secret فایل را با فشار دادن CTRL+ Xو سپس ذخیره کنید Y. برای اعمال تنظیمات، Coturn را مجددا راه اندازی کنید. $ sudo systemctl restart coturn یک فایل پیکربندی Synapse برای Coturn ایجاد کنید. $ sudo nano /etc/matrix-synapse/conf.d/turn.yaml خطوط زیر را در ویرایشگر قرار دهید. turn_shared_secret مقدار را با مقدار متغیر static-auth-secret از فایل جایگزین کنید \etc\turnserver.conf .turn_uris: [ "turn:coturn.example.com?transport=udp", "turn:coturn.example.com?transport=tcp" ] فایل را با فشار دادن CTRL+ Xو سپس ذخیره کنید Y. برای اعمال تنظیمات، Synapse را مجددا راه اندازی کنید. $ sudo systemctl restart matrix-synapse 9. از ماتریس استفاده کنید می توانید از Synapse با استفاده از هر یک از کلاینت های موجود Matrix استفاده کنید . Element محبوب ترین مشتری است و به عنوان یک برنامه وب ، دسکتاپ و برنامه تلفن همراه در دسترس است . homeserver آدرس خود را https://matrix.example.com هنگام ورود به سیستم اضافه کنید. از اعتبارنامه هایی که در مرحله 6 ایجاد کردید استفاده کنید. پس از ورود به سیستم با استفاده از یک کلید امنیتی یا یک عبارت، یک نسخه پشتیبان امن برای پیام ها و داده های رمزگذاری شده خود ایجاد کنید.اگر میخواهید نمونهای از سرویس گیرنده وب Element خود را میزبانی کنید، دستورالعملهای زیر را دنبال کنید. 10. المنت را نصب کنید پردازنده متن JSON را نصب کنید. $ sudo apt install jq یک فهرست عمومی برای Element ایجاد کنید. $ sudo mkdir -p /var/www/element به دایرکتوری تغییر دهید. $ cd /var/www/element آخرین نسخه Element را از صفحه انتشارات GitHub آن بگیرید. $ latest="$(curl -s https://api.github.com/repos/vector-im/element-web/releases/latest | jq -r .tag_name)" دانلود عنصر. $ sudo wget https://github.com/vector-im/element-web/releases/download/${latest}/element-${latest}.tar.gz آرشیو را استخراج کنید $ sudo tar xf element-${latest}.tar.gz یک دایرکتوری دیگر به عنوان یک پیوند نرم ایجاد کنید. $ sudo ln -s element-${latest} current برای به روز رسانی Element در آینده، دستور زیر را اجرا کنید تا پس از استخراج آرشیو، لینک نرم افزاری به روز شود. $ sudo ln -nfs element-${latest} current 11. عنصر را پیکربندی کنید به current دایرکتوری تغییر دهید.$ cd current فایل پیکربندی عنصر را با استفاده از نمونه ایجاد کنید. $ sudo cp config.sample.json config.json فایل پیکربندی را باز کنید. $ sudo nano config.json base_url و server_name صفات مربوط به زیر دامنه ماتریس و دامنه پایه را ویرایش کنید . "m.homeserver": { اگر می خواهید عنوان وب سایت را سفارشی کنید، نام برند را تغییر دهید. "brand": "My Example Chat", متغیر را ویرایش کنید disable_guests تا مهمانان اجازه استفاده از عنصر را نداشته باشند."disable_guests": true, فایل را با فشار دادن CTRL+ Xو سپس ذخیره کنید Y. یک گواهی SSL برای مشتری Element ایجاد کنید. $ sudo certbot certonly --nginx -d element.example.com فایل را /etc/nginx/conf.d/element.conf برای ویرایش ایجاد و باز کنید.$ sudo nano /etc/nginx/conf.d/element.conf خطوط زیر را در آن بچسبانید. server { فایل را با فشار دادن CTRL+ Xو سپس ذخیره کنید Y. نحو فایل پیکربندی Nginx را تأیید کنید. $ sudo nginx -t سرور Nginx را مجددا راه اندازی کنید. $ sudo systemctl restart nginx می توانید از طریق URL به عنصر دسترسی داشته باشید https://element.example.com .نتیجه گیری به دنبال این راهنما، شما یک سرور Matrix Synapse و یک کلاینت Element را روی سرور اوبونتو 22.04 نصب کرده اید. برای اطلاعات بیشتر، منابع زیر را بررسی کنید. مستندات ماتریسی مستندات سیناپس Synapse GitHub | Introduction Matrix is a set of open APIs for decentralized and end-to-end encrypted communication. It works across a collection of federation servers to deliver Instant messages, Voice over IP (VoIP), and Internet of Things (IoT) communication in real time. It uses homeservers to store the account information and chat history. Federation works like email, which means you can either use a server hosted by somebody or host your Matrix server that provides greater control over your data. The decentralized nature of servers ensures that if one server hosting a chat goes offline, the communication continues on other servers. Synapse is a popular homeserver implementation of Matrix written in Python and created by the Matrix.org team. This guide will teach you to install Matrix Synapse and Element web client on a Ubuntu 22.04 server. Prerequisites Deploy a Ubuntu 22.04 server with at least 2 GB of RAM and one vCPU core. Create a non-root user with sudo privileges. Update the server. Create subdomains matrix.example.com , element.example.com , and coturn.example.com pointing to your server.1. Configure Firewall Matrix Synapse needs HTTP and HTTPS ports to work. Open them using the Uncomplicated Firewall (UFW). $ sudo ufw allow http $ sudo ufw allow https Open port 8448, as required by Matrix. $ sudo ufw allow 8448 Check the firewall status to confirm. $ sudo ufw status 2. Install Matrix Synapse Download and import the GPG key. $ sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg Add the Matrix official APT repository. $ echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/matrix-org.list Update the system repositories list. $ sudo apt update Install Matrix Synapse. $ sudo apt install matrix-synapse-py3 Enter your Matrix domain name during installation as the server name. You can change it later in the /etc/matrix-synapse/conf.d/server_name.yaml file. Enter N to stop the reporting of anonymized statistics.3. Install and Configure PostgreSQL Synapse supports SQLite database by default which isn’t suitable for a production environment because of performance issues. Install PostgreSQL server. $ sudo apt install postgresql postgresql-contrib Log in to the PostgreSQL shell. $ sudo -su postgres psql Create a Synapse SQL user. # CREATE ROLE syanpse LOGIN PASSWORD 'yourpassword`; Create a Synapse Database. # CREATE DATABASE synapsedb OWNER synapse LOCALE 'C' ENCODING 'UTF-8' TEMPLATE template0; Exit the shell. # exit 4. Install Nginx Ubuntu 22.04 ships with an older version of Nginx. Add the official Nginx repository to install the latest version. $ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null $ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \ http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \ sudo tee /etc/apt/sources.list.d/nginx.list Update the system repository list. $ sudo apt update Install Nginx. $ sudo apt install nginx Start the Nginx server. $ sudo systemctl start nginx 5. Install SSL Issue the following commands to ensure that you have the latest version of snapd required to install Certbot.$ sudo snap install core $ sudo snap refresh core Install Certbot. $ sudo snap install --classic certbot Create a symlink for Certbot to the /usr/bin directory.$ sudo ln -s /snap/bin/certbot /usr/bin/certbot Issue the SSL Certificate. $ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m name@example.com -d matrix.example.com Generate a Diffie-Hellman group certificate. $ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096 Do a dry run of the SSL renewal process to ensure it works. $ sudo certbot renew --dry-run 6. Configure Synapse You can configure Snypase using the /etc/matrix-synapse/homeserver.yaml file, but you shouldn’t use it in a production environment because it gets overwritten during an APT update.You should configure Synapse by creating files in /etc/matrix-synapse/conf.d/ directory.Create a database configuration file. $ sudo nano /etc/matrix-synapse/conf.d/database.yaml Paste the following lines in the editor. Replace yourpassword with the database user set in Step 3.database: name: psycopg2 args: user: synapse password: 'yourpassword' database: synapsedb host: localhost cp_min: 5 cp_max: 10 Save the file by pressing CTRL+X, then Y. Create a registration key and store it in the /etc/matrix-synapse/conf.d/registration_shared_secret.key file.$ echo "registration_shared_secret: '$(cat /dev/urandom | tr -cd '[:alnum:]' | fold -w 256 | head -n 1)'" | sudo tee /etc/matrix-synapse/conf.d/registration_shared_secret.yaml Create a new Matrix user. Type yes to set it as administrator.$ register_new_matrix_user -c /etc/matrix-synapse/conf.d/registration_shared_secret.yaml http://localhost:8008 Synapse doesn’t allow public registration by default. Create a configuration file to enable it. $ sudo nano /etc/matrix-synapse/conf.d/registration.yaml Paste the following line. enable_registration: true Synapse requires verification for new users. To enable email verification, paste the following lines. registrations_require_3pid: - email email: smtp_host: mail.example.com smtp_port: 587 # If mail server has no authentication, skip these 2 lines smtp_user: 'noreply@example.com' smtp_pass: 'password' # Optional, require encryption with STARTTLS require_transport_security: true app_name: 'Example Chat' # defines value for %(app)s in notif_from and email subject notif_from: "%(app)s <noreply@example.com>" You can disable user verification using the following code. enable_registration_without_verification: true Save the file by pressing CTRL+X, then Y. Synapse shows the user’s online status by default which can cause high CPU usage. To disable the status, create a new configuration file. $ sudo nano /etc/matrix-synapse/conf.d/presence.yaml Paste the following lines. presence: enabled: false Save the file by pressing CTRL+X, then Y. Restart Synapse to apply the changes. $ sudo systemctl restart matrix-synapse 7. Configure Nginx Open the Nginx configuration file. $ sudo nano /etc/nginx/nginx.conf Add the following line before the line /etc/nginx/conf.d/*.conf .server_names_hash_bucket_size 64; Save the file by pressing CTRL+X, then Y. Create an Nginx configuration file for Synapse. $ sudo nano /etc/nginx/conf.d/synapse.conf Paste the following lines. # enforce HTTPS server { # Client port listen 80; listen [::]:80; server_name matrix.example.com; return 301 https://$host$request_uri; } server { server_name matrix.example.com; # Client port listen 443 ssl http2; listen [::]:443 ssl http2; # Federation port listen 8448 ssl http2 default_server; listen [::]:8448 ssl http2 default_server; access_log /var/log/nginx/synapse.access.log; error_log /var/log/nginx/synapse.error.log; # TLS configuration ssl_certificate /etc/letsencrypt/live/matrix.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/matrix.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/matrix.example.com/chain.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; location ~ ^(/_matrix|/_synapse/client) { proxy_pass http://localhost:8008; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; # Nginx by default only allows file uploads up to 1M in size # Increase client_max_body_size to match max_upload_size defined in homeserver.yaml client_max_body_size 50M; } } Save the file by pressing CTRL+X, then Y. Verify the configuration file syntax. $ sudo nginx -t Restart the Nginx server. $ sudo systemctl restart nginx 8. Install Coturn You need to install a Traversal Using Relays around NAT (TURN) server to use video and voice calls. Install Coturn. $ sudo apt install coturn Open the TURN and UDP ports. $ sudo ufw allow 3478 $ sudo ufw allow 5349 $ sudo ufw allow 49152:65535/udp Issue an SSL certificate for Coturn. $ sudo certbot certonly --nginx -d coturn.example.com Back up the default configuration file. $ sudo mv /etc/turnserver.conf /etc/turnserver.conf.bak Generate an authentication secret and store it in the configuration file. $ echo "static-auth-secret=$(cat /dev/urandom | tr -cd '[:alnum:]' | fold -w 256 | head -n 1)" | sudo tee /etc/turnserver.conf Open the Coturn configuration file. $ sudo nano /etc/turnserver.conf Paste the following lines below the authentication secret. use-auth-secret realm=coturn.example.com cert=/etc/letsencrypt/live/coturn.example.com/fullchain.pem pkey=/etc/letsencrypt/live/coturn.example.com/privkey.pem # VoIP is UDP, no need for TCP no-tcp-relay # Do not allow traffic to private IP ranges no-multicast-peers denied-peer-ip=0.0.0.0-0.255.255.255 denied-peer-ip=10.0.0.0-10.255.255.255 denied-peer-ip=100.64.0.0-100.127.255.255 denied-peer-ip=127.0.0.0-127.255.255.255 denied-peer-ip=169.254.0.0-169.254.255.255 denied-peer-ip=172.16.0.0-172.31.255.255 denied-peer-ip=192.0.0.0-192.0.0.255 denied-peer-ip=192.0.2.0-192.0.2.255 denied-peer-ip=192.88.99.0-192.88.99.255 denied-peer-ip=192.168.0.0-192.168.255.255 denied-peer-ip=198.18.0.0-198.19.255.255 denied-peer-ip=198.51.100.0-198.51.100.255 denied-peer-ip=203.0.113.0-203.0.113.255 denied-peer-ip=240.0.0.0-255.255.255.255 denied-peer-ip=::1 denied-peer-ip=64:ff9b::-64:ff9b::ffff:ffff denied-peer-ip=::ffff:0.0.0.0-::ffff:255.255.255.255 denied-peer-ip=100::-100::ffff:ffff:ffff:ffff denied-peer-ip=2001::-2001:1ff:ffff:ffff:ffff:ffff:ffff:ffff denied-peer-ip=2002::-2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff denied-peer-ip=fc00::-fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff denied-peer-ip=fe80::-febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff # Limit number of sessions per user user-quota=12 # Limit total number of sessions total-quota=1200 Save the file by pressing CTRL+X, then Y. Restart Coturn to apply the settings. $ sudo systemctl restart coturn Create a Synapse configuration file for Coturn. $ sudo nano /etc/matrix-synapse/conf.d/turn.yaml Paste the following lines in the editor. Replace the turn_shared_secret value with the value of the static-auth-secret variable from the \etc\turnserver.conf file.turn_uris: [ "turn:coturn.example.com?transport=udp", "turn:coturn.example.com?transport=tcp" ] turn_shared_secret: 'static-auth-secret' turn_user_lifetime: 86400000 turn_allow_guests: True Save the file by pressing CTRL+X, then Y. Restart Synapse to apply the configuration. $ sudo systemctl restart matrix-synapse 9. Use Matrix You can use Synapse using any of the available Matrix clients. Element is the most popular client and is available as a web app, desktop, and mobile app. Add your homeserver address https://matrix.example.com while logging in. Use the credentials you created in step 6. Create a secure backup for your encrypted messages and data using a security key or a phrase after logging in.If you want to host your instance of Element web client, follow the instructions below. 10. Install Element Install JSON text processor. $ sudo apt install jq Create a public directory for Element. $ sudo mkdir -p /var/www/element Switch to the directory. $ cd /var/www/element Grab the latest version of Element from its GitHub releases page. $ latest="$(curl -s https://api.github.com/repos/vector-im/element-web/releases/latest | jq -r .tag_name)" Download Element. $ sudo wget https://github.com/vector-im/element-web/releases/download/${latest}/element-${latest}.tar.gz Extract the archive. $ sudo tar xf element-${latest}.tar.gz Create another directory as a soft link. $ sudo ln -s element-${latest} current To update Element in the future, run the following command to update the soft link after extracting the archive. $ sudo ln -nfs element-${latest} current 11. Configure Element Switch to the current directory.$ cd current Create the Element configuration file using the sample. $ sudo cp config.sample.json config.json Open the configuration file. $ sudo nano config.json Edit the base_url and server_name attributes referencing your matrix subdomain and the base domain."m.homeserver": { "base_url": "https://matrix.example.com", "server_name": "matrix.element.com" }, Change the brand name if you want to customize the website title. "brand": "My Example Chat", Edit the disable_guests variable to disallow Guests from using Element."disable_guests": true, Save the file by pressing CTRL+X, then Y. Generate an SSL certificate for the Element client. $ sudo certbot certonly --nginx -d element.example.com Create and open the file /etc/nginx/conf.d/element.conf for editing.$ sudo nano /etc/nginx/conf.d/element.conf Paste the following lines in it. server { listen 80; listen [::]:80; server_name element.example.com; return 301 https://$host$request_uri; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name element.example.com; root /var/www/element/current; index index.html; access_log /var/log/nginx/element.access.log; error_log /var/log/nginx/element.error.log; add_header Referrer-Policy "strict-origin" always; add_header X-Content-Type-Options "nosniff" always; add_header X-Frame-Options "SAMEORIGIN" always; # TLS configuration ssl_certificate /etc/letsencrypt/live/element.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/element.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/element.example.com/chain.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; } Save the file by pressing CTRL+X, then Y. Verify the Nginx configuration file syntax. $ sudo nginx -t Restart the Nginx server. $ sudo systemctl restart nginx You can access Element via the URL https://element.example.com .Conclusion |
منبع:
https://docs.vultr.com/create-a-chat-server-using-matrix-synapse-and-element-on-ubuntu-22-04