---
title: Templat OS dan ISO
description: Siapkan citra OS yang dideploy pelanggan: buat dan daftarkan templat CloudStack, serta buat templat citra awan Proxmox VE.
url: https://nexcmp.com/id/docs/infrastructure/templates/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# Templat OS dan ISO {#os-templates-and-isos}

> **Lokasi di admin:** Services › Virtual Machines › Template (`/vm/templates`). Template Proxmox tercantum per kluster di Infrastructure › Cloud provider › Providers › (cluster) › Clusters.

## Fungsi {#what-it-does}

Templat adalah citra sistem operasi yang digunakan VM baru saat pertama kali dimulai. NexCMP tidak menyimpan citra sendiri: ia membaca laporan dari CloudStack (siap, templat unggulan) atau yang Anda daftarkan untuk kluster Proxmox, lalu membiarkan Anda memilih mana yang dijual, lengkap dengan nama, ikon, dan pengguna login yang dilihat pelanggan. Halaman ini menunjukkan cara menyiapkan citra yang berfungsi optimal dengan NexCMP: login sandi, penskalaan CPU dan RAM langsung, file swap, dan disk root yang ukurannya menyesuaikan paket.

## Persyaratan {#requirements}

| Item | Persyaratan |
|---|---|
| Pembangun templat CloudStack | Mesin Linux dengan `libguestfs-tools` (`virt-customize`, `virt-sparsify`, `guestfish`), `qemu-utils`, `curl`, dan ruang disk kosong sekitar 5 GB. Tidak memerlukan KVM maupun root. Akses internet untuk instalasi paket (atau bangun dengan `--offline`). |
| Lokasi builder | Fitur ini disertakan di setiap rilis dalam `/opt/nexcmp/releases/<version>/share/templates/` di server panel. Anda tidak harus menjalankannya di sana: salin folder tersebut ke mesin Linux mana pun. |
| Server web | Server HTTP(S) apa pun yang dapat dijangkau oleh VM penyimpanan sekunder CloudStack untuk memublikasikan file `.qcow2` yang sudah jadi. Server tidak harus dapat dijangkau dari internet. |
| CloudStack | Akun yang memiliki izin untuk mendaftarkan templat, serta ID zona Anda dan jenis OS yang cocok. Lihat [CloudStack](https://nexcmp.com/id/docs/infrastructure/cloudstack/). |
| Proxmox VE | VM templat cloud-init dengan agen tamu QEMU, masing-masing satu per OS dan per node. Lihat [Proxmox VE](https://nexcmp.com/id/docs/infrastructure/proxmox/). |
| Bergantung pada | [CloudStack](https://nexcmp.com/id/docs/infrastructure/cloudstack/) atau [Proxmox VE](https://nexcmp.com/id/docs/infrastructure/proxmox/) harus dihubungkan terlebih dahulu. |

## Siapkan infrastruktur {#prepare-the-infrastructure}

### CloudStack: membangun templat {#cloudstack-build-a-template}

Citra dasar yang didukung (citra vendor diunduh dan checksum-nya diverifikasi sebelum ada perubahan yang dibuat):

| Citra | `--distro` | Pengguna login |
|---|---|---|
| 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` |

Distribusi lainnya: tambahkan baris ke `distros.conf` (URL citra, file checksum, famili `deb` atau `rpm`).

1. Salin builder ke mesin pengebangun dan jalankan:

   ```bash
   cp -r /opt/nexcmp/releases/<version>/share/templates ~/templates && cd ~/templates
   ./build-template.sh --distro ubuntu-24.04 --version v7 --work ./out
   ```

   Tambahkan `--panel-url https://cloud.example.com` untuk menyematkan agen pemantauan boot pertama opsional yang mendaftar ke panel Anda (hanya HTTPS). Tanpa ini, tidak ada agen yang ditambahkan. Opsi lain: `--base <file>` untuk menggunakan citra yang Anda unduh, `--offline` untuk melewati instalasi paket.

2. Hasilnya adalah `out/ubuntu-24.04-v7.qcow2` beserta `.sha256` miliknya. Proses build diakhiri dengan menjalankan `verify-image.sh`, yang memeriksa citra jadi secara hulu-baca (read-only) dan menolak citra yang buruk (disimpan sebagai `.unverified`). Anda dapat menjalankannya kembali kapan saja: `./verify-image.sh out/ubuntu-24.04-v7.qcow2 --no-agent`.

Apa saja yang dimasukkan builder ke dalam citra:

| Item | Alasan |
|---|---|
| `qemu-guest-agent` | CloudStack dapat meminta informasi CPU dan IP pada VM, serta melakukan quiesce VM untuk pembuatan snapshot. |
| cloud-init dengan sumber data CloudStack, `set_passwords` pada setiap booting, login kata sandi SSH | Kata sandi yang dihasilkan diambil dari virtual router dan **Reset password** berfungsi. |
| Aturan udev untuk CPU dan RAM yang ditambahkan secara hot-plug | vCPU dan RAM yang ditambahkan secara hot-plug langsung aktif dengan sendirinya, sehingga live scaling dan Auto Scaling dapat berfungsi. |
| Layanan file swap | Membuat `/swapfile` sebesar nilai terkecil antara 50% dari RAM dan 4 GiB setelah disk diperbesar. `touch /etc/cmp-swap.disabled` menonaktifkannya. |
| cloud-init `growpart` dan `resizefs` | Root disk yang kecil akan diperbesar ke ukuran disk paket pada boot pertama. |
| machine-id kosong, tidak ada kunci host SSH | Setiap VM mendapatkan identitasnya sendiri. |

::: warning Beri nama templat `<OS> <version> <vN>`
NexCMP mengaktifkan **Auto Scaling** untuk templat yang namanya diakhiri dengan `vN` atau `vN.M` dengan **N of 6 or more** (`Ubuntu 24.04 v7`, `Rocky Linux 9 v7.1`). Builder menegakkan aturan ini untuk `--version`. Daftarkan templat dengan nama persis seperti yang tercetak.
:::

3. Publikasikan file tersebut dan daftarkan di CloudStack. Gunakan SHA-256 yang dicetak oleh builder, dan daftarkan hanya setelah file selesai ditulis sepenuhnya:

   ```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` memungkinkan CloudStack menghasilkan kata sandi VM.
   - `isdynamicallyscalable=true` mengizinkan live scaling.
   - `host-passthrough` diperlukan agar gambar Rocky dan Alma saat ini dapat melakukan boot; `osdefault` menjaga pengontrol disk tetap portabel.

4. Tunggu hingga templat mencapai status **Download Complete / Ready**.

Image vendor tetap mempertahankan ukuran virtualnya yang kecil (sekitar 3.5 GiB untuk Ubuntu dan Debian, 10 GiB untuk Rocky). Ingat bahwa disk paket tidak boleh lebih kecil daripada disk templat.

### Proxmox VE: membuat templat {#proxmox-ve-make-a-template}

Buat templat VM cloud-init per OS pada setiap node tempat Anda melakukan deployment, dengan guest agent terpasang dan login root diaktifkan, lalu daftarkan sebagai `os-key=vmid`. Perintah lengkapnya ada di [Proxmox VE](https://nexcmp.com/id/docs/infrastructure/proxmox/). Builder CloudStack di atas **bukan** untuk Proxmox: builder tersebut mengonfigurasikan cloud-init untuk sumber data CloudStack.

### ISO {#isos}

Pelanggan dapat memasang ISO mereka sendiri melalui modul **Images** (CloudStack) atau modul Dedicated Server. Hal tersebut terpisah dari templat OS di halaman ini. Lihat [Modules](https://nexcmp.com/id/docs/infrastructure/modules/) dan [Dedicated servers](https://nexcmp.com/id/docs/infrastructure/dedicated/).

## Hubungkan di NexCMP {#connect-in-nexcmp}

1. Buka **Services › Virtual Machines › Template**. Klik **Sync now** atau tunggu hingga 15 menit. Sinkronisasi ini akan menambahkan templat yang siap dan berstatus unggulan di CloudStack.

      ![Halaman Templat yang mencantumkan templat yang disinkronkan beserta status kesiapan dan kolom hot-plug CPU-nya](https://nexcmp.com/id/docs/images/infrastructure/templates-01-list.webp)

2. Klik **Edit** pada templat baru dan atur apa yang dilihat oleh pelanggan:

   | Kolom | Contoh nilai |
   |---|---|
   | Nama tampilan untuk pelanggan | `Ubuntu 24.04 LTS` |
   | Keluarga OS | `ubuntu` (ikon dan pengguna default) |
   | Versi | `24.04` |
   | Nama pengguna login | `ubuntu` (Windows: `Administrator`; lainnya: `root`) |
   | Ikon | URL image, jalur (path), atau nama |
   | Urutan | `10` |
   | Aktif | On |
   | Hot-plug vCPU/RAM (live scale) | **Auto by name (v6 or later)**, **Yes**, atau **No (needs a restart)** |

      ![Dialog edit templat dengan nama yang dilihat pelanggan, keluarga OS, pengguna login, dan opsi hot-plug](https://nexcmp.com/id/docs/images/infrastructure/templates-02-edit.webp)

3. Aktifkan templat tersebut. Templat yang tidak lagi dicantumkan oleh CloudStack akan disembunyikan secara otomatis (dan Anda akan diberi peringatan di Telegram jika dikonfigurasi); templat tidak akan pernah dihapus dari NexCMP.

### Ganti templat dengan build yang lebih baru {#replace-a-template-with-a-newer-build}

Gunakan **More › Replace with new version** pada templat yang dijual. Pilih templat baru yang siap dan saat ini dinonaktifkan. Entri yang dijual kemudian akan mengarah ke build baru dan tetap mempertahankan nama, urutan, serta ikonnya; yang lama dinonaktifkan sebagai jalur kembali (untuk kembali, gunakan **Replace** pada entri baru). VM yang sedang berjalan tidak disentuh. Jika build baru berasal dari keluarga OS yang berbeda, centang konfirmasi terlebih dahulu.

## Verifikasi {#verify}

1. Baris menunjukkan **ready** dan, untuk build bernama `vN` dengan N 6 atau lebih, **CPU hot-plug: supported**.
2. Deploy satu VM uji dari templat dan periksa di dalam VM:
   - Anda dapat masuk dengan kata sandi yang ditampilkan di portal;
   - `df -h /` menunjukkan ukuran disk paket;
   - setelah scale langsung (**Change plan** tanpa reboot), `nproc` dan `free -m` bertambah;
   - `swapon --show` mencantumkan `/swapfile` (disk dengan ruang kosong kurang dari swap ditambah 2 GiB akan dilewati);
   - `systemctl is-active qemu-guest-agent` mencetak `active`.
3. Jika Anda menyertakan agen di dalamnya, VM akan muncul di host yang dipantau panel satu menit setelah booting pertama. VM memerlukan IP publiknya sendiri: panel mengenalinya dari IP sumber publiknya.

## Batasan dan catatan {#limits-and-notes}

- Builder ini khusus untuk Linux dan membangun citra Linux. Citra lain (misalnya Windows) dapat didaftarkan di CloudStack melalui cara lain; NexCMP mencantumkan apa yang dilaporkan oleh CloudStack.
- Hanya agen amd64 yang disertakan; arsitektur lain akan melewati instalasi agen.
- Citra diperiksa dengan `guestfish` tetapi tidak pernah di-boot oleh builder. Selalu deploy satu VM uji sebelum menjual citra baru.
- Lewati agen pada satu VM dengan `touch /etc/cmp-agent.disabled` sebelum booting pertama. Hapus nanti dengan `systemctl disable --now cmp-agent cmp-agent-install; rm -rf /etc/cmp-agent /usr/local/bin/cmp-agent`, lalu hapus agen di konsol admin.

## Pemecahan Masalah {#troubleshooting}

| Gejala | Penyebab | Solusi |
|---|---|---|
| `virt-customize` gagal mengunduh paket | Mesin build tidak memiliki jaringan keluar | Perbaiki DNS atau proksi pada mesin tersebut, atau bangun dengan `--offline` pada citra dasar yang sudah memiliki paket-paket tersebut. |
| `libguestfs: error: /usr/bin/supermin exited with error status 1` | Kernel host tidak dapat dibaca oleh pengguna saat ini (Ubuntu) | `sudo chmod +r /boot/vmlinuz*`, atau jalankan build sebagai root. |
| Checksum berbeda, atau citra vendor tidak lagi ada | Vendor memindahkan file "latest" mereka | Unduh sendiri citranya, periksa terhadap file checksum vendor, dan teruskan dengan `--base`. |
| Rocky: XFS yang lebih baru tidak dapat dimount | Kernel host terlalu lama | Bangun pada mesin dengan kernel yang baru. |
| `--version must be v6 or higher` | Nama harus berupa `vN` dengan N 6 atau lebih | Gunakan `--version v7`. |
| `--panel-url must be a plain https:// URL` | Agen diunduh dan dijalankan sebagai root, sehingga HTTP biasa ditolak | Gunakan URL `https://` tanpa spasi, tanda kutip, atau string kueri. |
| Templat tetap **not ready** | CloudStack belum selesai mengunduh | Tunggu **Download Complete**, periksa apakah VM penyimpanan sekunder dapat menjangkau URL tersebut. |
| Baris menunjukkan **no-pass** | Templat didaftarkan tanpa `passwordenabled=true` | Daftarkan kembali dengan flag tersebut. |
| CPU hot-plug menunjukkan **unsupported** | Nama tidak berakhiran `vN` (N 6 atau lebih) | Ganti nama templat, atau tetapkan **vCPU/RAM hot-plug** ke **Yes** di Edit jika citra memiliki aturan udev. |
| "Empty template list" setelah koneksi pertama | Sinkronisasi belum berjalan | Klik **Sync now** (memerlukan worker yang berjalan) atau tunggu siklus 15 menit. |
