ما هو BaaS ولماذا الاستضافة الذاتية؟
Backend-as-a-Service (BaaS) يجمع في منتج واحد كل ما تحتاجه التطبيقات الحديثة: قاعدة بيانات، ومصادقة، وتخزين ملفات، ودوال بلا خادم، وتواصل فوري. Supabase وAppwrite هما الحلّان الأكثر نضجاً في هذا المجال. الاستضافة الذاتية تمنحك سيطرة تامة على البيانات وتُلغي الرسوم المتغيرة وتُتيح الامتثال لمتطلبات إقامة البيانات.
Supabase مقابل Appwrite — مقارنة بـ 12 معياراً
مرّر الجدول أفقيًا
| المعيار | Supabase | Appwrite |
|---|---|---|
| قاعدة البيانات | PostgreSQL | MariaDB (≤ 1.8)، PostgreSQL (2.0+) |
| الذاكرة الدنيا | 4 جيجابايت | 2 جيجابايت |
| الذاكرة الموصى بها للإنتاج | 8 جيجابايت | 4 جيجابايت |
| عدد الحاويات | ~13 | ~19 |
| المنفذ الرئيسي | 8000 (Envoy منذ 0.8.0، Kong قبله) | 80 / 443 (Traefik) |
| منفذ الإدارة | 3000 (Studio) | 80 / لوحة تحكم (Traefik) |
| الخدمات المدمجة | Auth, PostgREST, Realtime, Storage, Edge Functions, Studio | Auth, Databases, Storage, Functions, Messaging, Realtime |
| مزودو Auth | 15+ مزود | 30+ مزود |
| بيئة تشغيل الدوال | Deno فقط | 30+ بيئة تشغيل (Node, Python, PHP, Go, Dart, Ruby, Bun…) |
| حزم SDK للعميل | JS, Python, Swift, Kotlin, Flutter, C# | JS, iOS, Android, Flutter, React Native, Web |
| الوقت الفعلي | WebSocket عبر خدمة Realtime | WebSocket عبر Appwrite Realtime |
| الرخصة | Apache 2.0 | BSD 3-Clause |
نشر Supabase على خادم VPS
الخطوة 1 — متطلبات الخادم
جهّز خادم VPS بما لا يقل عن 4 جيجابايت ذاكرة عشوائية (8 جيجابايت في الإنتاج)، مع Docker وDocker Compose. افتح المنفذ 8000 (بوابة API) والمنفذ 3000 (Studio).
الخطوة 2 — استنساخ المستودع وضبط الإعدادات
استنسخ المستودع بـ
git clone --depth 1 https://github.com/supabase/supabase، ادخل إلىsupabase/dockerوانسخ.env.exampleإلى.env. عيّنPOSTGRES_PASSWORDوJWT_SECRETوANON_KEYوSERVICE_ROLE_KEY.الخطوة 3 — تشغيل المنظومة
نفّذ
docker compose up -d. يستغرق الإقلاع الكامل 60 إلى 120 ثانية. مع Supabase 0.8.0+، يخدم Envoy (وليس Kong) المنفذ 8000. انتظر حتى تكون جميع الحاويات في حالةhealthy.الخطوة 4 — التحقق
ادخل إلى Studio على
http://IP_VPS:3000. اختبر استدعاء API بسيطاً بـcurl http://IP_VPS:8000/rest/v1/ -H "apikey: ANON_KEY_YOUR". استجابة JSON فارغة{}تؤكد أن PostgREST يستجيب.
نشر Appwrite على خادم VPS
الخطوة 1 — متطلبات الخادم
Appwrite أخفّ عند الإقلاع: 2 جيجابايت تكفي للاختبار، لكن 4 جيجابايت موصى بها للإنتاج. حاوياتها الـ 19 تتضمن Traefik كوسيط عكسي. افتح المنفذين 80 و443.
الخطوة 2 — تشغيل المُثبِّت التفاعلي
نفّذ
docker run -it --rm --volume /var/run/docker.sock:/var/run/docker.sock --volume "$(pwd)"/appwrite:/usr/src/code/appwrite:rw --entrypoint="install" appwrite/appwrite:latest. سيطلب منك النطاق والمنافذ ويولّد ملفdocker-compose.yml.الخطوة 3 — انتظار ترحيلات قاعدة البيانات
عند أول إقلاع، تُنفّذ Appwrite ترحيلات قاعدة البيانات. تستغرق 2 إلى 5 دقائق. لا تُعد تشغيل الحاويات. تابع بـ
docker compose logs -f appwrite.الخطوة 4 — إنشاء حساب المسؤول
ادخل إلى
http://نطاقك/console. أنشئ حساب المسؤول الأول، ثم أول مشروع.
المصادقة — مقارنة مزودي الهوية وضبط OAuth
تدعم كلتا المنصتَين المصادقة بالبريد الإلكتروني/كلمة المرور ورقم الهاتف. تدعم Appwrite أكثر من 30 مزود OAuth2 مقابل 15+ لـSupabase.
ملاحظة مهمة لـAppwrite 2.0: تُفيد المشكلة رقم #13547 بأن إعادة تعيين كلمة المرور والدعوات عبر البريد الإلكتروني معطوبة في Appwrite 2.0 المستضافة ذاتياً. اختبر هذه المسارات في بيئة اختبار قبل ترحيل إنتاجك.
الدوال البلا خادم — Deno مقابل 30+ بيئة تشغيل
تعمل دوال Supabase Edge Functions حصرياً على Deno. تدعم دوال Appwrite أكثر من 30 بيئة تشغيل: Node.js وPython وPHP وRuby وGo وDart والمزيد. هذه المرونة ميزة كبيرة للفرق المتعددة اللغات.
ملاحظة Appwrite 2.0: تم حذف المتغيرَين _APP_LOGGING_PROVIDER و_APP_LOGGING_CONFIG_REALTIME في الإصدار 2.1.0. احذفهما من .env قبل الترقية.
الوقت الفعلي وتخزين الملفات
الوقت الفعلي. تستخدم كلتا المنصتَين WebSockets. تكشف Supabase عن تغييرات PostgreSQL في الوقت الفعلي عبر خدمة Realtime (استنساخ منطقي). يغطي Appwrite Realtime أحداث المستندات والملفات والفرق.
التخزين. تستخدم Supabase Storage واجهة برمجية متوافقة مع S3 مع سياسات وصول RLS من PostgreSQL. توفر Appwrite Storage نظام أذونات بالفريق/المستخدم أبسط في الإعداد.
Appwrite: خطأ 503 عند أول تشغيل — انتظر اكتمال الترحيلات
إذا أظهرت لوحة تحكم Appwrite خطأ 503، لا تُعد تشغيل الحاويات. تنفّذ Appwrite ترحيلات قاعدة بيانات تلقائياً عند أول إقلاع، وتستغرق العملية من 2 إلى 5 دقائق. تابع التقدم بـ docker compose logs -f appwrite وانتظر رسالة Migrations completed.
Supabase: خطأ 502 من البوابة عند الإقلاع — سلوك طبيعي
قد تُعيد بوابة API (Kong حتى 0.7.x، Envoy منذ 0.8.0) أخطاء 502 خلال الـ 30-60 ثانية الأولى بعد docker compose up -d. هذا سلوك طبيعي ومؤقت. انتظر حتى يُظهر docker compose ps جميع الحاويات في حالة healthy.
Appwrite 2.0: الترحيل من 1.x — الإجراء والتغييرات الجذرية
صدر Appwrite 2.0 في 7 سبتمبر 2026 (المصدر: https://appwrite.io/changelog/entry/2026-09-07). يُعدّ تحديثاً رئيسياً يُرحّل محرك الاستمرارية من MariaDB إلى PostgreSQL بصفة نهائية وغير قابلة للعكس — لا يمكن الرجوع إلى 1.x بعد الترحيل.
مسار الترحيل الإلزامي. يجب الترقية إلى 1.9.6 أولاً قبل الانتقال إلى 2.0. تخطي هذه الخطوة الوسيطة يجعل الترحيل مستحيلاً. الخطوات الموصى بها:
1. احتفظ بنسخة احتياطية كاملة من أحجام Docker: docker compose down ثم انسخ مجلد بيانات Appwrite.
2. رقّ إلى 1.9.6 أولاً: عدّل الصورة في docker-compose.yml إلى appwrite/appwrite:1.9.6 ثم نفّذ docker compose pull && docker compose up -d.
3. انتظر اكتمال ترحيلات 1.9.6 (docker compose logs -f appwrite | grep -i migrat).
4. رقّ إلى 2.0: غيّر الصورة إلى appwrite/appwrite:2.0 ثم أعد تشغيل docker compose pull && docker compose up -d.
5. تُنفَّذ ترحيلات PostgreSQL تلقائياً عند أول إقلاع لـ2.0 — لا تُوقف الحاويات أثناء هذه العملية.
التغييرات الجذرية. تُفيد المشكلة #13547 بأن إعادة تعيين كلمة المرور والدعوات معطوبة في الإصدار 2.0 المستضاف ذاتياً. اختبر هذه المسارات في بيئة اختبار قبل الترحيل. المتغيران _APP_LOGGING_PROVIDER و_APP_LOGGING_CONFIG_REALTIME محذوفان في 2.1.0 — احذفهما من .env الآن. الترحيل غير قابل للعكس.
Supabase 0.8.0: من Kong إلى Envoy — التأثير والترحيل
صدر Supabase docker-compose 0.8.0 في 11 أغسطس 2026 (المصدر: https://github.com/supabase/supabase/blob/master/docker/CHANGELOG.md)، ويستبدل Kong بـEnvoy كبوابة API. هذا التغيير شفاف لمعظم عمليات النشر، لكنه يُزيل مستمع TLS على المنفذ 8443.
ما الذي يتغير. إذا كان الوسيط العكسي أو سكربتات التحقق من الصحة تُنفّذ طلبات HTTPS مباشرة إلى https://ip:8443، فستفشل هذه الطلبات صامتةً بعد الترقية. يجب إسناد إنهاء TLS حصراً إلى الوسيط العكسي الأمامي.
خطوات الترحيل. ابحث عن أي مرجع للمنفذ 8443 في سكربتات النشر وفحوص الصحة وقواعد جدار الحماية. استبدلها باستدعاءات على المنفذ 8000 عبر HTTP من الشبكة الداخلية. بعد docker compose pull && docker compose up -d، تحقق من غياب خدمة kong وحضور بوابة Envoy في حالة healthy.
دليل الاختيار — Supabase أم Appwrite لمشروعك؟
اختر Supabase إذا: تطبيقك موجّه للويب أولاً، فريقك يُتقن PostgreSQL، أو تحتاج واجهة REST API تتولد تلقائياً من مخطط قاعدة البيانات.
اختر Appwrite إذا: تبني تطبيقاً محمولاً عبر منصات متعددة، أو فريقك يعمل بلغات متعددة ويريد اختيار بيئة تشغيل الدوال.
في 2026، المنصتان في تطور متسارع. Appwrite 2.0 تتبنى PostgreSQL بصفة نهائية — مما يُقلّص الميزة التاريخية لـSupabase على هذه النقطة — بينما تُحدّث Supabase بوابتها بـEnvoy.
الأخطاء الشائعة وحلولها
- Supabase — 502 Bad Gateway: انتظر 30-60 ثانية. إذا استمر:
docker compose restart supabase-rest-proxy(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 — 503 عند الإقلاع: الترحيلات جارية (2-5 دقائق). لا تُعد تشغيل الحاويات.
- Appwrite —
docker compose down -v: خطر — يحذف جميع البيانات. لا تشغّله في الإنتاج. - Appwrite — timeout الدوال: cold start لبيئة غير مُستخدمة قد يتجاوز الحد الافتراضي. ارفع الحد في إعدادات المشروع.
- Appwrite 2.0 — ترحيل محظور: يجب المرور بـ1.9.6 قبل 2.0. تخطي هذه الخطوة يجعل الترحيل مستحيلاً. استعد نسختك الاحتياطية وابدأ من جديد.
- Appwrite 2.0 — إعادة تعيين كلمة المرور/الدعوات معطوبة: المشكلة #13547 مؤكدة في الاستضافة الذاتية. اختبر هذه المسارات قبل الإنتاج.
- Appwrite 2.1.0 — متغيرات محذوفة: احذف
_APP_LOGGING_PROVIDERو_APP_LOGGING_CONFIG_REALTIMEمن.envقبل الترقية.
الخلاصة : منصتان ممتازتان وفلسفتان مختلفتان
تُعدّ Supabase وAppwrite كلتاهما خيارات قوية لاستضافة BaaS مفتوح المصدر على خادم VPS. تتألق Supabase بعمقها في PostgreSQL وواجهة API التلقائية ولوحة Studio المتطورة. تتميز Appwrite بخفة وزنها النسبية وتنوع بيئات تشغيل الدوال وجودة حزم تطوير التطبيقات المحمولة.
في سبتمبر 2026، كلتا المنصتَين تمران بتحديثات هيكلية: Appwrite 2.0 تتبنى PostgreSQL بصفة نهائية، وSupabase 0.8.0 تتحول من Kong إلى Envoy. خطّط لعمليات الترحيل بنسخ احتياطية كاملة وبيئات اختبار والتحقق من المسارات الحرجة — لا سيما مصادقة البريد الإلكتروني لـAppwrite 2.0. تبدأ الخطط من 99 درهم/شهر على ServOrbit.