إطلاق تطبيق SaaS خطوة بخطوة: نشر تطبيق Docker وقاعدة بيانات PostgreSQL مُدارة ونطاقك الخاص
قائمة إطلاق عملية على alawadi.cloud: انشر تطبيق Docker عبر Cloud Studio، أضِف قاعدة بيانات PostgreSQL مُدارة، اربط نطاقك الخاص، خُذ نسخاً احتياطية إلى التخزين السحابي، وفعّل المراقبة والتنبيهات، وكلّ خطوة مطابقة لما تفعله في البوابة فعلاً.
بين «الكود يعمل على جهازي» و«منتج SaaS يستقبل عملاء يدفعون» تقف قائمة مهام معروفة: نشر التطبيق، وقاعدة بيانات موثوقة، ونطاق خاص، ونسخ احتياطي، ومراقبة. هذا الدليل يمشي معك في القائمة كاملةً على alawadi.cloud، وكلّ خطوة فيه مطابقة لما ستفعله في البوابة فعلاً، بلا خطوات نظرية.
قبل أن تبدأ
تحتاج إلى ثلاثة أشياء فقط:
- حساب على app.alawadi.cloud: سجّل بحساب Google دون بطاقة، وفعّل الرصيد التجريبي المجاني من داخل البوابة.
- مستودع GitHub فيه كود تطبيقك.
- Docker مثبّت محلياً لتجربة الحزمة قبل النشر.
الخطوة ١: جهّز حزمة Docker لتطبيقك
تطبيقك يعمل على المنصّة كحزمة Docker تستمع على المنفذ 8080 (المنصّة توجّه إليه دائماً) وتعمل بمستخدم غير root. إن لم يكن لديك Dockerfile بعد، فهذا مثال يفي بالمتطلبات لتطبيق Node.js:
FROM node:22-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:22-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production PORT=8080
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
# node:alpine ships a non-root "node" user; the platform rejects root containers.
USER node
EXPOSE 8080
# Bind 0.0.0.0 and read PORT:
# app.listen(process.env.PORT || 8080, "0.0.0.0")
CMD ["node", "dist/server.js"]جرّبها محلياً بـ docker build ثم docker run قبل المتابعة. تفاصيل المتطلبات في مستندات متطلبات التطبيق، ولديك دليل مفصّل لتطبيقات Next.js في درس النشر في ٥ دقائق.
الخطوة ٢: انشر التطبيق عبر Cloud Studio
افتح Cloud Studio في البوابة، واختر تطبيقاً لِما تريد نشره، وسمِّه، واختر وصولاً عاماً. ينشئ Cloud Studio المشروع ويشغّل تطبيقك فوراً على نطاق فرعي عام *.alawadi.cloud بشهادة TLS جاهزة، على حزمة مؤقّتة إلى أن تصل حزمتك الحقيقية في الخطوة التالية.
الخطوة ٣: فعّل النشر التلقائي من GitHub
هنا تربط مستودعك بالتطبيق مرة واحدة، فيصبح كلّ رفع إلى الفرع main نشراً تلقائياً:
- من المستودعات أنشئ مستودع Docker خاصاً، واربطه بمشروعك، وانتظر حتى تصبح حالته جاهزة.
- من صفحة المستودع، أدخل اسم مستودعك على GitHub (بصيغة
owner/repo) في نموذجَي OIDC: الأول يسمح لمستودعك برفع الحزم، والثاني يسمح له ببدء النشر، دون أسرار ثابتة ولا كلمات مرور تُحفظ في GitHub. - اضغط نسخ ملف سير العمل: تحصل على ملف
deploy.ymlجاهزاً بكلّ القيم: عنوان الحزمة، ومعرّف التطبيق، وتسجيل الدخول عبر OIDC. ضعه في.github/workflows/داخل مستودعك. - ارفع التغييرات إلى
mainوراقب سير العمل: يبني GitHub Actions حزمة Docker، ويرفعها إلى مستودعك الخاص، ثم ينشرها.
الدليل الكامل بالصور في مستندات النشر الأول.
الخطوة ٤: أضف قاعدة بيانات PostgreSQL مُدارة
منتج SaaS بلا قاعدة بيانات موثوقة ليس منتجاً. من قواعد البيانات في البوابة اختر قاعدة بيانات جديدة، وحدّد Postgres والاسم والموارد، فتُنشأ القاعدة داخل بيئة مشروعك المعزولة خلال ثوانٍ.
في صفحة القاعدة تجد بطاقة الاتصال، ومنها إجراء الربط بالتطبيق الذي يحقن DATABASE_URL في تطبيقك تلقائياً، دون أن تنسخ كلمة مرور أو تلصقها في أيّ مكان:
// lib/db.ts
import { Pool } from "pg";
export const pool = new Pool({ connectionString: process.env.DATABASE_URL });نحن نتولّى التشغيل والتخزين والنسخ الاحتياطي، وMySQL وRedis متاحان بالطريقة ذاتها. التفاصيل في مستندات قواعد البيانات المُدارة.
الخطوة ٥: اربط نطاقك الخاص
النطاق الفرعي *.alawadi.cloud ممتاز للتجربة، لكنّ منتجك يستحقّ عنوانه الخاص. من صفحة التطبيق أضف نطاقك المخصّص، ووجّه سجلّ DNS كما تعرضه البوابة، وتُدار شهادة TLS تلقائياً عبر Cloudflare. أسعار النطاقات المخصّصة وبقية البنود على صفحة الأسعار.
الخطوة ٦: النسخ الاحتياطي والتخزين السحابي
طبقتان تحميان بياناتك:
- ما تتولّاه المنصّة: نسخ احتياطية يومية مشفّرة من وحدات التخزين الدائمة، تُحفظ خارج الخادم ١٤ يوماً، مع نسخ أسبوعية كاملة تبقى ٨ أسابيع.
- ما تملكه بيدك: مساحة تخزين متوافقة مع S3 على Basin لملفات مستخدميك ونسخك الخاصة، بسعر $0.04 لكل GB شهرياً ونقل بيانات مجاني. جهّز نسخاً ليلياً بأمر
rcloneواحد باتّباع درس النسخ الاحتياطي إلى التخزين السحابي، وابدأ من دليل البدء السريع للتخزين.
والقاعدة الذهبية: النسخة الاحتياطية التي لم تجرّب استعادتها ليست نسخة احتياطية.
الخطوة ٧: المراقبة والتنبيهات والتوسيع
قبل أن تُعلن الإطلاق، ثبّت عينك على منتجك:
- السجلّات المباشرة والمقاييس متاحة من لوحة التحكم لكلّ تطبيق وقاعدة بيانات، مع إعادة التشغيل بضغطة واحدة.
- سياسات التنبيه: أنشئ حتى ١٠ سياسات لكلّ خدمة على المعالج أو الذاكرة أو زمن الاستجابة أو إعادة التشغيل، وتصلك الإشعارات في البوابة وبالبريد بعد تأكيد عنوانك. الشرح في مستندات التنبيهات.
- التوسيع التلقائي: حدّد حدّاً أدنى وأقصى لعدد النسخ، فيتوسّع تطبيقك مع الضغط ويتقلّص بعده تدريجياً. التفاصيل في مستندات التوسيع التلقائي.
يوم الإطلاق: قائمة تحقّق أخيرة
- جرّبت استعادة نسخة احتياطية فعلياً، لا نظرياً.
- سياسة تنبيه حرجة واحدة على الأقلّ مفعّلة على تطبيقك الرئيسي وقاعدة بياناتك.
- نطاقك الخاص يعمل وشهادة TLS خضراء.
- تأكد أن رصيدك يغطّي أول شهر: قدّر التكلفة عبر حاسبة الأسعار، وفعّل الرصيد التجريبي بقيمة 5 دولارات، وراجع تعليمات القسائم الحالية قبل التعبئة.
- صفحة تسجيل الدخول والدفع في منتجك مجرّبة من شبكة مستخدمك الحقيقي، لا من جهازك وحده.
أسئلة شائعة
هل تبنون الكود من المستودع مباشرة؟
لا. GitHub Actions هو من يبني حزمة Docker داخل مستودعك على GitHub، ثم يرفعها إلى مستودعك الخاص على المنصّة وينشرها. البوابة تولّد لك ملف سير العمل جاهزاً بكلّ القيم، فلا تكتب شيئاً يدوياً تقريباً.
هل PostgreSQL هي الخيار الوحيد لقاعدة البيانات؟
لا. Postgres وMySQL وRedis متاحة كلّها كقواعد مُدارة تُنشأ داخل مشروعك خلال ثوانٍ، وبيانات الاتصال تُحقن تلقائياً بالطريقة ذاتها.
كم يستغرق الإطلاق الكامل؟
النشر الأول دقائق قليلة، والقائمة كاملةً (تطبيق وقاعدة بيانات ونطاق خاص ونسخ احتياطي وتنبيهات) جلسة عمل واحدة لمطوّر واحد. لا تحتاج مهندس بنية تحتية متفرّغاً.
كم سيكلّفني تشغيل SaaS صغير؟
تُخصم رسوم الاستخدام من سجلّ رصيد بالدولار، وتظهر كلّ خدمة كبند مستقلّ واضح. ويمكن للحاسبة عرض الدولار أو الليرة أو الدرهم أو الدينار الأردني. ابنِ تقديراً دقيقاً عبر حاسبة الأسعار، ثم فعّل الرصيد التجريبي بقيمة 5 دولارات قبل شراء قسيمة.
هل أحتاج بطاقة ائتمان في أيّ خطوة؟
لا. سجّل بحساب Google وفعّل رصيداً تجريبياً بقيمة 5 دولارات من داخل البوابة. بعده تكون القسائم مسبقة الدفع المسعّرة بالليرة السورية وسيلة التعبئة الوحيدة المتاحة؛ ولا تتوفر تعبئة بالبطاقات أو العملات الرقمية حالياً. لديك سؤال آخر؟ افتح تذكرة دعم في البوابة أو راسل [email protected].
الشركة المطوّرة لمنصّة alawadi.cloud
شركة تبني منصّة سحابية عربية الهوية، من الخوادم الفعلية وصولاً إلى تجربة المطوّرين.