[{"data":1,"prerenderedAt":237},["ShallowReactive",2],{"seo-verification":3,"blog-supabase-مقابل-appwrite-أي-خلفية-مستضافة-ذاتيا-لـ-vps-ma-ar":6,"promo-bar-likely":236},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-supabase-مقابل-appwrite-أي-خلفية-مستضافة-ذاتيا-لـ-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":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":32,"intro":35,"sections":36,"ctaTitle":169,"ctaBody":170,"ctaButton":171,"ctaUrl":172,"relatedPosts":173},94,"supabase-مقابل-appwrite-أي-خلفية-مستضافة-ذاتيا-لـ-vps",{"fr":12,"en":13,"ar":10,"es":14},"supabase-vs-appwrite","supabase-vs-appwrite-which-self-hosted-backend-for-your-vps","supabase-vs-appwrite-que-backend-self-hosted-para-vps","‎Supabase‎ مقابل ‎Appwrite‎ : مقارنة ‎BaaS‎ مفتوح المصدر","مقارنة شاملة بين ‎Supabase‎ و‎Appwrite‎: النشر بـ‎Docker‎، متطلبات الذاكرة، المصادقة، الدوال، الوقت الفعلي، ودليل الاختيار لخادم ‎VPS‎ الخاص بك.",14,0,false,"2026-03-18T00:00:00+00:00","2026-11-08T01:13:16+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},5,"مقارنات","comparatif","bg-info\u002F10 text-info",[28],{"id":23,"name":24,"slug":25,"color":26,"icon":25},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fsupabase-vs-appwrite-poster.svg",{"categorySlug":33,"appSlug":34},"قواعد-البيانات","supabase","‎Supabase‎ و‎Appwrite‎ هما أشهر منصتَي ‎BaaS‎ مفتوحتَي المصدر لاستبدال ‎Firebase‎ دون الاعتماد على سحابة احتكارية. كلتاهما تُنشَران بـ‎Docker‎ على خادم ‎VPS‎، لكنهما تختلفان في البنية التقنية ومتطلبات الموارد وحالات الاستخدام المثلى.",[37,41,97,113,127,130,133,136,140,143,146,149,152,166],{"type":38,"title":39,"body":40},"h2","‏ما هو ‎BaaS‎ ولماذا الاستضافة الذاتية؟","‏تجمع خدمة Backend-as-a-Service (BaaS) في منتج واحد كل ما يحتاجه التطبيق الحديث من جهة الخادم: قاعدة بيانات، ومصادقة، وتخزين ملفات، ودوال بلا خادم، وتواصل في الوقت الفعلي. نشرت Firebase هذا النموذج، لكن طبيعتها المغلقة تطرح مشكلات في التكلفة والامتثال لـ RGPD والارتباط بمزوّد واحد.\n\n‏تمنحك الاستضافة الذاتية لـ BaaS مفتوح المصدر على خادم VPS خاص بك سيطرة تامة على بياناتك، وتُلغي الرسوم لكل طلب، وتتيح احترام متطلبات إقامة البيانات. في المقابل تقع على عاتقك إدارة البنية: التحديثات والنسخ الاحتياطية والمراقبة وتحجيم الخادم. ‎Supabase‎ و‎Appwrite‎ هما الحلّان الأكثر نضجًا في هذا المجال.",{"type":42,"title":43,"headers":44,"rows":48},"comparison","‏‎Supabase‎ مقابل ‎Appwrite‎ — مقارنة بـ 12 معياراً",[45,46,47],"المعيار","‎Supabase‎","‎Appwrite‎",[49,53,57,61,65,69,73,77,81,85,89,93],[50,51,52],"قاعدة البيانات","‎PostgreSQL‎","PostgreSQL افتراضيًا منذ 2.0 (مع إتاحة MariaDB وMongoDB)",[54,55,56],"الذاكرة الدنيا","4 ‏جيجابايت","4 ‏جيجابايت (+ 2 جيجابايت swap)",[58,59,60],"الذاكرة الموصى بها للإنتاج","8 ‏جيجابايت أو أكثر","غير منشورة (4 جيجابايت حدًّا أدنى)",[62,63,64],"عدد الحاويات","~11 (13 مع Logflare وVector)","~18",[66,67,68],"المنفذ الرئيسي","‏8000 (‎Envoy‎ منذ 0.8.0، ‎Kong‎ قبله)","‏80 \u002F 443 (‎Traefik‎)",[70,71,72],"منفذ الإدارة","‏8000 (Studio عبر البوابة، بمصادقة أساسية)","‏80 \u002F لوحة تحكم (‎Traefik‎)",[74,75,76],"الخدمات المدمجة","‏‎Auth, PostgREST, Realtime, Storage, Edge Functions, Studio‎","‏‎Auth, Databases, Storage, Functions, Messaging, Realtime‎",[78,79,80],"‏مزودو ‎Auth‎","‏15+ مزود","‏30+ مزود",[82,83,84],"بيئة تشغيل الدوال","‎Deno‎ ‏فقط","‏30+ بيئة تشغيل (‎Node, Python, PHP, Go, Dart, Ruby, Bun…‎)",[86,87,88],"‏حزم ‎SDK‎ للعميل","‏‎JS, Python, Swift, Kotlin, Flutter, C#‎","‏‎JS, iOS, Android, Flutter, React Native, Web‎",[90,91,92],"الوقت الفعلي","‏‎WebSocket‎ عبر خدمة ‎Realtime‎","‏‎WebSocket‎ عبر ‎Appwrite Realtime‎",[94,95,96],"الرخصة","‎Apache 2.0‎","‎BSD 3-Clause‎",{"type":98,"title":99,"steps":100},"steps","‏نشر ‎Supabase‎ على خادم ‎VPS‎",[101,104,107,110],{"title":102,"body":103},"‏الخطوة 1 — متطلبات الخادم","‏جهّز خادم VPS بما لا يقل عن 4 جيجابايت ذاكرة عشوائية (8 جيجابايت في الإنتاج)، مع Docker وDocker Compose. لا تكشف المنفذ 8000 للبوابة، الذي يخدم الواجهة البرمجية وStudio معًا، عبر HTTP على الإنترنت: ضع أمامه وسيطًا عكسيًا بـ HTTPS (Caddy أو Nginx) على المنفذ 443، وانشر البوابة على العنوان المحلي (`API_GW_HTTP_PORT=127.0.0.1:8000` في `.env`) لأن Docker يتجاوز قواعد ufw. يفتح مُجمِّع Supavisor أيضًا المنفذين 5432 و6543: إن لم تحتج اتصالات خارجية فأضف قبلهما `127.0.0.1:` في `docker-compose.yml`.",{"title":105,"body":106},"‏الخطوة 2 — استنساخ المستودع وضبط الإعدادات","‏استنسخ المستودع بـ `git clone --depth 1 https:\u002F\u002Fgithub.com\u002Fsupabase\u002Fsupabase`، انسخ محتوى `supabase\u002Fdocker` إلى مجلد مشروع وانسخ `.env.example` إلى `.env`. لا تُشغّل أبدًا بالقيم النموذجية: ولّد الأسرار والمفاتيح بـ `sh utils\u002Fgenerate-keys.sh` ثم `sh utils\u002Fadd-new-auth-keys.sh`، وتحقق على الأقل من `POSTGRES_PASSWORD` و`JWT_SECRET` (32 حرفًا على الأقل) و`ANON_KEY` و`SERVICE_ROLE_KEY` و`DASHBOARD_PASSWORD` (الدخول إلى Studio) والعناوين العامة (`SUPABASE_PUBLIC_URL` و`API_EXTERNAL_URL` و`SITE_URL`).",{"title":108,"body":109},"‏الخطوة 3 — تشغيل المنظومة","‏نفّذ `docker compose up -d` (أو `sh run.sh start`، المكافئ لـ `docker compose up -d --wait`). مع ‎Supabase 0.8.0+‎، يخدم ‎Envoy‎ (وليس ‎Kong‎) المنفذ 8000. انتظر حتى تكون جميع الحاويات في حالة `healthy`.",{"title":111,"body":112},"‏الخطوة 4 — التحقق","‏ادخل إلى Studio عبر البوابة على `http:\u002F\u002FIP_VPS:8000` (أو نطاقك بـ HTTPS خلف الوسيط العكسي) باسم المستخدم `DASHBOARD_USERNAME` وكلمة المرور `DASHBOARD_PASSWORD`. اختبر استدعاء API بسيطًا بـ `curl http:\u002F\u002FIP_VPS:8000\u002Ffunctions\u002Fv1\u002Fhello -H \"apikey: YOUR_PUBLISHABLE_KEY\"`: استجابة الدالة النموذجية تؤكد أن البوابة توجّه الطلبات بشكل صحيح.",{"type":98,"title":114,"steps":115},"‏نشر ‎Appwrite‎ على خادم ‎VPS‎",[116,118,121,124],{"title":102,"body":117},"‏تتطلب Appwrite على الأقل نواتين و4 جيجابايت ذاكرة و2 جيجابايت swap. حاوياتها الـ 18 تقريبًا (الإعداد الافتراضي) تتضمن Traefik كوسيط عكسي. افتح المنفذين 80 و443.",{"title":119,"body":120},"‏الخطوة 2 — تشغيل المُثبِّت التفاعلي","‏نفّذ `docker run -it --rm --publish 20080:20080 --volume \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock --volume \"$(pwd)\"\u002Fappwrite:\u002Fusr\u002Fsrc\u002Fcode\u002Fappwrite:rw --entrypoint=\"install\" appwrite\u002Fappwrite:2.7.1` مع تثبيت الإصدار المنشور بدل `latest`. يفتح المعالج في المتصفح على المنفذ 20080: يطلب النطاق ويولّد المفاتيح وملف `docker-compose.yml` وينشئ حساب المسؤول. أغلق المنفذ 20080 بعد انتهاء التثبيت.",{"title":122,"body":123},"‏الخطوة 3 — انتظار اكتمال الإقلاع","‏عند أول إقلاع، قد تحتاج الحاويات بضع دقائق لتصبح جاهزة، وقد تُعيد لوحة التحكم خطأً في الأثناء. تابع بـ `docker compose ps` و`docker compose logs -f appwrite`. أما الترحيلات فلا تخص إلا ترقية نسخة قائمة، وتُشغَّل يدويًا بـ `docker compose exec appwrite migrate`.",{"title":125,"body":126},"‏الخطوة 4 — الدخول إلى لوحة التحكم","‏بعد انتهاء التثبيت، افتح نطاقك (أو عنوان IP الخادم) في المتصفح وادخل إلى لوحة التحكم بحساب المسؤول الذي أنشأه المعالج، ثم أنشئ أول مشروع.",{"type":38,"title":128,"body":129},"‏المصادقة — مقارنة مزودي الهوية وضبط ‎OAuth‎","‏تدعم كلتا المنصتَين المصادقة بالبريد الإلكتروني\u002Fكلمة المرور ورقم الهاتف. تدعم ‎Appwrite‎ أكثر من 30 مزود ‎OAuth2‎ مقابل 15+ لـ‎Supabase‎.\n\n‏ملاحظة مهمة لـ‎Appwrite 2.0‎: أفادت المشكلة رقم #13547، المفتوحة في سبتمبر 2026، بأن إعادة تعيين كلمة المرور والدعوات عبر البريد الإلكتروني لا تعمل في نسخ Appwrite 2.0 المستضافة ذاتيًا. وأُغلقت دون إصدار تصحيحي مُسمّى، إذ لم يتمكن الفريق من إعادة إنتاج المشكلة. اختبر هذه المسارات في بيئة اختبار قبل ترحيل إنتاجك.",{"type":38,"title":131,"body":132},"‏الدوال البلا خادم — ‎Deno‎ مقابل 30+ بيئة تشغيل","‏تعمل دوال ‎Supabase Edge Functions‎ حصرياً على **‎Deno‎**. تدعم دوال ‎Appwrite‎ أكثر من 30 **بيئة تشغيل**: ‎Node.js‎ و‎Python‎ و‎PHP‎ و‎Ruby‎ و‎Go‎ و‎Dart‎ والمزيد. هذه المرونة ميزة كبيرة للفرق المتعددة اللغات.\n\n‏ملاحظة ‎Appwrite 2.0‎: منذ الإصدار 2.1.0 لم يعد المتغيران `_APP_LOGGING_PROVIDER` و`_APP_LOGGING_CONFIG_REALTIME` يُقرآن، ويمر تسجيل الأخطاء عبر `_APP_LOGGING_CONFIG` وحده، الذي لا يقبل إلا DSN خاصًا بـ Sentry: يُرفض عند الإقلاع أي DSN لـ LogOwl أو Raygun أو AppSignal. احذف المتغيرين القديمين من `.env` وتحقق من هذا الـ DSN قبل الترقية.",{"type":38,"title":134,"body":135},"الوقت الفعلي وتخزين الملفات","‏**الوقت الفعلي.** تستخدم كلتا المنصتين WebSockets. تكشف Supabase تغييرات PostgreSQL في الوقت الفعلي عبر خدمة **Realtime**، التي تشترك في إشعارات قاعدة البيانات (logical replication). أما Appwrite Realtime فيغطي أحداث المستندات والملفات والفرق، وهو أقل ارتباطًا بقاعدة البيانات الأساسية وبالتالي أكثر قابلية للنقل.\n\n‏نقطة انتباه مع Supabase: قد تبدأ خدمة Realtime أحيانًا قبل أن تصبح PostgreSQL جاهزة تمامًا، فيظهر الخطأ `could not connect to the database`. إعادة تشغيل الحاوية `realtime` تحل المشكلة عادةً.\n\n‏**التخزين.** تعتمد Supabase Storage على واجهة برمجية متوافقة مع S3، وتتيح تعريف سياسات وصول RLS مباشرة من PostgreSQL. وتقدم Appwrite Storage نظام أذونات حسب الفريق والمستخدم، أبسط في الإعداد.",{"type":137,"title":138,"body":139},"tip","‏Appwrite: لوحة التحكم غير متاحة عند أول تشغيل — امنحها الوقت","‏إذا أظهرت لوحة تحكم Appwrite خطأً أو بقيت غير متاحة في الدقائق الأولى، لا تُعد تشغيل الحاويات عشوائيًا: قد يستغرق الإقلاع الأول بضع دقائق. تابع التقدم بـ `docker compose ps` و`docker compose logs -f appwrite`. أما عند الترقية فلا شيء يُرحَّل تلقائيًا: بعد النسخ الاحتياطي، نفّذ `docker compose exec appwrite migrate` ودعه يكتمل.",{"type":137,"title":141,"body":142},"‏‎Supabase‎: خطأ 502 من البوابة عند الإقلاع — سلوك طبيعي","‏قد تُعيد بوابة ‎API‎ (‎Kong‎ حتى 0.7.x، ‎Envoy‎ منذ 0.8.0) أخطاء 502 خلال العشرات الأولى من الثواني بعد `docker compose up -d`. هذا سلوك طبيعي ومؤقت. انتظر حتى يُظهر `docker compose ps` جميع الحاويات في حالة `healthy`، وإن استمر الخطأ فراجع `docker compose logs rest` و`docker compose logs api-gw` (اسم الخدمة `kong` قبل 0.8.0).",{"type":38,"title":144,"body":145},"‏‎Appwrite 2.0‎: الترحيل من 1.x — الإجراء والتغييرات الجذرية","‏أُعلن عن Appwrite 2.0 للاستضافة الذاتية في 7 سبتمبر 2026 (المصدر: https:\u002F\u002Fappwrite.io\u002Fchangelog\u002Fentry\u002F2026-09-07). يُعدّ تحديثًا رئيسيًا: تصبح **PostgreSQL** قاعدة البيانات الافتراضية **للتثبيتات الجديدة**، مع بقاء MariaDB وMongoDB متاحتين. أما النسخة القائمة على MariaDB **فتبقى على MariaDB** بعد الترقية: لا يحوّل الإصدار 2.0 بياناتك إلى PostgreSQL.\n\n**مسار الترحيل الإلزامي.** يجب ترقية أي نسخة أقدم من 1.9.6 إلى 1.9.6 أولًا (من 1.8.x عبر 1.9.5 وترحيلها)؛ وابتداءً من 1.9.6 تكون الترقية إلى أحدث 2.x مباشرة. الإجراء الرسمي:\n1. خذ نسخة احتياطية كاملة: `docker compose down` ثم انسخ مجلد `appwrite` (`docker-compose.yml` و`.env`) **وكذلك** أحجام Docker المسمّاة التي تحمل القاعدة والملفات.\n2. عند الحاجة رقّ إلى 1.9.6 أولًا: من المجلد الأب لـ `appwrite` أعد تشغيل أمر التثبيت مع `--entrypoint=\"upgrade\"` والصورة `appwrite\u002Fappwrite:1.9.6`.\n3. من مجلد `appwrite` نفّذ الترحيل: `docker compose exec appwrite migrate`.\n4. رقّ إلى 2.x: أعد أمر `upgrade` بصورة أحدث إصدار منشور (`appwrite\u002Fappwrite:2.7.1` في نوفمبر 2026).\n5. نفّذ `docker compose exec appwrite migrate` مجددًا — لا تُوقف الحاويات أثناء العملية — ثم تحقق بـ `docker ps | grep appwrite\u002Fappwrite` من أن جميع الحاويات بالإصدار نفسه.\n\n**التغييرات الجذرية.** أفادت المشكلة #13547، التي أُغلقت في سبتمبر 2026 دون تصحيح مُسمّى، بتعطل إعادة تعيين كلمة المرور والدعوات في الإصدار 2.0 المستضاف ذاتيًا. اختبر هذه المسارات في بيئة اختبار قبل الترحيل. في 2.1.0 لم يعد `_APP_LOGGING_PROVIDER` و`_APP_LOGGING_CONFIG_REALTIME` يُقرآن، ولا يقبل `_APP_LOGGING_CONFIG` إلا DSN خاصًا بـ Sentry. لا يوجد إجراء موثق للتراجع: وحدها الاستعادة الكاملة من النسخة الاحتياطية تتيح العودة إلى 1.x.",{"type":38,"title":147,"body":148},"‏‎Supabase 0.8.0‎: من ‎Kong‎ إلى ‎Envoy‎ — التأثير والترحيل","‏صدر ‎Supabase docker-compose 0.8.0‎ في 11 أغسطس 2026 (‏المصدر: https:\u002F\u002Fgithub.com\u002Fsupabase\u002Fsupabase\u002Fblob\u002Fmaster\u002Fdocker\u002FCHANGELOG.md)، ويستبدل **‎Kong‎** بـ**‎Envoy‎** كبوابة ‎API‎ افتراضية (يبقى Kong متاحًا اختياريًا عبر `sh run.sh config add kong`). هذا التغيير شفاف لمعظم عمليات النشر، لكنه يُزيل **مستمع ‎TLS‎ على المنفذ 8443**.\n\n**ما الذي يتغير.** إذا كان الوسيط العكسي أو سكربتات التحقق من الصحة تُنفّذ طلبات ‎HTTPS‎ مباشرة إلى `https:\u002F\u002Fip:8443`، فستفشل هذه الطلبات بعد الترقية. يجب إسناد إنهاء ‎TLS‎ حصراً إلى الوسيط العكسي الأمامي.\n\n**خطوات الترحيل.** ابحث عن أي مرجع للمنفذ 8443 في سكربتات النشر وفحوص الصحة وقواعد جدار الحماية. استبدلها باستدعاءات على المنفذ 8000 عبر ‎HTTP‎ من الشبكة الداخلية. رقّ بالإجراء الرسمي (`sh update.sh` ثم `sh run.sh pull && sh run.sh recreate`): لا يكفي `docker compose pull` وحده لأن ملف `docker-compose.yml` نفسه يتغير. ثم تحقق من أن `docker compose ps` يُظهر الخدمة `api-gw` (الحاوية `supabase-envoy`)، التي حلّت محل خدمة `kong`، في حالة `healthy`.",{"type":38,"title":150,"body":151},"‏دليل الاختيار — ‎Supabase‎ أم ‎Appwrite‎ لمشروعك؟","‏يتوقف الاختيار بين المنصتين أساسًا على نوع تطبيقك وكفاءات فريقك.\n\n‏**اختر Supabase إذا:** كان تطبيقك موجّهًا للويب أولًا، أو كان فريقك يُتقن PostgreSQL، أو كنت تنتقل من Firebase وتريد الحفاظ على قاعدة علائقية متينة، أو تحتاج واجهة REST تتولد تلقائيًا من مخطط قاعدة بياناتك (PostgREST).\n\n‏**اختر Appwrite إذا:** كنت تطوّر تطبيقًا محمولًا (iOS\u002FAndroid) بحاجات متعددة المنصات، أو كان فريقك يعمل بلغات عدة ويريد اختيار بيئة تشغيل دواله، أو تفضّل واجهة إدارة أسهل دون معرفة عميقة بـ SQL.\n\n‏**على خادم VPS بذاكرة 4 جيجابايت،** أنت عند الحد الأدنى الموثق للمنصتين (4 جيجابايت لـ Supabase، و4 جيجابايت مع 2 جيجابايت swap لـ Appwrite)؛ وتوصي Supabase بـ 8 جيجابايت أو أكثر في الإنتاج.\n\n‏**في 2026، المنصتان في تحوّل متسارع.** تجعل Appwrite 2.0 من PostgreSQL القاعدة الافتراضية للتثبيتات الجديدة — مما يقلّص الميزة التاريخية لـ Supabase في هذه النقطة — بينما تحدّث Supabase بوابتها بـ Envoy. إن كنت تخطط لتثبيت جديد، فالمنصتان متكافئتان في مسألة قاعدة البيانات. وإن كنت ترحّل تثبيتًا قائمًا (يبقى على MariaDB من جهة Appwrite)، فخصّص نافذة صيانة واختبر المسارات الحرجة (المصادقة والبريد والدوال) قبل أي تحديث رئيسي.",{"type":153,"title":154,"items":155},"ul","الأخطاء الشائعة وحلولها",[156,157,158,159,160,161,162,163,164,165],"‏‎Supabase‎ — 502 ‎Bad Gateway‎: انتظر حتى تصبح جميع الخدمات `healthy`. إذا استمر: `docker compose restart api-gw` ‏(0.8.0+) أو `docker compose restart kong` ‏(إصدارات أقدم).","‏‎Supabase‎ — ‎Realtime `could not connect to the database`‎: `docker compose restart realtime`.","‏‎Supabase‎ — ‎JWT‎ غير صالح: تحقق أن `ANON_KEY` و`SERVICE_ROLE_KEY` موقّعان بنفس `JWT_SECRET` في `.env`.","‏‎Supabase 0.8.0‎ — المنفذ 8443 غير متاح: مستمع ‎Kong TLS‎ حُذف مع ‎Envoy‎. احذف الاستدعاءات المباشرة للمنفذ 8443 وأسند ‎TLS‎ إلى الوسيط العكسي الأمامي.","‏Appwrite — لوحة التحكم غير متاحة عند الإقلاع: قد يستغرق الإقلاع الأول بضع دقائق. راجع `docker compose ps` والسجلات قبل إعادة تشغيل أي شيء.","‏‎Appwrite‎ — `docker compose down -v`: خطر — يحذف جميع البيانات. لا تشغّله في الإنتاج.","‏‎Appwrite‎ — timeout الدوال: ‎cold start‎ لبيئة غير مُستخدمة قد يتجاوز الحد الافتراضي. ارفع الحد في إعدادات الدالة (Settings > Timeout، بحد أقصى 900 ثانية).","‏Appwrite 2.x — ترحيل متعثر: يجب أن تمر أي نسخة أقدم من 1.9.6 بالإصدار 1.9.6 أولًا، مع تنفيذ `docker compose exec appwrite migrate` في كل مرحلة. تخطي هذه الخطوة يعرّض الترحيل للفشل: استعد نسختك الاحتياطية وابدأ من جديد.","‏Appwrite 2.0 — إعادة تعيين كلمة المرور\u002Fالدعوات: المشكلة #13547 أُبلغ عنها في الاستضافة الذاتية وأُغلقت دون تصحيح مُسمّى. اختبر هذه المسارات قبل الإنتاج.","‏Appwrite 2.1.0 — متغيرات متروكة: لم يعد `_APP_LOGGING_PROVIDER` و`_APP_LOGGING_CONFIG_REALTIME` يُقرآن؛ احذفهما من `.env` واترك في `_APP_LOGGING_CONFIG` DSN خاصًا بـ Sentry فقط، فهو الوحيد المقبول عند الإقلاع.",{"type":38,"title":167,"body":168},"‏الخلاصة : منصتان ممتازتان وفلسفتان مختلفتان","‏تُعدّ ‎Supabase‎ و‎Appwrite‎ كلتاهما خيارات قوية لاستضافة ‎BaaS‎ مفتوح المصدر على خادم ‎VPS‎. تتألق ‎Supabase‎ بعمقها في ‎PostgreSQL‎ وواجهة ‎API‎ التلقائية ولوحة ‎Studio‎ المتطورة. تتميز ‎Appwrite‎ بتنوع بيئات تشغيل الدوال وجودة حزم تطوير التطبيقات المحمولة.\n\n‏شهدت المنصتان في 2026 تحديثات هيكلية: تجعل Appwrite 2.0 (سبتمبر 2026) من PostgreSQL القاعدة الافتراضية للتثبيتات الجديدة، وتنتقل Supabase 0.8.0 (أغسطس 2026) من Kong إلى Envoy. خطّط لعمليات الترحيل بنسخ احتياطية كاملة وبيئات اختبار والتحقق من المسارات الحرجة — لا سيما مصادقة البريد الإلكتروني لـ‎Appwrite 2.0‎. ‏تبدأ الخطط من 99 درهم\u002Fشهر على ‏ServOrbit.","استضف منصة ‎BaaS‎ الخاصة بك على ‎VPS‎ تتحكم فيه","سواء اخترت ‎Supabase‎ أو ‎Appwrite‎، كلتا المنصتَين تستحقان خادم ‎VPS‎ سريعاً ومستقراً مع نسخ احتياطية منتظمة. تبدأ خطط ‎VPS‎ السحابية لدينا من 4 جيجابايت ذاكرة عشوائية مع لقطات عند الطلب.","اكتشف خطط VPS","\u002Fvps-cloud",[174,198,218],{"id":175,"slug":176,"slugs":177,"title":181,"excerpt":182,"readTime":183,"views":184,"isPinned":19,"noindex":19,"publishedAt":185,"updatedAt":186,"category":187,"categories":193,"featuredImage":29,"bgImage":30,"posterImage":195,"relatedSolution":196},139,"حزمة-تطوير-docker-على-خادم-vps-بيئة-جاهزة-للبرمجة",{"fr":178,"en":179,"ar":176,"es":180},"stack-dev-docker-vps","docker-dev-stack-on-a-vps-an-environment-ready-for-coding","stack-dev-docker-en-vps","حزمة تطوير Docker على خادم VPS: بيئة جاهزة للبرمجة","أنشئ حزمة تطوير Docker كاملة على خادم VPS: Nginx وPHP-FPM وPostgreSQL وRedis وMailpit وAdminer — docker-compose.yml مفصّل، SSH tunneling، استكشاف الأخطاء.",10,1,"2026-02-06T00:00:00+00:00","2026-11-09T20:55:19+00:00",{"id":188,"name":189,"slug":190,"color":191,"icon":192},4,"التطوير","developpement","bg-warning\u002F10 text-warning","dev",[194],{"id":188,"name":189,"slug":190,"color":191,"icon":192},"\u002Fblog\u002Fcovers\u002Fstack-dev-docker-vps-poster.svg",{"categorySlug":192,"appSlug":197},"docker-dev-stack",{"id":199,"slug":200,"slugs":201,"title":205,"excerpt":206,"readTime":207,"views":208,"isPinned":19,"noindex":19,"publishedAt":209,"updatedAt":210,"category":211,"categories":212,"featuredImage":29,"bgImage":30,"posterImage":214,"relatedSolution":215},93,"n8n-مقابل-node-red-أي-أداة-أتمتة-مستضافة-ذاتيا-تختار",{"fr":202,"en":203,"ar":200,"es":204},"n8n-vs-node-red","n8n-vs-node-red-which-self-hosted-automation-tool-to-choose","n8n-vs-node-red-que-automatizacion-self-hosted-elegir","n8n مقابل Node-RED: أي أداة أتمتة مستضافة ذاتياً تختار؟","‎n8n أم ‎Node-RED لسير عمل ‎VPS الخاص بك؟ مقارنة تقنية شاملة: الترخيص، الموارد، حالات استخدام ‎IoT مقابل ‎SaaS، خطوات الترحيل، والنشر بـ ‎Docker.",9,3,"2026-03-19T00:00:00+00:00","2026-11-08T01:13:15+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[213],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fn8n-vs-node-red-poster.svg",{"categorySlug":216,"appSlug":217},"الأتمتة-وسير-العمل","n8n",{"id":219,"slug":220,"slugs":221,"title":225,"excerpt":226,"readTime":188,"views":18,"isPinned":19,"noindex":19,"publishedAt":227,"updatedAt":228,"category":229,"categories":230,"featuredImage":29,"bgImage":30,"posterImage":232,"relatedSolution":233},95,"nextcloud-مقابل-owncloud-أي-سحابة-خاصة-تستضيف",{"fr":222,"en":223,"ar":220,"es":224},"nextcloud-vs-owncloud","nextcloud-vs-owncloud-which-private-cloud-to-host","nextcloud-vs-owncloud-que-nube-privada-alojar","Nextcloud مقابل ownCloud: أي سحابة خاصة تستضيف؟","Nextcloud أم ownCloud لسحابتك الخاصة على خادم VPS؟ مقارنة الميزات، والأداء، والمتطلبات، ودليل النشر عبر Docker.","2026-03-17T00:00:00+00:00","2026-11-08T01:13:13+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[231],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fnextcloud-vs-owncloud-poster.svg",{"categorySlug":234,"appSlug":235},"self-hosting","nextcloud",true,1794270362528]