قوالب أنظمة التشغيل وملفات ISO
المسار في لوحة الإدارة: Services › Virtual Machines › Template (
/vm/templates). تُعرض قوالب Proxmox لكل عنقود في Infrastructure › Cloud provider › Providers › (cluster) › Clusters.
الوظيفة
القالب هو صورة نظام التشغيل التي يبدأ منها الجهاز الافتراضي الجديد. لا يخزّن NexCMP الصور بنفسه: بل يقرأ ما يبلّغ عنه CloudStack (القوالب الجاهزة والمميزة) أو ما تدرجه لعنقود Proxmox، ويتيح لك اختيار ما يُباع منها، مع اسم وأيقونة ومستخدم تسجيل دخول موجه للعملاء. توضح هذه الصفحة كيفية تجهيز صور تعمل بسلاسة مع NexCMP: تسجيل الدخول بكلمة المرور، والترقية الحية لـ CPU وRAM، وملف swap، وقرص root يتوسع تلقائياً ليلائم حجم الخطة.
المتطلبات
| العنصر | المتطلب |
|---|---|
| أداة بناء قوالب CloudStack | جهاز Linux مزود بـ libguestfs-tools (virt-customize، virt-sparsify، guestfish) وqemu-utils وcurl ونحو 5 GB من المساحة الحرة على القرص. لا حاجة إلى KVM أو صلاحيات root. يلزم اتصال بالإنترنت لتثبيت الحزم (أو البناء باستخدام --offline). |
| مكان أداة البناء | تأتي مع كل إصدار في /opt/nexcmp/releases/<version>/share/templates/ على خادم اللوحة. لست بحاجة لتشغيلها هناك: انسخ المجلد إلى أي جهاز Linux. |
| خادم ويب | أي خادم HTTP(S) يمكن لجهاز التخزين الثانوي الافتراضي في CloudStack الوصول إليه، لنشر ملف .qcow2 المكتمل. ولا يشترط أن يكون متاحاً عبر الإنترنت. |
| CloudStack | حساب يمتلك صلاحية تسجيل القوالب، ومُعرّف المنطقة (zone ID) ونوع نظام تشغيل متطابق. راجع CloudStack. |
| Proxmox VE | أجهزة افتراضية لقوالب cloud-init مع QEMU guest agent، جهاز واحد لكل نظام تشغيل وكل عقدة. راجع Proxmox VE. |
| يعتمد على | ربط CloudStack أو Proxmox VE أولاً. |
تجهيز البنية التحتية
CloudStack: بناء قالب
الصور الأساسية المدعومة (يتم تنزيل صورة المورّد والتحقق من المجموع الاختباري الخاص بها قبل إجراء أي تغيير):
| الصورة | --distro | مستخدم تسجيل الدخول |
|---|---|---|
| Ubuntu 22.04 | ubuntu-22.04 | ubuntu |
| Ubuntu 24.04 | ubuntu-24.04 | ubuntu |
| Debian 12 | debian-12 | debian |
| Rocky Linux 9 | rocky-9 | rocky |
توزيعات إضافية: أضف سطراً إلى distros.conf (رابط الصورة، وملف المجموع الاختباري، والعائلة deb أو rpm).
انسخ أداة البناء إلى جهاز البناء وشغّلها:
bashcp -r /opt/nexcmp/releases/<version>/share/templates ~/templates && cd ~/templates ./build-template.sh --distro ubuntu-24.04 --version v7 --work ./outأضف
--panel-url https://cloud.example.comلتضمين عميل مراقبة اختياري يعمل عند أول إقلاع ويسجل نفسه في لوحتك (عبر HTTPS فقط). بدونه، لن يُضاف أي عميل. خيارات أخرى:--base <file>لاستخدام صورة قمت بتنزيلها، و--offlineلتخطي تثبيت الحزم.النتيجة هي
out/ubuntu-24.04-v7.qcow2وملف.sha256الخاص به. تنتهي عملية البناء بتشغيلverify-image.sh، والذي يفحص الصورة المكتملة في وضع القراءة فقط ويرفض أي صورة غير صالحة (يتم الاحتفاظ بها كـ.unverified). يمكنك تشغيله مجددًا في أي وقت:./verify-image.sh out/ubuntu-24.04-v7.qcow2 --no-agent.
ما تضعه أداة البناء في الصورة:
| العنصر | السبب |
|---|---|
qemu-guest-agent | يمكن لـ CloudStack الاستعلام من الجهاز الافتراضي عن وحدات المعالجة المركزية وعناوين IP، وتجميد نشاطه مؤقتًا لإنشاء Snapshots. |
cloud-init مع مصدر بيانات CloudStack، وset_passwords عند كل إقلاع، وتسجيل الدخول عبر SSH بكلمة المرور | يتم جلب كلمة المرور المُنشأة من الموجه الافتراضي ويعمل خيار Reset password. |
| قاعدة udev لمعالجات CPU وذاكرة RAM المضافة أثناء التشغيل | تصبح معالجات vCPU وذاكرة RAM المضافة أثناء التشغيل نشطة تلقائيًا، مما يسمح بعمل التوسيع المباشر وAuto Scaling. |
| خدمة ملف swap | يُنشئ /swapfile بالقيمة الأقل بين 50% من الذاكرة (RAM) و4 GiB بعد توسيع القرص. touch /etc/cmp-swap.disabled يعطل ذلك. |
cloud-init growpart وresizefs | يتوسع قرص الجذر (root) الصغير إلى حجم قرص الخطة عند أول إقلاع. |
| معرّف machine-id فارغ، وبدون مفاتيح مضيف SSH | يحصل كل جهاز افتراضي على هويته الخاصة. |
تسمية القالب <OS> <version> <vN>
يقوم NexCMP بتفعيل Auto Scaling للقوالب التي ينتهي اسمها بـ vN أو vN.M مع N بقيمة 6 أو أكثر (Ubuntu 24.04 v7، Rocky Linux 9 v7.1). تفرض أداة البناء ذلك لـ --version. سجّل القالب بالاسم المطبوع تمامًا.
انشر الملف وسجّله في CloudStack. استخدم قيمة SHA-256 التي طبعتها عملية البناء، ولا تقم بالتسجيل إلا بعد اكتمال كتابة الملف بالكامل:
bashcmk list ostypes keyword="Ubuntu 24.04" filter=id,description cmk register template name="Ubuntu 24.04 v7" displaytext="Ubuntu 24.04 v7" \ url=https://files.example.com/ubuntu-24.04-v7.qcow2 zoneid=<zone-id> format=QCOW2 hypervisor=KVM \ ostypeid=<os-type-id> passwordenabled=true sshkeyenabled=true isdynamicallyscalable=true \ requireshvm=true isextractable=false ispublic=true isfeatured=true \ checksum="{SHA-256}<sha256 of the file>" \ details[0].guest.cpu.mode=host-passthrough details[0].rootDiskController=osdefault- يتيح
passwordenabled=trueلـ CloudStack إنشاء كلمة مرور الجهاز الافتراضي. - يتيح
isdynamicallyscalable=trueإمكانية التوسيع المباشر أثناء التشغيل. - يلزم
host-passthroughلإقلاع صور Rocky وAlma الحالية؛ بينما يحافظosdefaultعلى توافقية وحدة التحكم بالقرص.
- يتيح
انتظر حتى يصل القالب إلى حالة Download Complete / Ready.
تحتفظ صورة المورّد بحجمها الافتراضي الصغير (حوالي 3.5 GiB لـ Ubuntu وDebian، و10 GiB لـ Rocky). تذكّر أن حجم قرص الخطة لا يمكن أن يكون أصغر من قرص القالب.
Proxmox VE: إنشاء قالب
أنشئ قالب جهاز افتراضي cloud-init لكل نظام تشغيل على كل عقدة تنشر إليها، مع تثبيت guest agent وتمكين تسجيل دخول root، ثم سجّله كـ os-key=vmid. الأوامر الكاملة متوفرة في Proxmox VE. أداة بناء CloudStack الموضحة أعلاه ليست مخصصة لـ Proxmox: فهي تُعدّ cloud-init لمصدر بيانات CloudStack.
ملفات ISO
يقوم العملاء بتركيب ملفات ISO الخاصة بهم عبر وحدة Images (CloudStack) أو وحدة Dedicated Server. وهي منفصلة عن قوالب أنظمة التشغيل في هذه الصفحة. راجع Modules وDedicated servers.
الربط في NexCMP
افتح Services › Virtual Machines › Template. انقر فوق Sync now أو انتظر حتى 15 دقيقة. تضيف المزامنة القوالب الجاهزة والمميزة في CloudStack.

