أدلة 12 دقائق قراءة

صفر خبرة تقنية وصفر تكلفة: أنشئ مدونتك المستقلة على نطاق علوي خاص بك في 30 دقيقة (دليل CF CMS خطوة بخطوة)

صفر خبرة تقنية وصفر تكلفة باستثناء النطاق: 8 خطوات لإنشاء مدونة على نطاق علوي خاص بك فوق الخطة المجانية من Cloudflare باستخدام CF CMS، وكيفية تشغيلها يوميًا.

هل مررت بلحظة كهذه من قبل؟

تكتب على منصة ما منذ سنتين، ثم يكفي تقييد واحد للوصول أو حظر واحد للحساب حتى يختفي محتواك ومتابعوك في لحظة.

تقرر أن تنشئ مدونتك الخاصة، فتبحث عن شرح: استأجر خادمًا، جهّز البيئة، اضبط Nginx، فعّل HTTPS، وتصدَّ للهجمات كل يوم… فتستسلم قبل أن تكتب كلمة واحدة.

هذا المقال مكتوب لك.

سأرافقك خطوة بخطوة لإنشاء مدونة مستقلة على نطاق علوي خاص بك فوق Cloudflare، باستخدام المشروع مفتوح المصدر CF CMS. والموقع الذي تقرؤه الآن بُني بهذه الطريقة نفسها.

لنكن واضحين منذ البداية:

  • صفر خبرة تقنية: لا تحتاج إلى البرمجة. كل ما في الأمر نسخ ولصق ثم Enter. وإن لم تكن لديك رغبة حتى في ذلك، فسلّم الأوامر إلى وكيل ذكاء اصطناعي ودعه ينفذها.
  • صفر تكلفة: باستثناء النطاق نفسه (الامتدادات الرخيصة تكلف بضعة دولارات في السنة)، يعمل الموقع وقاعدة البيانات وتخزين الصور والترجمة التلقائية كلها على الخطة المجانية من Cloudflare. لا حاجة لاستئجار أي خادم.

مستعد؟ لنبدأ.

الخلاصة أولًا: ماذا ستحصل عليه

  • ✅ نطاق علوي خاص بك، مثل yourdomain.com
  • ✅ HTTPS تلقائي + شبكة CDN عالمية، بسرعة لا تقل عن المواقع الكبرى
  • ✅ خمس لغات: الصينية والإنجليزية واليابانية والإسبانية والعربية. تكتب مرة واحدة وتُترجم عند الحفظ
  • ✅ 8 قوالب جاهزة + شعار وأيقونة favicon ولون سمة بنقرة واحدة
  • ✅ لوحة تحكم مخفية خلف مسار سري عشوائي؛ فزيارة /admin مباشرة تعيد 404
  • ✅ واجهة MCP مدمجة، ليتمكن وكيل ذكاء اصطناعي من نشر المقالات وتعديل الإعدادات نيابة عنك

كل ما تحتاجه ثلاثة أشياء:

  • نطاق (سأشرح لك كيف تشتريه)
  • حساب مجاني على Cloudflare
  • حاسوب يمكنك فتح الطرفية عليه (macOS / Linux؛ وعلى Windows يُنصح باستخدام WSL)

مخطط واحد: أين يعمل كل هذا فعلًا؟

مخطط بنية CF CMS: يصل الزوار إلى yourdomain.com عبر DNS وشبكة CDN من Cloudflare ثم إلى Pages Functions، وخلفها قاعدة بيانات D1 وتخزين الصور R2 والترجمة عبر Workers AI

باختصار:

  • Pages: الموقع نفسه، يتولى عرض الصفحات
  • D1: قاعدة البيانات، تحفظ المقالات والوسوم والإعدادات
  • R2: لتخزين الصور
  • Workers AI: يترجم مقالك إلى اللغات الأربع الأخرى عند الحفظ

لا يوجد خادم واحد عليك صيانته. التحديثات الأمنية والتوسّع والحماية من هجمات DDoS كلها من مسؤولية Cloudflare.

العملية كاملة في صورة واحدة: 8 خطوات

الخطوات الثماني من الصفر إلى الإطلاق: شراء نطاق، ربطه بـ Cloudflare، إنشاء رمز API، تفعيل R2، الحصول على الكود، النشر بأمر واحد، الدخول إلى لوحة التحكم المخفية، الكتابة والتشغيل

