alawadi.cloudمستندات
أدلّة الاستخدام

انشر تطبيقاً من سوق التطبيقات بنقرة واحدة

اختر تطبيقاً من مجموعة منتقاة مثل WordPress أو n8n وانشره بنقرة واحدة — تنشئ المنصّة قاعدة البيانات المُدارة وتربطها وتُرفِق التخزين ويعمل تطبيقك على رابط عام.

سوق التطبيقات (Marketplace) مجموعة منتقاة من أشهر التطبيقات المفتوحة المصدر — WordPress وn8n وUptime Kuma وغيرها — تنشرها بنقرة واحدة. تختار التطبيق وتسمّيه، وتتولّى المنصّة البقية: تطبيق Docker نفسه، وقاعدة بيانات مُدارة إن احتاجها التطبيق، وتخزيناً دائماً حيث يحفظ التطبيق ملفاته، وربط الخدمات، ورابطاً عاماً مع شهادة TLS مُدارة.

ماذا يعني «منتقى»؟

كل تطبيق في السوق يعمل من حزمة Docker ثابتة تثبّتها المنصّة على إصدار مستقر حديث:

  • تأتي الحِزم حصراً من حِزم Docker الرسمية، أو من ناشرين معتمدين، أو من حِزم تبنيها المنصّة بنفسها.
  • كل مرجع حزمة غير قابل للتغيير: مثبَّت على بصمة (digest) دقيقة، ويخضع لفحص أمني قبل دخوله السوق وقبل أي تحديث عليه.
  • تُصدر المنصّة تحديثات الإصدارات كتحديثات على السوق نفسها: الإصدار المثبَّت الجديد يسري على عمليات النشر الجديدة، وتطبيقك القائم لا يُحدَّث تلقائياً من دون علمك أبداً.

تعرض بطاقة كل تطبيق في السوق الإصدار المثبَّت الذي سيُنشر بدقّة.

انشر تطبيقاً

افتح سوق التطبيقات من لوحة التحكم واختر تطبيقاً. تعرض البطاقة الإصدار المثبَّت والفئة وما إذا كان التطبيق يحتاج قاعدة بيانات مُدارة.
أعطِ التطبيق اسماً واختر المشروع الذي ينضم إليه — مشروعاً قائماً أو مشروعاً جديداً تنشئه من النافذة نفسها. تظهر الموارد المضبوطة مسبقاً مع تقدير للسعر قبل التأكيد؛ ويُفوتَر تطبيق السوق تماماً كما لو بنيت المكوّنات نفسها يدوياً.
أكِّد. إجراء واحد يتولّى البقية: تنشئ المنصّة قاعدة البيانات المُدارة إن احتاجها التطبيق (MySQL أو PostgreSQL)، وتربطها به ليُحقَن الاتصال تلقائياً (نفس ربط الخدمات الذي يستخدمه أي تجميع يدوي)، وتُرفِق تخزين التطبيق حيث يحفظ ملفاته، ثم تشغّله.
يعمل التطبيق على نطاق فرعي خاص به *.alawadi.cloud مع شهادة TLS مُدارة. وإن أُنشئت قاعدة بيانات، تظهر بيانات اتصالها مرة واحدة في شاشة النجاح — علماً أن التطبيق موصول بها مسبقاً، فلا حاجة لنسخ أي شيء إليه يدوياً.

نموذج الحزمة المثبَّتة: بلا مسار نشر، عن قصد

الحزمة مقفلة

تطبيق السوق بلا تبويب نشر وبلا أي تحكّم بالحزمة. لا يمكنك رفع حزمة جديدة إليه، ولا تغيير وسم الحزمة، ولا التراجع عن النشر، ولا النشر إليه من GitHub Actions أو من مستودعك الخاص. أي محاولة نشر — من البوابة أو عبر API أو من CI — تُرفض بالرمز 409 MARKETPLACE_IMAGE_LOCKED.

هذا ما يُبقي السوق آمنة: الحزمة التي تعمل هي دائماً البصمة الدقيقة التي انتقتها المنصّة وفحصتها وثبّتتها. وكل ما عدا ذلك يعمل كأي تطبيق Docker عادي:

  • متغيّرات البيئة والسجلّات المباشرة والمقاييس وإعادة التشغيل/الإيقاف/التشغيل كلها تعمل كالمعتاد.
  • التوسيع: التطبيقات عديمة الحالة (stateless) مثل Umami وMetabase يمكن توسيع عدد نسخها وتفعيل التوسّع التلقائي لها. أما التطبيقات ذات تخزين التطبيق فتعمل بنسخة واحدة.
  • النطاقات المخصّصة والخدمات المرتبطة تعمل كالمعتاد.

