إنشاء خادم دردشة باستخدام ماتريكس سينابس وأعمال الشغب على CentOS 7

ماتريكس هو بروتوكول اتصال قياسي مفتوح للاتصال اللامركزي في الوقت الحقيقي. يتم تطبيق Matrix كخوادم منزلية يتم توزيعها عبر الإنترنت ؛ ومن ثم لا توجد نقطة تحكم أو فشل واحدة. توفر Matrix واجهة برمجة تطبيقات HTTP RESTful لإنشاء وإدارة خوادم الدردشة الموزعة التي تتضمن إرسال واستقبال الرسائل ، ودعوة أعضاء غرفة الدردشة وإدارتهم ، والحفاظ على حسابات المستخدمين ، وتوفير ميزات محادثة متقدمة مثل VoIP ومكالمات الفيديو ، وما إلى ذلك. تنشئ Matrix أيضًا مزامنة آمنة بين الخوادم المنزلية التي يتم توزيعها في جميع أنحاء العالم.

Synapse هو تنفيذ خادم Matrix الرئيسي الذي كتبه فريق Matrix. يتكون النظام البيئي Matrix من شبكة العديد من الخوادم المنزلية الفيدرالية الموزعة في جميع أنحاء العالم. يستخدم مستخدم Matrix عميل دردشة للاتصال بالخادم المنزلي ، والذي بدوره يتصل بشبكة Matrix. يقوم Homeserver بتخزين محفوظات الدردشة ومعلومات تسجيل الدخول لهذا المستخدم بالذات.

المتطلبات الأساسية

في هذا البرنامج التعليمي ، سنستخدم matrix.example.comكاسم المجال المستخدم لمصفوفة ماتريكس. استبدل كل تكرارات matrix.example.comاسم المجال الفعلي الذي تريد استخدامه لخادم Synapse الرئيسي.

قم بتحديث نظامك الأساسي باستخدام الدليل كيفية تحديث CentOS 7 . بمجرد تحديث نظامك ، تابع تثبيت Python.

تثبيت أدوات التطوير

ماتريكس سينابس يحتاج بايثون 2.7 للعمل. يأتي Python 2.7 مثبتًا مسبقًا في جميع مثيلات خادم CentOS. يمكنك التحقق من الإصدار المثبت من Python.

python -V

يجب أن تحصل على ناتج مماثل.

[user@vultr ~]$ python -V
Python 2.7.5

قد يؤدي تغيير الإصدار الافتراضي من Python إلى تعطيل مدير مستودع YUM. ومع ذلك ، إذا كنت تريد أحدث إصدار من Python ، يمكنك إجراء تثبيت بديل ، دون استبدال Python الافتراضي.

قم بتثبيت الحزم في Development toolsالمجموعة المطلوبة لتجميع ملفات المثبت.

sudo yum groupinstall -y "Development tools"

قم بتثبيت بعض التبعيات المطلوبة.

sudo yum -y install libtiff-devel libjpeg-devel libzip-devel freetype-devel lcms2-devel libwebp-devel tcl-devel tk-devel redhat-rpm-config python-virtualenv libffi-devel openssl-devel 

قم بتثبيت Python pip. Pip هو مدير التبعية لحزم Python.

wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py

تثبيت المشبك

إنشاء بيئة افتراضية لتطبيق Synapse الخاص بك. يتم استخدام بيئة Python الظاهرية لإنشاء بيئة افتراضية معزولة لمشروع Python. تحتوي البيئة الافتراضية على أدلة التثبيت الخاصة بها ولا تشارك المكتبات مع البيئات الافتراضية العالمية والبيئية الأخرى.

sudo virtualenv -p python2.7 /opt/synapse

قم بتوفير ملكية الدليل للمستخدم الحالي.

sudo chown -R $USER:$USER /opt/synapse/

الآن تنشيط البيئة الافتراضية.

source /opt/synapse/bin/activate

تأكد من أن لديك أحدث إصدار من pipو setuptools.

pip install --upgrade pip 
pip install --upgrade setuptools

قم بتثبيت أحدث إصدار من Synapse باستخدام النقطة.

pip install https://github.com/matrix-org/synapse/tarball/master

سيستغرق الأمر أعلاه بعض الوقت للتنفيذ حيث يقوم بسحب وتثبيت أحدث إصدار من Synapse وجميع التبعيات من مستودع Github.

تثبيت وتكوين PostgreSQL

