[{"data":1,"prerenderedAt":115},["ShallowReactive",2],{"seo-verification":3,"marketplace-app-ar-centrifugo":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"marketplace-app-ar-centrifugo",{"slug":9,"slugs":10,"categorySlugs":11,"name":16,"description":17,"phase":18,"unavailableReason":19,"docsUrl":20,"logo":21,"github":22,"tagline":23,"longDescription":24,"features":25,"useCases":32,"steps":42,"faq":58,"specs":71,"compatibleOs":82,"relatedApps":83,"relatedPosts":108,"category":112},"centrifugo",{"fr":9,"en":9,"ar":9,"es":9},{"fr":12,"en":13,"ar":14,"es":15},"developpement","development","التطوير","desarrollo","Centrifugo","خادم مراسلة فورية مفتوح المصدر: اتصالات WebSocket وواجهة نشر لتطبيقاتك، على خادمك الافتراضي.",2,"awaiting_qa","https:\u002F\u002Fservorbit.com\u002Fblog\u002F%D8%A7%D8%B3%D8%AA%D8%B6%D8%A7%D9%81%D8%A9-centrifugo-%D8%B9%D9%84%D9%89-vps-%D8%AE%D8%A7%D8%AF%D9%85-%D8%B2%D9%85%D9%86-%D8%AD%D9%82%D9%8A%D9%82%D9%8A","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6236442?v=4","https:\u002F\u002Fgithub.com\u002Fcentrifugal\u002Fcentrifugo","Centrifugo — الزمن الحقيقي على خادمك: WebSocket وواجهة نشر ورموز JWT ولوحة إدارة محمية بكلمة مرور، دون خدمة خارجية.","Centrifugo خادم مراسلة فورية مفتوح المصدر (رخصة Apache-2.0) مكتوب بلغة Go. يتولى أصعب جزء في الزمن الحقيقي: إبقاء آلاف اتصالات WebSocket مفتوحة، وإيصال الرسائل المعنية إلى كل اتصال. يبقى تطبيقك بلغة PHP أو Python أو Node.js أو Go أو Ruby، ولا يحتاج إلا إلى طلب HTTP واحد للنشر.\n\nالمبدأ بسيط. يوقّع الخادم الخلفي لتطبيقك رمز JWT لكل مستخدم، ويستعمله المتصفح أو تطبيق الجوال لفتح اتصال على `wss:\u002F\u002Fyour-domain\u002Fconnection\u002Fwebsocket`. عند وقوع حدث — طلب مدفوع، رسالة دردشة، تنبيه — يستدعي الخادم الخلفي واجهة `\u002Fapi\u002Fpublish` بمفتاحه، فيدفع Centrifugo الرسالة إلى جميع مشتركي القناة. إنه بديل مستضاف ذاتيًا لـ Pusher أو Ably أو PubNub، دون فوترة لكل رسالة.",[26,27,28,29,30,31],"اتصالات فورية — WebSocket، مع حزم رسمية للعملاء بلغات JavaScript وDart\u002FFlutter وSwift وJava\u002FAndroid وGo وPython.","واجهة نشر — يكفي طلب HTTP واحد مع الترويسة `X-API-Key` لإرسال رسالة إلى قناة، من أي لغة.","مصادقة بالرموز — يوقّع خادمك الخلفي رموز JWT ‏(HS256)، ويُرفض كل اتصال بلا رمز صالح.","قنوات واشتراكات من جهة الخادم — يمكن أن يحمل رمز المستخدم قائمة قنواته، دون شيفرة إضافية لدى العميل.","لوحة إدارة — حالة العقدة وعدد العملاء المتصلين وإرسال أوامر الواجهة من المتصفح، محمية بكلمة مرور.","خفيف — ملف Go تنفيذي واحد، وبضع عشرات من الميغابايت من الذاكرة في وضع الخمول.",[33,36,39],{"title":34,"body":35},"إشعارات مباشرة","أخبر العميل فور دفع طلبه أو وصول رد على تذكرته، دون أن يعيد تحميل الصفحة.",{"title":37,"body":38},"دردشة وتعليقات فورية","أضف مراسلة أو تعليقات فورية إلى تطبيقك على الويب أو الجوال، ويحتفظ خادمك الخلفي بالمنطق وقاعدة البيانات.",{"title":40,"body":41},"لوحات متابعة تتحدث تلقائيًا","ادفع العدادات وحالات التوصيل أو الأسعار إلى الشاشات المفتوحة بدل الاستعلام عنها كل ثانية.",[43,46,49,52,55],{"title":44,"body":45},"إنشاء الخادم واختيار العنوان","اطلب خادمًا افتراضيًا بنظام Ubuntu 24.04؛ تكفي ذاكرة 1 غيغابايت للبدء. يتطلب Centrifugo نطاقًا: تتصل به المتصفحات عبر `wss:\u002F\u002F` ويستدعي خادمك الخلفي واجهته عبر HTTPS، على اسم ثابت. يُفتح على نطاق فرعي من أحد نطاقاتك، أو على النطاق الفرعي المجاني للخادم (centrifugo.{dns_slug}‎.servorbit-dns.com) مع HTTPS. لا حاجة لشراء اسم نطاق.",{"title":47,"body":48},"تثبيت Centrifugo من المتجر","من مساحة العميل، اختر Centrifugo وحدد العنوان ثم انقر على «تثبيت». ينشر السكربت الحاوية الرسمية، ويولّد كلمة مرور اللوحة ومفتاح واجهة الخادم ومفتاح توقيع الرموز، ثم يضبط الوكيل العكسي nginx عبر HTTPS مع دعم WebSocket.",{"title":50,"body":51},"تسجيل الدخول لأول مرة","افتح https:\u002F\u002Fyour-domain: تطلب لوحة الإدارة كلمة مرور. أدخل كلمة المرور المعروضة في مساحة العميل. تعرض الصفحة الرئيسية إصدار العقدة وعدد العملاء المتصلين.",{"title":53,"body":54},"استرجاع مفاتيح الخادم الخلفي","اتصل بالخادم عبر SSH واقرأ `\u002Fopt\u002Fcentrifugo\u002F.env`: ‏`ENCRYPTION_KEY` هو مفتاح واجهة الخادم (الترويسة `X-API-Key`) و`ENCRYPTION_KEY_HEX64` هو مفتاح HMAC الذي يوقّع رموز الاتصال. احفظهما في أسرار تطبيقك، ولا تضعهما أبدًا في شيفرة تُرسل إلى المتصفح.",{"title":56,"body":57},"النشر وربط العملاء","يوقّع خادمك الخلفي رمز JWT بخوارزمية HS256 ‏(`sub` = معرّف المستخدم، `channels` = القنوات المتابَعة) ويسلّمه إلى المتصفح، الذي يتصل بحزمة `centrifuge` على `wss:\u002F\u002Fyour-domain\u002Fconnection\u002Fwebsocket`. أضف أصل موقعك إلى `CENTRIFUGO_CLIENT_ALLOWED_ORIGINS` في `\u002Fopt\u002Fcentrifugo\u002Fdocker-compose.yml`، وأعد التشغيل بـ `docker compose up -d`، ثم انشر بطلب POST إلى `https:\u002F\u002Fyour-domain\u002Fapi\u002Fpublish`.",[59,62,65,68],{"q":60,"a":61},"ما الفرق بين Centrifugo وPusher أو Ably؟","الخدمة نفسها: ينشر خادمك الخلفي، وتتلقى المتصفحات المشتركة الرسالة مباشرة. ‏Pusher وAbly خدمتان مستضافتان تُفوتران حسب عدد الاتصالات والرسائل؛ أما Centrifugo فيعمل على خادمك دون فوترة لكل رسالة، ولا تغادر بياناتك خادمك. في المقابل، تقع إدارة الخادم على عاتقك.",{"q":63,"a":64},"هل أحتاج إلى اسم نطاق لـ Centrifugo؟","نعم. تتصل به المتصفحات عبر wss:\u002F\u002F ويستدعي خادمك الخلفي واجهته عبر HTTPS: يجب أن يجيب Centrifugo على اسم ثابت بشهادة. لا حاجة لشراء نطاق: يأتي كل خادم ServOrbit بنطاق فرعي مجاني (centrifugo.{dns_slug}‎.servorbit-dns.com) مع HTTPS. ويمكنك أيضًا استخدام نطاق فرعي من أحد نطاقاتك.",{"q":66,"a":67},"كيف أسجّل الدخول لأول مرة؟","افتح https:\u002F\u002Fyour-domain وأدخل كلمة المرور المعروضة في مساحة العميل: لا تطلب لوحة الإدارة اسم مستخدم. يوجد مفتاح واجهة الخادم ومفتاح توقيع الرموز في \u002Fopt\u002Fcentrifugo\u002F‎.env ‏(ENCRYPTION_KEY وENCRYPTION_KEY_HEX64).",{"q":69,"a":70},"لماذا لا يتمكن موقعي من الاتصال؟","يرفض Centrifugo افتراضيًا كل اتصال من متصفح لا يكون أصله مسموحًا. أضف عنوان موقعك، مثل https:\u002F\u002Fapp.example.ma، إلى CENTRIFUGO_CLIENT_ALLOWED_ORIGINS في \u002Fopt\u002Fcentrifugo\u002Fdocker-compose.yml، ثم أعد التشغيل بـ docker compose up -d. وتحقق أيضًا من أن الرمز موقّع بـ ENCRYPTION_KEY_HEX64 وأنه لم تنتهِ صلاحيته.",{"ram":72,"cpu":73,"disk":74,"stack":75,"port":78,"license":79,"version":80,"os":81},"1 غيغابايت على الأقل","1 vCPU","10 غيغابايت",[76,77,16],"Docker","Go","8113","Apache-2.0","v6.10.2","Ubuntu 24.04",[],[84,92,101],{"name":85,"slug":85,"categorySlug":86,"categoryName":87,"categoryColor":88,"logo":89,"tagline":90,"description":91},"ntfy","المراقبة-وقابلية-الرصد","المراقبة وقابلية الرصد","text-amber-400 bg-amber-500\u002F10",null,"إشعارات push مستضافة ذاتيًا — أرسل تنبيهات من السكريبتات وخطوط CI\u002FCD وأدوات المراقبة بطلب HTTP بسيط. أقل من 30 ميغابايت RAM، بدون قاعدة بيانات.","خادم إشعارات push مستضاف ذاتيًا: أرسل تنبيهًا من أي سكريبت أو خط CI\u002FCD أو أداة مراقبة بطلب HTTP بسيط — بدون API key، بدون اشتراك، بدون حدود للمعدل.",{"name":93,"slug":94,"categorySlug":95,"categoryName":96,"categoryColor":97,"logo":98,"tagline":99,"description":100},"Redis Stack","redis-stack","قواعد-البيانات","قواعد البيانات","text-blue-400 bg-blue-500\u002F10","https:\u002F\u002Fcdn.simpleicons.org\u002Fredis","تخزين في الذاكرة — تخزين مؤقت وجلسات وقوائم انتظار وهياكل بيانات في الوقت الفعلي.","تخزين في الذاكرة للتخزين المؤقت والجلسات وقوائم الانتظار وهياكل البيانات في الوقت الفعلي.",{"name":102,"slug":103,"categorySlug":14,"categoryName":14,"categoryColor":104,"logo":105,"tagline":106,"description":107},"Supabase","supabase","text-warning bg-warning\u002F10","https:\u002F\u002Fcdn.jsdelivr.net\u002Fgh\u002Fselfhst\u002Ficons\u002Fsvg\u002Fsupabase.svg","بديل Firebase مفتوح المصدر — خلفية Postgres كاملة مع واجهات برمجية فورية، ومصادقة، ولوحة تحكم، ذاتية الاستضافة من حزمة Supabase الرسمية الخاصة بها.","بديل Firebase مفتوح المصدر وذاتي الاستضافة — خلفية Postgres كاملة مع واجهات REST فورية، ومصادقة، ولوحة تحكم Studio، منشورة من حزمة Docker الرسمية الخاصة بـ Supabase.",[109,110,111],"self-host-ntfy-vps","heberger-redis-vps","heberger-supabase-vps",{"key":12,"slug":14,"name":14,"objective":113,"icon":114,"color":104},"بدء مشروع برمجي بسرعة.","dev",1794101595422]