---
title: CloudStack
description: Hubungkan Apache CloudStack ke NexCMP: buat domain, akun, dan kunci API khusus dengan cmk, lalu masukkan ke wizard penyiapan atau konsol admin.
url: https://nexcmp.com/id/docs/infrastructure/cloudstack/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# CloudStack

> **Where in the admin:** Infrastructure › Cloud provider › CloudStack › API connection (`/infra/cloudstack?tab=connect`). Koneksi pertama juga dapat dibuat di [setup wizard](https://nexcmp.com/id/docs/getting-started/setup-wizard/), langkah 2.

## Fungsi {#what-it-does}

NexCMP menjual mesin virtual yang berjalan di cloud Apache CloudStack Anda. Software ini mendeploy, memulai, menghentikan, mengubah ukuran, mengambil snapshot, dan menghapus VM melalui API CloudStack, membagikan alamat IP publik dari zona, membaca penggunaan untuk penagihan dan bandwidth, serta menampilkan kapasitas dan status kesehatan di konsol admin. CloudStack tetap menjadi sumber kebenaran untuk hypervisor; NexCMP adalah etalase, penagihan, dan portal di atasnya.

Gunakan halaman ini jika CloudStack adalah (atau akan menjadi) sumber VM utama Anda. Untuk sumber kedua di sampingnya, lihat [Proxmox VE](https://nexcmp.com/id/docs/infrastructure/proxmox/).

## Persyaratan {#requirements}

| Item | Persyaratan |
|---|---|
| Versi CloudStack | 4.23 adalah rilis yang telah diuji. Konsol VM memerlukan 4.18 atau yang lebih baru, dan scaling CPU/RAM langsung dari VM yang berjalan memerlukan 4.23 dengan KVM. |
| Tipe zona | Zona dengan setidaknya satu jaringan tamu untuk VM pelanggan dan rentang IP publik dengan alamat gratis. |
| Hypervisor | KVM adalah hypervisor yang telah diuji. |
| Akun | Sebuah **domain dan akun khusus** yang dibuat untuk NexCMP. Jangan pernah menggunakan kunci administrator ROOT. |
| Keterjangkauan API | Server panel harus dapat menjangkau URL API server manajemen (`https://cloudstack.example.com/client/api`) melalui HTTP(S). Konsol VM, bandwidth, dan fitur Kubernetes menggunakan endpoint yang sama. |
| Kunci baca-saja opsional | Kunci kedua yang bersifat baca-saja memungkinkan konsol admin menampilkan host, penyimpanan, VM sistem, dan rentang IP publik. Tidak diperlukan untuk menjual VM. |
| IP publik | Alamat IPv4 publik gratis di zona. Awalan yang dapat dijual oleh NexCMP dikonfigurasi di bawah Sales IP pools. |
| Templat | Setidaknya satu templat yang siap dan mendukung kata sandi serta satu penawaran layanan yang dapat dilihat oleh akun Anda. Lihat [Templates](https://nexcmp.com/id/docs/infrastructure/templates/). |
| Storage | Storage primer untuk volume akun dan, jika Anda menjual snapshot atau image, storage sekunder. |
| Bergantung pada | Tidak ada. Kubernetes, Private Cloud, Images, dan Bandwidth bergantung pada halaman ini. |

::: warning Jangan gunakan kunci administrator ROOT
Buat domain dan akun khusus untuk NexCMP. Kunci tersebut kemudian hanya menjangkau domain itu, dan kunci yang bocor tidak dapat menyentuh seluruh cloud Anda. Wizard penyiapan juga memeriksa apakah jaringan yang Anda pilih milik zona **serta** akun yang memiliki kunci tersebut.
:::

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

Perintah-perintah ini menggunakan [CloudMonkey](https://cloudstack.apache.org/) (`cmk`) yang masuk sebagai administrator CloudStack. Ganti nama contoh dan placeholder di dalam tanda kurung siku.

### Buat akun dan kunci API khusus {#create-a-dedicated-account-and-api-key}

1. Buat domain yang akan menampung semua hal yang dimiliki NexCMP.

   ```bash
   cmk create domain name=nexcmp
   ```

   Catat `id` pada output; itu digunakan sebagai `<domain-id>` di bawah ini.

2. Cari peran yang ingin Anda berikan ke akun tersebut.

   ```bash
   cmk list roles type=DomainAdmin filter=id,name
   ```

   | Role | Kapan harus memilihnya |
   |---|---|
   | **Domain Admin** (disarankan) | Fitur lengkap: VM, jaringan, proyek untuk Kubernetes, VPC, image. Jangkauannya berhenti di domain `nexcmp`. |
   | User | Hanya siklus hidup VM. Pengguna biasa tidak dapat menghapus permanen (expunge) VM kecuali pengaturan global `allow.user.expunge.recover.vm` bernilai true; NexCMP kemudian menghentikan VM dan CloudStack menghapusnya setelah `expunge.delay`. |

3. Buat akun dan pengguna pertamanya. Gunakan kata sandi acak yang panjang; kata sandi ini tidak akan pernah diketik lagi.

   ```bash
   cmk create account name=nexcmp-api username=nexcmp-api \
     password='CHANGE-ME-LONG-RANDOM' email=ops@example.com \
     firstname=NexCMP lastname=API roleid=<role-id> domainid=<domain-id>
   ```

4. Buat pasangan kunci API untuk pengguna baru.

   ```bash
   cmk list users domainid=<domain-id> username=nexcmp-api filter=id,username
   cmk generate userkeys id=<user-id>
   ```

   Salin `apikey` dan `secretkey`. Keduanya adalah **API key** dan **Secret key** yang Anda masukkan di NexCMP. NexCMP menyimpannya dalam keadaan terenkripsi dan hanya menampilkan empat karakter terakhir setelahnya.

5. Pastikan domain tidak memiliki batasan sumber daya yang ketat (instance, volume, IP publik, jaringan, snapshot, templat, proyek).

   ```bash
   cmk list resourcelimits domainid=<domain-id>
   ```

### Buat jaringan tamu untuk VM pelanggan {#create-the-guest-network-for-customer-vms}

VM pelanggan disebarkan ke dalam satu jaringan tamu milik akun baru. Jaringan terisolasi dengan virtual router (VR) serta layanan Static NAT, Firewall, dan Port Forwarding bekerja dengan baik, karena NexCMP menautkan IP publik ke setiap VM menggunakan static NAT.

```bash
cmk list networkofferings state=Enabled guestiptype=Isolated filter=id,name
cmk create network name=customers displaytext=customers zoneid=<zone-id> \
  networkofferingid=<offering-id> account=nexcmp-api domainid=<domain-id>
```

Periksa kebijakan egress default dari penawaran: jika bernilai "deny", VM pelanggan tidak memiliki akses keluar hingga aturan egress firewall ditambahkan.

### Buat penawaran dan templat agar dapat dilihat {#make-offerings-and-templates-visible}

- **Service offerings** dan **network offerings** harus bersifat publik atau ditetapkan ke domain `nexcmp`, jika tidak, akun tidak dapat mencantumkan atau menggunakannya.
- Daftarkan atau bagikan setidaknya satu templat (lihat [Templates](https://nexcmp.com/id/docs/infrastructure/templates/)). NexCMP mencantumkan templat yang sudah siap dan berstatus featured.

### Opsional: kunci baca-saja untuk halaman infrastruktur {#optional-read-only-key-for-infrastructure-pages}

Tab **Capacity**, **Host**, **Storage**, dan **System VM** serta daftar rentang IP publik menggunakan kunci kedua yang hanya memerlukan akses baca ke enam perintah. Buat peran terbatas alih-alih menggunakan kembali kunci administrator penuh:

```bash
cmk create role name=nexcmp-readonly type=Admin
# <role-id> is the id printed above
for api in listHosts listCapacity listSystemVms listVlanIpRanges listClusters listStoragePools; do
  cmk create rolepermission roleid=<role-id> rule=$api permission=allow
done
cmk create rolepermission roleid=<role-id> rule='*' permission=deny
```

Lalu buat akun dengan peran tersebut (di domain ROOT, karena akun tersebut membaca data di seluruh zona), buat kuncinya seperti langkah 4, dan masukkan sebagai **RO API key** di bagian berikutnya.

### Periksa jalur jaringan {#check-the-network-path}

Dari server panel:

```bash
curl -fsS -o /dev/null -w '%{http_code}\n' https://cloudstack.example.com/client/api
```

Respon HTTP apa pun (bahkan 4xx) membuktikan port dapat dijangkau. Timeout berarti ada masalah firewall atau DNS di sisi Anda.

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

### Dalam wizard penyiapan {#in-the-setup-wizard}

Langkah 2 dari [setup wizard](https://nexcmp.com/id/docs/getting-started/setup-wizard/) meminta nilai yang sama. **Test connection** mencantumkan zona dan jaringan yang dapat dilihat oleh kunci tersebut; pilih zona dan jaringan tamu, nama tampilan untuk zona dan negara, lalu klik **Save CloudStack**. Wizard menolak jaringan yang tidak berada di zona tersebut atau tidak terlihat oleh kunci.

![Langkah 2 wizard dengan URL API CloudStack dan kunci yang terisi serta zona dan jaringan yang dipilih setelah Test connection](https://nexcmp.com/id/docs/images/infrastructure/cloudstack-01-wizard-step.webp)

### Nanti, di konsol admin {#later-in-the-admin-console}

1. Buka **Infrastructure › Cloud provider › CloudStack** dan pilih tab **API connection**.
2. Isi kartu **Connection**:

   | Kolom | Contoh nilai |
   |---|---|
   | Endpoint API | `https://cloudstack.example.com/client/api` |
   | Kunci API (akses tulis) | `XXXX` (biarkan kosong untuk mempertahankan kunci yang disimpan) |
   | Kunci rahasia | `XXXX` |
   | Kunci API RO / Kunci rahasia RO | opsional, dari akun baca-saja |
   | ID Zona | UUID zona Anda |

      ![Tab koneksi API dengan contoh endpoint dan kunci yang disamarkan](https://nexcmp.com/id/docs/images/infrastructure/cloudstack-02-connect-form.webp)

3. Klik **Test connection** sebelum menyimpan. Ini menguji kunci yang Anda ketik tanpa menyimpannya: kunci tulis dengan `listZones` dan `listCapabilities`, serta kunci baca-saja dengan `listSystemVms`.


4. Klik **Save connection**. Biarkan **Enable CloudStack connection** tetap aktif; mematikannya akan membuat worker menghentikan semua tugas CloudStack tanpa kehilangan data.
5. Buka **Services › Virtual Machines › Policy › Provisioning** untuk mengatur jaringan tamu default, penawaran kustom, dan pasangan kunci default untuk VM baru.

      ![Kebijakan VM, tab Provisioning, dengan ID jaringan default](https://nexcmp.com/id/docs/images/infrastructure/cloudstack-04-provisioning.webp)

6. Buka **Infrastructure › Cloud provider › Sales IP pools** dan, di bawah **Configure sales ranges**, atur **Sellable IP range prefixes** (misalnya `203.0.113.`) dan **Excluded IP prefixes** jika beberapa alamat di zona tidak boleh dijual sama sekali. Biarkan prefiks kosong untuk mengizinkan setiap alamat gratis.

      ![Kumpulan IP Penjualan dengan prefiks yang dapat dijual 203.0.113. diset](https://nexcmp.com/id/docs/images/infrastructure/cloudstack-05-sales-ip-pool.webp)

### Yang dibaca dan ditulis oleh NexCMP {#what-nexcmp-reads-and-writes}

| Area | Pembacaan | Perubahan |
|---|---|---|
| VMs | daftar, status, riwayat penggunaan, endpoint konsol | menerapkan, memulai, menghentikan, memuat ulang, menginstal ulang, menghancurkan, menskalakan, mereset kata sandi dan kunci SSH |
| Disk dan snapshot | volume, snapshot VM, cadangan | membuat, melampirkan, melepaskan, mengubah ukuran, menghapus, mengambil snapshot, memulihkan |
| Jaringan | jaringan, router, IP publik, firewall, penerusan port, aturan penyeimbang beban | menghubungkan dan merilis IP publik, NAT statis, firewall, penerusan port, aturan egress, jaringan dan ACL untuk Private Cloud |
| Katalog | layanan, penawaran disk dan jaringan, templat, ISO, jenis OS | mendaftarkan dan menghapus templat dan ISO (Gambar), penawaran layanan saat membuat paket kustom |
| Kubernetes | versi yang didukung, kluster, konfigurasi | proyek, batas sumber daya, jaringan, kluster (modul Kubernetes) |
| Kunci baca-saja | host, klaster, storage pool, system VM, kapasitas, rentang IP VLAN | tidak ada |

### CPU dan RAM langsung, serta bandwidth {#live-cpu-and-ram-and-bandwidth}

- **Hot-plug.** VM yang sedang berjalan dapat diubah ukurannya tanpa reboot hanya jika template-nya mengizinkan (dapat diskalakan secara dinamis) dan sistem tamu membawa CPU serta RAM baru secara online. NexCMP mengaktifkan Auto Scaling untuk template yang namanya berakhiran `vN` dengan N bernilai 6 atau lebih, atau saat Anda menyetelnya secara manual di bidang **vCPU/RAM hot-plug** pada template. Lihat [Templates](https://nexcmp.com/id/docs/infrastructure/templates/).
- **Sumber bandwidth.** Dengan pengaturan default, NexCMP mengukur lalu lintas dari statistik VM CloudStack (`listVirtualMachinesUsageHistory`, diambil setiap 5 menit dan dijumlahkan per antarmuka jaringan VM). Angka-angka tersebut mencakup lalu lintas antar-VM, sehingga bisa sedikit lebih tinggi daripada yang dihitung oleh router edge. Tetap aktifkan pengumpulan statistik VM CloudStack; jeda yang lebih lama dari retensi statistik akan dilewati. Lihat [Bandwidth](https://nexcmp.com/id/docs/catalog/bandwidth/).

## Verifikasi {#verify}

1. **Test connection** mengembalikan "Write key: OK" beserta zona Anda dan versi CloudStack.
2. **Infrastructure › Cloud provider › Providers** menampilkan penyedia sebagai aktif dengan waktu pengujian baru-baru ini. Panel kesehatan dasbor tidak lagi menampilkan "CloudStack: not connected".
3. **Sales IP pools** mencantumkan alamat bebas (ini diperbarui sekitar sekali seminggu/menit).
4. Pesan VM kecil dari portal pelanggan atau konsol admin dan pastikan statusnya mencapai Running, memiliki IP publik, serta Anda dapat membuka konsol tersebut.

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

- Satu klaster CloudStack dapat dihubungkan dalam rilis NexCMP ini. Dialog **Add cloud provider** dapat menguji kunci klaster kedua tetapi tidak dapat menyimpannya.
- Satu zona CloudStack dilampirkan ke zona default NexCMP; CloudStack dengan beberapa zona dicakupkan ke zona yang Anda masukkan, sehingga VM, IP, dan jaringan dari zona lain akan diabaikan.
- Menghapus jaringan tamu di CloudStack akan membuat setiap deployment baru gagal. Konsol admin menampilkan pemberitahuan berwarna merah saat jaringan tersebut hilang.
- Kredensial tidak pernah meninggalkan server. API hanya mengembalikan empat karakter terakhir.

## Pemecahan Masalah {#troubleshooting}

| Gejala | Penyebab | Solusi |
|---|---|---|
| `listCapabilities: cloudstack 401: unable to verify user credentials and/or request signature` | Kunci atau secret API salah, kunci dari pengguna lain, atau masalah jam pada server panel | Buat ulang kunci dengan `cmk generate userkeys` dan tempelkan keduanya. Periksa waktu server panel. |
| Pengujian: `listZones: …` atau waktu habis (timeout) | Server panel tidak dapat menjangkau URL API | Periksa DNS, firewall, dan jalur `/client/api` yang tepat. |
| Wizard: "jaringan tidak ditemukan di zona tersebut untuk API key ini" | Jaringan yang dipilih milik akun atau zona lain | Buat jaringan di akun khusus (lihat di atas) dan jalankan **Test connection** sekali lagi. |
| Wizard: "pilih zona dan jaringan" | Pengujian belum dijalankan, atau tidak ada zona maupun jaringan yang dipilih | Klik **Test connection** dan pilih kedua daftar tersebut. |
| Banner "kunci CloudStack belum dikonfigurasi" | Belum ada kunci yang disimpan ("Connect later") | Isi kartu Connection, **Save connection**, lalu **Test connection**. |
| Banner "CloudStack connection is OFF" | Tombol sakelar **Enable CloudStack connection** dalam posisi mati | Nyalakan dan simpan. |
| Kunci baca-saja: "unusable …" dalam pengujian | Izin peran hilang atau akun salah | Periksa keenam perintah yang diizinkan dan pastikan akun berada di domain ROOT. |
| "Zone public IP ranges not measured yet" atau "no public IP ranges declared" | Tidak ada kunci baca-saja, atau zona tersebut memang tidak memiliki rentang publik | Tambahkan kunci baca-saja, atau tambahkan rentang IP publik di CloudStack. |
| "Pool kosong — tunggu 60 dtk untuk sinkronisasi vmd" | Daftar IP disegarkan oleh pekerja sekali setiap menit | Tunggu sebentar dan muat ulang. |
| "kehabisan IP Bebas dalam rentang 203.0.113." | Setiap alamat dalam prefiks yang dapat dijual telah digunakan | Tambahkan alamat ke zona, perluas prefiks, atau lepaskan IP yang tidak digunakan. |
| "Gagal mengambil data jaringan (CloudStack tidak merespons atau kunci kurang izin)" | Kunci kehilangan akses, atau CloudStack sedang mati | Jalankan **Test connection**; pastikan akun diaktifkan. |
| "Jaringan tamu TIDAK ada" | Jaringan dihapus di CloudStack | Buat kembali jaringan tersebut dan tetapkan sebagai default di bawah Provisioning. |


