لماذا تستضيف Directus ذاتيًا على خادم VPS
يتّصل Directus بقاعدة بياناتك الحالية (PostgreSQL أو MySQL أو SQLite أو MariaDB) دون فرض مخططه الخاص: فهو يفحص جداولك ويولّد واجهة برمجية وواجهة إدارة فوقها. باستضافته ذاتيًا على خادم VPS، تتجنّب التسعير لكل مقعد في العرض السحابي الرسمي، وتحتفظ بمحتواك ووسائطك وقاعدة بيانات SQL الخاصة بك على بنيتك التحتية. إنه خيار هيكلي للوكالات التي تسلّم عدة مواقع: يمكن لـ Directus واحد أن يعمل كمكتب خلفي لعدة واجهات أمامية (Nuxt وNext والجوال). ويتيح لك التحكم في قاعدة البيانات والإضافات وwebhooks دمج Directus في أي مسار بيانات دون الاعتماد على مزوّد خارجي، مع الاستفادة من زمن استجابة منخفض لمستخدميك المحليين.
الفوائد الملموسة للاستضافة الذاتية لـ Directus
- واجهات REST وGraphQL برمجية مُولّدة تلقائيًا من مخطط SQL الخاص بك، دون كتابة كود.
- واجهة إدارة بدون كود لنمذجة المحتوى وإدارة الأدوار والصلاحيات الدقيقة.
- متوافق مع قاعدة بيانات SQL موجودة: يمكنك كشفها دون ترحيلها أو تشويهها.
- إدارة الوسائط، وتحويلات الصور الفورية، وتخزين محلي أو على S3 حسب اختيارك.
- Flows وwebhooks مدمجة لأتمتة المعالجات (الإشعارات والمزامنة).
- الاستخدام المشترك: يمكن لخادم VPS واحد يشغّل Directus أن يغذّي عدة مواقع وتطبيقات واجهة أمامية.
المتطلبات المادية والبرمجية
Directus هو تطبيق Node.js يعتمد على قاعدة بيانات خارجية. احسب حدًا أدنى من 2 غيغابايت من RAM لتشغيل Directus وPostgreSQL بأريحية على خادم VPS نفسه؛ ويُوصى بـ 4 غيغابايت في الإنتاج مع تحويلات الصور وعدة مسؤولين متزامنين. يكفي معالج افتراضي إلى معالجين للبدء. خطّط لذاكرة Redis مؤقتة (اختيارية لكن يُنصح بها للجلسات وتحديد المعدل) ووحدة تخزين من 30 إلى 60 غيغابايت SSD حسب مكتبة وسائطك. ستحتاج إلى Docker وDocker Compose، ونطاق يشير إلى خادم VPS، ومفتاح سري قوي لـ SECRET وتجزئة الرموز (tokens). ويبقى Postgres قاعدة البيانات الموصى بها للميزات المتقدمة.
نشر Directus خطوة بخطوة
تجهيز خادم VPS وDocker
بعد الاتصال عبر SSH، ثبّت Docker وDocker Compose. أنشئ سجل DNS من النوع A لـ cms.mydomain.com يشير إلى عنوان IP الخاص بخادم VPS. افتح المنفذين 80 و443 فقط في جدار الحماية (ufw allow 80,443/tcp).
تعريف الحزمة في docker-compose.yml
أعلن عن ثلاث خدمات: database (صورة postgres:16 مع وحدة تخزين دائمة)، وcache (redis)، وdirectus (directus/directus). اربط Directus بـ Postgres عبر المتغيّرات DB_CLIENT=pg وDB_HOST=database وDB_DATABASE وDB_USER وDB_PASSWORD.
تهيئة متغيّرات البيئة
املأ KEY وSECRET بسلاسل عشوائية (openssl rand -hex 32)، وحدّد ADMIN_EMAIL وADMIN_PASSWORD للحساب الأول، وPUBLIC_URL=https://cms.mydomain.com لتكون الروابط والملفات المرفوعة صحيحة.
بدء التشغيل وتهيئة قاعدة البيانات
نفّذ docker compose up -d. عند أول تشغيل، يُنشئ Directus جداول النظام وحساب الإدارة تلقائيًا. تابع التهيئة بـ docker compose logs -f directus.
توصيل الوكيل العكسي وTLS
ضع Caddy أو Traefik أمام Directus لإدارة Let's Encrypt. مع Traefik، أضف تسميات التوجيه على خدمة directus وأداة حل الشهادات (certresolver) الخاصة بـ ACME. تأكد من أن PUBLIC_URL يطابق تمامًا نطاق HTTPS لتجنّب مشكلات CORS ورفع الملفات.
التأمين والنسخ الاحتياطي
قيّد أصول CORS على نطاقات واجهاتك الأمامية، وعطّل التسجيل العام إن لم يكن ضروريًا، ثم جدوِل pg_dump يوميًا بالإضافة إلى نسخة من مجلد uploads إلى تخزين بعيد.
لخدمة الصور بأداء عالٍ، فعّل تخزين الوسائط على حاوية متوافقة مع S3 بدلاً من القرص المحلي، وخزّن تحويلات الصور مؤقتًا (ASSETS_CACHE_TTL). وباقترانه بشبكة CDN أمام Directus، يخفّف ذلك عن خادم VPS طلبات الوسائط ويسرّع عرض الواجهات الأمامية. فكّر أيضًا في تقييد حجم التحويلات المسموح بها عبر ASSETS_TRANSFORM_MAX_OPERATIONS لتجنّب إساءة استخدام توليد الصور الفوري.