انشر تطبيق Next.js على alawadi.cloud في ٥ دقائق

دليل عملي خطوة بخطوة: تجهيز تطبيق Next.js (أو أيّ تطبيق Node.js) كصورة Docker ونشره على alawadi.cloud عبر GitHub Actions وOIDC، دون تخزين أيّ كلمة مرور أو مفتاح ثابت.

BlnTek Solutions · قراءة في ٣ دقائق
نشرnextjsgithub-actionsdocker

لديك تطبيق Next.js (أو أيّ تطبيق Node.js)، وتريده حيّاً على رابط حقيقي، بشهادة TLS ونشر تلقائي من GitHub وقاعدة بيانات Postgres مُدارة في المشروع ذاته. هذا بالضبط ما يفعله هذا الدليل، في خمس دقائق تقريباً من العمل الفعلي.

ما ستحتاجه

  • تطبيق Next.js في مستودع GitHub
  • Docker Desktop (لبناء صورة التطبيق واختبارها محلياً)
  • حساب على alawadi.cloud (افتح البوابة، أو راسل الدعم إن احتجت صلاحية دخول للنسخة التجريبية)

الخطوة ١: اكتب ملف Dockerfile للإنتاج

أنشئ ملف Dockerfile في المجلد الرئيسي للمستودع. يبني Next.js نسخةً مستقلّة نضعها داخل صورة Node خفيفة:

dockerfile
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
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
COPY --from=builder /app/public ./public
EXPOSE 3000
CMD ["node", "server.js"]

وتأكّد من ضبط output: "standalone" في ملف next.config.ts.

الخطوة ٢: أنشئ مشروعاً وتطبيقاً على alawadi.cloud

١. ادخل بحساب Google على portal.alawadi.cloud ٢. انقر على مشروع جديد وأعطه اسماً ٣. داخل المشروع، انقر على إضافة تطبيق ٤. اختر اسماً للتطبيق (مثل web)، واترك حقل صورة Docker فارغاً الآن

الخطوة ٣: هيّئ النشر التلقائي عبر GitHub OIDC

في تبويب النشر داخل التطبيق، انقر على إعداد GitHub OIDC، ثم أدخل اسم المستودع (owner/repo) والفرع الذي تنشر منه (مثل main).

بهذا يستطيع GitHub Actions رفع صورة Docker ونشرها باسم هذا التطبيق، دون حفظ أيّ كلمة مرور أو مفتاح ثابت.

الخطوة ٤: أضف سير عمل GitHub Actions

أنشئ ملف .github/workflows/deploy.yml:

yaml
name: النشر على alawadi.cloud
 
on:
  push:
    branches: [main]
 
permissions:
  id-token: write
  contents: read
 
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
 
      - name: بناء حزمة Docker ورفعها
        run: |
          docker build -t registry.alawadi.cloud/${{ secrets.REGISTRY_SLUG }}/web:${{ github.sha }} .
          echo "${{ secrets.REGISTRY_PASSWORD }}" | \
            docker login registry.alawadi.cloud -u ${{ secrets.REGISTRY_USER }} --password-stdin
          docker push registry.alawadi.cloud/${{ secrets.REGISTRY_SLUG }}/web:${{ github.sha }}
 
      - name: الحصول على رمز النشر
        id: token
        run: |
          TOKEN=$(curl -sf -X POST \
            https://api.alawadi.cloud/v1/containers/${{ secrets.CONTAINER_ID }}/deploy-token \
            -H "Authorization: Bearer $ACTIONS_ID_TOKEN_REQUEST_TOKEN" \
            -H "Content-Type: application/json" | jq -r .token)
          echo "token=$TOKEN" >> $GITHUB_OUTPUT
 
      - name: النشر
        run: |
          curl -sf -X POST \
            https://api.alawadi.cloud/v1/containers/${{ secrets.CONTAINER_ID }}/deploy \
            -H "Authorization: Bearer ${{ steps.token.outputs.token }}" \
            -H "Content-Type: application/json" \
            -d '{"image":"registry.alawadi.cloud/${{ secrets.REGISTRY_SLUG }}/web:${{ github.sha }}"}'