تخزين التطبيق

حيث يحتاج التطبيق قرصاً — ملفات WordPress وإضافاته، وبيانات مسارات n8n، ومستودعات Gitea — تُرفِق المنصّة تخزيناً دائماً تلقائياً عند النشر، على المسار الذي يتوقّعه التطبيق. التطبيقات ذات التخزين تعمل بنسخة واحدة. أما التطبيقات عديمة الحالة فتحفظ كل بياناتها في قاعدة PostgreSQL المُدارة الخاصة بها.

تشكيلة الإطلاق

التطبيقما هوقاعدة بيانات مُدارةتخزين التطبيق
WordPressنظام إدارة محتوى وبناء مواقعMySQL — تُنشأ وتُربط تلقائياًنعم — ملفات الموقع
n8nأتمتة سير العملنعم — المسارات وبيانات الدخول
Uptime Kumaمراقبة جاهزية المواقعنعم — بيانات المراقبة
Vaultwardenمدير كلمات مرور (متوافق مع Bitwarden)نعم — بيانات الخزنة
Umamiتحليلات ويبPostgreSQL — تُنشأ وتُربط تلقائياً— (عديم الحالة)
Metabaseلوحات تحليل وذكاء أعمالPostgreSQL — تُنشأ وتُربط تلقائياً— (عديم الحالة)
Giteaاستضافة مستودعات Gitنعم — المستودعات

البطاقة التي تظهر بحالة قريباً لا يمكن نشرها بعد — يبقى زر النشر معطّلاً حتى يتوفّر التطبيق.

ملاحظات لكل تطبيق

  • WordPress يعمل من حزمة مُقوّاة تبنيها المنصّة انطلاقاً من حزمة WordPress الرسمية، ليعمل بدون صلاحيات root ضمن بيئة التشغيل القياسية. وهو WordPress كما هو تماماً — تثبّت الإضافات والقوالب من لوحة إدارة WordPress كالمعتاد.
  • Vaultwarden: لوحة إدارة الخادم (/admin) معطّلة افتراضياً — وهذا الخيار الأسلم. تطبيقات Bitwarden وإضافات المتصفح تتصل كالمعتاد.
  • n8n: مفتاح التشفير الذي يحمي بيانات الدخول المخزّنة يُولَّد لك عند النشر.
  • Uptime Kuma وGitea يحفظان بياناتهما على تخزين التطبيق؛ ويعمل Gitea من الحزمة الرسمية بنمط rootless.
  • Umami وMetabase يعملان بلا حالة على قاعدة PostgreSQL المُدارة: كل البيانات تعيش في قاعدة البيانات.

المسار المتقدم: عبر API

نقطتا نهاية تقفان خلف سوق التطبيقات. لعرض التشكيلة:

curl https://api.alawadi.cloud/v1/marketplace/apps \
  -H "Authorization: Bearer $TOKEN"

يحمل كل عنصر معرّف التطبيق slug، واسمه ووصفه بالعربية والإنجليزية، والفئة category، والإصدار المثبَّت version والحزمة image، والمنفذ port، وrequires_db (mysql أو postgres أو فارغ)، وحجم التخزين، والموارد المضبوطة مسبقاً، وحالته status (available أو coming_soon).

ولنشر تطبيق في مشروع:

curl -X POST https://api.alawadi.cloud/v1/projects/$PROJECT_ID/marketplace/n8n \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "name": "my-blog", "display_name": "My Blog" }'

تُعيد استجابة 201 التطبيق الجديد، ومعه — إن احتاج التطبيق قاعدة بيانات — الكائن database مع كتلة اتصال تظهر مرة واحدة.

الأخطاء

الرمزالحالةالمعنى
MARKETPLACE_APP_UNKNOWN404المعرّف غير موجود في السوق.
MARKETPLACE_APP_UNAVAILABLE409التطبيق بحالة coming_soon ولا يمكن نشره بعد.
MARKETPLACE_IMAGE_LOCKED409جرت محاولة نشر على تطبيق من السوق. الحزمة المثبَّتة لا تُغيَّر.
MARKETPLACE_DISABLED403سوق التطبيقات معطّلة على مستوى المنصّة.

راجع رموز الأخطاء لمعرفة الشكل العام للأخطاء.

في هذه الصفحة