يستخدم Synapse SQLite كقاعدة بيانات افتراضية. يخزن SQLite البيانات في قاعدة بيانات يتم الاحتفاظ بها كملف مسطح على القرص. يعد استخدام SQLite أمرًا بسيطًا للغاية ، ولكن لا يوصى به للإنتاج لأنه بطيء جدًا مقارنة بـ PostgreSQL.

PostgreSQL هو نظام قاعدة بيانات علائقية للكائنات. ستحتاج إلى إضافة مستودع PostgreSQL في نظامك ، حيث أن التطبيق غير متاح في مستودع YUM الافتراضي.

sudo rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

قم بتثبيت خادم قاعدة بيانات PostgreSQL.

sudo yum -y install postgresql96-server postgresql96-contrib

تهيئة قاعدة البيانات.

sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb

تحرير /var/lib/pgsql/9.6/data/pg_hba.confلتمكين المصادقة المستندة إلى MD5.

sudo nano /var/lib/pgsql/9.6/data/pg_hba.conf

العثور على الأسطر التالية وتغيير peerل trustو idnetل md5.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            idnet
# IPv6 local connections:
host    all             all             ::1/128                 idnet

بمجرد التحديث ، يجب أن يبدو التكوين على هذا النحو.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

قم بتشغيل خادم PostgreSQL وتمكينه من البدء تلقائيًا عند التمهيد.

sudo systemctl start postgresql-9.6
sudo systemctl enable postgresql-9.6

قم بتغيير كلمة المرور لمستخدم PostgreSQL الافتراضي.

sudo passwd postgres

تسجيل الدخول.

sudo su - postgres

قم بإنشاء مستخدم PostgreSQL جديد لـ Synapse.

createuser synapse

يوفر PostgreSQL psqlالصدفة لتشغيل الاستعلامات في قاعدة البيانات. قم بالتبديل إلى غلاف PostgreSQL عن طريق التشغيل.

psql

تعيين كلمة مرور للمستخدم الذي تم إنشاؤه حديثًا لقاعدة بيانات Synapse.

ALTER USER synapse WITH ENCRYPTED password 'DBPassword';

استبدلها DBPasswordبكلمة مرور قوية وقم بتدوينها حيث سنستخدم كلمة المرور لاحقًا. إنشاء قاعدة بيانات جديدة لقاعدة بيانات PostgreSQL.

CREATE DATABASE synapse ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' template=template0 OWNER synapse;

اخرج من psqlالقشرة.

\q

التبديل إلى sudoالمستخدم من postgresالمستخدم الحالي .

exit

ستحتاج أيضًا إلى تثبيت الحزم المطلوبة لـ Synapse للتواصل مع خادم قاعدة بيانات PostgreSQL.

sudo yum -y install postgresql-devel libpqxx-devel.x86_64
source /opt/synapse/bin/activate
pip install psycopg2

تكوين المشبك

يتطلب Synapse ملف تكوين قبل أن يبدأ. يخزن ملف التكوين إعدادات الخادم. قم بالتبديل إلى البيئة الافتراضية وقم بتكوين Synapse.

source /opt/synapse/bin/activate
cd /opt/synapse
python -m synapse.app.homeserver --server-name matrix.example.com --config-path homeserver.yaml --generate-config --report-stats=yes

استبدل matrix.example.comاسم المجال الفعلي الخاص بك وتأكد من أن اسم الخادم قابل للحل إلى عنوان IP لمثيل Vultr الخاص بك. قم بتوفير ما --report-stats=yesإذا كنت تريد أن تقوم الخوادم بإنشاء التقارير أم --report-stats=noلا لتعطيل إنشاء التقارير والإحصائيات.

يجب أن تشاهد نتيجة مماثلة.

(synapse)[user@vultr synapse]$ python -m synapse.app.homeserver --server-name matrix.example.com --config-path homeserver.yaml --generate-config --report-stats=yes
A config file has been generated in 'homeserver.yaml' for server name 'matrix.example.com' with corresponding SSL keys and self-signed certificates. Please review this file and customise it to your needs.
If this server name is incorrect, you will need to regenerate the SSL certificates

بشكل افتراضي ، homeserver.yamlتم تكوين لاستخدام قاعدة بيانات SQLite. نحتاج إلى تعديله لاستخدام قاعدة بيانات PostgreSQL التي أنشأناها سابقًا.

تحرير تم إنشاؤه حديثًا homeserver.yaml.

nano homeserver.yaml