أضف REGISTRY_SLUG وREGISTRY_USER وREGISTRY_PASSWORD وCONTAINER_ID بوصفها أسراراً في إعدادات المستودع على GitHub.

الخطوة ٥: أضف قاعدة بيانات Postgres

داخل المشروع ذاته، انقر على إضافة قاعدة بيانات ← Postgres. يُحقن رابط الاتصال تلقائياً في تطبيقك كمتغيّر بيئة اسمه DATABASE_URL. اقرأه في تطبيقك:

ts
// lib/db.ts
import { Pool } from "pg";
export const pool = new Pool({ connectionString: process.env.DATABASE_URL });

ما ستحصل عليه

  • نشر تلقائي مع كلّ رفع إلى فرع main، دون أن تتسرّب كلمة مرور أو مفتاح
  • سجلّات مباشرة من لوحة تحكم البوابة
  • قاعدة Postgres مُدارة داخل بيئة المشروع المعزولة ذاتها
  • شهادة TLS على نطاقك الفرعي .alawadi.cloud، تُدار تلقائياً
  • إعادة تشغيل وإيقاف وتشغيل من لوحة التحكم أو من واجهة البرمجة

ادفع الكود إلى main، تابع سير عمل GitHub، ويصبح تطبيقك حيّاً.


لديك أسئلة؟ افتح تذكرة دعم في البوابة، أو راسل [email protected].

مشاركة
BlnTek Solutions

الشركة المطوّرة لمنصّة alawadi.cloud

شركة تبني منصّة سحابية عربية الهوية، من الخوادم الفعلية وصولاً إلى تجربة المطوّرين.

مقالات ذات صلة

saas

إطلاق تطبيق SaaS خطوة بخطوة: نشر تطبيق Docker وقاعدة بيانات PostgreSQL مُدارة ونطاقك الخاص

قائمة إطلاق عملية على alawadi.cloud: انشر تطبيق Docker عبر Cloud Studio، أضِف قاعدة بيانات PostgreSQL مُدارة، اربط نطاقك الخاص، خُذ نسخاً احتياطية إلى التخزين السحابي، وفعّل المراقبة والتنبيهات، وكلّ خطوة مطابقة لما تفعله في البوابة فعلاً.

· قراءة في ٥ دقائق

استضافة

استضافة مواقع وتطبيقات في سوريا: ما الذي يحتاجه تطبيقك ليصل إلى مستخدميه فعلاً؟

دليل عملي لكلّ من يريد استضافة موقع أو تطبيق لمستخدمين داخل سوريا: زمن الاستجابة، وعقدة الدفع من دون بطاقة دولية، ومشاكل الوصول في زمن العقوبات، والحاجة إلى أدوات عربية أولاً — وكيف تحلّ alawadi.cloud كلّ واحدة منها حلاً ملموساً.

· قراءة في ٥ دقائق

ووردبريس

إنشاء مواقع ووردبريس بدون إدارة خادم — الدليل العملي

إنشاء مواقع ووردبريس بدون إدارة خادم: ادمج الإضافات والقالب في حزمة Docker صغيرة، واحفظ المحتوى في قاعدة MySQL مُدارة، وأرسل الوسائط إلى تخزين متوافق مع S3. دليل صادق خطوة بخطوة — بما فيه ما لا يعمل. ابدأ مجاناً برصيد تجريبي بقيمة 5 دولارات.

· قراءة في ٦ دقائق

أطلق تطبيقك على alawadi.cloud

انشر خلال دقيقة تقريباً، وادفع بطرق تعمل فعلاً في منطقتنا، مع دعم يردّ عليك بالعربية.

أنشئ حسابك