يحتوي هذا المستودع على homeserver Matrix المنزلي المتوقف والمكتوب بلغة Rust, Ruma.
للحصول على تفاصيل حول وفاة المشروع، راجع منشور المدونة هذا.
أدناه، يمكنك العثور على المحتويات السابقة لهذا الملف التمهيدي. بالنسبة لبقية الملفات، انتقل إلى الفرع الرئيسي.
Ruma هو homeserver Matrix مكتوب بلغة Rust.
إذا كنت مهتمًا بالمشروع، فيرجى إلقاء نظرة على موقع Ruma الإلكتروني، ومتابعة ruma_io على Twitter والدردشة معنا على #ruma:matrix.org على Matrix (يمكن الوصول إليه أيضًا عبر #ruma على شبكة IRC المجانية.)
هدف Ruma كمشروع هو توفير التنفيذ الكامل لخادم Matrix homeserver ، وخادم هوية Matrix، ومكتبة عملاء Matrix، وخدمات تطبيقات Matrix. ويهدف هذا المستودع على وجه الخصوص إلى تنفيذ homeserver من نوع Matrix. سيتم تجميع homeserver كملف تنفيذي واحد لعمليات النشر صغيرة الحجم، وكملفات تنفيذية متعددة لعمليات النشر الكبيرة التي تحتاج إلى توسيع نطاق أجزاء مختلفة من homeserver بشكل مستقل. يمكن العثور على مكتبات Matrix الإضافية التي يستخدمها Ruma في مؤسسة Ruma على GitHub.
للحصول على عرض تفصيلي لواجهات Matrix API التي يدعمها Ruma حتى الآن، راجع مستند الحالة.
يتضمن Ruma إعداد تطوير باستخدام Docker. لتثبيت Docker، راجع تعليمات التثبيت لنظام التشغيل OS X أو Linux أو Windows. (لاحظ أن كلاً من Docker وDocker Compose مطلوبان، لكن طرق التثبيت القياسية تتضمن كليهما.)
ملاحظة : يلزم إصدار docker-compose
1.6 أو أعلى وإصدار docker-engine
1.10.0 أو أعلى.
الشحن هو المدخل الرئيسي للتنمية. استخدم البرنامج script/cargo
كما تستخدم عادةً cargo
العادية. سيؤدي هذا إلى تشغيل أمر Cargo داخل حاوية Docker التي تم تثبيت Rust والتبعيات الأخرى عليها بالفعل. سيبدأ تلقائيًا قاعدة بيانات PostgreSQL داخل الحاوية أيضًا. في المرة الأولى التي تقوم فيها بتشغيل أمر باستخدام script/cargo
، سيستغرق تنزيل صور Docker بعض الوقت.
لبناء Ruma، قم بتشغيل script/cargo build --bin ruma
. ستتم كتابة التطبيق إلى target/debug/ruma
. يمكنك أيضًا إنشاء Ruma وتشغيله في خطوة واحدة باستخدام script/cargo run --bin ruma
. (عند التشغيل عبر Cargo، يجب أن تأتي الوسائط الخاصة بـ ruma
نفسها بعد شرطتين، على سبيل المثال script/cargo run --bin ruma -- run
.)
يتطلب روما Rust 1.34 أو أحدث.
يتم استخدام Docker لتسهيل حياة الجميع، بما في ذلك تعبئة Rust جنبًا إلى جنب مع تبعيات Ruma الأخرى، وإدارة قواعد بيانات PostgreSQL الاختبارية، كل ذلك دون افتراض أي شيء يتعلق بالنظام المضيف. إذا كنت تريد حقًا تجنب Docker، فالأمر متروك لك لتكوين بيئة التطوير الخاصة بك لتتوافق مع الافتراضات التي وضعتها التعليمات البرمجية في Ruma. على وجه الخصوص، هذا يعني على الأقل الحد الأدنى من إصدار Rust، وجميع التبعيات على مستوى النظام مثل libsodium، وتثبيت PostgreSQL مع الأذونات المناسبة المتاحة على العنوان والمنفذ المستخدم في src/test.rs
.
لإنشاء وثائق API لـ Ruma، قم بتشغيل script/cargo doc
. ثم افتح target/doc/ruma/index.html
في متصفحك. لاحظ أن هذه الوثائق مخصصة لكود Rust الداخلي لـ Ruma، وليس لـ Matrix API العامة. ستظل الوثائق التي تواجه المستخدم موجودة على موقع Ruma الإلكتروني.
يتضمن Ruma مجموعة اختبار التكامل. بمجرد تثبيت Docker، قم بتشغيل script/cargo test
لتشغيل مجموعة الاختبار.
يتطلب Ruma ملف تكوين باسم ruma.json
أو ruma.toml
أو ruma.yaml
/ ruma.yml
مكتوبًا بلغة JSON أو TOML أو YAML على التوالي. يجب أن يكون هذا الملف موجودًا في دليل العمل الذي يتم تنفيذ ruma
منه. سيحاول Ruma تحميل ملف التكوين بنفس الترتيب، ويتوقف عند أول ملف يجده. سيبدو ملف التكوين على هذا النحو، بتنسيق JSON:
{
"version" : " 1 " ,
"domain" : " example.com " ,
"macaroon_secret_key" : " qbnabRiFu5fWzoijGmc6Kk2tRox3qJSWvL3VRl4Vhl8= " ,
"postgres_url" : " postgres://username:[email protected]:5432/ruma "
}
القائمة الكاملة للسمات في التكوين هي كما يلي:
ruma 0.1.0
A Matrix homeserver .
USAGE:
ruma [FLAGS] [SUBCOMMAND]
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
SUBCOMMANDS:
help Prints this message or the help message of the given subcommand(s)
run Runs the Ruma server
secret Generates a random value to be used as a macaroon secret key
قبل تشغيل ruma run
، تأكد من أن لديك ملف تكوين في دليل العمل باسم ruma.json
وأن خادم PostgreSQL قيد التشغيل ومتوفر في الموقع المحدد في ملف التكوين. سيقوم Ruma تلقائيًا بإنشاء قاعدة البيانات (إذا لم تكن موجودة بالفعل) وإدارة مخطط قاعدة البيانات. أنت مسؤول عن تزويد Ruma بعنوان URL صالح لخادم PostgreSQL والدور الذي يمكنه تنفيذ هذه العمليات.
يتضمن Ruma نقطة نهاية HTTP لخدمة بيانات Swagger على http://example.com/ruma/swagger.json (استبدال المضيف ومنفذ خادم Ruma الخاص بك بـ example.com بالطبع.) قم بتوجيه نسخة من Swagger UI إلى هذا عنوان URL للاطلاع على الوثائق الكاملة لواجهة برمجة تطبيقات عميل Matrix. لاحظ أن Ruma لم ينفذ فعليًا جميع نقاط نهاية واجهة برمجة التطبيقات هذه حتى الآن.
راجع وثيقة المساهمة.
إهداء روما لصديقتي المفضلة، تمارا بوينز، التي توفيت في يناير 2017. تحدثت أنا وهي عبر الإنترنت لساعات كل يوم. لقد كانت جزءًا كبيرًا من حافزي لبدء مشروع روما، لأن تواصلنا عبر الإنترنت كان المكان الذي نقضي فيه معظم الوقت معًا بعد أن ابتعدنا عن المدينة التي التقينا فيها، وكنا نبحث دائمًا عن نظام من شأنه أن يصلح تظلماتنا مع جميع الخيارات الرديئة التي كانت لدينا للدردشة.
- جيمي كوادرا
معهد ماساتشوستس للتكنولوجيا