ابحث عن تكوين قاعدة البيانات الموجودة التي تستخدم SQLite3. التعليق على الخطوط كما هو موضح أدناه. أيضًا ، أضف تكوين قاعدة البيانات الجديد لـ PostgreSQL. تأكد من أنك تستخدم بيانات اعتماد قاعدة البيانات الصحيحة.

# Database configuration
#database:
  # The database engine name
  #name: "sqlite3"
  # Arguments to pass to the engine
  #args:
    # Path to the database
    #database: "/opt/synapse/homeserver.db"


database:
    name: psycopg2
    args:
        user: synapse
        password: DBPassword
        database: synapse
        host: localhost
        cp_min: 5
        cp_max: 10

يتم تعطيل تسجيل مستخدم جديد من واجهة ويب افتراضيًا. لتمكين التسجيل ، يمكنك الضبط enable_registrationعلى True. يمكنك أيضًا تعيين مفتاح تسجيل سري ، والذي يسمح لأي شخص بالتسجيل لديه مفتاح السر ، حتى إذا تم تعطيل التسجيل.

enable_registration: False

registration_shared_secret: "YPPqCPYqCQ-Rj,ws~FfeLS@maRV9vz5MnnV^r8~pP.Q6yNBDG;"

احفظ الملف واخرج من المحرر. الآن ستحتاج إلى تسجيل أول مستخدم لك. قبل أن تتمكن من تسجيل مستخدم جديد ، ستحتاج إلى بدء التطبيق أولاً.

source /opt/synapse/bin/activate && cd /opt/synapse
synctl start

يجب أن ترى الأسطر التالية.

2017-09-05 11:10:41,921 - twisted - 131 - INFO - - SynapseSite starting on 8008
2017-09-05 11:10:41,921 - twisted - 131 - INFO - - Starting factory <synapse.http.site.SynapseSite instance at 0x44bbc68>
2017-09-05 11:10:41,921 - synapse.app.homeserver - 201 - INFO - - Synapse now listening on port 8008
2017-09-05 11:10:41,922 - synapse.app.homeserver - 442 - INFO - - Scheduling stats reporting for 3 hour intervals
started synapse.app.homeserver('homeserver.yaml')

تسجيل مستخدم Matrix جديد.

register_new_matrix_user -c homeserver.yaml https://localhost:8448

يجب أن ترى ما يلي.

(synapse)[user@vultr synapse]$ register_new_matrix_user -c homeserver.yaml https://localhost:8448
New user localpart [user]: admin
Password:
Confirm password:
Make admin [no]: yes
Sending registration request...
Success.

أخيرًا ، قبل أن تتمكن من استخدام Homeserver ، ستحتاج إلى السماح بالمنفذ 8448 من خلال جدار الحماية. ميناء 8448يستخدم كمنفذ اتحاد المضمون. يستخدم خادم المنزل هذا المنفذ للتواصل مع بعضهم البعض بشكل آمن. يمكنك أيضًا استخدام عميل Matrix المدمج في الدردشة عبر الإنترنت من خلال هذا المنفذ.

sudo firewall-cmd --permanent --zone=public --add-port=8448/tcp
sudo firewall-cmd --reload

يمكنك الآن تسجيل الدخول إلى عميل Matrix web chat بالانتقال إلى https://matrix.example.com:8448المتصفح المفضل لديك. سترى تحذيرًا حول شهادة SSL حيث أن الشهادات المستخدمة موقعة ذاتيًا. لن نستخدم برنامج الدردشة عبر الويب هذا لأنه قديم ولم تتم صيانته بعد الآن. ما عليك سوى محاولة التحقق مما إذا كان يمكنك تسجيل الدخول باستخدام حساب المستخدم الذي أنشأته للتو.

إعداد دعونا تشفير الشهادات

بدلاً من استخدام شهادة موقعة ذاتيًا لتأمين منفذ الاتحاد ، يمكننا استخدام Let's Encrypt free SSL. يمكن الحصول على Let's Encrypt المجاني من خلال عميل Let's Encrypt الرسمي المسمى Certbot.

قم بتثبيت Certbot.

sudo yum -y install certbot

ضبط إعدادات جدار الحماية للسماح معيار HTTPو HTTPSالموانئ من خلال جدار الحماية. يحتاج Certbot إلى إجراء HTTPاتصال للتحقق من سلطة المجال.

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

