---
title: Proxmox VE
description: เพิ่มคลัสเตอร์ Proxmox VE เป็นแหล่ง VM: โทเค็น API สิทธิ์น้อยที่สุด, สเทอเรจ, เทมเพลตอิมเมจคลาวด์, พูล IP, การตรึง TLS และแหล่งที่มาต่อแพ็กเกจ
url: https://nexcmp.com/th/docs/infrastructure/proxmox/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# Proxmox VE

> **ตำแหน่งในหน้าผู้ดูแลระบบ:** Infrastructure › Cloud provider › Providers (`/infra/providers`) จากนั้นไปที่หน้าผู้ให้บริการ (`/infra/providers/<id>`) ที่มีแท็บ Overview, Clusters, VMs, Servers และ Credentials ตั้งค่าแพ็กเกจได้ที่ Services › Virtual Machines › Plans & pricing (`/vm/catalog`)

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

NexCMP สามารถขายเครื่องเสมือนที่ทำงานบนคลัสเตอร์ Proxmox VE หนึ่งคลัสเตอร์หรือมากกว่านั้น ควบคู่หรือแทนที่ CloudStack ได้ การสร้าง VM ทำได้โดยโคลนเทมเพลต OS แบบ full clone จากนั้นกำหนดค่าผ่าน cloud-init ได้แก่ ขนาด, ที่อยู่ IP จากพูลที่คุณกำหนด, รหัสผ่าน root และ SSH key ลูกค้าจะได้รับสิทธิ์การควบคุมเปิดปิดเครื่อง, คอนโซล, สแนปชอต, ติดตั้งใหม่, รีเซ็ตรหัสผ่าน และเมตริกในพอร์ทัล โดยจะไม่เห็นชื่อคลัสเตอร์, โหนด หรือแหล่งที่มาเลย

ใช้งานเมื่อคุณรัน Proxmox VE อยู่แล้ว หรือเพื่อเสนอพูล VM สำรองที่มีการกำหนดราคาแตกต่างออกไป

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