إن سار كل شيء على ما يرام، فالأمر يستغرق من 30 إلى 60 دقيقة. والخطوة الوحيدة التي تحتاج فعلًا إلى تفكير هي الأولى: اختيار اسم جيد.

الخطوة 1: اشترِ نطاقًا

النطاق هو عنوانك على الإنترنت، وهو الشيء الوحيد في هذا الحل الذي يكلّف مالًا.

يمكنك الشراء من أي مسجّل موثوق، مثل Spaceship أو Cloudflare Registrar أو Namecheap. اختر مسجّلًا بأسعار واضحة وتجديد معقول ويدعم حماية خصوصية WHOIS.

ثلاث نصائح سريعة لاختيار النطاق:

  1. قصير وسهل التذكر وسهل الكتابة. إن استطعت أن تقوله لصديق بصوت عالٍ، فهو نطاق جيد.
  2. انظر إلى سعر التجديد، لا إلى سعر السنة الأولى فقط. بعض الامتدادات رخيصة جدًا في السنة الأولى ثم يتضاعف سعرها عدة مرات في السنة الثانية.
  3. لا تتمسك بـ .com: فامتدادات مثل .cc و.dev و.me مناسبة جدًا للمدونات الشخصية.

الخطوة 2: اربط نطاقك بـ Cloudflare

  1. افتح موقع Cloudflare وأنشئ حسابًا مجانيًا.
  2. اضغط Add a site، وأدخل نطاقك، واختر خطة Free.
  3. سيعطيك Cloudflare عنوانَي خادم أسماء (Nameserver).
  4. ارجع إلى لوحة التحكم لدى المسجّل الذي اشتريت منه النطاق، واستبدل خوادم الأسماء بهذين العنوانين.
  5. انتظر من بضع دقائق إلى بضع ساعات. عندما يظهر في Cloudflare الوضع Active، يكون الأمر قد تم.

نقطة مهمة: يجب أن يكون النطاق في حساب Cloudflare نفسه الذي ستنشر منه لاحقًا. فسكربت التثبيت يبحث عن النطاق باستخدام رمز API.

الخطوة 3: أنشئ رمز API (انسخ ما يلي كما هو)

المسار: أيقونة الملف الشخصي أعلى يمين Cloudflare ← My Profile ← API Tokens ← Create Token ← Create Custom Token.

فعّل الصلاحيات الموضحة في الصورة واحدة تلو الأخرى:

قائمة صلاحيات رمز API في Cloudflare: على مستوى الحساب Cloudflare Pages Edit وD1 Edit وWorkers R2 Storage Edit وAccount Settings Read، وعلى مستوى المنطقة Zone Read وDNS Edit

  • Account · Cloudflare Pages · Edit
  • Account · D1 · Edit
  • Account · Workers R2 Storage · Edit
  • Account · Account Settings · Read
  • Zone · Zone · Read (عند استخدام نطاقك الخاص)
  • Zone · DNS · Edit (عند استخدام نطاقك الخاص)

تنبيهان:

  • لا يحتاج Workers AI إلى أي صلاحية إضافية، فالموقع يستخدم ربط الذكاء الاصطناعي (AI binding) في Pages أثناء التشغيل.
  • هذا الرمز مخصص لسكربت التثبيت فقط، فلا تعطه لوكيل الكتابة. يُعرض مرة واحدة فقط بعد إنشائه، فاحفظه فورًا.

الخطوة 4: فعّل R2

R2 هو مكان حفظ الصور، ويجب تفعيله يدويًا من لوحة التحكم مسبقًا؛ فالسكربت لا يستطيع الضغط على هذا الزر بدلًا منك.

افتح R2 من الشريط الجانبي الأيسر في لوحة تحكم Cloudflare واضغط تفعيل.

⚠️ بصراحة: بعض الحسابات تتطلب إضافة بطاقة أو حساب PayPal قبل تفعيل R2. لا تقلق، فإضافتها لا تعني أنك ستُحاسَب؛ فالاستخدام ضمن الحصة المجانية (10 GB من التخزين) بلا مقابل. ومن الصعب أن تستهلك صور مدونة شخصية هذه الحصة.

هنا بالضبط تعثّر نشري الأول: توقف السكربت في منتصف الطريق برسالة 10042 لأن R2 لم يكن مفعّلًا. فعّلته وأعدت التشغيل، فمرّ كل شيء من المحاولة الأولى.