انقر على Edit في القالب الجديد وحدد ما يراه العملاء:
الحقل مثال للقيمة اسم العرض للعملاء Ubuntu 24.04 LTSعائلة نظام التشغيل ubuntu(الأيقونة والمستخدم الافتراضي)الإصدار 24.04اسم مستخدم تسجيل الدخول ubuntu(في Windows:Administrator؛ الأنظمة الأخرى:root)الأيقونة عنوان URL للصورة، أو مسار أو اسم الترتيب 10نشط On التوصيل السريع لـ vCPU/RAM (الترقية المباشرة) Auto by name (v6 or later) أو Yes أو No (needs a restart) 
قم بتفعيل القالب. يتم إخفاء أي قالب لم يعد معروضاً في CloudStack تلقائياً (وسيصلك تنبيه عبر Telegram إذا تم إعداده)؛ ولا يتم حذفه أبداً من NexCMP.
استبدال قالب بإصدار بناء أحدث
استخدم More › Replace with new version في القالب المباع. اختر القالب الجديد والجاهز والمعطل حالياً. سيشير الإدخال المباع بعد ذلك إلى إصدار البناء الجديد ويحتفظ باسمه وترتيبه وأيقونته؛ ويتم تعطيل القديم كمسار للرجوع (للرجوع، استخدم Replace في الإدخال الجديد). لا تتأثر أجهزة VM قيد التشغيل. إذا كان إصدار البناء الجديد ينتمي لعائلة نظام تشغيل مختلفة، فقم بتحديد مربع التأكيد أولاً.
التحقق
- يُظهر الصف ready، وبالنسبة لإصدارات البناء المسماة
vNبقيمة N تبلغ 6 أو أكثر، CPU hot-plug: supported. - انشر جهاز VM تجريبياً واحداً من القالب وتحقق من داخل جهاز VM:
- يمكنك تسجيل الدخول باستخدام كلمة المرور المعروضة في البوابة؛
df -h /يُظهر حجم قرص الخطة؛- بعد الترقية المباشرة (Change plan بدون إعادة تشغيل)، يزداد حجم
nprocوfree -m؛ swapon --showيعرض/swapfile(يتم تخطي ذلك في الأقراص التي تقل مساحتها الفارغة عن swap بالإضافة إلى 2 GiB)؛systemctl is-active qemu-guest-agentيطبعactive.
- إذا قمت بتضمين العميل مسبقاً، فسيظهر جهاز VM ضمن الأجهزة المضيفة الخاضعة للمراقبة في اللوحة بعد دقيقة واحدة من أول إقلاع. يحتاج جهاز VM إلى عنوان IP عام خاص به: حيث تتعرف عليه اللوحة من خلال عنوان IP العام للمصدر.
القيود والملاحظات
- أداة البناء مخصصة لنظام Linux فقط وتبني صور Linux. يمكن تسجيل الصور الأخرى (مثل Windows) في CloudStack بطرق أخرى؛ ويعرض NexCMP ما يبلّغ عنه CloudStack.
- يتم توفير عميل amd64 فقط؛ ويتم تخطي تثبيت العميل في المعماريات الأخرى.
- يتم فحص الصورة باستخدام
guestfishولكن لا يتم إقلاعها مطلقاً بواسطة أداة البناء. احرص دائماً على نشر جهاز VM تجريبي واحد قبل بيع أي صورة جديدة. - تخطَّ العميل على جهاز VM واحد باستخدام
touch /etc/cmp-agent.disabledقبل أول إقلاع. قم بإزالته لاحقاً باستخدامsystemctl disable --now cmp-agent cmp-agent-install; rm -rf /etc/cmp-agent /usr/local/bin/cmp-agent، ثم احذف العميل في وحدة تحكم المسؤول.
استكشاف الأخطاء وإصلاحها
| العَرَض | السبب | الحل |
|---|---|---|
فشل virt-customize في تنزيل الحزم | جهاز البناء لا يملك اتصال شبكة صادراً | أصلح DNS أو الخادم الوكيل على ذلك الجهاز، أو قم بالبناء باستخدام --offline على صورة أساسية تحتوي على الحزم بالفعل. |
libguestfs: error: /usr/bin/supermin exited with error status 1 | نواة المضيف غير قابلة للقراءة بواسطة المستخدم الحالي (Ubuntu) | sudo chmod +r /boot/vmlinuz*، أو شغّل البناء كـ root. |
| المجموع الاختباري مختلف، أو لم تعد صورة المورّد موجودة | يقوم المورّدون بنقل ملفات "latest" الخاصة بهم | قم بتنزيل الصورة بنفسك، وتحقق منها بمقارنتها بملف المجموع الاختباري الخاص بالمورّد ثم مررها باستخدام --base. |
| Rocky: يتعذر تركيب نظام XFS أحدث | نواة المضيف قديمة جداً | قم بالبناء على جهاز بنواة حديثة. |
--version must be v6 or higher | يجب أن يكون الاسم vN بقيمة N تبلغ 6 أو أكثر | استخدم --version v7. |
--panel-url must be a plain https:// URL | يتم تنزيل العميل وتشغيله كـ root، لذلك يتم رفض بروتوكول HTTP العادي | استخدم عنوان https:// URL دون مسافات أو علامات اقتباس أو سلسلة استعلام. |
| يبقى القالب بحالة not ready | لم ينتهِ CloudStack من التنزيل بعد | انتظر Download Complete، وتحقق من قدرة جهاز VM لوحدة التخزين الثانوية على الوصول إلى عنوان URL. |
| يُظهر الصف no-pass | تم تسجيل القالب دون passwordenabled=true | أعد تسجيله باستخدام ذلك الخيار. |
| خاصية التوصيل السريع لـ CPU تظهر كـ unsupported | الاسم لا ينتهي بـ vN (حيث N هو 6 أو أكثر) | أعد تسمية القالب، أو اضبط vCPU/RAM hot-plug على Yes في Edit إذا كانت الصورة تتضمن قاعدة udev. |
| ظهور "قائمة قوالب فارغة" بعد الاتصال الأول | لم تتم عملية المزامنة بعد | انقر على Sync now (يتطلب تشغيل الـ worker) أو انتظر دورة الـ 15 دقيقة. |