دليل النشر

Supabase مقابل Appwrite: أي واجهة خلفية مستضافة ذاتياً لخادم VPS الخاص بك؟

انشر على VPS Cloud →

مقارنات9 دقيقة قراءة

Supabase مقابل Appwrite: أي واجهة خلفية مستضافة ذاتياً لخادم VPS الخاص بك؟

Supabase وAppwrite هما العملاقان في مجال الواجهة الخلفية كخدمة (backend-as-a-service) مفتوحة المصدر. يوفّر كلاهما المصادقة، وقاعدة البيانات، والتخزين، والدوال، لكن بفلسفتين متعاكستين: يتمحور Supabase حول PostgreSQL، وAppwrite حول تجريد متعدّد القواعد موجَّه للمطوّرين. إليك كيفية الاختيار واستضافتهما ذاتياً على خادم VPS الخاص بك.

لماذا تستضيف واجهتك الخلفية BaaS بنفسك

توفّر عليك الواجهة الخلفية كخدمة (BaaS) إعادة كتابة المصادقة، والصلاحيات، وتخزين الملفات، وواجهات API الآنيّة لكل مشروع. لكن العروض السحابية لـ Supabase وAppwrite تحاسب على الاستخدام (الصفوف المقروءة، والتخزين، والمستخدمون النشطون شهرياً MAU) وتقيّد الوصول إلى قاعدة البيانات الأساسية. وباستضافتها ذاتياً على خادم VPS، تستعيد وصولاً مباشراً بلغة SQL، وتكاليف ثابتة يمكن توقّعها، وسيادة تامة على بيانات المستخدمين، وهو أمر حاسم للامتثال. يعتمد Supabase كلياً على PostgreSQL ويعرض واجهة REST/GraphQL مولَّدة تلقائياً إضافةً إلى الآنيّة عبر سجلات WAL. أما Appwrite فيجرّد الاستمرارية خلف واجهته الخاصة ويضمّ أصلاً دوالّ عديمة الخادم (serverless) متعددة بيئات التشغيل، ونظام صلاحيات دقيقاً حتى مستوى المستند، ومحرّك إعادة ترميز للصور.

مزايا استضافة BaaS ذاتياً

  • وصول SQL مباشر إلى PostgreSQL (Supabase) للاستعلامات والعروض (views) والترحيلات دون وسيط.
  • تكاليف ثابتة مرتبطة بخادم VPS، دون محاسبة على عدد الصفوف المقروءة أو المستخدمين النشطين.
  • بيانات المستخدمين والملفات مستضافة محلياً: تحكّم في مكان إقامة البيانات.
  • تخصيص الدوال عديمة الخادم ببيئات التشغيل والاعتماديات الخاصة بك.
  • لا بدء بارد (cold start) ولا حصص تنفيذ مفروضة من سحابة خارجية.
  • التكامل مع شبكة Docker الخاصة مع بقية خدماتك الداخلية.
المعيارSupabaseAppwrite
قاعدة البياناتPostgreSQL أصلية (وصول SQL كامل)تجريد خاص (MariaDB في الأساس)
الواجهة المعروضةREST + GraphQL مولّدتان تلقائياً (PostgREST)REST + GraphQL + SDK متعدد اللغات
الآنيّةاشتراكات على تغيّرات PostgreSQLقنوات آنيّة لكل مجموعة (collection)
الدوال عديمة الخادمEdge Functions (Deno)دوال متعددة بيئات التشغيل (Node، Python، PHP، Dart…)
الصلاحياتRow Level Security في PostgreSQLصلاحيات لكل مستند ولكل دور
بنية الحاوياتحزمة مركّبة (~10 خدمات)حزمة مركّبة حول حاوية رئيسية
الذاكرة الموصى بها للاستضافة الذاتية4 غيغابايت كحد أدنى2 إلى 4 غيغابايت
الجمهور المستهدفالفرق المرتاحة مع SQLالمطوّرون الباحثون عن واجهة موحّدة

متطلبات نشر سليم

