Element (المعروف سابقًا باسم Vector وRiot) هو عميل ويب Matrix تم إنشاؤه باستخدام Matrix JS SDK.
يحتوي العنصر على عدة مستويات من الدعم لبيئات مختلفة:
المدعومة
تم فرز المشكلات بشكل نشط ، والانحدارات تمنع الإصدار
تعريف:
آخر إصدارين رئيسيين من Chrome وFirefox وEdge على أنظمة تشغيل سطح المكتب
آخر إصدارين من Safari
أحدث إصدار من تطبيق Element Desktop الرسمي على أنظمة تشغيل سطح المكتب
أنظمة تشغيل سطح المكتب تعني إصدارات macOS وWindows وLinux لأجهزة سطح المكتب التي يدعمها بائع نظام التشغيل بشكل نشط وتتلقى تحديثات الأمان
أفضل جهد
تم قبول المشكلات، ولا تمنع التراجعات الإصدار
لا تزال منتجات Element الأوسع (بما في ذلك Element Call وEnterprise Server Suite) لا تدعم هذه المتصفحات رسميًا.
يجب أن يحافظ مشروع الويب العنصري والمساهمون فيه على عمل العميل ويتحلل بأمان حيث قد لا تعمل الميزات الشقيقة الأخرى (مثل Element Call).
تعريف:
آخر إصدار رئيسي من Firefox ESR وChrome/Edge Extended Stable
دعم المجتمع
تم قبول المشكلات، ولا تمنع التراجعات الإصدار
نرحب بمساهمات المجتمع لدعم هذه القضايا
تعريف:
ويب الجوال للإصدار الثابت الحالي من Chrome وFirefox وSafari على أنظمة Android وiOS وiPadOS
غير معتمد
التعريف: يتم إغلاق المشكلات التي تؤثر فقط على البيئات غير المدعومة
كل شيء آخر
يجب أن تستمر فترة الدعم لهذه المستويات حتى صدور الإصدارات المحددة أعلاه، بالإضافة إلى دورة إصدار تطبيق واحدة (أسبوعين). في حالة Firefox ESR، يتم توسيع هذا بشكل أكبر للسماح له بالوصول إلى Debian Stable.
للوصول إلى Element على جهاز Android أو iOS، نوصي حاليًا بالتطبيقين الأصليين element-android وelement-ios.
أسهل طريقة لاختبار العنصر هي مجرد استخدام النسخة المستضافة على https://app.element.io. يتم نشر فرع develop
بشكل مستمر على https://develop.element.io لأولئك الذين يحبون العيش بشكل خطير.
لاستضافة مثيل Element الخاص بك، راجع تثبيت Element Web.
لتثبيت Element كتطبيق سطح مكتب، راجع التشغيل كتطبيق سطح مكتب أدناه.
لا نوصي بتشغيل Element من نفس اسم المجال مثل خادم Matrix المنزلي الخاص بك. السبب هو خطر ثغرات XSS (البرمجة النصية عبر المواقع) التي يمكن أن تحدث إذا تسبب شخص ما في قيام Element بتحميل وعرض محتوى ضار أنشأه المستخدم من Matrix API والذي كان لديه بعد ذلك وصول موثوق إلى Element (أو تطبيقات أخرى) بسبب مشاركة نفس المجال.
لقد وضعنا بعض إجراءات التخفيف التقريبية لمحاولة الحماية من هذا الموقف، ولكن لا يزال القيام بذلك في المقام الأول ليس ممارسة جيدة. انظر رقم 1977 لمزيد من التفاصيل.
ما لم تكن لديك متطلبات خاصة، فسوف تحتاج إلى إضافة ما يلي إلى تكوين خادم الويب الخاص بك عند استضافة Element Web:
X-Frame-Options: SAMEORIGIN
، لمنع تأطير Element Web والحماية من سرقة النقرات.
التوجيه frame-ancestors 'self'
إلى رأس Content-Security-Policy
الخاص بك، كبديل حديث X-Frame-Options
(على الرغم من أنه يجب تضمين كليهما نظرًا لأنه لا تدعمه جميع المتصفحات حتى الآن، راجع هذا).
X-Content-Type-Options: nosniff
، لتعطيل استنشاق MIME.
X-XSS-Protection: 1; mode=block;
رأس الصفحة، لحماية XSS الأساسية في المتصفحات القديمة.
إذا كنت تستخدم nginx، فسيبدو هذا كما يلي:
add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header Content-Security-Policy "frame-ancestors 'self'";
بالنسبة لـ Apache، يبدو التكوين كما يلي:
Header set X-Frame-Options SAMEORIGIN Header set X-Content-Type-Options nosniff Header set X-XSS-Protection "1; mode=block" Header set Content-Security-Policy "frame-ancestors 'self'"
ملاحظة: في حالة قيامك بالفعل بتعيين رأس Content-Security-Policy
في مكان آخر، فيجب عليك تعديله ليشمل توجيه frame-ancestors
بدلاً من إضافة السطر الأخير.
Element عبارة عن تطبيق ويب معياري تم إنشاؤه باستخدام ES6 الحديث ويستخدم نظام بناء Node.js. تأكد من تثبيت أحدث إصدار LTS من Node.js.
يوصى باستخدام yarn
بدلاً من npm
. يرجى الاطلاع على دليل تثبيت Yarn إذا لم يكن لديك بالفعل.
قم بتثبيت node.js
أو تحديثه بحيث تكون node
الخاصة بك على الأقل هي LTS الحالية الموصى بها.
تثبيت yarn
إذا لم يكن موجودا بالفعل.
استنساخ الريبو: git clone https://github.com/element-hq/element-web.git
.
قم بالتبديل إلى دليل element-web: cd element-web
.
شروط التثبيت : yarn install
.
إذا كنت تستخدم فرع develop
، فمن المستحسن إعداد بيئة تطوير مناسبة (راجع إعداد بيئة تطوير أدناه). وبدلاً من ذلك، يمكنك استخدام https://develop.element.io - إصدار التكامل المستمر لفرع التطوير.
قم بتكوين التطبيق عن طريق نسخ config.sample.json
إلى config.json
وتعديله. راجع مستندات التكوين للحصول على التفاصيل.
yarn dist
لبناء كرة القطران للنشر. سيؤدي إلغاء تحديد هذا الملف إلى توفير دليل خاص بالإصدار يحتوي على جميع الملفات التي تحتاج إلى الانتقال إلى خادم الويب الخاص بك.
لاحظ أن yarn dist
غير مدعوم على نظام التشغيل Windows، لذلك يمكن لمستخدمي Windows تشغيل yarn build
، والذي سيقوم ببناء جميع الملفات الضرورية في دليل webapp
. لن يظهر إصدار العنصر في الإعدادات دون استخدام البرنامج النصي dist. يمكنك بعد ذلك تحميل دليل webapp
على خادم الويب الخاص بك لخدمة التطبيق فعليًا، وهو محتوى ثابت تمامًا.
يمكن أيضًا تشغيل العنصر كتطبيق سطح مكتب، مغلفًا بـ Electron. يمكنك تنزيل إصدار تم إنشاؤه مسبقًا من https://element.io/get-started أو قم بإنشائه بنفسك إذا كنت تفضل ذلك.
لإنشائه بنفسك، اتبع الإرشادات الموجودة على https://github.com/element-hq/element-desktop.
شكرًا جزيلاً لـaviraldg على العمل الأولي بشأن التكامل الإلكتروني.
توضح مستندات التكوين كيفية تجاوز الإعدادات الافتراضية لتطبيق سطح المكتب إذا رغبت في ذلك.
يدعم العنصر مجموعة متنوعة من الإعدادات لتكوين الخوادم الافتراضية والسلوك والسمات وما إلى ذلك. راجع مستندات التكوين لمزيد من التفاصيل.
قد يتم تمكين بعض ميزات العنصر عن طريق العلامات الموجودة في قسم Labs
في الإعدادات. بعض هذه الميزات موصوفة في labs.md.
يتطلب العنصر عدم تخزين عناوين URL التالية مؤقتًا، عندما/إذا كنت تقدم العنصر من خادم الويب الخاص بك:
/config.*.json /i18n /home /sites /index.html
نوصي أيضًا بإجبار المتصفحات على إعادة التحقق من صحة أي نسخة مخبأة من العنصر عند تحميل الصفحة عن طريق تكوين خادم الويب الخاص بك لإرجاع Cache-Control: no-cache
لـ /
. يضمن هذا أن المتصفح سيجلب إصدارًا جديدًا من العنصر عند تحميل الصفحة التالية بعد نشره. لاحظ أن هذا قد تم تكوينه لك بالفعل في تكوين nginx لملف Dockerfile الخاص بنا.
قبل محاولة التطوير على Element، يجب عليك قراءة دليل المطور لـ matrix-react-sdk
، والذي يحدد أيضًا التصميم والهندسة المعمارية والأسلوب الخاص بـ Element أيضًا.
اقرأ صفحة اختيار مشكلة للحصول على بعض الإرشادات حول مكان البدء. قبل البدء في العمل على إحدى الميزات، من الأفضل التأكد من توافق خطتك بشكل جيد مع رؤيتنا للعنصر. يرجى الدردشة مع الفريق في #element-dev:matrix.org قبل البدء حتى نتمكن من التأكد من أننا على استعداد لدمجه.
يجب عليك أيضًا أن تتعرف على دليل "Here be Dragons" الخاص بالتنانين المروضة وغير المروضة (gotchas) الموجودة في قاعدة التعليمات البرمجية.
تتمثل فكرة العنصر في أن يكون "سطحًا" خفيف الوزن نسبيًا من التخصيصات أعلى المصفوفة الأساسية التالية matrix-react-sdk
. توفر matrix-react-sdk
مكونات React ذات المستوى الأعلى والأدنى المفيدة لبناء تطبيقات اتصالات Matrix باستخدام React.
يرجى ملاحظة أن العنصر مصمم للتشغيل بشكل صحيح دون الوصول إلى الإنترنت العام. لذا يرجى عدم الاعتماد على الموارد (JS libs وCSS والصور والخطوط) التي تستضيفها شبكات CDN أو خوادم خارجية، ولكن بدلاً من ذلك يرجى حزم جميع التبعيات في العنصر نفسه.
الكثير من الوظائف في Element موجودة فعليًا في وحدة matrix-js-sdk
. من الممكن إعدادها بطريقة تجعل من السهل تتبع فروع develop
في git وإجراء تغييرات محلية دون الحاجة إلى إعادة البناء يدويًا في كل مرة.
أول استنساخ وبناء matrix-js-sdk
:
استنساخ بوابة https://github.com/matrix-org/matrix-js-sdk.gitpushd Matrix-js-sdk رابط الغزل تثبيت الغزل
انسخ الريبو وانتقل إلى دليل element-web
:
استنساخ بوابة https://github.com/element-hq/element-web.gitcd element-web
قم بتكوين التطبيق عن طريق نسخ config.sample.json
إلى config.json
وتعديله. راجع مستندات التكوين للحصول على التفاصيل.
وأخيرًا، قم ببناء العنصر نفسه وابدأ تشغيله:
مصفوفة رابط الغزل-js-sdk تثبيت الغزل بداية الغزل
انتظر بضع ثوان حتى ينتهي البناء الأولي؛ يجب أن ترى شيئًا مثل:
[element-js] <s> [webpack.Progress] 100% [element-js] [element-js] ℹ 「wdm」: 1840 modules [element-js] ℹ 「wdm」: Compiled successfully.
تذكر أن الأمر لن ينتهي لأنه يقوم بتشغيل خادم الويب ويعيد بناء الملفات المصدر عند تغييرها. يقوم خادم التطوير هذا أيضًا بتعطيل التخزين المؤقت، لذا لا تستخدمه في الإنتاج.
افتح http://127.0.0.1:8080/ في متصفحك لرؤية العنصر الذي تم إنشاؤه حديثًا.
ملاحظة : يستخدم البرنامج النصي للإنشاء inotify افتراضيًا على Linux لمراقبة أدلة التغييرات. إذا كانت حدود inotify منخفضة جدًا، فسوف يفشل البناء الخاص بك بصمت أو بسبب Error: EMFILE: too many open files
. لتجنب هذه المشكلات، نوصي بحد مشاهدة يبلغ 128M
على الأقل وحد المثيلات حوالي 512
.
قد تكون مهتمًا بالمشكلتين رقم 15750 ورقم 15774 لمزيد من التفاصيل.
لتعيين حد جديد للمراقبة والمثيلات لـ inotify، قم بتنفيذ:
sudo sysctl fs.inotify.max_user_watches=131072 sudo sysctl fs.inotify.max_user_instances=512 sudo sysctl -p
إذا كنت ترغب في ذلك، يمكنك جعل الحدود الجديدة دائمة، عن طريق تنفيذ:
echo fs.inotify.max_user_watches=131072 | sudo tee -a /etc/sysctl.conf echo fs.inotify.max_user_instances=512 | sudo tee -a /etc/sysctl.conf sudo sysctl -p
عند إجراء تغييرات على matrix-js-sdk
يجب أن يتم التقاطها تلقائيًا بواسطة webpack وإنشائها.
إذا حدث خطأ في أي من هذه الخطوات مع file table overflow
، فمن المحتمل أنك تستخدم جهاز Mac به حد منخفض جدًا للحد الأقصى للملفات المفتوحة. قم بتشغيل ulimit -Sn 1024
وحاول مرة أخرى. ستحتاج إلى القيام بذلك في كل محطة جديدة تفتحها قبل إنشاء العنصر.
يوجد عدد من الاختبارات على مستوى التطبيق في دليل tests
؛ تم تصميمها لتعمل مع Jest وJSDOM. لتشغيلهم
yarn test
راجع Matrix-react-sdk للتعرف على كيفية تشغيل الاختبارات الشاملة.
لإضافة ترجمة جديدة، توجه إلى مستند الترجمة.
للحصول على دليل المطور، راجع مستند تطوير الترجمة.
يتم فرز المشكلات بواسطة أعضاء المجتمع وفريق تطبيقات الويب، بعد عملية الفرز.
نحن نستخدم تسميات القضايا لفرز جميع القضايا الواردة.