[{"data":1,"prerenderedAt":135},["ShallowReactive",2],{"seo-verification":3,"blog-استضافة-jitsi-على-خادم-vps-الخاص-بك-ar":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"id":7,"slug":8,"slugs":9,"title":12,"excerpt":13,"readTime":14,"views":15,"isPinned":16,"publishedAt":17,"category":18,"categories":24,"featuredImage":26,"bgImage":27,"posterImage":28,"relatedSolution":26,"intro":29,"sections":30,"ctaTitle":83,"ctaBody":84,"ctaButton":85,"ctaUrl":86,"relatedPosts":87},78,"استضافة-jitsi-على-خادم-vps-الخاص-بك",{"fr":10,"en":11,"ar":8},"heberger-jitsi","host-jitsi-on-your-own-vps","استضافة Jitsi على خادم VPS الخاص بك","انشُر Jitsi Meet على خادم VPS مع Docker وخادم TURN (coturn) وSSL. دليل كامل: إعداد ‎.env، استكشاف أخطاء ICE failed والصوت الغائب ومشاركة الشاشة.",9,0,false,"2026-04-03T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":23},7,"الاستضافة الذاتية","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[25],{"id":19,"name":20,"slug":21,"color":22,"icon":23},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-jitsi-poster.svg","Jitsi Meet حلّ لمؤتمرات الفيديو مفتوح المصدر يعمل مباشرةً في المتصفح، دون تثبيت من جهة المشارِك. استضافته ذاتيًا على خادم VPS تمنحك غرفًا غير محدودة، دون حدّ زمني ودون جمع للبيانات. النشر نفسه سريع — إعداد خادم TURN (coturn) هو ما يُخفق فيه أغلب المثبِّتين: بدونه يعمل الفيديو على الشبكة المحلية لكنه يتوقف فور أن يكون أحد المشاركين خلف NAT مؤسسي أو مزوّد يستخدم NAT واسع النطاق. يغطّي هذا الدليل التثبيت الكامل وإعداد coturn واستكشاف الأخطاء الأكثر شيوعًا.",[31,35,45,48,70,73,77,80],{"type":32,"title":33,"body":34},"h2","Jitsi ذاتي الاستضافة مقارنةً بـZoom: ما الذي يتغيّر فعلًا","تفرض خدمات مؤتمرات الفيديو الموجَّهة للجمهور العام (Zoom وGoogle Meet وTeams) حدودًا زمنية في الخطط المجانية، وحصصًا للمشاركين، وتحتفظ بتسجيلاتك على خوادمها. يزيل Jitsi Meet، عند استضافته ذاتيًا، هذه القيود: غرف غير محدودة، ومدة غير محدودة، ولا حساب مطلوب للانضمام إلى اجتماع، وتدفّقات الفيديو تبقى على بنيتك التحتية. وهذا وجيه بوجه خاص لمؤسسة تحرص على سرّية اجتماعاتها، أو مكتب يتعامل مع بيانات حساسة، أو لمن يريد دمج الفيديو في تطبيق خارجي (يوفّر Jitsi **واجهة iframe API** مستقرة). تُختصر تكاليف التشغيل في فاتورة خادم VPS — لا اشتراك بالمقعد، ولا رسوم إضافية للبرمجيات.",{"type":36,"title":37,"items":38},"ul","فوائد ملموسة لـJitsi ذاتي الاستضافة",[39,40,41,42,43,44],"اجتماعات دون حدّ زمني ودون سقف لعدد الغرف — لا عدّاد يقطع الاتصال.","لا حساب مطلوب للمشاركين: رابط بسيط يكفي للانضمام.","واجهة iframe API لدمج الفيديو مباشرةً في تطبيقك أو موقعك.","تشفير النقل (DTLS-SRTP) والتحكم الكامل في أي تسجيلات.","تخصيص كامل: الشعار والألوان واسم نطاق الغرف.","لا قياس عن بُعد يُرسَل إلى طرف ثالث — تدفّقات الفيديو لا تغادر خادم VPS الخاص بك.",{"type":32,"title":46,"body":47},"متطلبات مُحدَّدة بالأرقام قبل البدء","Jitsi يُحجَّم بـ**عرض النطاق الترددي**، لا بوحدة المعالجة (CPU). للاجتماعات حتى 10 مشاركين: معالجان افتراضيان (2 vCPU) و**4 غيغابايت RAM كحدٍّ أدنى**، ومرور صادر سخيّ (يُنصح بـ100 Mbps). وما فوق 20 مشاركًا متزامنًا، خصّص 8 غيغابايت RAM وراقِب حِمل شبكة JVB. ثلاثة منافذ يجب أن تكون قابلة للوصول من الإنترنت: **TCP 443** (HTTPS وTURN\u002FTLS)، و**TCP 80** (تجديد Let's Encrypt)، و**UDP 10000** (وسائط JVB). أضِف **TCP 3478** إن كشفتَ coturn على منفذه الأصلي. تحتاج Docker 24+ وCompose V2، واسم نطاق `meet.yourdomain‎.com` مع سجل A يشير إلى IP عام لخادم VPS، وعنوان IP عام **مخصّص وثابت** — عنوان IP مشترك يُعقِّد إعداد coturn تعقيدًا كبيرًا.",{"type":49,"title":50,"steps":51},"steps","النشر خطوة بخطوة: Docker و‎.env وcoturn وأول اختبار",[52,55,58,61,64,67],{"title":53,"body":54},"جلب docker-jitsi-meet","استنسِخ المستودع الرسمي: `git clone https:\u002F\u002Fgithub‎.com\u002Fjitsi\u002Fdocker-jitsi-meet`. انسخ `env.example` إلى `‎.env`، ثم نفّذ `.\u002Fgen-passwords‎.sh` — يولّد هذا السكربت جميع الأسرار الداخلية (Prosody وJicofo وJVB). لا تتجاوز هذه الخطوة: القيم الافتراضية ليست أسرارًا.",{"title":56,"body":57},"ضبط PUBLIC_URL وDOCKER_HOST_ADDRESS","في `‎.env`، متغيّران حاسمان: `PUBLIC_URL=https:\u002F\u002Fmeet.yourdomain‎.com` (يستخدمه العميل الويب لبناء عناوين URL للغرف)، و`DOCKER_HOST_ADDRESS=\u003CIP_عامة_لـVPS>` (العنوان الذي يُعلنه JVB للعملاء لإنشاء اتصال الوسائط المباشر). بدون `DOCKER_HOST_ADDRESS` يُعلن JVB عنوانًا داخليًا في Docker ولا يستطيع أي عميل خارجي الوصول إليه.",{"title":59,"body":60},"تفعيل Let's Encrypt في ‎.env","أضِف إلى `‎.env`: `ENABLE_LETSENCRYPT=1`، و`LETSENCRYPT_DOMAIN=meet.yourdomain‎.com`، و`LETSENCRYPT_EMAIL=admin@yourdomain‎.com`. تحقّق من أن المنفذ 80 مفتوح قبل التشغيل — يستخدم Let's Encrypt تحدي HTTP-01 الذي يستلزم ردًّا على هذا المنفذ.",{"title":62,"body":63},"إعداد coturn (خادم TURN)","هذه الخطوة التي يتجاوزها معظم الأدلة وتتسبّب في فشل التثبيت. في `‎.env`، فعّل: `ENABLE_TURN=1`، و`TURN_HOST=meet.yourdomain‎.com`، و`TURN_PORT=443`، و`TURN_TRANSPORT=tls`. المنفذ 443 عبر TLS يخترق أشد الجدران تقييدًا التي تحجب المنافذ غير المعيارية لكنها تسمح بما يشبه HTTPS. ثم أضِف: `TURN_CREDENTIALS=سرّ_قويّ`، و`TURN_TLS_CERT=\u002Fetc\u002Fletsencrypt\u002Flive\u002Fmeet.yourdomain‎.com\u002Ffullchain‎.pem`، و`TURN_TLS_KEY=\u002Fetc\u002Fletsencrypt\u002Flive\u002Fmeet.yourdomain‎.com\u002Fprivkey‎.pem`. إن كان coturn يعمل في حاوية منفصلة، ارفع هذه الملفات كأحجام volume. تفصيل كثيرًا ما يُنسى: يحجب coturn افتراضيًا نطاقات RFC1918 (192.168.x.x و10.x.x.x و172.16.x.x). إن كان لخادم VPS واجهة شبكة داخلية ضمن هذه النطاقات، أضِف `no-multicast-peers` وتحقّق من أن `denied-peer-ip` لا يشمل عنوان JVB.",{"title":65,"body":66},"تشغيل الحزمة والتحقق من JVB","نفّذ `docker compose up -d`. انتظر 30 ثانية، ثم: `docker compose logs jvb 2>&1 | grep -E 'register|connected|error'`. يجب أن ترى سطرًا يُظهر أن JVB سُجِّل لدى Jicofo. إن ظهر `Failed to register` أو `Connection refused`، فـProsody لم يستعدّ بعد — أعِد المحاولة بعد دقيقة. ثم تحقّق من أن coturn يستجيب: `nc -zv meet.yourdomain‎.com 443` (TCP) و`nc -zvu meet.yourdomain‎.com 10000` (UDP).",{"title":68,"body":69},"أول اختبار فيديو من شبكتين مختلفتين","افتح `https:\u002F\u002Fmeet.yourdomain‎.com` من جهازك المعتاد ومن جهاز ثانٍ على شبكة مختلفة (هاتف بالاتصال عبر شبكة الجوّال مثلًا). إن رأى المشاركان بعضهما وسمعا بعضهما، فـTURN يعمل. الاختبار بين جهازين على الشبكة المحلية ذاتها **لا يُثبت صحة coturn** — ينجح باتصال نظير-لنظير دون أن يستدعي المُرحِّل قطّ.",{"type":32,"title":71,"body":72},"الإعداد المتقدّم: التسجيل والمصادقة والحدود","**تسجيل الاجتماعات.** يتضمّن Jitsi أداة Jibri للتسجيل المحلي أو البثّ عبر RTMP. يستلزم Jibri خادم VPS ثانيًا أو 4 معالجات افتراضية إضافية على الأقل، لأنه يلتقط عرض المتصفح في الوقت الفعلي. فعّل `ENABLE_RECORDING=1` في `‎.env` وانشُر حاوية Jibri منفصلة تشير إلى Jicofo الخاص بك. **مصادقة المنظِّمين.** افتراضيًا يمكن لأي شخص إنشاء غرفة. فعّل `AUTH_TYPE=internal` لاشتراط حساب من جهة المنظِّم مع ترك الضيوف ينضمّون بحرية. أنشئ حسابات المضيفين بـ: `docker exec \u003Cprosody-container> prosodyctl --config \u002Fconfig\u002Fprosody.cfg.lua register admin meet.yourdomain‎.com كلمة_مرور`. **تقييد المشاركين المجهولين.** أضِف `ENABLE_LOBBY=1` ليوافق مشرفٌ على كل دخول قبل الوصول إلى الغرفة. مجتمعًا مع `AUTH_TYPE=internal`، يمنحك ذلك تحكمًا كاملًا فيمن يصل إلى ماذا.",{"type":74,"title":75,"body":76},"tip","التصليب الأمني: fail2ban على خدمة TURN","يكشف coturn خدمةً قابلة للوصول من الإنترنت. ثبّت fail2ban وأنشئ مرشّحًا على محاولات مصادقة TURN الفاشلة: تكتب سجلات coturn `ERROR: 401, realm` عند كل فشل. سجن fail2ban بـ`maxretry=10` و`bantime=600` يكفي لردع المسح الآلي دون التأثير على مستخدميك الشرعيين. تحقّق من أن fail2ban يراقب `\u002Fvar\u002Flog\u002Fcoturn‎.log` (المسار الافتراضي إن كان coturn يعمل بصورة أصلية) أو ارفع هذا الملف من الحاوية.",{"type":32,"title":78,"body":79},"استكشاف الأخطاء: الأخطاء الأربعة الأكثر شيوعًا","**غياب الصوت أو الفيديو العالق على «connecting» — coturn ومنفذ UDP 10000.** هذا العطل الأكثر تكرارًا. افحص بهذا الترتيب: (1) `ufw status` — هل المنفذان TCP 443 وUDP 10000 مفتوحان؟ (2) `docker compose logs coturn | grep -i error` — هل يبدأ coturn بلا أخطاء في الشهادة؟ (3) من جهاز خارجي: `curl -v telnet:\u002F\u002Fmeet.yourdomain‎.com:3478` — هل يستجيب coturn؟ (4) في سجلات المتصفح (F12 ← Console): هل ترى `ICE failed` أو `failed to gather candidates`؟ إن كان كذلك، coturn لا يمكن الوصول إليه من الخارج. قارِن `TURN_HOST` في `‎.env` بعنوان IP الفعلي لـVPS. **رفض الاتصال على TCP 443.** إن لم يتمكّن Let's Encrypt من إصدار شهادة (المنفذ 80 كان مغلقًا عند الإطلاق الأول)، تحاول حاوية web تقديم HTTPS بشهادة موقَّعة ذاتيًا يرفضها المتصفح. الحلّ: افتح المنفذ 80، احذف الـvolume `~\u002F.jitsi-meet-cfg\u002Fweb` وأعِد تشغيل `docker compose up -d`. **رفض مشاركة الشاشة من المتصفح.** تستلزم مشاركة الشاشة سياقًا آمنًا (HTTPS صالح). إن رأيت `getUserMedia is not supported`، الشهادة غير صالحة أو النطاق ليس على HTTPS. راجِع `PUBLIC_URL` — يجب أن تبدأ بـ`https:\u002F\u002F` مع نطاق شهادته صالحة، لا بعنوان IP خام. **خطأ «ICE failed» مستمر رغم عمل coturn.** افحص المتغيّر `DOCKER_HOST_ADDRESS`: يجب أن يحتوي على IP العام لـVPS، لا على IP الداخلي لحاوية Docker (172.17.x.x). إن كان VPS الخاص بك خلف NAT سحابيًا (نادر لكن ممكن)، فأنت بحاجة إلى IP NAT الخارجي، لا IP واجهة الشبكة.",{"type":32,"title":81,"body":82},"خادم Jitsi جاهز — أدِر عرض النطاق الترددي","يعمل Jitsi في وضع SFU: يعيد جسر الفيديو (JVB) ترحيل كل تدفّق إلى كل مشارِك، فيتناسب عرض النطاق الترددي الصادر مع عدد المشاركين مضروبًا في عدد التدفّقات. لـ10 مشاركين بدقة 720p، توقّع 20 إلى 40 Mbps صادرًا باستمرار. فعّل `lastN=5` (آخر N فيديوهات نشطة) للحدّ من التدفّقات من جانب العميل في الاجتماعات الكبيرة، وراقِب `docker stats jvb` لاستباق الإشباع. ما فوق عشرين مشاركًا متزامنًا بصورة منتظمة، انشُر عدة نُسخ من JVB على خوادم VPS منفصلة خلف Jicofo واحد: هذه بنية التوسّع الأفقي الأصيلة في Jitsi.","أطلِق خادم Jitsi الخاص بك على خادم VPS Cloud من ServOrbit","يتيح لك خادم VPS Cloud بعنوان IP عام مخصّص وعرض نطاق ترددي سخيّ ووصول root نشرَ Jitsi Meet وcoturn وJibri دون حدّ للاجتماعات. تبقى مؤتمراتك المرئية على بنيتك التحتية.","أطلِق خادم VPS Cloud الخاص بي","\u002Fvps-cloud",[88,104,119],{"id":89,"slug":90,"slugs":91,"title":94,"excerpt":95,"readTime":96,"views":15,"isPinned":16,"publishedAt":97,"category":98,"categories":99,"featuredImage":26,"bgImage":27,"posterImage":101,"relatedSolution":102},71,"استضافة-nextcloud-على-خادمك-الـvps-الخاص",{"fr":92,"en":93,"ar":90},"heberger-nextcloud","hosting-nextcloud-on-your-own-vps","‎Nextcloud‎ على ‎VPS‎ : الدليل الكامل ‎NC 34‎ والأمان","‏انشر ‎Nextcloud 34.0.2‎ على ‎VPS‎ الخاص بك مع ‎Docker‎ و‎Redis‎. دليل شامل: تطبيقات ‎NC 34.0.0‎ المفقودة وقيد ‎oc_filecache_extended‎ على ‎PostgreSQL‎ وثغرات ‎CVE‎.",12,"2026-04-10T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":23},[100],{"id":19,"name":20,"slug":21,"color":22,"icon":23},"\u002Fblog\u002Fcovers\u002Fheberger-nextcloud-poster.svg",{"categorySlug":21,"appSlug":103},"nextcloud",{"id":105,"slug":106,"slugs":107,"title":110,"excerpt":111,"readTime":14,"views":15,"isPinned":16,"publishedAt":112,"category":113,"categories":114,"featuredImage":26,"bgImage":27,"posterImage":116,"relatedSolution":117},72,"استضافة-ghost-على-خادمك-الـvps-الخاص",{"fr":108,"en":109,"ar":106},"heberger-ghost","hosting-ghost-on-your-own-vps","استضافة Ghost على خادمك الـVPS: دليل شامل 2026","نشر Ghost v6 على خادمك الـVPS مع Caddy وMySQL وGhost CLI وStripe Tax: التثبيت ووكيل TLS العكسي والتحديثات واستكشاف أخطاء البدء الشائعة.","2026-04-09T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":23},[115],{"id":19,"name":20,"slug":21,"color":22,"icon":23},"\u002Fblog\u002Fcovers\u002Fheberger-ghost-poster.svg",{"categorySlug":21,"appSlug":118},"ghost",{"id":120,"slug":121,"slugs":122,"title":125,"excerpt":126,"readTime":127,"views":15,"isPinned":16,"publishedAt":128,"category":129,"categories":130,"featuredImage":26,"bgImage":27,"posterImage":132,"relatedSolution":133},73,"استضافة-wordpress-على-خادم-vps-الخاص-بك",{"fr":123,"en":124,"ar":121},"heberger-wordpress","host-wordpress-on-your-own-vps","استضافة WordPress على خادم VPS الخاص بك","استضِف WordPress على خادم VPS الخاص بك لأقصى أداء وتحكّم: Docker وMariaDB والتخزين المؤقت (cache) وreverse proxy وSSL.",3,"2026-04-08T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":23},[131],{"id":19,"name":20,"slug":21,"color":22,"icon":23},"\u002Fblog\u002Fcovers\u002Fheberger-wordpress-poster.svg",{"categorySlug":21,"appSlug":134},"wordpress",1787580942227]