للحصول على شهادات من Let's Encrypt CA ، يجب عليك التأكد من أن النطاق الذي ترغب في إنشاء الشهادات له موجه نحو الخادم. إذا لم يكن الأمر كذلك ، فقم بإجراء التغييرات اللازمة على سجلات DNS الخاصة بنطاقك وانتظر حتى يتم نشر DNS قبل إجراء طلب الشهادة مرة أخرى. يتحقق Certbot من سلطة المجال قبل تقديم الشهادات.

استخدم الآن خادم الويب المضمن في Certbot لإنشاء الشهادات لنطاقك.

sudo certbot certonly --standalone -d matrix.example.com

من المرجح أن يتم تخزين الشهادات التي تم إنشاؤها /etc/letsencrypt/live/matrix.example.com/. سيتم تخزين شهادة SSL كـ وسيتم تخزين fullchain.pemالمفتاح الخاص كـ privkey.pem.

انسخ الشهادات.

sudo cp /etc/letsencrypt/live/matrix.example.com/fullchain.pem /opt/synapse/letsencrypt-fullchain.pem

sudo cp /etc/letsencrypt/live/matrix.example.com/privkey.pem /opt/synapse/letsencrypt-privkey.pem

ستحتاج إلى تغيير المسار إلى الشهادات والمفاتيح من homeserver.yamlالملف. قم بتحرير التكوين.

nano /opt/synapse/homeserver.yaml

ابحث عن السطور التالية وقم بتعديل المسار.

tls_certificate_path: "/opt/synapse/letsencrypt-fullchain.pem"

# PEM encoded private key for TLS
tls_private_key_path: "/opt/synapse/letsencrypt-privkey.pem"

احفظ الملف واخرج من المحرر. أعد تشغيل خادم Synapse حتى تصبح التغييرات نافذة المفعول.

source /opt/synapse/bin/activate && cd /opt/synapse
synctl restart

من المقرر أن تنتهي صلاحية صلاحية شهادات التشفير خلال 90 يومًا ، لذلك يوصى بإعداد التجديد التلقائي للشهادات باستخدام وظائف cron. Cron هي خدمة نظام تُستخدم لتشغيل المهام الدورية.

إنشاء برنامج نصي جديد لتجديد الشهادات ونسخ الشهادات المجددة إلى دليل Synapse.

sudo nano /opt/renew-letsencypt.sh  

تعبئة الملف.

#!/bin/sh

/usr/bin/certbot renew --quiet --nginx
cp /etc/letsencrypt/live/matrix.example.com/fullchain.pem /opt/synapse/letsencrypt-fullchain.pem
cp /etc/letsencrypt/live/matrix.example.com/privkey.pem /opt/synapse/letsencrypt-privkey.pem

تقديم إذن التنفيذ.

sudo chmod +x /opt/renew-letsencypt.sh

افتح ملف مهمة كرون.

sudo crontab -e

أضف السطر التالي في نهاية الملف.

30 5 * * 1 /opt/renew-letsencypt.sh

سيتم تشغيل وظيفة cron المذكورة أعلاه كل يوم إثنين الساعة 5:30 صباحًا. إذا كانت الشهادة ستنتهي صلاحيتها ، فسيتم تجديدها تلقائيًا.

الآن يمكنك زيارة https://matrix.example.com:8448. سترى أنه لا يوجد تحذير SSL قبل الاتصال.

قم بإعداد Nginx مع Let's Encrypt

بصرف النظر عن منفذ الاتحاد 8448الآمن ، يستمع Synapse أيضًا إلى منفذ العميل غير الآمن 8008. سنقوم الآن بتكوين Nginx كوكيل عكسي لتطبيق Synapse.

sudo yum -y install nginx

قم بإنشاء ملف تكوين جديد.

sudo nano /etc/nginx/conf.d/synapse.conf

تعبئة الملف بالمحتوى التالي.

server {
    listen 80;
    server_name matrix.example.com;
    return 301 https://$host$request_uri;
}
server {

    listen 443;
    server_name matrix.example.com;

    ssl_certificate           /etc/letsencrypt/live/matrix.example.com/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/matrix.example.com/privkey.pem;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log    /var/log/nginx/synapse.access.log;

    location /_matrix {

      proxy_pass          http://localhost:8008;
      proxy_set_header X-Forwarded-For $remote_addr;

    }
  }

أعد تشغيل وتمكين Nginx من البدء تلقائيًا في وقت التمهيد.

sudo systemctl restart nginx
sudo systemctl enable nginx

أخيرًا ، يمكنك التحقق مما إذا كان يمكن الوصول إلى Synapse من خلال الوكيل العكسي.