الخطوة 5: احصل على الكود

CF CMS مفتوح المصدر، والكود موجود على GitHub: github.com/jemkuo/cf-cms

اختر أحد الخيارين:

  • الموصى به: اضغط Fork على GitHub لنسخه إلى حسابك، فيسهل عليك تعديله لاحقًا.
  • أو استنسخه مباشرة:
git clone https://github.com/jemkuo/cf-cms.git
cd cf-cms

تحتاج إلى تثبيت Node.js 20 أو أحدث على حاسوبك (نزّل برنامج التثبيت من الموقع الرسمي واتبع الخطوات).

الخطوة 6: انشر بأمر واحد ⭐

هذه أهم خطوة في المقال كله. أولًا، ضع رمز الخطوة 3 في متغير بيئة (يبقى داخل الطرفية فقط، ولن يطبعه السكربت أبدًا):

export CLOUDFLARE_API_TOKEN=paste-your-token

ثم أمر واحد فقط:

npm install && ./scripts/setup.sh --project myblog --domain yourdomain.com

استبدل myblog باسم المشروع الذي تريده، وyourdomain.com بنطاقك.

لست مطمئنًا؟ أضف --dry-run لتجربة أولية تفحص فقط ولا تنشئ أي شيء:

./scripts/setup.sh --project myblog --domain yourdomain.com --dry-run

يبدأ بـ«فحص شامل» أولًا

قبل أن يلمس أي شيء، يطبع السكربت قائمة فحص مسبق: الرمز والحساب وPages وD1 وR2 والنطاق، بندًا بندًا.

محاكاة طرفية لقائمة الفحص المسبق في setup.sh: يفشل التشغيل الأول بالخطأ 10042 لأن R2 غير مفعّل، وبعد تفعيل R2 تنجح إعادة التشغيل وتنبّه إلى وجود سجلات DNS قديمة على النطاق

  • كلها ✓: ينشئ تلقائيًا قاعدة بيانات D1 وحاوية R2 ومشروع Pages والمفاتيح السرية، ثم ينشر الموقع.
  • يوجد ✗: لا ينشئ أي مورد على الإطلاق، ويخبرك أي خطوة فيها مشكلة، وأين تصلحها في لوحة التحكم، وأي أمر تعيد تشغيله، بالصينية والإنجليزية.
  • لا داعي للبحث عن account id: إذا كان الرمز يرى حسابًا واحدًا فقط، يملؤه السكربت تلقائيًا.

فشل في المنتصف؟ أعد التشغيل ببساطة

يُحفظ التقدم محليًا في الملف .cf-cms-setup.json. إعادة التشغيل تكمل من حيث توقفت، وتُعاد استخدام موارد D1 وR2 وPages التي أُنشئت مسبقًا، فلا تتكرر ولا تُمسح مقالاتك.

سجلات قديمة على نطاقك؟ سيسألك أولًا

إذا كان نطاقك يشير سابقًا إلى خادم آخر، فإن السكربت يعرض أولًا سجلات A / AAAA / CNAME القديمة، ولا يحذفها افتراضيًا.

بعد أن تتأكد من إمكانية استبدالها، أعد التشغيل مع --replace-dns (أو أجب بـ y عند السؤال)، فيستبدلها بسجل CNAME يشير إلى Pages:

سجلات DNS قبل التبديل وبعده: سجلّا A يشيران إلى خادم قديم يُستبدلان بسجل CNAME بسحابة برتقالية يشير إلى yourproject.pages.dev، مع الإبقاء على سجل TXT للتحقق

انتبه: بعد الاستبدال، لن تعود الخدمات التي كان يقدمها الخادم القديم على هذا النطاق متاحة. أما سجلات TXT وغيرها فتبقى كما هي.

بعد انتهاء التشغيل

آخر ما تطبعه الطرفية سطر يحتوي عنوان لوحة التحكم (Admin)، بهذا الشكل:

Admin:      https://yourdomain.com/<ADMIN_SAFEPATH>/admin/

كلمة مرور لوحة التحكم تُولَّد عشوائيًا وتُكتب في الملف .dev.vars داخل مجلد المشروع، ولا تظهر على الشاشة.