Supabase المستضاف ذاتياً حزمة مركّبة من نحو عشر حاويات (Postgres، GoTrue، PostgREST، Realtime، Storage، Kong، Studio…). جهّز خادم VPS بما لا يقل عن 2 vCPU و4 غيغابايت من الذاكرة، مع 20 غيغابايت من قرص SSD/NVMe لقاعدة البيانات والملفات. أما Appwrite فأكثر تواضعاً عند الإقلاع: 2 vCPU و2 غيغابايت من الذاكرة تكفي للبدء، لكن ارتقِ إلى 4 غيغابايت بمجرد أن تعمل الدوال عديمة الخادم، لأن كل تنفيذ يُطلق حاوية. في الحالتين: Docker Compose v2 إلزامي، ونطاق مخصّص (api.mydomain.com)، ووسيط عكسي يدير HTTPS وWebSockets (لا غنى عنهما للآنيّة).

انشر واجهتك الخلفية المستضافة ذاتياً

01

الحصول على الحزمة الرسمية

بالنسبة لـ Supabase: git clone --depth 1 https://github.com/supabase/supabase ثم انسخ docker/.env.example إلى .env. بالنسبة لـ Appwrite، يتم التثبيت عبر docker run لسكربت تهيئة يولّد docker-compose.yml و.env.

02

توليد الأسرار وتحصينها

هذه أكثر خطوة حرِجة. أعِد حتماً توليد POSTGRES_PASSWORD وJWT_SECRET وANON_KEY وSERVICE_ROLE_KEY لـ Supabase؛ فالمفاتيح الافتراضية علنية. بالنسبة لـ Appwrite، حدّد _APP_OPENSSL_KEY_V1 وكلمة مرور قوية للمدير.

03

إعداد النطاق والروابط العامة

املأ API_EXTERNAL_URL=https://api.mydomain.com وSITE_URL من جهة Supabase، أو _APP_DOMAIN و_APP_DOMAIN_TARGET من جهة Appwrite، كي تكون عمليات إعادة توجيه OAuth وروابط البريد الإلكتروني صحيحة.

04

تشغيل الحزمة

نفّذ docker compose up -d. راقب docker compose ps: يجب أن تنتقل جميع الخدمات إلى healthy. يُقدَّم Supabase Studio عبر Kong على المنفذ 8000، وواجهة Appwrite على 80/443 الداخلي.

05

وضع Kong/Appwrite خلف HTTPS

مع Traefik أو Caddy، وجّه api.mydomain.com نحو المنفذ المعروض وفعّل تمرير WebSockets (Upgrade/Connection) للآنيّة. افرض إعادة التوجيه من HTTP إلى HTTPS.

06

التهيئة والاختبار

أنشئ أول مشروع/مستخدم عبر Studio (Supabase) أو وحدة التحكم (Appwrite)، ثم اختبر المصادقة واستعلاماً من SDK للعميل. تحقّق من أن الاشتراكات الآنيّة تنقل التغييرات جيداً.

بالنسبة لـ Supabase في الإنتاج، لا تخزّن قاعدة البيانات على وحدة تخزين Docker الافتراضية أبداً: اربط وحدة تخزين مخصّصة وجدوِل عمليات pg_dump مشفّرة إلى تخزين خارجي، لأن الاستعادة من وحدة تخزين تالفة أمر لا يمكن إدارته. فعّل أيضاً Row Level Security على جميع جداولك منذ الإنشاء، وإلا فإن ANON_KEY يمنح وصولاً كاملاً. على صعيد Appwrite، قيّد زمن تشغيل الدوال وعدد حاويات التنفيذ المتزامنة عبر _APP_FUNCTIONS_* لمنع ذروة من الطلبات من إشباع خادم VPS.

واجهتك الخلفية الكاملة على خادم VPS مخصّص

انشر Supabase أو Appwrite على خادم VPS Cloud من ServOrbit مع Docker، وتخزين NVMe، وموارد قابلة للتوسّع. القالب المُعَدّ مسبقاً يوفّر عليك خطوة التثبيت.

بحاجة إلى مساعدة؟

تصفّح مركز المساعدة والأسئلة الشائعة، أو راسل فريقنا — الدعم بـ العربية والفرنسية والإنجليزية.