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 status2. 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 updateMatrix 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;از پوسته خارج شوید. # exit4. Nginx را نصب کنید اوبونتو 22.04 با نسخه قدیمی Nginx عرضه می شود. برای نصب آخرین نسخه، مخزن رسمی Nginx را اضافه کنید. $ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \لیست مخزن سیستم را به روز کنید. $ sudo apt updateNginx را نصب کنید. $ sudo apt install nginxسرور Nginx را راه اندازی کنید. $ sudo systemctl start nginx5. SSL را نصب کنید snapdبرای اطمینان از اینکه آخرین نسخه مورد نیاز برای نصب Certbot را دارید، دستورات زیر را صادر کنید . $ sudo snap install core $ sudo snap refresh coreCertbot را نصب کنید. $ 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-run6. 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:8008Synapse به طور پیش فرض اجازه ثبت عمومی را نمی دهد. برای فعال کردن آن یک فایل پیکربندی ایجاد کنید. $ sudo nano /etc/matrix-synapse/conf.d/registration.yamlخط زیر را بچسبانید. enable_registration: trueSynapse برای کاربران جدید به تأیید نیاز دارد. برای فعال کردن تأیید ایمیل، خطوط زیر را جایگذاری کنید. 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-synapse7. 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 nginx8. 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-synapse9. از ماتریس استفاده کنید می توانید از 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} current11. عنصر را پیکربندی کنید به currentدایرکتوری تغییر دهید.$ cd currentفایل پیکربندی عنصر را با استفاده از نمونه ایجاد کنید. $ sudo cp config.sample.json config.jsonفایل پیکربندی را باز کنید. $ sudo nano config.jsonbase_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 httpsOpen port 8448, as required by Matrix. $ sudo ufw allow 8448Check the firewall status to confirm. $ sudo ufw status2. 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.gpgAdd 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.listUpdate the system repositories list. $ sudo apt updateInstall Matrix Synapse. $ sudo apt install matrix-synapse-py3Enter 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-contribLog in to the PostgreSQL shell. $ sudo -su postgres psqlCreate 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. # exit4. 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.listUpdate the system repository list. $ sudo apt updateInstall Nginx. $ sudo apt install nginxStart the Nginx server. $ sudo systemctl start nginx5. 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 coreInstall Certbot. $ sudo snap install --classic certbotCreate a symlink for Certbot to the /usr/bin directory.$ sudo ln -s /snap/bin/certbot /usr/bin/certbotIssue the SSL Certificate. $ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m name@example.com -d matrix.example.comGenerate a Diffie-Hellman group certificate. $ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096Do a dry run of the SSL renewal process to ensure it works. $ sudo certbot renew --dry-run6. 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.yamlPaste 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: 10Save 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.yamlCreate 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:8008Synapse doesn’t allow public registration by default. Create a configuration file to enable it. $ sudo nano /etc/matrix-synapse/conf.d/registration.yamlPaste the following line. enable_registration: trueSynapse 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: trueSave 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.yamlPaste the following lines. presence: enabled: falseSave the file by pressing CTRL+X, then Y. Restart Synapse to apply the changes. $ sudo systemctl restart matrix-synapse7. Configure Nginx Open the Nginx configuration file. $ sudo nano /etc/nginx/nginx.confAdd 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.confPaste 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 -tRestart the Nginx server. $ sudo systemctl restart nginx8. 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 coturnOpen the TURN and UDP ports. $ sudo ufw allow 3478 $ sudo ufw allow 5349 $ sudo ufw allow 49152:65535/udpIssue an SSL certificate for Coturn. $ sudo certbot certonly --nginx -d coturn.example.comBack up the default configuration file. $ sudo mv /etc/turnserver.conf /etc/turnserver.conf.bakGenerate 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.confOpen the Coturn configuration file. $ sudo nano /etc/turnserver.confPaste 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=1200Save the file by pressing CTRL+X, then Y. Restart Coturn to apply the settings. $ sudo systemctl restart coturnCreate a Synapse configuration file for Coturn. $ sudo nano /etc/matrix-synapse/conf.d/turn.yamlPaste 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: TrueSave the file by pressing CTRL+X, then Y. Restart Synapse to apply the configuration. $ sudo systemctl restart matrix-synapse9. 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 jqCreate a public directory for Element. $ sudo mkdir -p /var/www/elementSwitch to the directory. $ cd /var/www/elementGrab 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.gzExtract the archive. $ sudo tar xf element-${latest}.tar.gzCreate another directory as a soft link. $ sudo ln -s element-${latest} currentTo update Element in the future, run the following command to update the soft link after extracting the archive. $ sudo ln -nfs element-${latest} current11. Configure Element Switch to the current directory.$ cd currentCreate the Element configuration file using the sample. $ sudo cp config.sample.json config.jsonOpen the configuration file. $ sudo nano config.jsonEdit 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.comCreate and open the file /etc/nginx/conf.d/element.conf for editing.$ sudo nano /etc/nginx/conf.d/element.confPaste 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 -tRestart the Nginx server. $ sudo systemctl restart nginxYou 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