👉 احفظ عنوان Admin مع ملف .dev.vars في مكان آمن، فهما مفاتيح مدونتك.

إذا ظهرت حالة النطاق pending فلا تقلق، فإصدار الشهادة وانتشار DNS يستغرقان عادة بضع دقائق.

الخطوة 7: ادخل لوحة التحكم المخفية وامنح موقعك طابعك

افتح عنوان Admin وأدخل كلمة المرور:

لقطة شاشة حقيقية لصفحة تسجيل الدخول إلى لوحة تحكم CF CMS المخفية على العنوان yourdomain.com/<ADMIN_SAFEPATH>/admin/

لماذا نخفيها؟ معظم أدوات الفحص الآلي تطرق /admin و/wp-login. أما لوحة تحكم CF CMS فتقع خلف مسار عشوائي، فزيارة /admin مباشرة تعيد 404 ولا يظهر حتى نموذج تسجيل الدخول.

بعد الدخول، ابدأ بأمرين:

  1. اختر قالبًا: مدونة تقنية شخصية (Dispatch وSignal)، ونمط حياة (Atelier وHearth)، وموقع شركة (Practice وCivic)، وشركة تقنية (Launch وOrbit)، إضافة إلى القوالب الأصلية Paper وInk وTerminal.
  2. أنشئ حزمة الهوية البصرية بنقرة واحدة: اضغط Generate visual kit ليُنشئ تلقائيًا شعارًا وأيقونة favicon ولون سمة متناسقة مع القالب. لم تعجبك؟ أعد التوليد، أو استبدلها بصورك الخاصة.

الخطوة 8: اكتب، واحصل على خمس لغات تلقائيًا

يأتي الموقع بعد نشره مباشرة ببضع مقالات تجريبية لترى شكله:

لقطة شاشة حقيقية للصفحة الرئيسية للمدونة بعد نشر CF CMS بالقالب الافتراضي Paper، مع مبدّل في الأعلى بين الصينية والإنجليزية واليابانية والإسبانية والعربية

بعد أن تلقي نظرة، احذفها واكتب مقالاتك:

  • اكتب بصيغة Markdown: العناوين والقوائم وكتل الكود والصور كلها مدعومة
  • ارفع الصور مباشرة، فتُحفظ في R2
  • فعّل خيار الترجمة عند الحفظ، فيُنشئ Workers AI النسخ الإنجليزية واليابانية والإسبانية والعربية تلقائيًا (مع تنسيق العربية من اليمين إلى اليسار تلقائيًا)
  • اضبط SEO لكل مقال على حدة: الكلمات المفتاحية وعنوان canonical وصورة المشاركة Open Graph

تكتب مرة واحدة، فيجدك القرّاء بخمس لغات. وهذا ما لا تقدمه كثير من المنصات الكبرى.

التشغيل اليومي: اجعل وكيل الذكاء الاصطناعي محررك

إطلاق المدونة مجرد بداية. ما يوفّر عليك الجهد حقًا هو أن التشغيل اليومي يمكن تسليمه للذكاء الاصطناعي بالكامل تقريبًا.

1. اربط وكيل الذكاء الاصطناعي بجملة واحدة

يأتي CF CMS بواجهة MCP مدمجة (على المسار /mcp في نطاقك). في Cursor أو Claude أو أي عميل يدعم MCP، الصق «الوصف في جملة واحدة» الجاهز في ملف README الخاص بالمشروع، ثم أضف ADMIN_API_TOKEN من ملف .dev.vars، وسيتمكن الوكيل من:

  • عرض المقالات وإنشائها وتعديلها ونشرها وحذفها
  • إدارة الوسوم والأقسام والقوالب والشعار
  • رفع الصور

بعد الربط، يكفي أن تقول له:

«أنشئ مسودة بالصينية بالمعرّف edge-notes في قسم notes، وترجمها إلى اللغات الأخرى.»

أمان مدروس: رمز ADMIN_API_TOKEN يدير المحتوى فقط، ولا يستطيع النشر ولا الوصول إلى حسابك في Cloudflare. ولهذا السبب أيضًا لا تعطِ الوكيل رمز Cloudflare من الخطوة 3.

2. غيّر المفاتيح السرية دوريًا

تشك في تسرّب كلمة مرور أو رمز؟ استبدله بأمر واحد:

npx wrangler pages secret put ADMIN_PASSWORD --project-name myblog

