---
title: OS templates และ ISOs
description: เตรียมอิมเมจระบบปฏิบัติการที่ลูกค้าใช้ปรับใช้: สร้างและลงทะเบียน CloudStack template และสร้าง template อิมเมจคลาวด์ Proxmox VE
url: https://nexcmp.com/th/docs/infrastructure/templates/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# OS templates และ ISOs {#os-templates-and-isos}

> **ตำแหน่งในแผงผู้ดูแลระบบ:** Services › Virtual Machines › Template (`/vm/templates`) เทมเพลต Proxmox จะแสดงรายการตามแต่ละคลัสเตอร์ใน Infrastructure › Cloud provider › Providers › (cluster) › Clusters

## What it does {#what-it-does}

Template คืออิมเมจระบบปฏิบัติการที่ VM ใหม่เริ่มต้นทำงาน NexCMP ไม่ได้จัดเก็บอิมเมจด้วยตนเอง แต่จะอ่านข้อมูลที่ CloudStack รายงาน (template ที่พร้อมใช้งานและเป็นรายการเด่น) หรือรายการที่คุณระบุสำหรับคลัสเตอร์ Proxmox และช่วยให้คุณเลือกได้ว่าจะขายรายการใด พร้อมด้วยชื่อที่แสดงต่อลูกค้า ไอคอน และผู้ใช้สำหรับเข้าสู่ระบบ หน้าตานี้แสดงวิธีเตรียมอิมเมจที่ทำงานร่วมกับ NexCMP ได้เป็นอย่างดี ได้แก่ การเข้าสู่ระบบด้วยรหัสผ่าน การปรับขนาด CPU และ RAM แบบสด ไฟล์สลับ (swap) และดิสก์รากที่ขยายขนาดได้ตามแผน

## ข้อกำหนด {#requirements}