curl https://matrix.example.com/_matrix/key/v2/server/auto

يجب أن تحصل على ناتج مماثل.

[user@vultr ~]$ curl https://matrix.example.com/_matrix/key/v2/server/auto
{"old_verify_keys":{},"server_name":"matrix.example.com","signatures":{"matrix.example.com":{"ed25519:a_ffMf":"T/Uq/UN5vyc4w7v0azALjPIJeZx1vQ+HC6ohUGkTSqiFI4WI/ojGpb2763arwSSQLr/tP/2diCi1KLU2DEnOCQ"}},"tls_fingerprints":[{"sha256":"eorhQj/kubI2PEQZyBZvGV7K1x3EcQ7j/AO2MtZMplw"}],"valid_until_ts":1504876080512,"verify_keys":{"ed25519:a_ffMf":{"key":"Gc1hxkpPmQv71Cvjyk+uzR5UtrpmgV/UwlsLtosawEs"}}}

إعداد خدمة Systemd

يوصى باستخدام خدمة Systemd لإدارة عملية خادم Synapse. سيضمن استخدام Systemd بدء تشغيل الخادم تلقائيًا عند بدء تشغيل النظام وإخفاقاته.

قم بإنشاء ملف خدمة Systemd جديد.

sudo nano /etc/systemd/system/matrix-synapse.service

تعبئة الملف.

[Unit]
Description=Matrix Synapse service
After=network.target

[Service]
Type=forking
WorkingDirectory=/opt/synapse/
ExecStart=/opt/synapse/bin/synctl start
ExecStop=/opt/synapse/bin/synctl stop
ExecReload=/opt/synapse/bin/synctl restart
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=synapse

[Install]
WantedBy=multi-user.target

يمكنك الآن بدء تشغيل خادم Synapse بسرعة.

sudo systemctl start matrix-synapse

لإيقاف أو إعادة تشغيل الخادم باستخدام الأوامر التالية.

sudo systemctl stop matrix-synapse
sudo systemctl restart matrix-synapse

يمكنك التحقق من حالة الخدمة.

sudo systemctl status matrix-synapse

باستخدام مكافحة الشغب

تم تثبيت خادم Matrix Synapse وتكوينه الآن على الخادم. نظرًا لأن عميل الويب المضمن لـ Matrix قديم ، يمكنك الاختيار من بين مجموعة متنوعة من تطبيقات العميل المتاحة للدردشة. Riot هو عميل الدردشة الأكثر شيوعًا ، والذي يتوفر على جميع الأنظمة الأساسية تقريبًا. يمكنك استخدام الإصدار المستضاف من عميل الدردشة عبر الإنترنت في Riot ، أو يمكنك أيضًا استضافة نسخة منه على خادمك الخاص. بصرف النظر عن ذلك ، يمكنك أيضًا استخدام عملاء Riot لسطح المكتب والمحمول ، والمتاحين لأنظمة Windows و Mac و Linux و IOS و Android.

إذا كنت ترغب في استضافة نسختك الخاصة من عميل الويب Riot ، يمكنك قراءة المزيد للحصول على تعليمات تثبيت Riot على الخادم الخاص بك. بالنسبة للعميل المستضاف وسطح المكتب والجوال ، يمكنك استخدام اسم المستخدم وكلمة المرور لتسجيل الدخول مباشرة إلى خادم المنزل. ما عليك سوى الاختيار my Matrix IDمن القائمة المنسدلة Sign Inللخيار وتقديم اسم المستخدم وكلمة المرور اللذين أنشأتهما أثناء تسجيل مستخدم جديد. انقر فوق Custom serverواستخدم اسم المجال لمثيل Synapse الخاص بك. نظرًا لأننا قد قمنا بالفعل بتكوين Nginx ، يمكننا فقط استخدامه كخادم https://matrix.example.comHome https://matrix.orgوكعنوان URL لخادم الهوية.

مثال لتسجيل الدخول إلى أعمال الشغب

إعداد مكافحة الشغب على الخادم الخاص بك.

Riot أيضًا مفتوح المصدر ومجاني للاستضافة على الخادم الخاص بك. لا يتطلب أي قاعدة بيانات أو تبعيات. نظرًا لأن لدينا خادم Nginx يعمل بالفعل ، يمكننا استضافته على نفس الخادم.