والأمر نفسه ينطبق على ADMIN_API_TOKEN وSESSION_SECRET. وبعد اكتمال النشر، يمكنك أيضًا حذف رمز Cloudflare API من الخطوة 3 أو تغييره، ثم إنشاء رمز جديد عند النشر التالي.

3. اعرف حدود الحصة المجانية

المورد دوره في المدونة الحصة المجانية المعتادة
Pages الموقع وFunctions 500 عملية بناء شهريًا، و100,000 طلب Functions يوميًا
D1 المقالات والإعدادات 5 GB، مع حدود يومية لقراءة الصفوف وكتابتها
R2 الصور 10 GB تخزين، وعدد محدود من عمليات القراءة والكتابة
Workers AI الترجمة عند الحفظ 10,000 Neurons يوميًا

راجع الأرقام الحالية في لوحة تحكم Cloudflare. حركة زيارات مدونة شخصية لن تقترب من السقف في الغالب. الترجمة تعمل عند الحفظ فقط، لا مع كل زيارة، وحصة Workers AI تتجدد يوميًا.

4. دليل سريع للأخطاء الشائعة

ما تراه ماذا تفعل
✗ R2 is not enabled، الخطأ 10042 فعّل R2 من لوحة التحكم (قد تحتاج إلى إضافة وسيلة دفع أولًا)، ثم أعد التشغيل
الرمز مرفوض (10000) أو الصلاحيات ناقصة (9109، HTTP 403) أكمل الصلاحيات حسب قائمة الخطوة 3، ثم نفّذ export من جديد وأعد التشغيل
النطاق عالق في حالة pending راجع سجلات A / AAAA / CNAME القديمة التي يعرضها السكربت، وبعد التأكد أعد التشغيل مع --replace-dns؛ وحتى بعد ضبط DNS تحتاج الشهادة إلى بضع دقائق
اسم مشروع Pages مستخدم اختر اسمًا آخر عبر --project
D1 أو R2 أو Pages موجود مسبقًا أعد التشغيل ببساطة، فالموارد ذات الاسم نفسه يُعاد استخدامها
خطأ في الشبكة تحقق من الاتصال وأعد التشغيل، وستُتخطى الخطوات المكتملة

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

عن «صفر خبرة تقنية»: بصراحة

صحيح أنك ستفتح الطرفية وتكتب بعض الأوامر خلال هذه العملية.

لكنك لست بحاجة إلى فهم ما تفعله. كل ما عليك هو:

  1. انسخ الأمر
  2. الصقه في الطرفية
  3. اضغط Enter وتحقق من عدم ظهور ✗

والطريقة الأكسل: أعطِ هذا المقال وملف README لوكيل الذكاء الاصطناعي ودعه ينفذ كل شيء عنك. وعندما يتوقف، فإما أنه يحتاج منك إلى نقرة في لوحة التحكم (مثل تفعيل R2)، أو إلى تأكيد منك (مثل استبدال DNS). اتبع التعليمات فقط.

لنحسبها

البند التكلفة
النطاق بضعة دولارات سنويًا فما فوق (حسب الامتداد)
الخادم 0 (Cloudflare Pages)
قاعدة البيانات 0 (الحصة المجانية لـ D1)
تخزين الصور 0 (الحصة المجانية لـ R2)
الترجمة إلى خمس لغات 0 (الحصة المجانية لـ Workers AI)
شهادة HTTPS + CDN 0
برنامج CMS 0 (مفتوح المصدر)

باستثناء النطاق، لن تنفق قرشًا واحدًا.

في الختام

المنصات تمنحك الانتشار، لكن الأرض تبقى دائمًا ملكًا لها.

المدونة المستقلة هي أصلك الرقمي الحقيقي: النطاق لك، والمحتوى لك، والقرّاء يصلون إليك مباشرة.

اخطُ الخطوة الأولى اليوم: اختر نطاقًا يعجبك، واتبع هذا المقال من أوله إلى آخره.

إن واجهتك مشكلة أثناء الإنشاء، فاترك تعليقًا. وإن وجدت المشروع مفيدًا، فنجمة ⭐ لـ CF CMS على GitHub موضع تقدير دائمًا.

في المقال القادم: كيف تجعل وكيل الذكاء الاصطناعي يدير هذه المدونة عنك كل يوم.