| Item | Requirement |
|---|---|
| ตัวสร้าง CloudStack template | เครื่อง 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) ใดๆ ที่ secondary storage VM ของ CloudStack สามารถเข้าถึงได้ เพื่อเผยแพร่ไฟล์ `.qcow2` ที่สร้างเสร็จแล้ว โดยไม่จำเป็นต้องเข้าถึงได้จากอินเทอร์เน็ต |
| CloudStack | บัญชีที่สามารถลงทะเบียนเทมเพลตได้ พร้อมทั้ง ID ของโซนและประเภทระบบปฏิบัติการที่ตรงกัน ดูที่ [CloudStack](https://nexcmp.com/th/docs/infrastructure/cloudstack/) |
| Proxmox VE | VM เทมเพลตแบบ cloud-init ที่ติดตั้ง QEMU guest agent หนึ่งรายการต่อระบบปฏิบัติการและต่อโหนด ดูที่ [Proxmox VE](https://nexcmp.com/th/docs/infrastructure/proxmox/) |
| ขึ้นอยู่กับ | เชื่อมต่อ [CloudStack](https://nexcmp.com/th/docs/infrastructure/cloudstack/) หรือ [Proxmox VE](https://nexcmp.com/th/docs/infrastructure/proxmox/) ก่อน |

## เตรียมโครงสร้างพื้นฐาน {#prepare-the-infrastructure}

### CloudStack: สร้างเทมเพลต {#cloudstack-build-a-template}

อิมเมจฐานที่รองรับ (ระบบจะดาวน์โหลดอิมเมจของผู้ให้บริการและตรวจสอบ checksum ก่อนที่จะทำการเปลี่ยนแปลงใดๆ):

| อิมเมจ | `--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` (URL ของอิมเมจ, ไฟล์ checksum, ตระกูล `deb` หรือ `rpm`)

1. คัดลอก builder ไปยังเครื่องที่ใช้บิลด์และเรียกใช้งาน:

   ```bash
   cp -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` เพื่อข้ามการติดตั้งแพ็กเกจ

2. ผลลัพธ์ที่ได้คือ `out/ubuntu-24.04-v7.qcow2` และ `.sha256` ของไฟล์ดังกล่าว การบิลด์จะสิ้นสุดด้วยการรัน `verify-image.sh` ซึ่งจะตรวจสอบอิมเมจที่เสร็จแล้วแบบอ่านอย่างเดียว และปฏิเสธอิมเมจที่มีปัญหา (โดยจะเก็บไว้เป็น `.unverified`) คุณสามารถรันซ้ำเมื่อใดก็ได้: `./verify-image.sh out/ubuntu-24.04-v7.qcow2 --no-agent`

สิ่งที่ builder ใส่ลงในอิมเมจ:

| Item | เหตุผล |
|---|---|
| `qemu-guest-agent` | CloudStack สามารถสอบถามข้อมูล CPU และ IP จาก VM ได้ รวมถึงพักการทำงานชั่วคราวเพื่อทำ snapshot |
| cloud-init พร้อมด้วย data source ของ CloudStack, `set_passwords` ในทุกครั้งที่บูต, การเข้าสู่ระบบด้วยรหัสผ่าน SSH | รหัสผ่านที่สร้างขึ้นจะถูกดึงมาจาก virtual router และ **Reset password** สามารถใช้งานได้ |
| กฎ udev สำหรับ CPU และ RAM ที่เพิ่มเข้ามาแบบ hot-added | vCPU และ RAM ที่เพิ่มเข้ามาแบบ hot-added จะเริ่มทำงานได้เอง ทำให้การปรับขนาดแบบ live scaling และ Auto Scaling ใช้งานได้ |
| บริการไฟล์ swap | สร้าง `/swapfile` ของค่าที่น้อยกว่าระหว่าง 50% ของ RAM และ 4 GiB หลังจากที่ดิสก์ขยายขนาดแล้ว `touch /etc/cmp-swap.disabled` จะปิดการใช้งาน |
| cloud-init `growpart` และ `resizefs` | ดิสก์รากขนาดเล็กจะขยายใหญ่ขึ้นตามขนาดดิสก์ของแพ็กเกจเมื่อบูตครั้งแรก |
| machine-id ว่างเปล่า, ไม่มี SSH host key | VM ทุกตัวจะมีเอกลักษณ์เป็นของตัวเอง |

::: warning ตั้งชื่อเทมเพลตว่า `<OS> <version> <vN>`
NexCMP จะเปิด **Auto Scaling** ให้กับเทมเพลตที่มีชื่อลงท้ายด้วย `vN` หรือ `vN.M` โดยมี **N ตั้งแต่ 6 ขึ้นไป** (`Ubuntu 24.04 v7`, `Rocky Linux 9 v7.1`) ตัวสร้างจะบังคับใช้กฎนี้สำหรับ `--version` โปรดลงทะเบียนเทมเพลตด้วยชื่อที่พิมพ์ไว้อย่างแม่นยำ
:::

3. เผยแพร่ไฟล์และลงทะเบียนใน CloudStack โดยใช้ค่า SHA-256 ที่ตัวสร้างแสดงขึ้นมา และให้ลงทะเบียนหลังจากที่เขียนไฟล์เสร็จสมบูรณ์แล้วเท่านั้น:

   ```bash
   cmk 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 สามารถสร้างรหัสผ่านสำหรับ VM ได้
   - `isdynamicallyscalable=true` ช่วยให้สามารถปรับขนาดแบบ live scaling ได้
   - `host-passthrough` จำเป็นสำหรับการบูตอิมเมจ Rocky และ Alma รุ่นปัจจุบัน ส่วน `osdefault` ช่วยให้คอนโทรลเลอร์ดิสก์สามารถย้ายข้ามระบบได้

4. รอจนกว่าเทมเพลตจะแสดงสถานะเป็น **Download Complete / Ready**

อิมเมจของผู้ให้บริการจะยังคงขนาดเสมือนจริงที่เล็ก (ประมาณ 3.5 GiB สำหรับ Ubuntu และ Debian, 10 GiB สำหรับ Rocky) โปรดจำไว้ว่าดิสก์ของแพ็กเกจต้องไม่เล็กกว่าดิสก์ของเทมเพลต

### Proxmox VE: สร้างเทมเพลต {#proxmox-ve-make-a-template}

สร้างเทมเพลต VM แบบ cloud-init ตามระบบปฏิบัติการบนทุกโหนดที่คุณปรับ the deploy ไปใช้งาน โดยติดตั้ง guest agent และเปิดใช้งาน root login จากนั้นลงทะเบียนเป็น `os-key=vmid` คำสั่งเต็มรูปแบบอยู่ใน [Proxmox VE](https://nexcmp.com/th/docs/infrastructure/proxmox/) ตัวสร้างของ CloudStack ด้านบน **ไม่ใช่** สำหรับ Proxmox เนื่องจากเป็นการกำหนดค่า cloud-init สำหรับ data source ของ CloudStack

### ISO {#isos}

ลูกค้าสามารถเมานต์ ISO ของตนเองได้ผ่านโมดูล **Images** (CloudStack) หรือโมดูลเซิร์ฟเวอร์เฉพาะ (Dedicated Server) ซึ่งแยกต่างหากจากเทมเพลต OS ในหน้านี้ โปรดดูเพิ่มเติมที่ [Modules](https://nexcmp.com/th/docs/infrastructure/modules/) และ [Dedicated servers](https://nexcmp.com/th/docs/infrastructure/dedicated/)

## เชื่อมต่อใน NexCMP {#connect-in-nexcmp}

1. เปิด **Services › Virtual Machines › Template** คลิก **Sync now** หรือรอไม่เกิน 15 นาที การซิงค์จะเพิ่มเทมเพลตที่พร้อมใช้งานและตั้งค่าเป็น featured ไว้ใน CloudStack

      ![หน้าเทมเพลตที่แสดงรายการเทมเพลตที่ซิงก์แล้ว พร้อมสถานะความพร้อมใช้งานและคอลัมน์การเพิ่ม CPU แบบ hot-plug](https://nexcmp.com/th/docs/images/infrastructure/templates-01-list.webp)

2. คลิก **Edit** บนเทมเพลตใหม่และตั้งค่าสิ่งที่ลูกค้าจะมองเห็น:

   | ฟิลด์ | ค่าตัวอย่าง |
   |---|---|
   | ชื่อที่แสดงสำหรับลูกค้า | `Ubuntu 24.04 LTS` |
   | ตระกูล OS | `ubuntu` (ไอคอนและผู้ใช้เริ่มต้น) |
   | เวอร์ชัน | `24.04` |
   | ชื่อผู้ใช้สำหรับเข้าสู่ระบบ | `ubuntu` (Windows: `Administrator`; อื่นๆ: `root`) |
   | ไอคอน | URL ของอิมเมจ, พาธ หรือชื่อ |
   | ลำดับ | `10` |
   | ใช้งาน | เปิด |
   | การเพิ่ม vCPU/RAM แบบ hot-plug (ปรับขนาดแบบ live) | **Auto by name (v6 or later)**, **Yes** หรือ **No (needs a restart)** |

      ![หน้าต่างแก้ไขเทมเพลตพร้อมชื่อสำหรับลูกค้า, ตระกูล OS, ผู้ใช้สำหรับเข้าสู่ระบบ และตัวเลือก hot-plug](https://nexcmp.com/th/docs/images/infrastructure/templates-02-edit.webp)

3. เปิดใช้งานเทมเพลต เทมเพลตที่ CloudStack ไม่ได้แสดงรายการไว้อีกต่อไปจะถูกซ่อนโดยอัตโนมัติ (และคุณจะได้รับการแจ้งเตือนทาง Telegram หากตั้งค่าไว้) โดยจะไม่มีการลบออกจาก NexCMP อย่างถาวร

### แทนที่เทมเพลตด้วยบิลด์ใหม่กว่า {#replace-a-template-with-a-newer-build}

ใช้ **More › Replace with new version** บนเทมเพลตที่ขายอยู่ เลือกเทมเพลตใหม่ที่พร้อมใช้งานและถูกปิดใช้งานอยู่ รายการที่ขายจะชี้ไปที่บิลด์ใหม่โดยยังคงชื่อ ลําดับ และไอคอนเดิมไว้ ส่วนของเดิมจะถูกปิดใช้งานเพื่อใช้เป็นทางถอย (หากต้องการย้อนกลับ ให้ใช้ **Replace** บนรายการใหม่) VM ที่กําลังทํางานอยู่จะไม่ได้รับผลกระทบ หากบิลด์ใหม่เป็นตระกูล OS ที่ต่างออกไป ให้ทำเครื่องหมายยืนยันก่อน

## ตรวจสอบ {#verify}

1. แถวจะแสดงสถานะ **ready** และสําหรับบิลด์ที่มีชื่อว่า `vN` โดยมี N ตั้งแต่ 6 ขึ้นไป จะแสดง **CPU hot-plug: supported**
2. ปรับใช้ VM ทดสอบหนึ่งเครื่องจากเทมเพลตและตรวจสอบภายใน VM:
   - คุณสามารถเข้าสู่ระบบด้วยรหัสผ่านที่แสดงในพอร์ทัล;
   - `df -h /` แสดงขนาดดิสก์ของแพ็กเกจ;
   - หลังจากการปรับขนาดแบบสด (**Change plan** โดยไม่ต้องรีบูต) `nproc` และ `free -m` จะขยายใหญ่ขึ้น;
   - `swapon --show` แสดงรายชื่อ `/swapfile` (ดิสก์ที่มีพื้นที่เหลือน้อยกว่า swap บวก 2 GiB จะข้ามไป);
   - `systemctl is-active qemu-guest-agent` พิมพ์ `active`
3. หากคุณฝังเอเจนต์ไว้ล่วงหน้า VM จะปรากฏในโฮสต์ที่ตรวจสอบของแผงควบคุมภายในหนึ่งนาทีหลังจากการบูตครั้งแรก VM ต้องการ IP สาธารณะของตัวเอง โดยแผงควบคุมจะจดจำจาก IP ต้นทางสาธารณะ

## ข้อจำกัดและหมายเหตุ {#limits-and-notes}

- ตัวสร้างนี้รองรับเฉพาะ 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` จากนั้นจึงลบเอเจนต์ในคอนโซลผู้ดูแลระบบ

## การแก้ Problme {#troubleshooting}

| อาการ | สาเหตุ | วิธีแก้ปัญหา |
|---|---|---|
| `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 แบบธรรมดา | ใช้ URL `https://` ที่ไม่มีช่องว่าง เครื่องหมายคำพูด หรือคิวรีสตริง |
| เทมเพลตยังคงสถานะ **not ready** | CloudStack ดาวน์โหลด1ยังไม่เสร็จสิ้น | รอ **Download Complete**, ตรวจสอบว่า VM ที่จัดเก็บข้อมูลสำรองเข้าถึง URL ได้ |
| แถวแสดงสถานะ **no-pass** | เทมเพลตถูกลงทะเบียนโดยไม่มี `passwordenabled=true` | ลงทะเบียนใหม่อีกครั้งด้วยแฟล็กดังกล่าว |
| CPU hot-plug แสดงสถานะ **unsupported** | ชื่อไม่ได้ลงท้ายด้วย `vN` (N ตั้งแต่ 6 ขึ้นไป) | เปลี่ยนชื่อเทมเพลต หรือตั้งค่า **vCPU/RAM hot-plug** เป็น **Yes** ใน Edit หากอิมเมจมีกฎ udev |
| รายการเทมเพลตว่างเปล่าหลังจากการเชื่อมต่อครั้งแรก | การซิงค์ยังไม่ทำงาน | คลิก **Sync now** (ต้องใช้งานเวิร์กเทเบิล) หรือรอรอบ 15 นาที |