يجب أن يكون المجال أو النطاق الفرعي الذي تستخدمه لـ Synapse و Riot مختلفين لتجنب البرمجة النصية عبر المواقع. ومع ذلك ، يمكنك استخدام نطاقين فرعيين من نفس المجال. في هذا البرنامج التعليمي ، سنستخدم riot.example.comكمجال لتطبيق Riot. استبدل كل ما يحدث riot.example.comمع نطاقك الفعلي أو نطاقك الفرعي لتطبيق Riot.

قم بتنزيل Riot على الخادم الخاص بك.

cd /opt/
sudo wget https://github.com/vector-im/riot-web/releases/download/v0.12.3/riot-v0.12.3.tar.gz

يمكنك دائمًا العثور على رابط أحدث إصدار على Riot's Github .

استخرج الأرشيف.

sudo tar -xzf riot-v*.tar.gz

إعادة تسمية الدليل للتعامل مع الراحة.

sudo mv riot-v*/ riot/

نظرًا لأننا قمنا بالفعل بتثبيت Certbot ، يمكننا إنشاء الشهادات مباشرة. تأكد من أن النطاق أو النطاق الفرعي الذي تستخدمه موجه نحو الخادم.

sudo systemctl stop nginx
sudo certbot certonly --standalone -d riot.example.com

من المرجح أن يتم تخزين الشهادات التي تم إنشاؤها في /etc/letsencrypt/live/riot.example.com/الدليل.

أنشئ مضيفًا افتراضيًا لتطبيق Riot.

sudo nano /etc/nginx/conf.d/riot.conf

تعبئة الملف.

server {
    listen 80;
    server_name riot.example.com;
    return 301 https://$host$request_uri;
}
server {

    listen 443;
    server_name riot.example.com;

    ssl_certificate           /etc/letsencrypt/live/riot.example.com/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/riot.example.com/privkey.pem;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    root /opt/riot;
    index index.html index.htm;

    location / {
            try_files $uri $uri/ =404;
    }

    access_log    /var/log/nginx/riot.access.log;

  }

انسخ ملف تكوين العينة.

sudo cp /opt/riot/config.sample.json /opt/riot/config.json

الآن قم بتحرير ملف التكوين لإجراء بعض التغييرات.

sudo nano /opt/riot/config.json

ابحث عن الخطوط التالية.

"default_hs_url": "https://matrix.org",
"default_is_url": "https://vector.im",

استبدل قيمة عنوان URL للخادم المنزلي الافتراضي بعنوان URL لخادم Matrix. بالنسبة إلى عنوان URL لخادم الهوية ، يمكنك استخدام الخيار الافتراضي ، أو يمكنك أيضًا توفير قيمته لخادم هوية Matrix ، وهو https://matrix.org.

"default_hs_url": "https://matrix.example.com",
"default_is_url": "https://matrix.org",

احفظ الملف واخرج. توفير ملكية الملفات لمستخدم Nginx.

sudo chown -R nginx:nginx /opt/riot/

أعد تشغيل Nginx.

sudo systemctl restart nginx

يمكنك الوصول إلى Riot on https://riot.example.com. يمكنك الآن تسجيل الدخول باستخدام اسم المستخدم وكلمة المرور اللذين أنشأتهما سابقًا. يمكنك الاتصال باستخدام الخادم الافتراضي حيث قمنا بالفعل بتغيير خادم Matrix الافتراضي لتطبيقنا.

لديك الآن خادم رئيسي Matrix Synapse جاهز للعمل. لديك أيضًا نسخة مستضافة من Riot ، والتي يمكنك استخدامها لإرسال رسالة إلى أشخاص آخرين باستخدام معرف Matrix أو البريد الإلكتروني أو رقم الهاتف المحمول الخاص بهم. ابدأ بإنشاء غرفة دردشة على الخادم الخاص بك ودعوة أصدقائك على Matrix للانضمام إلى غرفة الدردشة التي أنشأتها.



Leave a Comment

كيفية تثبيت وتكوين CyberPanel على خادم CentOS 7 الخاص بك

كيفية تثبيت وتكوين CyberPanel على خادم CentOS 7 الخاص بك

استخدام نظام مختلف؟ مقدمة تعد CyberPanel واحدة من أولى لوحات التحكم في السوق مفتوحة المصدر وتستخدم OpenLiteSpeed. ما هذا

كيفية تثبيت CMS أكتوبر على CentOS 7

كيفية تثبيت CMS أكتوبر على CentOS 7

أكتوبر هو نظام إدارة محتوى مفتوح المصدر يعتمد على Laravel PHP Framework. مع واجهة أنيقة وبنية وحدات موجزة

