[{"data":1,"prerenderedAt":251},["ShallowReactive",2],{"seo-verification":3,"blog-استضافة-nextcloud-على-خادمك-الـvps-الخاص-ma-ar":6,"promo-bar-likely":250},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-استضافة-nextcloud-على-خادمك-الـvps-الخاص-ma-ar",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":35,"sections":36,"ctaTitle":183,"ctaBody":184,"ctaButton":185,"ctaUrl":186,"relatedPosts":187},71,"استضافة-nextcloud-على-خادمك-الـvps-الخاص",{"fr":12,"en":13,"ar":10,"es":14},"heberger-nextcloud","hosting-nextcloud-on-your-own-vps","alojar-nextcloud-en-su-propio-vps","استضافة Nextcloud على VPS: دليل NC 35 وPHP 8.3 وMariaDB 11","استضافة Nextcloud على VPS: ‏Docker Compose وRedis ونسخ MariaDB، ورفع ملفات تتجاوز 40 جيجابايت خلف Cloudflare، وبديل لـ ‎Office 2021.",20,1,false,"2026-04-10T00:00:00+00:00","2026-11-08T16:32:50+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},7,"الاستضافة الذاتية","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-nextcloud-poster.svg",{"categorySlug":25,"appSlug":34},"nextcloud","Nextcloud من أكثر التطبيقات نشراً ذاتياً وأكثرها سوءاً في الإعداد. بين المثيلات التي تعمل دون Redis وبطء مؤلم، ودون TLS مُجبَر وبيانات مكشوفة، وتحديث مايو 2026 الذي يصلح ثغرتَي تجاوز المصادقة الثنائية الحرجتَين، ثم انحدارات NC 34.0.0 الجديدة، كل إصدار يجلب مخاطره الخاصة. يضيف Nextcloud 35 (Hub 26 Summer، صدر في 15 سبتمبر 2026) قيدَين رئيسيَّين: PHP 8.3 حد أدنى إلزامي (PHP 8.2 مهجور)، وإزالة mysqldump من MariaDB 11. يأخذك هذا الدليل من التثبيت الكامل إلى التحقق الأمني، ويغطي تصحيحات NC 34.0.2 ومسار NC 35 والأخطاء الخمسة الأكثر شيوعاً.",[37,41,44,47,50,69,72,75,78,82,85,94,115,118,121,124,127,130,162,165,168,171,174,177,180],{"type":38,"title":39,"body":40},"h2","تنبيه أمني — ثغرتا CVE لتجاوز المصادقة الثنائية (مايو 2026)","في مايو 2026، كُشف عن ثغرتَين حرجتَين في Nextcloud:\n\n**CVE-2026-45690** (درجة CVSS 5.9، مكشوفة في 15 مايو 2026): يمكن لمهاجم يملك اسم مستخدم وكلمة مرور تجاوز التحقق من المصادقة الثنائية عبر **HTTP Basic Auth**.\n\n**CVE-2026-45691** (درجة CVSS 5.9، مكشوفة في 13 مايو 2026): نفس الفئة، يُستغَل عبر **رمز DAV Bearer** — بروتوكول WebDAV المستخدم من عملاء المزامنة.\n\nكلتا الثغرتين مُصلَّحتان في **Nextcloud 32.0.9** و**33.0.3**. الفروع 34‎.x وما فوق غير متأثرة بهاتين الثغرتَين.",{"type":38,"title":42,"body":43},"NC 34.0.0 — تطبيقات موصى بها غائبة عند أول تشغيل","يُدخل Nextcloud 34.0.0 انحداراً في معالج التثبيت: التطبيقات الموصى بها (Notes وCalendar وContacts) **غير معروضة** أثناء الإعداد الأولي.\n\n**التحقق من وجود التطبيقات:**\n\n```bash\ndocker compose exec -u www-data app php occ app:list | grep -E 'calendar|contacts|notes'\n```\n\n**التثبيت اليدوي:**\n\n```bash\ndocker compose exec -u www-data app php occ app:install calendar\ndocker compose exec -u www-data app php occ app:install contacts\ndocker compose exec -u www-data app php occ app:install notes\n```\n\n**التوصية:** ابدأ مباشرةً بـ **34.0.2** أو أعلى بدلاً من 34.0.0. المصادر: issues GitHub \u003Ca href=\"https:\u002F\u002Fgithub‎.com\u002Fnextcloud\u002Fserver\u002Fissues\u002F61313\">#61313\u003C\u002Fa> و\u003Ca href=\"https:\u002F\u002Fgithub‎.com\u002Fnextcloud\u002Fserver\u002Fissues\u002F61611\">#61611\u003C\u002Fa>.",{"type":38,"title":45,"body":46},"NC 34.0.0 — قيد مُضاعَف على PostgreSQL وانفجار CPU","على المثيلات التي تستخدم **PostgreSQL**، يمكن أن تُخلّف هجرة Nextcloud 34.0.0 المنقطعة قيداً مُضاعَفاً على جدول `oc_filecache_extended` يُفجّر CPU وRAM.\n\n**الإصلاح:**\n\n```bash\ndocker compose exec -u www-data app php occ files:cleanup\ndocker compose exec -u www-data app php occ db:add-missing-indices\ndocker compose exec -u www-data app php occ db:add-missing-columns\n```\n\nالمصدر: issue GitHub \u003Ca href=\"https:\u002F\u002Fgithub‎.com\u002Fnextcloud\u002Fserver\u002Fissues\u002F61597\">#61597\u003C\u002Fa>. إذا استمرت الأخطاء، انتقل مباشرةً إلى **34.0.2**.",{"type":38,"title":48,"body":49},"المتطلبات والأبعاد","التهيئة الموصى بها: VPS بـ **2 غيغابايت RAM** (4 غيغابايت لأكثر من 5 مستخدمين)، **SSD إلزامي**، **20 غيغابايت كحد أدنى** للتثبيت، Ubuntu 22.04 أو Debian 12، Docker Engine ≥ 24، اسم نطاق وشهادة TLS، المنفذان 80 و443 مفتوحان.",{"type":51,"title":52,"steps":53},"steps","تثبيت Nextcloud باستخدام Docker Compose",[54,57,60,63,66],{"title":55,"body":56},"الخطوة 1 — إنشاء هيكل المشروع","أنشئ `\u002Fopt\u002Fnextcloud\u002Fdocker-compose.yml` بـ MariaDB 10.11 وRedis 7-alpine وNextcloud `nextcloud:34.0.4-apache`.",{"title":58,"body":59},"الخطوة 2 — إنشاء ملف البيئة","```bash\ncat > \u002Fopt\u002Fnextcloud\u002F.env \u003C\u003C 'EOF'\nMYSQL_ROOT_PASSWORD=كلمة_مرور_قوية_للجذر\nMYSQL_PASSWORD=كلمة_مرور_قوية_لـnextcloud\nREDIS_PASSWORD=كلمة_مرور_قوية_لـredis\nNEXTCLOUD_ADMIN_USER=admin\nNEXTCLOUD_ADMIN_PASSWORD=كلمة_مرور_قوية_للمشرف\nNEXTCLOUD_DOMAIN=cloud.نطاقك.com\nEOF\n```",{"title":61,"body":62},"الخطوة 3 — تشغيل الحاويات","```bash\ndocker compose up -d\ndocker compose logs -f app\n```\n\nيستغرق الإقلاع الأول من دقيقتَين إلى 4 دقائق. انتظر رسالة `Nextcloud was successfully installed`.",{"title":64,"body":65},"الخطوة 4 — إعداد Nginx مع TLS","ثبّت Nginx وCertbot، أنشئ موقع Nextcloud بـ `client_max_body_size 10G;` ورؤوس الوكيل، ثم شغّل `certbot --nginx -d cloud.نطاقك.com`.",{"title":67,"body":68},"الخطوة 5 — ضبط النطاق الموثوق في Nextcloud","```bash\ndocker compose exec -u www-data app php occ config:system:set trusted_domains 0 \\\n  --value=cloud.نطاقك.com\ndocker compose exec -u www-data app php occ config:system:set overwrite.cli.url \\\n  --value=https:\u002F\u002Fcloud.نطاقك.com\n```",{"type":38,"title":70,"body":71},"التحقق من تأثر مثيلك بثغرات CVE للمصادقة الثنائية","**التحقق من الإصدار الحالي:**\n```bash\ndocker compose exec -u www-data app php occ status\n```\n\n**الإصدارات المتأثرة:** كل 32.x \u003C 32.0.9 و33.x \u003C 33.0.3. الفروع 34.x وما فوق غير متأثرة بهاتين الثغرتَين.\n\n**التحديث إلى الإصدار المُصلَّح (الفرع 32 → 32.0.9، الفرع 33 → 33.0.3):**\n```bash\n# الفرع 32:\nsed -i 's|nextcloud:[0-9.]*-apache|nextcloud:32.0.9-apache|g' docker-compose.yml\n# الفرع 33:\n# sed -i 's|nextcloud:[0-9.]*-apache|nextcloud:33.0.3-apache|g' docker-compose.yml\ndocker compose pull app && docker compose up -d app\ndocker compose exec -u www-data app php occ upgrade\n```",{"type":38,"title":73,"body":74},"تحسين الأداء مع Redis وOPcache","Nextcloud بدون Redis بطيء. يضطلع Redis بدورَين حاسمَّين: **تخزين الجلسات** مؤقتاً و**القفل الموزَّع** الذي يمنع التعارضات.\n\nتحقق من اتصال Redis:\n```bash\ndocker compose exec -u www-data app php occ config:system:get redis\n```",{"type":38,"title":76,"body":77},"الأخطاء الخمسة الأكثر شيوعاً في Nextcloud","1. **Redis غير مهيَّأ** — بطء وتعارضات مزامنة.\n2. **`overwrite.cli.url` يشير إلى `http:\u002F\u002F`** — روابط مشاركة غير آمنة.\n3. **`trusted_domains` مهيَّأ بشكل خاطئ** — رسالة 'untrusted domain'.\n4. **حجم الرفع محدود بـ 2 ميغابايت** — أضف `client_max_body_size 10G` في Nginx.\n5. **تحديثات أمان مهملة** — هيّئ إشعارات التحديث.",{"type":79,"title":80,"body":81},"tip","التحقق من فاعلية Redis مع occ","```bash\ndocker compose exec -u www-data app php occ status\ndocker compose exec -u www-data app php occ check\ndocker compose exec -u www-data app php occ config:system:get redis\n```\n\nأمر `occ check` يُدرج جميع مشاكل التهيئة المكتشفة. إنه **أول تشخيص** يجب تشغيله على أي مثيل Nextcloud قائم.",{"type":38,"title":83,"body":84},"رفع ملفات تتجاوز 40 جيجابايت خلف Cloudflare: التجميع الضائع","لا يرسل Nextcloud الملف الكبير دفعة واحدة: يقسّمه العميل إلى أجزاء (chunks) تُودَع في مجلد مؤقت، ثم يطلب من الخادم **تجميعها** عبر طلب أخير `MOVE …\u002F‎.file`.\n\nتُظهر المشكلة \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fserver\u002Fissues\u002F65408\">nextcloud\u002Fserver #65408\u003C\u002Fa>، المفتوحة في 12 أكتوبر 2026 على Nextcloud 35، ما الذي ينكسر: ملف بحجم 43 جيجابايت تقريباً رُفع عبر رابط مشاركة عام، وقُبلت كل الأجزاء (`201`)، ثم استغرق التجميع قرابة 17 دقيقة. يقطع Cloudflare الاستجابة التي تتجاوز مهلة القراءة لديه (125 ثانية افتراضياً وفق توثيقه، ونحو 100 ثانية قاسها صاحب البلاغ عبر Cloudflare Tunnel) ويعيد الرمز `524`.\n\nنقطة الدخول الخاصة بالمشاركات العامة، `publicremote‎.php`، لا تستدعي `ignore_user_abort(true)` بخلاف `remote‎.php`: فيوقف PHP التجميع عند إغلاق الاتصال، ثم يحذف المتصفح الأجزاء بطلب `DELETE`. وما تزال الملفات بين 4 و5 جيجابايت تمرّ. حتى 22 أكتوبر 2026، المشكلة مفتوحة ولا يوجد إصلاح منشور.",{"type":86,"title":87,"items":88},"ul","الحدود الواجب مواءمتها، من شبكة CDN حتى PHP",[89,90,91,92,93],"**جسم الطلب في Cloudflare** — 100 ميجابايت لكل طلب في Free وPro، و200 ميجابايت في Business، وحتى 5 جيجابايت في Enterprise؛ وما زاد على ذلك يُقابَل بالرمز `413`. يجب أن يبقى كل جزء دون هذا الحد.","**حجم الأجزاء** — القيمة الافتراضية لـ `files‎.chunked_upload‎.max_size` هي 104857600 بايت (100 ميبيبايت)، أي أكثر قليلاً من 100 ميجابايت: اخفضها إلى 50 ميبيبايت في Free أو Pro.","**مهلة CDN** — 125 ثانية، ويمكن رفعها حتى 6000 ثانية في Enterprise فقط: وهذا هو الحد الذي يتجاوزه التجميع.","**nginx** — يمرّر `proxy_request_buffering off` الجسم أثناء وصوله بدلاً من قراءته كاملاً؛ والقيمة الافتراضية لـ `proxy_read_timeout` هي 60 ثانية.","**PHP** — يقترح توثيق Nextcloud ضبط `max_execution_time` و`max_input_time` على 3600؛ ويتيح `ignore_user_abort = On` إكمال التجميع بعد أن يقطع الوكيل الاتصال.",{"type":51,"title":95,"steps":96},"إعداد Nextcloud لعمليات الرفع الكبيرة جداً",[97,100,103,106,109,112],{"title":98,"body":99},"إخراج عمليات الرفع الثقيلة من الوكيل","يوصي Cloudflare بنطاق فرعي غير مُمرَّر عبر الوكيل (DNS فقط) للطلبات التي تتجاوز 125 ثانية. أنشئ `upload‎.your-domain‎.com` بوضع DNS فقط، وأضفه عبر `docker compose exec -u www-data app php occ config:system:set trusted_domains 1 --value=upload.your-domain.com`، ثم `certbot --nginx -d upload.your-domain.com`. هذا الاسم يكشف عنوان IP الخادم: خصّصه للنقل الثقيل.",{"title":101,"body":102},"تقليل الأجزاء","الأمر `docker compose exec -u www-data app php occ config:system:set files.chunked_upload.max_size --type int --value 52428800` يضبط الحجم على 50 ميبيبايت (القيمة بالبايت).",{"title":104,"body":105},"ضبط nginx","في `location \u002F`، أضف `proxy_request_buffering off;` و`proxy_send_timeout 3600s;`، واحتفظ بـ `proxy_read_timeout 3600s;`، ثم `nginx -t && systemctl reload nginx`.",{"title":107,"body":108},"ضبط PHP","أنشئ `\u002Fopt\u002Fnextcloud\u002Fphp-uploads‎.ini` يتضمن `ignore_user_abort = On` و`max_execution_time = 3600` و`max_input_time = 3600`، واربطه بخدمة `app`: `- .\u002Fphp-uploads.ini:\u002Fusr\u002Flocal\u002Fetc\u002Fphp\u002Fconf.d\u002Fzz-uploads.ini:ro`، ثم `docker compose up -d app`.",{"title":110,"body":111},"التحقق والاختبار","يجب أن يُظهر الأمر `docker compose exec app php -i | grep ignore_user_abort` السطر `ignore_user_abort => On => On`. ثم ارفع ملفاً بحجم عدة جيجابايت عبر النطاق الفرعي وتابع `docker compose logs -f app`.",{"title":113,"body":114},"اختيار ما يمر عبر Cloudflare","يمكن أن يبقى النطاق الرئيسي مُمرَّراً عبر الوكيل، ولا ينتقل إلى DNS فقط سوى النطاق الفرعي الخاص بالنقل الثقيل: راجع \u003Ca href=\"\u002Fblog\u002Factiver-desactiver-proxy-cloudflare-enregistrement\">دليلنا حول وكيل Cloudflare\u003C\u002Fa>.",{"type":38,"title":116,"body":117},"استكشاف أخطاء الرفع الكبير: الرسائل الفعلية","**`Error 524: a timeout occurred`** — لم تصل الاستجابة على طلب `MOVE …\u002F‎.file` الأخير ضمن مهلة Cloudflare. الحل: النطاق الفرعي غير المُمرَّر عبر الوكيل.\n\n**`413 Request entity too large`** — جزءٌ يتجاوز سقف خطة Cloudflare أو `client_max_body_size`. الحل: تقليل `files‎.chunked_upload‎.max_size`.\n\n**`Could not open file: web-file-upload-\u003Cid>\u002F75 … file doesn't seem to exist`** — ورد في المشكلة #65408: كان التجميع ما يزال جارياً بينما حذف المتصفح الأجزاء. يمنع صاحب البلاغ طلب `DELETE` على `\u002Fpublic‎.php\u002Fdav\u002Fuploads\u002F`؛ ثم تحذف المهمة `UploadCleanup` الأجزاء المهجورة بعد 24 ساعة. ومع nginx، المكافئ هو كتلة `location ^~ \u002Fpublic.php\u002Fdav\u002Fuploads\u002F` تحتوي على `if ($request_method = DELETE) { return 403; }` ونفس `proxy_pass`. حل مؤقت غير رسمي، يُزال فور صدور إصلاح.\n\n**`504 Gateway Time-out` أثناء `MOVE`** — هنا nginx هو الذي يتخلى: يذكر توثيق Nextcloud التوجيه `fastcgi_read_timeout` مع PHP-FPM، وهنا `proxy_read_timeout`.",{"type":38,"title":119,"body":120},"نسخ Nextcloud احتياطياً — البيانات وقاعدة البيانات والإعداد","تخزّن Nextcloud بياناتها في ثلاثة أماكن — يجب نسخ الثلاثة احتياطياً:\n\n1. **قاعدة بيانات MariaDB**: البيانات الوصفية للملفات والمستخدمون والمشاركات.\n2. **حجم `nextcloud`**: كود PHP والتطبيقات المثبَّتة و`config\u002Fconfig.php`.\n3. **ملفات المستخدمين**.\n\n```bash\ndocker compose exec -u www-data app php occ maintenance:mode --on\n# MariaDB 10.x:\ndocker compose exec -T db mysqldump -u nextcloud -p${MYSQL_PASSWORD} nextcloud | gzip > \u002Fopt\u002Fnextcloud\u002Fbackups\u002Fdb-$(date +%Y%m%d).sql.gz\n# MariaDB 11+: استخدم mariadb-dump بدلاً من ذلك\ndocker compose exec -u www-data app php occ maintenance:mode --off\n```",{"type":38,"title":122,"body":123},"النسخ الاحتياطي مع MariaDB 11 — mariadb-dump يحلّ محل mysqldump","منذ **MariaDB 11.0**، أُزيلت ثنائيات `mysqldump` و`mysql` من صورة Docker الرسمية. تتوفر الآن فقط `mariadb-dump` و`mariadb`. السكريبتات التي لا تزال تستخدم `mysqldump` مع `mariadb:11.x` ستفشل بصمت.\n\n**التحقق من إصدار MariaDB:**\n\n```bash\ndocker compose exec db mariadb --version\n```\n\n**سكريبت نسخ احتياطي متوافق مع MariaDB 11+:**\n\n```bash\n#!\u002Fbin\u002Fbash\nDATE=$(date +%Y%m%d)\nBACKUP_DIR=\u002Fopt\u002Fnextcloud\u002Fbackups\nmkdir -p $BACKUP_DIR\n\ndocker compose exec -u www-data app php occ maintenance:mode --on\n\n# mariadb-dump يحلّ محل mysqldump على MariaDB 11+\ndocker compose exec -T db \\\n  mariadb-dump -u nextcloud -p${MYSQL_PASSWORD} nextcloud \\\n  | gzip > $BACKUP_DIR\u002Fdb-$DATE.sql.gz\n\nif gzip -t $BACKUP_DIR\u002Fdb-$DATE.sql.gz 2>\u002Fdev\u002Fnull; then\n  echo \"النسخ الاحتياطي سليم: $BACKUP_DIR\u002Fdb-$DATE.sql.gz\"\nelse\n  echo \"خطأ: الأرشيف تالف أو فارغ\"\n  docker compose exec -u www-data app php occ maintenance:mode --off\n  exit 1\nfi\n\ndocker compose cp app:\u002Fvar\u002Fwww\u002Fhtml\u002Fconfig\u002Fconfig.php $BACKUP_DIR\u002Fconfig-$DATE.php\ndocker compose exec -u www-data app php occ maintenance:mode --off\n```\n\n**الاستعادة:**\n\n```bash\ngunzip -c $BACKUP_DIR\u002Fdb-$DATE.sql.gz | \\\n  docker compose exec -T db mariadb -u nextcloud -p${MYSQL_PASSWORD} nextcloud\n```\n\n**ملاحظة:** إذا بقيت على `mariadb:10.11` (لا تزال مدعومة، نهاية الدعم في فبراير 2028 \u002F EOL)، فإن كلاً من `mysqldump` و`mariadb-dump` يعملان بشكل طبيعي. لا تؤثر إزالة `mysqldump` إلا على MariaDB 11.0 وما فوق. بيد أن اعتماد `mariadb-dump` الآن يجعل سكريبتاتك جاهزة للهجرة المستقبلية.",{"type":38,"title":125,"body":126},"الخطوات التالية — المضي أبعد مع مثيلك","بعد تثبيت Nextcloud وتأمينها:\n\n**تفعيل Talk (مؤتمرات الفيديو):** ثبّت تطبيق Nextcloud Talk من واجهة الإدارة.\n\n**تفعيل OnlyOffice أو Collabora Online:** هذه التطبيقات تحتاج حاوية Docker مستقلة.\n\n**مراقبة مثيلك:** ضبط التنبيهات في **الإدارة → المراقبة**.",{"type":38,"title":128,"body":129},"‏Office 2021 في نهاية دورة الحياة: تفعيل التحرير التعاوني مع ‏Collabora Online أو ‏OnlyOffice","وصل ‏Microsoft Office 2021 إلى **نهاية دورة حياته في 13 أكتوبر 2026**: لن تصدر أي تحديثات أمنية بعد الآن. للفرق التي تُحرّر ملفات ‏`.docx`‏ و‏`.xlsx`‏ و‏`.pptx`‏ بشكل تعاوني داخل ‏Nextcloud‏، تغطي مجموعتا مكتب مفتوحتا المصدر هذه الحاجة مباشرةً من واجهة الويب.\n\n**‏Collabora Online** هو إصدار ‏LibreOffice‏ على الإنترنت، موزَّع بموجب ترخيص ‏AGPL‏. يتكامل مع ‏Nextcloud‏ عبر تطبيق *Nextcloud Office*‏ ويعمل في حاوية منفصلة مبنية على `collabora\u002Fcode:latest`‏، يتواصل مع ‏Nextcloud‏ عبر ‏WebSocket‏.\n\n**‏OnlyOffice Document Server** يُقدّم واجهة أقرب إلى ‏Microsoft Office‏ — قوائم شريطية مألوفة لمستخدمي ‏Windows‏. موزَّع بترخيص ‏AGPL‏ أيضاً، يتكامل عبر تطبيق *ONLYOFFICE*‏ من متجر تطبيقات ‏Nextcloud‏.\n\n**التثبيت عبر متجر تطبيقات ‏Nextcloud:**\n\n```bash\n# Collabora Online\ndocker compose exec -u www-data app php occ app:install richdocuments\n\n# OnlyOffice\ndocker compose exec -u www-data app php occ app:install onlyoffice\n```\n\n**نشر ‏Docker‏ منفصل — مثال لـ ‏Collabora Online:**\n\nأضف هذه الخدمة إلى `docker-compose‎.yml`‏:\n\n```yaml\n  collabora:\n    image: collabora\u002Fcode:latest\n    restart: unless-stopped\n    environment:\n      domain: cloud\\.\\u0646\\u0637\\u0627\\u0642\\u0643\\.com\n      username: admin\n      password: ${COLLABORA_PASSWORD}\n      extra_params: --o:ssl.enable=false --o:ssl.termination=true\n    ports:\n      - '127.0.0.1:9980:9980'\n    cap_add:\n      - MKNOD\n```\n\nثم اضبط رابط خادم ‏Collabora‏ في ‏Nextcloud‏ (**الإدارة ← المكتب ← رابط خادم ‏Collabora Online**: `https:\u002F\u002Foffice.نطاقك‎.com`‏).\n\n**البصمة في الذاكرة:** تضيف ‏Collabora Online‏ حوالي **+300 ميغابايت من ‏RAM‏ لكل عملية نشطة** (عملية واحدة لكل مستند مفتوح في الوقت ذاته). ‏OnlyOffice‏ أكثر استهلاكاً بقليل: **+400 ميغابايت لكل مثيل نشط**. على ‏VPS‏ بذاكرة 2 غيغابايت، قيّد الاستخدام المتزامن بـ 2–3 مستندات أو انتقل إلى 4 غيغابايت.\n\n**الصيغ المدعومة:** يقرأ كلا التطبيقَين ويكتبان صيغ ‏Microsoft Office‏ (‏`‎.docx`‏ و‏`‎.xlsx`‏ و‏`‎.pptx`‏) وصيغ ‏OpenDocument‏ (‏`‎.odt`‏ و‏`‎.ods`‏ و‏`‎.odp`‏).",{"type":131,"title":132,"headers":133,"rows":137},"comparison","‎Collabora Online أم ‎OnlyOffice: أيهما تختار؟",[134,135,136],"المعيار","‎Collabora Online","‎OnlyOffice Docs",[138,142,146,150,154,158],[139,140,141],"واجهة المستخدم","واجهة ‎LibreOffice‎ المألوفة — منحنى تكيّف لمستخدمي ‎Windows","شريط طريقة عرض مطابق لـ ‎Microsoft Office‎ — تبنٍّ فوري",[143,144,145],"توافق ‎.docx\u002F‎.xlsx\u002F‎.pptx‎","جيد؛ ‎.odt\u002F‎.ods‎ ممتاز","وفيّ جداً للملفات الأصلية من ‎Microsoft",[147,148,149],"ذاكرة الوصول العشوائي المُقدَّرة","~300 ميغابايت\u002Fعملية نشطة","~400 ميغابايت\u002Fمثيل نشط",[151,152,153],"‎SSO\u002FSAML‎ مع ‎Nextcloud","تكامل أصلي","يتطلب إعداداً إضافياً",[155,156,157],"الاتصالات المتزامنة","حسب الإصدار (CODE أو المؤسسي)","محدودة (النسخة المجتمعية)",[159,160,161],"المجتمع","مجتمع ‎LibreOffice‎ نشط، تحديثات متكررة","صلب، مُوجَّه نحو توافق ‎Microsoft",{"type":79,"title":163,"body":164},"أي محرر تختار؟","للفريق المختلط ‎Linux\u002FWindows‎ العامل أساساً على ملفات ‎Microsoft Office‎، يُقلل ‎OnlyOffice‎ من احتكاك التبني. للفريق العامل بالفعل على ‎LibreOffice‎ أو ذي قيود ذاكرة صارمة، ‎Collabora Online‎ هو الاختيار الطبيعي. كلا التطبيقَين متوافقان مع ‎Nextcloud 35‎.",{"type":38,"title":166,"body":167},"‎Office 2021: ما الذي ينتهي، واستكشاف أخطاء Collabora","وفق صفحة دورة الحياة لدى Microsoft، لم يعد Office 2021 (إصدارات Home and Business وHome and Student وProfessional، بما فيها نسخ Mac) ولا Office LTSC 2021 على Windows يتلقيان تصحيحات منذ 13 أكتوبر 2026؛ ولا ينتقل إلى الدعم الممتد سوى Office LTSC 2021 لأجهزة Mac.\n\nعند تفعيل Collabora، تعني الرسالة **«Could not establish connection to the Collabora Online server.»** (**الإدارة ← Office**) أن Nextcloud لا يصل إلى العنوان المصرَّح به. اختبره من داخل الحاوية: `docker compose exec app curl -sI https:\u002F\u002Foffice.your-domain.com\u002Fhosting\u002Fdiscovery`. ولإعادة الضبط والتشخيص: `docker compose exec -u www-data app php occ richdocuments:activate-config --wopi-url=https:\u002F\u002Foffice.your-domain.com`؛ وإذا جاء الرد **`Failed to fetch discovery endpoint from …`** فالمشكلة في الشبكة أو TLS. ويزول التحذير **«You have not configured the allow-list for WOPI requests»** بإدخال عنوان IP خادم Collabora في قائمة السماح الخاصة بـ WOPI. مقارنة مفصلة: \u003Ca href=\"\u002Fblog\u002Fnextcloud-collabora-onlyoffice-office-2021-eol\">Collabora Online أم OnlyOffice\u003C\u002Fa>.",{"type":38,"title":169,"body":170},"تحديث Nextcloud في بيئة الإنتاج","يجب دائماً تشغيل التحديثات في وضع الصيانة:\n\n```bash\ndocker compose exec -u www-data app php occ maintenance:mode --on\n# MariaDB 10.x:\ndocker compose exec -T db mysqldump -u nextcloud -p${MYSQL_PASSWORD} nextcloud \\\n  | gzip > \u002Fopt\u002Fnextcloud\u002Fbackups\u002Fpre-update-db.sql.gz\n# MariaDB 11+: استبدل mysqldump بـ mariadb-dump\nsed -i 's|nextcloud:[0-9.]*-apache|nextcloud:34.0.4-apache|g' docker-compose.yml\ndocker compose pull app && docker compose up -d app\ndocker compose exec -u www-data app php occ upgrade\ndocker compose exec -u www-data app php occ maintenance:mode --off\n```",{"type":38,"title":172,"body":173},"PHP 8.3: الترحيل ومتطلبات Nextcloud 35","يجعل Nextcloud 35 **PHP 8.3 إلزامياً** — PHP 8.2 لم يعد مدعوماً. إذا كنت تستخدم تثبيتاً محلياً أو صورة Docker مقيَّدة بـ PHP 8.2، يجب ترحيل PHP قبل الترقية إلى NC 35.\n\n**التحقق من إصدار PHP:**\n\n```bash\n# في Docker\ndocker compose exec app php --version\n```\n\n**في Docker — صورة `nextcloud:35‎.x-apache` تتضمن PHP 8.3+ بالفعل.** ما عليك سوى تحديث الوسم:\n\n```yaml\nimage: nextcloud:35.0.0-apache\n```\n\n**الامتدادات المطلوبة لـ Nextcloud 35:** `gd`\u002F`imagick` و`redis` و`intl` و`bcmath` و`gmp` و`zip` و`opcache`.\n\n**التحقق من الامتدادات المفقودة:**\n\n```bash\ndocker compose exec -u www-data app php occ check\n```",{"type":38,"title":175,"body":176},"Nextcloud 35 : مسار التحديث وإصدارات PHP المدعومة","صدر Nextcloud 35.0.0 في **15 سبتمبر 2026** (Hub 26 Summer). يدعم PHP **8.3** (الحد الأدنى الإلزامي) و**8.4** و**8.5** (موصى به). PHP 8.2 غير مدعوم — مثيل يعمل على PHP 8.2 لن يشتغل بعد الترقية إلى NC 35.\n\n**أفضل ممارسة — أعلّق على وسم صريح:**\n\n```yaml\nimage: nextcloud:35.0.0-apache\n```\n\n**مسار التحديث التسلسلي الإلزامي: v33 → v34 → v35**\n\n```bash\n# الخطوة 1: الترقية إلى NC 34\ndocker compose exec -u www-data app php occ maintenance:mode --on\nsed -i 's|nextcloud:[0-9.]*-apache|nextcloud:34.0.4-apache|g' docker-compose.yml\ndocker compose pull app && docker compose up -d app\ndocker compose exec -u www-data app php occ upgrade\ndocker compose exec -u www-data app php occ maintenance:mode --off\n\n# الخطوة 2: الترقية إلى NC 35\ndocker compose exec -u www-data app php occ maintenance:mode --on\nsed -i 's|nextcloud:[0-9.]*-apache|nextcloud:35.0.0-apache|g' docker-compose.yml\ndocker compose pull app && docker compose up -d app\ndocker compose exec -u www-data app php occ upgrade\ndocker compose exec -u www-data app php occ maintenance:mode --off\n```\n\nتحقق من مصفوفة التوافق على \u003Ca href=\"https:\u002F\u002Fapps‎.nextcloud‎.com\">apps‎.nextcloud‎.com\u003C\u002Fa> قبل كل ترقية.",{"type":79,"title":178,"body":179},"التحقق من توافق تطبيقاتك قبل الانتقال إلى Nextcloud 35","قبل الترقية إلى NC 35، شغّل فحص التوافق المدمج:\n\n```bash\ndocker exec -u www-data \u003Cاسم_الحاوية> php occ app:check-platform-compatibility\n```\n\nعطّل التطبيقات غير المتوافقة قبل الترقية. بعدها، شغّل `occ check` دائماً:\n\n```bash\ndocker compose exec -u www-data app php occ check\n```",{"type":79,"title":181,"body":182},"Recognize v7 — تصحيح خطأ 'sh: exec: line 1' الصامت","يمكن أن يفشل تطبيق **Recognize** بصمت بخطأ:\n\n```\nClassifier process output: sh: exec: line 1: recognize\u002Fbin\u002Fnode: not found\n```\n\nهذا الخطأ لا يظهر في واجهة الإدارة — فقط في سجلات الحاوية.\n\n**التشخيص:**\n\n```bash\ndocker compose logs app | grep -i recognize\ndocker compose exec app sh -c \"ls -la \u002Fvar\u002Fwww\u002Fhtml\u002Fapps\u002Frecognize\u002Fbin\u002F\"\ndocker compose exec app uname -m\n```\n\n**الإصلاح على x86_64:**\n\n```bash\ndocker compose exec -u www-data app php occ config:app:set recognize \\\n  tensorflow.gpu_enabled --value=false\ndocker compose exec -u www-data app php occ config:app:set recognize \\\n  node_binary --value=\"\"\ndocker compose exec -u www-data app php occ recognize:classify\n```\n\n**على ARM64:** فعّل وضع WASM في إعدادات التطبيق.","‏‎VPS‎ موثوق لمثيل ‎Nextcloud‎ الخاص بك","‏يحتاج ‎Nextcloud‎ إلى خادم ‎VPS‎ بأقراص ‎SSD‎ وعرض نطاق ترددي جيد لمزامنة سلسة للملفات. تبدأ خطط ‎VPS‎ السحابية لدينا من 4 GB ذاكرة عشوائية مع لقطات عند الطلب.","‏اكتشف خطط VPS","\u002Fvps-cloud",[188,210,226],{"id":189,"slug":190,"slugs":191,"title":195,"excerpt":196,"readTime":197,"views":198,"isPinned":19,"noindex":19,"publishedAt":199,"updatedAt":200,"category":201,"categories":206,"featuredImage":30,"bgImage":31,"posterImage":208,"relatedSolution":209},95,"nextcloud-مقابل-owncloud-أي-سحابة-خاصة-تستضيف",{"fr":192,"en":193,"ar":190,"es":194},"nextcloud-vs-owncloud","nextcloud-vs-owncloud-which-private-cloud-to-host","nextcloud-vs-owncloud-que-nube-privada-alojar","Nextcloud مقابل ownCloud: أي سحابة خاصة تستضيف؟","Nextcloud أم ownCloud لسحابتك الخاصة على خادم VPS؟ مقارنة الميزات، والأداء، والمتطلبات، ودليل النشر عبر Docker.",4,0,"2026-03-17T00:00:00+00:00","2026-11-08T01:13:13+00:00",{"id":202,"name":203,"slug":204,"color":205,"icon":204},5,"مقارنات","comparatif","bg-info\u002F10 text-info",[207],{"id":202,"name":203,"slug":204,"color":205,"icon":204},"\u002Fblog\u002Fcovers\u002Fnextcloud-vs-owncloud-poster.svg",{"categorySlug":25,"appSlug":34},{"id":211,"slug":212,"slugs":213,"title":217,"excerpt":218,"readTime":219,"views":18,"isPinned":19,"noindex":19,"publishedAt":220,"updatedAt":221,"category":222,"categories":223,"featuredImage":30,"bgImage":31,"posterImage":225,"relatedSolution":30},126,"نسخ-الخوادم-الاحتياطية-شرح-jetbackup",{"fr":214,"en":215,"ar":212,"es":216},"sauvegardes-serveur-jetbackup","server-backups-jetbackup-explained","copias-seguridad-servidor-jetbackup","JetBackup على cPanel\u002FWHM: التثبيت والاستعادة","كيفية تثبيت JetBackup على WHM وإعداد وجهات S3 أو SFTP وجدولة النسخ الاحتياطية واستعادة حساب أو قاعدة بيانات أو بريد إلكتروني بشكل منفصل.",9,"2026-02-18T00:00:00+00:00","2026-10-20T23:18:07+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[224],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fsauvegardes-serveur-jetbackup-poster.svg",{"id":227,"slug":228,"slugs":229,"title":233,"excerpt":234,"readTime":197,"views":235,"isPinned":19,"noindex":19,"publishedAt":236,"updatedAt":237,"category":238,"categories":244,"featuredImage":30,"bgImage":31,"posterImage":246,"relatedSolution":247},108,"تأمين-خادمك-الافتراضي-vps-باستخدام-crowdsec",{"fr":230,"en":231,"ar":228,"es":232},"securiser-vps-crowdsec","securing-your-vps-with-crowdsec","proteger-vps-con-crowdsec","تأمين خادمك الافتراضي VPS باستخدام CrowdSec","انشر CrowdSec على خادمك الافتراضي VPS لحجب الهجمات بفضل الكشف السلوكي وقائمة حظر مجتمعية مشتركة.",2,"2026-03-04T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":239,"name":240,"slug":241,"color":242,"icon":243},8,"الأمان والمراقبة","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[245],{"id":239,"name":240,"slug":241,"color":242,"icon":243},"\u002Fblog\u002Fcovers\u002Fsecuriser-vps-crowdsec-poster.svg",{"categorySlug":248,"appSlug":249},"الأمن-السيبراني-والحصن","crowdsec",true,1794270234331]