| Item | Requirement |
|---|---|
| Proxmox VE | PVE 9.x การบูรณาการได้รับการตรวจสอบยืนยันบนเวอร์ชัน 9.2 โดยต้องใช้เนื้อหาในสเทอเรจ `import` และตัวเลือกดิสก์ `import-from` (PVE 8.2 หรือใหม่กว่า) |
| เน็ตเวิร์กจากพาเนล | HTTPS ไปยัง API ของคลัสเตอร์ `https://<host or IP>:8006` ไม่มีพาธ, ชื่อผู้ใช้ หรือคิวรี ทั้งพาเนลและ worker จะทำการเชื่อมต่อเข้ามา และคอนโซลของเบราว์เซอร์จะถูกพร็อกซีผ่านพาเนล |
| บัญชี | ผู้ใช้ PVE เฉพาะสำหรับ **API token** และบทบาทกำหนดเองพร้อมสิทธิ์ที่แสดงรายการด้านล่าง ห้ามใช้ `root@pam` เด็ดขาด |
| สตอเรจ | สเทอเรจสำหรับดิสก์ VM ที่รองรับการโคลน (ตัวอย่างเช่น `local-lvm`) สำหรับตัวสร้างเทมเพลตในตัว ให้ใช้สเทอเรจชื่อ `local` ที่มีประเภทเนื้อหา `import` และ `snippets` |
| Network | บริดจ์ Linux (ตัวอย่างเช่น `vmbr0`) ที่เชื่อมต่อไปยังเน็ตเวิร์กซึ่งที่อยู่ IP ของลูกค้าอยู่ ใช้บริดจ์ที่รองรับ VLAN หากคุณป้อนแท็ก VLAN |
| IP | บล็อก IPv4 (/16 ถึง /30) ที่กำหนดเส้นทางไปยังบริดจ์นั้น พร้อมเกตเวย์ NexCMP จะทำการกำหนดแอดเดรสเอง เนื่องจาก Proxmox ไม่มีระบบจัดการ IP |
| เทมเพลต | เทมเพลต VM แบบ cloud-init หนึ่งรายการต่อ OS บนทุกโหนดที่คุณปรับ the deployment พร้อมกับ QEMU guest agent |
| โซน | โซนที่มีอยู่เพื่อเชื่อมต่อคลัสเตอร์เข้าด้วยกัน ดูเพิ่มเติมที่ [Zones](https://nexcmp.com/th/docs/infrastructure/zones/) |
| ขึ้นอยู่กับ | ไม่มี |

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

รันคำสั่งในฐานะ root บนโหนดคลัสเตอร์ใดก็ได้

### 1. สร้างบทบาทสิทธิ์น้อยที่สุด ผู้ใช้ และ API token {#_1-create-a-least-privilege-role-user-and-api-token}

1. สร้างบทบาท รายการสิทธิ์เป็นสิ่งที่ NexCMP ใช้พอดี ไม่มีสิ่งใดที่แก้ไขผู้ใช้ คำจำกัดความของสเทอเรจ หรือดาต้าเซ็นเตอร์

   ```bash
   pveum role add NexCMP -privs "VM.Allocate VM.Clone VM.Config.CDROM VM.Config.CPU VM.Config.Cloudinit VM.Config.Disk VM.Config.HWType VM.Config.Memory VM.Config.Network VM.Config.Options VM.PowerMgmt VM.Audit VM.Console VM.Snapshot VM.Snapshot.Rollback VM.Backup VM.GuestAgent.Audit VM.GuestAgent.Unrestricted Datastore.Audit Datastore.AllocateSpace Datastore.AllocateTemplate Sys.Audit Sys.AccessNetwork SDN.Use SDN.Audit Pool.Audit Mapping.Audit Mapping.Use"
   ```

   `Sys.AccessNetwork` จำเป็นสำหรับการดาวน์โหลดอิมเมจคลาวด์ PVE 9 ไม่มีสิทธิ์ `VM.Monitor` ดังนั้นห้ามเพิ่มลงไป

2. สร้างผู้ใช้และโทเค็น `--privsep 1` หมายความว่าสิทธิ์ของโทเค็นคือการ **อินเตอร์เซกชัน** ระหว่างสิทธิ์ของผู้ใช้และสิทธิ์ของโทเค็นเอง

   ```bash
   pveum user add nexcmp@pve --comment "NexCMP"
   pveum user token add nexcmp@pve api --privsep 1
   ```

   คำสั่งจะพิมพ์โทเค็น **secret ออกมาครั้งเดียว** (เป็น UUID) โปรดคัดลอกเก็บไว้ตอนนี้ ID ของโทเค็นคือ `nexcmp@pve!api`.

3. กำหนดบทบาทให้กับ **ทั้ง** ผู้ใช้และโทเค็น นี่คือขั้นตอนที่คนมักพลาด เนื่องจากมีการแยกสิทธิ์ มีเพียงโทเค็นเท่านั้นที่จะได้รับข้อผิดพลาด 403 เช่น `Datastore.Audit` หากผู้ใช้ไม่มีสิทธิ์

   ```bash
   pveum acl modify / --roles NexCMP --users nexcmp@pve
   pveum acl modify / --roles NexCMP --tokens 'nexcmp@pve!api'
   ```

4. ทดสอบการทำงานจากเซิร์ฟเวอร์พาเนล:

   ```bash
   curl -sk -H 'Authorization: PVEAPIToken=nexcmp@pve!api=<secret>' https://192.0.2.10:8006/api2/json/version
   ```

   เอกสาร JSON ที่มี `version` หมายความว่าโทเค็นทำงานได้ (`-k` ใช้สำหรับการตรวจสอบอย่างรวดเร็วนี้เท่านั้น โดย NexCMP จะทำการตรึงใบรับรองด้วยตัวเอง ดูรายละเอียดด้านล่าง)

### 2. ตรวจสอบบริดจ์และที่เก็บข้อมูล {#_2-check-the-bridge-and-the-storage}

```bash
pvesm status          # storages, type, content and free space
ip -br link show type bridge
```

- VM ของลูกค้าจะได้รับอินเทอร์เฟซเครือข่าย `virtio` บนบริดจ์ที่คุณป้อนใน NexCMP หากคุณตั้งค่า VLAN บริดจ์นั้นจะต้องรองรับ VLAN (VLAN-aware)
- วาง VM ของลูกค้าไว้บนบริดจ์หรือ VLAN **แยกต่างหากจาก address การจัดการของโหนด** หากใช้เครือข่ายร่วมกัน ชุด IP การจัดการอัตโนมัติของไฟร์วอลล์ Proxmox จะเปิดพอร์ต 22, 8006, 3128, 5900-5999 และ 60000-60050 ของโหนดให้กับทุก VM ในเครือข่ายนั้น หากไม่สามารถแยกกันได้ ให้เพิ่มกฎ DROP สำหรับซับเน็ตของ VM ไปยังพอร์ตดังกล่าวไว้เหนือพอร์ตการจัดการแบบ ACCEPT

### 3. หมายเหตุเกี่ยวกับที่เก็บข้อมูล (LVM-thin) {#_3-storage-notes-lvm-thin}

- ปล่อยให้การทำ zeroing ของ thin-pool **เป็นค่าเริ่มต้น** การปิดใช้งาน (`lvchange -Zn`) อาจทำให้มีข้อมูลเก่าหลงเหลืออยู่ในบล็อกที่จัดสรรใหม่ และสร้างความเสียหายให้กับตารางพาร์ติชันหรือระบบไฟล์ของ VM ที่ถูกโคลน
- ดิสก์ที่รายงาน "write cache: disabled" อาจมีความเร็วในการโคลนเพียงไม่กี่ MB/s เท่านั้น ให้ตรวจสอบด้วย `hdparm -W /dev/sdX` และเปิดใช้งานแคชการเขียนหากดิสก์มีระบบป้องกันไฟดับ

### 4. เปิดใช้งานเนื้อหา `import` (สำหรับตัวสร้างเทมเพลตในตัวเท่านั้น) {#_4-enable-the-import-content-only-for-the-built-in-template-builder}

ตัวสร้างในตัวจะดาวน์โหลดอิมเมจคลาวด์ไปยังที่เก็บข้อมูลชื่อ `local` และสร้างเทมเพลตจากอิมเมจนั้น เพิ่ม `import` (และ `snippets`) ลงในรายการเนื้อหาของที่เก็บข้อมูลนั้น รักษาประเภทที่คุณใช้อยู่เดิมไว้ เนื่องจาก `--content` จะแทนที่รายการทั้งหมด:

```bash
pvesm status --storage local     # note the current content
pvesm set local --content iso,vztmpl,backup,import,snippets
```

### 5. สร้างเทมเพลต OS จากอิมเมจคลาวด์ {#_5-build-an-os-template-from-a-cloud-image}

เทมเพลตคือ VM แบบ cloud-init ที่ NexCMP ทำการโคลน แต่ละรายการจะลงทะเบียนภายใต้ **OS key** สั้น ๆ เช่น `ubuntu-24.04` พร้อมกับ ID ของ VM นั้น สร้างเทมเพลตหนึ่งชุดต่อหนึ่ง OS **บนทุกโหนดที่จะรับ VM** เนื่องจากการโคลนจะทำงานบนโหนดที่เลือก

**ตัวเลือก A แนะนำ: สร้างด้วยตัวเอง** อิมเมจคลาวด์สต็อกของ Ubuntu และ Debian ไม่มี guest agent และไม่อนุญาตให้ล็อกอินด้วย root โดย NexCMP จะตั้งค่ารหัสผ่าน root ผ่านทาง cloud-init ให้เตรียมอิมเมจก่อนดังนี้:

```bash
apt install -y libguestfs-tools
wget -O noble.qcow2 https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img
virt-customize -a noble.qcow2 --install qemu-guest-agent \
  --write /etc/cloud/cloud.cfg.d/99-nexcmp.cfg:$'ssh_pwauth: true\ndisable_root: false\n' \
  --write /etc/ssh/sshd_config.d/00-nexcmp.conf:$'PermitRootLogin yes\nPasswordAuthentication yes\n'
```

จากนั้นสร้าง VM เทมเพลต (id 9000 เป็นตัวอย่าง; ให้เก็บ id เทมเพลตไว้ต่ำกว่าค่า `vmid from` ซึ่งค่าเริ่มต้นคือ 1000):

```bash
qm create 9000 --name tpl-ubuntu-24-04 --memory 2048 --cores 2 --cpu host --ostype l26 \
  --scsihw virtio-scsi-single --net0 virtio,bridge=vmbr0 --agent 1 --serial0 socket --vga serial0
qm set 9000 --scsi0 local-lvm:0,import-from=$PWD/noble.qcow2,discard=on,iothread=1
qm set 9000 --ide2 local-lvm:cloudinit --boot order=scsi0
qm template 9000
```

**ตัวเลือก B: ตัวสร้างในตัว** การ์ด **Create OS template from cloud image** บนแท็บ Clusters (ดูด้านล่าง) จะดาวน์โหลดอิมเมจ qcow2 สร้างเทมเพลตและลงทะเบียนไว้ โดยจะสร้าง VM พร้อมกับ cloud-init และแฟล็ก guest agent แต่จะไม่เปลี่ยนแปลงเนื้อหาภายในอิมเมจ ให้ใช้ตัวเลือกนี้เฉพาะกับอิมเมจที่อนุญาตให้ล็อกอิน root และรัน guest agent อยู่แล้ว หรือเมื่อคุณระบุสนิปเพ็ต cloud-init vendor-data เพิ่มเติม


จำเป็นต้องมี guest agent สำหรับ **Reset password** และสำหรับการแสดงที่อยู่ IP ของ VM

### 6. ตรวจสอบลายนิ้วมือใบรับรอง (ไม่บังคับ) {#_6-know-the-certificate-fingerprint-optional}

NexCMP เชื่อถือคลัสเตอร์ด้วยการตรึงลายนิ้วมือ SHA-256 ของใบรับรอง TLS ดังนั้นการใช้ใบรับรองที่ลงนามด้วยตนเองจึงใช้งานได้ วิธีดูค่าที่ NexCMP จะทำการตรึง:

```bash
openssl x509 -in /etc/pve/local/pve-ssl.pem -noout -fingerprint -sha256
```

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

1. เปิด **Infrastructure › Cloud provider › Providers** และคลิก **Add cloud provider** เลือก **Proxmox VE** แล้วกรอกข้อมูลดังนี้:

   | ฟิลด์ | ค่าตัวอย่าง |
   |---|---|
   | Name | `Proxmox cluster 1` |
   | Endpoint | `https://192.0.2.10:8006` |
   | Token id | `nexcmp@pve!api` |
   | Token secret | `XXXX` (UUID ที่พิมพ์ออกมาในขั้นตอนที่ 1) |
   | สลัก (Slug) | `pve-1` (a-z, 0-9, ขีดกลาง, ความยาว 2-32 ตัวอักษร) |
   | Default node | `pve1` (ว่าง: โหนดออนไลน์ที่มี RAM ว่างมากที่สุด) |
   | สตอเรจ | `local-lvm` |
   | Bridge | `vmbr0` |

      ![ไดอะล็อกเพิ่มผู้ให้บริการคลาวด์โดยเลือก Proxmox VE และมีตัวอย่างค่าเอนด์พอยต์ โทเค็น และสตอเรจ](https://nexcmp.com/th/docs/images/infrastructure/proxmox-01-add-provider.webp)

2. คลิก **Save & open provider** แล้วป้อนเหตุผลเมื่อระบบถาม โทเค็นจะถูกเข้ารหัสก่อนจัดเก็บ
3. บนแท็บ **Overview** ให้คลิก **Test connection** การทดสอบครั้งแรกที่สำเร็จจะ**พินลายนิ้วมือ TLS ของคลัสเตอร์** และหลังจากนั้นจะปฏิเสธใบรับรองอื่น


4. เปิดแท็บ **Clusters** การ์ด **Node · storage · bridge** จะแสดงสิ่งที่ API มองเห็น ส่วนการ์ด **Cluster configuration** จะเก็บการตั้งค่า:

   | ฟิลด์ | ความหมาย |
   |---|---|
   | Default node | โหนดที่ใช้สำหรับ VM ใหม่ ค่าว่างหมายถึงโหนดออนไลน์ที่มี RAM ว่างมากที่สุด |
   | Storage, Bridge, VLAN | ดิสก์สตอเรจ, NIC bridge และแท็ก VLAN ที่เลือกได้ (0 หมายถึงไม่มี) |
   | CPU type | `host` เป็นค่าเริ่มต้น ใช้ `x86-64-v2-AES` เมื่อโหนดมีรุ่น CPU ต่างกัน |
   | vmid from | ID ของ VM แรกที่กำหนดให้ VM ของลูกค้า (ค่าเริ่มต้น 1000) |
   | Storage ISO, Storage backup | เว้นว่างไว้เว้นแต่คุณจะใช้งาน ค่าว่างหมายถึงไม่มีการให้บริการฟีเจอร์ ISO และสำรองข้อมูล |
   | Template OS | บรรทัดละหนึ่งรายการ `os-key=vmid` เช่น `ubuntu-24.04=9000` |
   | Pinned TLS fingerprint (SHA-256) | กรอกอัตโนมัติจากการทดสอบครั้งแรก ล้างค่าแล้วทดสอบอีกครั้งหลังจากที่คุณเปลี่ยนใบรับรองคลัสเตอร์ |

      ![แท็บ Clusters และการ์ด Cluster configuration พร้อมตัวอย่างโหนด สตอเรจ บริดจ์ และรายการเทมเพลต OS](https://nexcmp.com/th/docs/images/infrastructure/proxmox-03-cluster-config.webp)

5. ไม่บังคับ: หากคุณใช้ตัวเลือก B ด้านบน ให้กรอก **Create OS template from cloud image** (คีย์ OS `ubuntu-24.04`, vmid `9000`, โหนด `pve1`, URL อิมเมจ qcow2) แล้วคลิก **Create template** การทำงานจะรันอยู่เบื้องหลังสักครู่ ผลลัพธ์จะอยู่ใน Audit log

      ![การ์ด Create OS template from cloud image พร้อมตัวอย่าง URL อิมเมจ Ubuntu](https://nexcmp.com/th/docs/images/infrastructure/proxmox-04-template-from-image.webp)

6. คลิก **Add pool** ใน **Cluster IP pool** และสร้างพูลที่ VM จะดึงแอดเดรสมาใช้:

   | ฟิลด์ | ค่าตัวอย่าง |
   |---|---|
   | Name | `customers-1` |
   | CIDR | `198.51.100.0/24` |
   | Gateway | `198.51.100.1` (ไม่เคยกำหนดให้ VM) |
   | DNS | `1.1.1.1,8.8.8.8` (1 ถึง 4 แอดเดรส IPv4) |
   | Bridge, VLAN | `vmbr0`, `0` |
   | Already used IPs | บรรทัดละหนึ่งรายการ `ip note` เช่น `198.51.100.10 monitoring` |

   NexCMP จะไม่กำหนดแอดเดรสเครือข่าย, แอดเดรสบรอดคาสต์, เกตเวย์ หรือแอดเดรสที่สงวนไว้ พูลของคลัสเตอร์เดียวกันต้องไม่ทับซ้อนกัน พูลจะสามารถลบได้ก็ต่อเมื่อไม่มีแอดเดรสใดถูกใช้งานอยู่

      ![ไดอะล็อกเพิ่มพูล IP พร้อมตัวอย่าง /24 และเกตเวย์](https://nexcmp.com/th/docs/images/infrastructure/proxmox-05-ip-pool.webp)

7. ใน **Attach cluster to zone** ให้เลือกโซน และระบุชื่อโหนด (ไม่บังคับ) จากนั้นคลิก **Attach to zone** คลัสเตอร์จะเข้าร่วมโซนที่มีการขาย VM อยู่แล้ว ทำให้โซนเดียวสามารถมีทั้ง CloudStack และ Proxmox ร่วมกันได้ แหล่งที่มาใหม่นี้จะ**ไม่ถูกวางจำหน่ายโดยค่าเริ่มต้น** และไม่เปลี่ยนแปลงพฤติกรรมของแพ็กที่มีอยู่เดิม

      ![การ์ด Attach cluster to zone พร้อมเลือกโซนที่มีอยู่แล้ว](https://nexcmp.com/th/docs/images/infrastructure/proxmox-06-attach-zone.webp)

8. เปิด **Services › Virtual Machines › Plans & pricing** และคลิก **Add plan** ใน **Infrastructure source** ให้เลือกคลัสเตอร์ Proxmox จากนั้นกำหนด CPU, RAM, ดิสก์ และราคา แพ็ก Proxmox ไม่จำเป็นต้องใช้ข้อเสนอ CloudStack หากต้องการขายการกำหนดค่าเดียวกันจากทั้งสองแหล่ง ให้ใช้ **Clone** บนแพ็กแล้วเลือกแหล่งอื่น ดิสก์ของแพ็กต้องมีขนาดอย่างน้อยเท่ากับดิสก์ของเทมเพลต เนื่องจาก Proxmox ไม่สามารถย่อขนาดดิสก์ลงได้


### นำเข้า VM ที่มีอยู่แล้ว {#import-a-vm-that-already-exists}

เปิดแท็บ **Servers** เพื่อแสดงรายการ VM บนคลัสเตอร์ **Import** เป็นการกำหนด VM ที่มีอยู่แล้วให้กับบัญชีลูกค้าโดยไม่มีค่าใช้จ่าย: จะไม่มีการเรียกเก็บเงินสำหรับชั่วโมงการทำงาน เวลาที่ปิดเครื่อง หรือปริมาณการใช้งาน ลูกค้าสามารถเริ่ม, หยุด, รีบูต และเปิดคอนโซลได้ แต่ไม่สามารถลบได้ มีเพียงผู้ดูแลระบบเท่านั้นที่ทำได้ NexCMP จะอ่านข้อมูลจากคลัสเตอร์ในระหว่างการนำเข้าเท่านั้น

- คลัสเตอร์ต้องเชื่อมโยงกับโซนที่ **มีชื่อโหนด** ของ VM นั้น (หากเว้นว่างโหนดไว้ ระบบจะรายงานว่ายังไม่ได้ตั้งค่าภูมิภาค)
- หากต้องการทำให้ VM อยู่ในสถานะ **protected** (จะไม่สามารถหยุด, รีบูต, ติดตั้งใหม่, กู้คืนสแนปชอต, ลบถาวร และเปลี่ยนแผนได้) ให้ทำการนำเข้าจากบรรทัดคำสั่งด้วย `--protect`:

  ```bash
  sudo -u nexcmp /opt/nexcmp/bin/nexcmp px-import --provider pve-1 --server-ref pve1/101 --account-id 12 --hostname web-1 --protect
  ```



### สิ่งที่รองรับและไม่รองรับบน Proxmox {#what-is-and-is-not-supported-on-proxmox}

| ฟีเจอร์ | Proxmox VE |
|---|---|
| สร้าง, เปิด/ปิดเครื่อง/รีบูต, ลบ | ใช่ |
| ปรับขนาด CPU และ RAM, ขยายดิสก์ | ได้ แต่ VM จะต้องถูกหยุดทำงาน เปลี่ยนแปลง และเริ่มทำงานใหม่อีกครั้ง (ไม่มีการปรับขนาดแบบสด) |
| Snapshots | ได้ สูงสุด 5 รายการต่อ VM: สร้าง, แสดงรายการ, กู้คืน, ลบ |
| ติดตั้งระบบปฏิบัติการใหม่ | ได้: VM จะถูกสร้างขึ้นใหม่จากเทมเพลตโดยยังคงรหัสประจำตัว, IP และการตั้งค่าเดิม พร้อมรหัสผ่านใหม่ |
| รีเซ็ตรหัสผ่าน | ได้ ผ่านทาง guest agent |
| คอนโซล | ได้ คอนโซลผ่านเบราว์เซอร์ที่พร็อกซีโดยแผงควบคุม |
| เมตริก | ได้: CPU, หน่วยความจำ, เครือข่าย และดิสก์ |
| การเมานต์ ISO, การสำรองข้อมูล, ไฟร์วอลล์, IPv6, การส่งต่อพอร์ต, เปลี่ยน IP, วอลุ่มเสริม, Auto Scaling, DDoS Shield, VPC, การวัดปริมาณการใช้งานแบนด์วิดท์ | ไม่สามารถใช้งานได้ หน้าจัดการ VM ของลูกค้าจะซ่อนสิ่งที่ไม่รองรับ |

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

1. **Test connection** แสดงสถานะ OK และสถานะผู้ให้บริการใช้งานได้
2. **Clusters** แสดงรายการโหนดของคุณว่าออนไลน์ พร้อมทั้งสตอเรจและบริดจ์
3. **Cluster IP pool** แสดงจำนวนที่ว่าง, ที่ใช้ไป และที่ถูกถือครอง
4. คีย์ OS จะปรากฏภายใต้เทมเพลตของโซนใน **Services › Virtual Machines › Template** หลังจากเชื่อมโยงคลัสเตอร์แล้ว
5. สั่งซื้อ VM ทดสอบจากแผนที่ใช้คลัสเตอร์ดังกล่าว ควรได้รับที่อยู่ IP จากพูล, รหัสผ่านรูท และคอนโซลที่ใช้งานได้ รวมถึงพูลจะแสดงที่อยู่ IP ที่ถูกใช้งานไป 1 รายการ

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

::: tip โซนที่มีหลายแหล่งโครงสร้างพื้นฐาน
ตั้งแต่ NexCMP 1.4.0 รายการราคา Cloud Server สาธารณะสามารถใช้งานได้เช่นกันเมื่อ CloudStack และ Proxmox VE ใช้งานโซนร่วมกัน แต่ละแพ็กเกจจะใช้ **Infrastructure source** ของตนเอง หลังจากเชื่อมต่อคลัสเตอร์แล้ว ให้ตรวจสอบรายการราคาสาธารณะและทดลองสั่งซื้อสำหรับแต่ละแหล่ง
:::

- สามารถเพิ่มคลัสเตอร์ Proxmox หลายรายการได้ โดยแต่ละรายการคือหนึ่งผู้ให้บริการ
- โซนหนึ่งจะมีแหล่งที่มาเริ่มต้นหนึ่งรายการ; แผนที่มี **Infrastructure source** ของตัวเองจะถูกปรับใช้กับคลัสเตอร์นั้นโดยตรง ตราบใดที่คลัสเตอร์ยังใช้งานได้และอยู่ในโซนของแผน
- คลัสเตอร์ที่อยู่เบื้องหลังโซนเดียวกับ CloudStack จะยังคงใช้แผนเดิมบน CloudStack ต่อไป ให้ทดสอบคำสั่งซื้อตั้งแต่ต้นจนจ trướcเปิดใช้งานจริง
- โทเค็น API สามารถเปลี่ยนแทนที่ได้เท่านั้น ไม่สามารถดูค่าได้ ให้แทนที่ในแท็บ **Credentials**: สร้างโทเค็นใหม่ใน Proxmox ก่อน,ป้อนค่า, รัน **Test connection** แล้วจึงเพิกถอนโทเค็นเก่า
- การกระทำ Test, Sync และ cluster-info ถูกจำกัดไว้ที่หกครั้งต่อนาทีต่อผู้ดูแลระบบหนึ่งท่าน
- NexCMP เรียกเก็บเงินจากลูกค้าของคุณ ส่วนค่าฮาร์ดแวร์และค่าลิขสิทธิ์ของคลัสเตอร์เป็นภาระรับผิดชอบของคุณ


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

| อาการ | สาเหตุ | วิธีแก้ปัญหา |
|---|---|---|
| ทดสอบ: "Key rejected (wrong access key / secret, or revoked)" หรือ HTTP 401/403 | รหัสโทเค็นหรือรหัสลับไม่ถูกต้อง หรือมีการกำหนดสิทธิ์ ACL ให้กับโทเค็นนั้นเท่านั้น | รันคำสั่ง `pveum acl modify` ทั้งสองคำสั่ง (ผู้ใช้ **และ** โทเค็น) อีกครั้งและตรวจสอบว่ารหัสโทเค็นคือ `user@realm!tokenid` |
| การทดสอบ: "Could not connect to the provider" หรือ "Timed out" | ไฟร์วอลล์ โฮสต์ หรือพอร์ตไม่ถูกต้อง | ตรวจสอบ `https://host:8006` จากเซิร์ฟเวอร์แผงควบคุม |
| การทดสอบ: "Invalid endpoint or not on the allowlist" | เอนด์พอยต์มีพาธ ผู้ใช้ คิวรี หรือไม่ใช่ HTTPS | ใช้ `https://host:8006` ให้ถูกต้อง |
| "ใบรับรอง TLS ของคลัสเตอร์ไม่ตรงกับฟิงเกอร์พริ้นต์ที่ตรึงไว้" | ใบรับรองคลัสเตอร์ถูกแทนที่ | ล้าง **Pinned TLS fingerprint** บนแท็บ Clusters บันทึก แล้วรัน **Test connection** อีกครั้ง |
| Slug ถูกปฏิเสธ | ไม่ใช่ a-z, 0-9, ขีดกลาง หรือไม่ใช่ 2-32 ตัวอักษร | ใช้ค่าประมาณ `pve-1` |
| "รูปแบบ Token id: user@realm!tokenid และจำเป็นต้องระบุ secret" | รหัสโทเค็นหรือรหัสลับหายไป | ป้อนทั้งสองค่า; รหัสลับคือ UUID ที่แสดงขึ้นเมื่อสร้างโทเค็น |
| "บรรทัดเทมเพลตไม่ถูกต้อง: …" | บรรทัดใน **Template OS** ไม่ใช่ `key=vmid` | ใช้อักษร ตัวเลข `.`, `_`, `-` ในคีย์และ vmid อย่างน้อย 100 |
| "คีย์ OS: a-z 0-9 . _ - และ vmid ≥ 100" | คีย์หรือไอดีไม่ถูกต้องใน **Create template** | แก้ไขคีย์ OS และใช้ vmid ที่ว่างอยู่ |
| "vmid … already exists" เมื่อสร้างเทมเพลต | vmid นี้ถูกใช้งานแล้ว | เลือกไอดีอื่น |
| "url ชี้ไปยังที่อยู่ภายใน" | URL ของอิมเมจเป็น IP ภายใน | ใช้ URL สาธารณะ โดยชื่อจะถูกแปลงโดย Proxmox |
| งานเทมเพลตล้มเหลวในการดาวน์โหลด | พื้นที่เก็บข้อมูล `local` ไม่มีเนื้อหา `import` | `pvesm set local --content …,import,snippets` แล้วลองอีกครั้ง ชื่อไฟล์ต้องลงท้ายด้วย `.qcow2`, `.raw`, `.vmdk`, `.ova` หรือ `.ovf` |
| "cluster has no online nodes" หรือ "node … is not online" | โหนดเริ่มต้นออฟไลน์หรือสะกดผิด | แก้ไข **Default node** หรือปล่อยว่างไว้ |
| "อิมเมจไม่ได้เป็นของคลัสเตอร์" | OS ของแผนไม่มีอยู่ใน **Template OS** | เพิ่มคีย์ลงในรายการและบันทึก |
| การปรับใช้ค้าง จากนั้นล้มเหลวในการโคลน | VM เทมเพลตไม่ได้อยู่บนโหนดที่เลือก | สร้างเทมเพลตบนโหนดนั้น หรือตั้งค่า **Default node** ไปยังโหนดที่มีเทมเพลตดังกล่าว |
| ลูกค้าไม่สามารถเข้าสู่ระบบในฐานะ root ได้ | อิมเมจบล็อกการเข้าสู่ระบบของ root | สร้างเทมเพลตใหม่ตามตัวเลือก A |
| การรีเซ็ตกรุ๊ปรหัสผ่านไม่มีผลใดๆ | ไม่มีเกสต์เอเจนต์ในระบบปฏิบัติการแขก | ติดตั้งและเปิดใช้งาน `qemu-guest-agent` ใน template |
| "ต้องระบุชื่อ, CIDR และเกตเวย์" | ฟิลด์พูลหายไป | กรอกข้อมูลทั้งสามช่อง |
| Pool create: "overlaps with pool …", "gateway must be within range (not network/broadcast address)" หรือ "cidr: network address must be …" | พูลทับซ้อนกัน เกตเวย์ไม่ถูกต้อง หรือ CIDR ที่ไม่อยู่บนขอบเขตเครือข่าย | ใช้ช่วงที่ว่าง เกตเวย์ที่อยู่ภายใน และ CIDR ที่เขียนเป็นที่อยู่เครือข่าย (ตัวอย่างเช่น `198.51.100.0/24`) |
| การนำเข้า: "region is not set up" | คลัสเตอร์เชื่อมต่ออยู่โดยไม่มีชื่อโหนดของ VM | เชื่อมต่อคลัสเตอร์เข้ากับโซนพร้อมระบุชื่อโหนด |