قم بتثبيت RockMongo على CentOS 7

قم بتثبيت RockMongo على CentOS 7

RockMongo هي أداة إدارة MongoDB على الويب تشبه أداة إدارة MySQL: phpMyAdmin. سيغطي هذا البرنامج التعليمي عملية التثبيت

كيفية نشر Lets Chat Server على CentOS 7

كيفية نشر Lets Chat Server على CentOS 7

Lets Chat هو تطبيق دردشة مفتوح المصدر مصمم لتوفير خدمة الرسائل ذاتية الاستضافة للفرق الصغيرة. يعتمد Lets Chat على NodeJS و MongoDB

كيفية تثبيت أداة إدارة مشروع Taiga على CentOS 7

كيفية تثبيت أداة إدارة مشروع Taiga على CentOS 7

استخدام نظام مختلف؟ Taiga هو تطبيق مجاني ومفتوح المصدر لإدارة المشاريع. على عكس أدوات إدارة المشاريع الأخرى ، يستخدم Taiga زيادة

كيفية تثبيت المجدول المحجوز على CentOS 7

كيفية تثبيت المجدول المحجوز على CentOS 7

استخدام نظام مختلف؟ المتطلبات الأساسية مثيل خادم Vultr CentOS 7. مستخدم sudo. الخطوة 1: تحديث النظام أولاً ، قم بتحديث خادم النظام الخاص بك إلى th

تثبيت Netdata على CentOS 7

تثبيت Netdata على CentOS 7

استخدام نظام مختلف؟ Netdata هي نجمة صاعدة في مجال مراقبة مقاييس النظام في الوقت الفعلي. مقارنة بالأدوات الأخرى من نفس النوع ، Netdata:

كيفية تثبيت DreamFactory Open Source على CentOS 7

كيفية تثبيت DreamFactory Open Source على CentOS 7

DreamFactory هو برنامج مفتوح المصدر يمكنه تحويل أي قاعدة بيانات إلى منصة RESTful API. يمكن نشر DreamFactory على منصات مختلفة. في ثي

كيفية تثبيت خادم Starbound على CentOS 7

كيفية تثبيت خادم Starbound على CentOS 7

استخدام نظام مختلف؟ في هذا البرنامج التعليمي ، سأشرح لك كيفية إعداد خادم Starbound على CentOS 7. المتطلبات الأساسية يجب أن تمتلك هذه اللعبة عليك

كيفية تثبيت Golang 1.13 على CentOS 8 و Ubuntu 18.04 و Debian 10 و Fedora 31

كيفية تثبيت Golang 1.13 على CentOS 8 و Ubuntu 18.04 و Debian 10 و Fedora 31

Go (تُعرف أيضًا باسم Golang) هي لغة برمجة مكتوبة بشكل ثابت ومجمعة على شكل حرف C تم تطويرها بواسطة Google. جعلت البساطة وتعدد الاستخدامات ب

كيفية تثبيت Django على CentOS 7

كيفية تثبيت Django على CentOS 7

Django هو إطار Python شائع لكتابة تطبيقات الويب. مع Django ، يمكنك بناء التطبيقات بشكل أسرع ، دون إعادة اختراع العجلة. إذا كنت تريد

قم بإعداد خادم SA-MP San Andreas متعدد اللاعبين على CentOS 6

قم بإعداد خادم SA-MP San Andreas متعدد اللاعبين على CentOS 6

مرحبًا بك في برنامج تعليمي Vultr آخر. هنا ، ستتعلم كيفية تثبيت خادم SAMP وتشغيله. تمت كتابة هذا الدليل الخاص بـ CentOS 6. المتطلبات الأساسية التي ستحتاج إليها

تثبيت Revive Adserver على CentOS 7

تثبيت Revive Adserver على CentOS 7

Revive Adserver هو نظام عرض إعلانات مجاني ومفتوح المصدر يمكن استخدامه لإدارة الإعلانات على مواقع الويب و / أو التطبيقات و / أو مشغلات الفيديو. في هذه المقالة ،

قم بتثبيت Elgg على CentOS 7

قم بتثبيت Elgg على CentOS 7

استخدام نظام مختلف؟ Elgg هو محرك تواصل اجتماعي مفتوح المصدر يسمح بإنشاء بيئات اجتماعية مثل الشبكات الاجتماعية في الحرم الجامعي

قم ببناء شبكتك الاجتماعية مع الشتات على CentOS 7

قم ببناء شبكتك الاجتماعية مع الشتات على CentOS 7

استخدام نظام مختلف؟ الشتات هو شبكة اجتماعية مفتوحة المصدر تدرك الخصوصية. في هذا البرنامج التعليمي ، ستتعلم كيفية إعداد وتكوين po Diaspora po

نشر Kubernetes مع Kubeadm على CentOS 7

نشر Kubernetes مع Kubeadm على CentOS 7

نظرة عامة تهدف هذه المقالة إلى مساعدتك في إنشاء مجموعة Kubernetes وتشغيلها باستخدام kubeadm في لمح البصر. سيقوم هذا الدليل بنشر خادمين في

قم بإعداد Sails.js للتطوير على CentOS 7

قم بإعداد Sails.js للتطوير على CentOS 7

استخدام نظام مختلف؟ مقدمة Sails.js هو إطار عمل MVC لـ Node.js ، مشابه لـ Ruby on Rails. يجعل لتطوير التطبيقات الحديثة ver

كيفية تجميع Nginx من المصدر على CentOS 7

كيفية تجميع Nginx من المصدر على CentOS 7

استخدام نظام مختلف؟ يمكن استخدام NGINX كخادم HTTP / HTTPS أو خادم وكيل عكسي أو خادم وكيل بريد أو موازن تحميل أو فاصل TLS أو ذاكرة تخزين مؤقت

كيفية تثبيت dotCMS على CentOS 7

كيفية تثبيت dotCMS على CentOS 7

استخدام نظام مختلف؟ dotCMS هو نظام إدارة محتوى من فئة مفتوحة المصدر مفتوح بلغة جافا. أنه يحتوي تقريبا على كل ميزة مطلوبة ر

كيفية تثبيت PufferPanel (لوحة تحكم Minecraft المجانية) على CentOS 7

كيفية تثبيت PufferPanel (لوحة تحكم Minecraft المجانية) على CentOS 7

مقدمة في هذا البرنامج التعليمي ، سيتم تثبيت PufferPanel على Vultr VPS. PufferPanel هي لوحة تحكم مفتوحة المصدر مجانية للاستخدام لإدارتك

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

6 أشياء شديدة الجنون حول نينتندو سويتش

6 أشياء شديدة الجنون حول نينتندو سويتش

يعرف الكثير منكم أن Switch سيصدر في مارس 2017 وميزاته الجديدة. بالنسبة لأولئك الذين لا يعرفون ، قمنا بإعداد قائمة بالميزات التي تجعل "التبديل" "أداة لا غنى عنها".

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

هل تنتظر عمالقة التكنولوجيا للوفاء بوعودهم؟ تحقق من ما تبقى دون تسليم.

وظائف طبقات معمارية مرجعية للبيانات الضخمة

وظائف طبقات معمارية مرجعية للبيانات الضخمة

اقرأ المدونة لمعرفة الطبقات المختلفة في بنية البيانات الضخمة ووظائفها بأبسط طريقة.

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

اقرأ هذا لمعرفة مدى انتشار الذكاء الاصطناعي بين الشركات الصغيرة وكيف أنه يزيد من احتمالات نموها ومنح منافسيها القدرة على التفوق.

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

لقد أصبح حل CAPTCHA صعبًا جدًا على المستخدمين في السنوات القليلة الماضية. هل ستكون قادرة على أن تظل فعالة في اكتشاف البريد العشوائي والروبوتات في المستقبل القريب؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

مع تطور العلم بمعدل سريع ، واستلام الكثير من جهودنا ، تزداد أيضًا مخاطر تعريض أنفسنا إلى تفرد غير قابل للتفسير. اقرأ ، ماذا يمكن أن يعني التفرد بالنسبة لنا.

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

ما هو التطبيب عن بعد والرعاية الصحية عن بعد وأثره على الأجيال القادمة؟ هل هو مكان جيد أم لا في حالة الوباء؟ اقرأ المدونة لتجد طريقة عرض!

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

ربما سمعت أن المتسللين يكسبون الكثير من المال ، لكن هل تساءلت يومًا كيف يجنون هذا النوع من المال؟ دعنا نناقش.

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

أصدرت Apple مؤخرًا macOS Catalina 10.15.4 تحديثًا تكميليًا لإصلاح المشكلات ولكن يبدو أن التحديث يتسبب في المزيد من المشكلات التي تؤدي إلى إنشاء أجهزة macOS. قراءة هذه المادة لمعرفة المزيد