สถาปัตยกรรมระบบ
ตำแหน่งในแผงผู้ดูแลระบบ: หน้านี้เป็นหน้าเอกสารอ้างอิง บริการที่อธิบายไว้ที่นี่สามารถดูได้ด้วย
sudo nexcmp status; การเชื่อมต่อต่างๆ จะได้รับการกำหนดค่าไว้ใต้ Infrastructure และ System › Settings
ภาพรวม
แผนภาพเดียวกันในรูปแบบคำอธิบาย
- ลูกค้าหรือผู้ดูแลระบบเปิด
https://cloud.example.com(พอร์ทัล),https://cloud.example.com/admin(คอนโซลผู้ดูแลระบบ) หรือเรียกใช้งาน REST API โดย DNS จะชี้ชื่อโดเมนไปยังเซิร์ฟเวอร์ของคุณหรือไปยัง Cloudflare ซึ่งทำหน้าที่เป็นพร็อกซี - nginx บนเซิร์ฟเวอร์แผงควบคุมจะ侦听 (ฟัง) ที่พอร์ต 80 (สำหรับการเปลี่ยนเส้นทางและการต่ออายุใบรับรอง) และ 443 (TLS) พร้อมทั้งส่งต่อทุกคำขอไปยัง panel ที่
127.0.0.1:3000หลังจากผ่านตัวช่วยติดตั้ง แผงควบคุมจะฟังเฉพาะบนอินเทอร์เฟซลูปแบ็กเท่านั้น - panel (
nexcmp.service) ทำหน้าที่ให้บริการพอร์ทัลลูกค้า, คอนโซลผู้ดูแลระบบ, REST API, ตัวช่วยติดตั้ง และไฟล์ดาวน์โหลดที่โหนดต้องการ (ไบนารีของเอเจนต์, สคริปต์ติดตั้ง, เครื่องมือบรรทัดคำสั่งcmp) นอกจากนี้ยังตรวจสอบไลเซนส์ของคุณวันละหนึ่งครั้ง - worker (
nexcmp-vmd.service) ทำงานบน127.0.0.1:8112ซึ่งใช้งานได้เฉพาะภายในเครื่องเท่านั้น โดยจะรันงานทั้งหมดที่ใช้เวลาหรือต้องเกิดขึ้นตามกำหนดเวลา เช่น งานโหนด, การซิงโครไนซ์กับ CloudStack และ Proxmox VE, รอบการเรียกเก็บเงิน, การเก็บข้อมูลแบนด์วิดท์ และการเชื่อมต่อคอนโซลเบราว์เซอร์ - จากกระบวนการทั้งสองนี้ NexCMP จะทำการเรียกออกไปยังภายนอก ได้แก่ CloudStack (Management API), Proxmox VE (API ที่พอร์ต 8006, ตรึงใบรับรอง), Dell iDRAC (Redfish ผ่าน HTTPS บนเครือข่ายการจัดการ), Ceph RGW (S3 และ Admin Ops ผ่าน HTTPS), เกตเวย์การชำระเงิน (Stripe, PayPal, USDT และผู้ให้บริการโอนเงินผ่านธนาคาร ซึ่งจะเรียกกลับมายัง URL เว็บฮุกของคุณด้วย), เซิร์ฟเวอร์ SMTP ของคุณ, ผู้ให้บริการ AI ที่มี API รองรับรูปแบบ OpenAI และ Telegram (ตัวเลือกเสริม)
- โหนด VPN รัน
cmp-agentโดยแต่ละโหนดจะลงทะเบียนครั้งเดียวด้วยโทเค็นแบบใช้ครั้งเดียว จากนั้นจะส่งฮาร์ตบีททุกๆ 5วินาทีผ่าน HTTPS ไปยังแผงควบคุมและรับการตั้งค่ากลับมาในคำตอบ ส่วน โหนดพร็อกซี IPv6 จะถูกติดตั้งครั้งเดียวโดยแผงควบคุมผ่าน SSH จากนั้นจะดึงการตั้งค่าของตนเองจากแผงควบคุม - ข้อมูลสถานะจะถูกจัดเก็บไว้ในฐานข้อมูล SQLite และไฟล์จำนวนหนึ่งใน
/var/lib/nexcmpสำหรับข้อมูลรับรองของ CloudStack, Proxmox, S3, iDRAC และผู้ให้บริการ AI จะถูกเข้ารหัส (AES-256-GCM) ด้วยไฟล์คีย์หลักที่อยู่ในพื้นที่เดียวกัน
บริการและกระบวนการ
| กระบวนการ | ทำงานในฐานะ | ฟังที่พอร์ต/อินเทอร์เฟซ | หน้าที่การทำงาน |
|---|---|---|---|
nginx | root (เวิร์กเกอร์ www-data) | 80, 443 | TLS, เปลี่ยนเส้นทาง, พร็อกซีไปยังแผงควบคุม |
nexcmp | nexcmp | 3000 (ทุกอินเทอร์เฟซระหว่างการติดตั้งครั้งแรก จากนั้นเปลี่ยนเป็น 127.0.0.1) | พอร์ทัล, คอนโซลผู้ดูแลระบบ, API, ตัวช่วยติดตั้ง, การดาวน์โหลด |
nexcmp-vmd | nexcmp | 127.0.0.1:8112 | งาน, การซิงค์, การเรียกเก็บเงิน, แบนด์วิดท์, คอนโซล |
nexcmp-update | root | ไม่มี | ใช้การอัปเดตที่คอนโซลผู้ดูแลระบบร้องขอ (path unit จะรอคำขอ) |
cmp-agent (บนโหนด VPN) | root | พอร์ตตัวรับฟัง VPN | รายงานไปยังพาเนล รันพร็อกซีตัวรับฟังบน IPv4 สาธารณะ |
พาเนลและเวิร์กเกอร์ทำงานเป็นผู้ใช้ทั่วไปโดยไม่มีความสามารถของ Linux ใดๆ มีระบบไฟล์แบบอ่านอย่างเดียว ยกเว้น /var/lib/nexcmp และ /var/log/nexcmp โดยไม่ต้องใช้ root, Docker, แยกฐานข้อมูล หรือ Redis
ไฟล์และตำแหน่งที่อยู่
| พาธ | เนื้อหา |
|---|---|
/opt/nexcmp | โปรแกรม: เวอร์ชันที่ปล่อย, bin/, ไฟล์ที่ใช้ร่วมกัน เช่น ตัวสร้างเทมเพลต เป็นเจ้าของโดย root และเป็นแบบอ่านอย่างเดียวสำหรับบริการ |
/etc/nexcmp | การตั้งค่าตัวติดตั้ง (install.conf), พอร์ตและการผูก (nexcmp.env) |
/var/lib/nexcmp | ฐานข้อมูล SQLite, การอัปโหลดแบรนด์, โฟลเดอร์ดาวน์โหลดเอเจนต์, สถานะไลเซนส์ และไฟล์มาสเตอร์คีย์ กรุณาสำรองข้อมูลส่วนนี้ |
/var/log/nexcmp | ล็อก |
ดูที่ Backup and restore ไฟล์มาสเตอร์คีย์จะต้องได้รับการสำรองข้อมูลไปพร้อมกับฐานข้อมูล มิฉะนั้นฐานข้อมูลที่กู้คืนมาจะไม่สามารถถอดรหัสข้อมูลประจำตัวที่จัดเก็บไว้ได้
ใครเชื่อมต่อกับใคร
| Direction | พาธ | Port | หมายเหตุ |
|---|---|---|---|
| ลูกค้าไปยังพาเนล | อินเทอร์เน็ต, DNS, Cloudflare (ไม่บังคับ), nginx | 443 | ดูที่ DNS and Cloudflare |
| พาเนลไปยังเซิร์ฟเวอร์ไลเซนส์ | nexcmp.com | 443 | การเปิดใช้งาน, การตรวจสอบรายวัน และการอัปเดต |
| พาเนลไปยัง CloudStack | API | 443 หรือ 8080 | คอนโซล VM, แบนด์วิดท์ และฟีเจอร์ Kubernetes ใช้เอนด์พอยต์เดียวกัน |
| พาเนลไปยัง Proxmox VE | API และคอนโซล WebSocket | 8006 | ใบรับรองถูกพินด้วย SHA-256 |
| พาเนลไปยัง iDRAC | Redfish | 443, VNC 5901 | เครือข่ายการจัดการเท่านั้น |
| iDRACไปยังเซิร์ฟเวอร์ ISO | HTTP | พอร์ตของคุณ | iDRAC ทำการดึงไฟล์ ISO |
| พาเนลไปยัง Ceph RGW | Admin Ops | 443 | |
| พาเนลไปยัง SMTP | SMTP | 587 หรือ 465 | |
| พาเนลไปยังผู้ให้บริการ AI | HTTPS | 443 | เฉพาะเมื่อเปิดใช้งานโมดูล AI |
| เกตเวย์ชำระเงินไปยังพาเนล | Webhook | 443 | Stripe และ PayPal เรียกกลับ |
| โหนดไปยังพาเนล | cmp-agent | 443 | ลงทะเบียน, ฮาร์ทบีท, อัปเกรด |
| พาเนลไปยังโหนดพร็อกซี IPv6 | SSH | พอร์ตที่คุณป้อน | ติดตั้งเพียงครั้งเดียวเท่านั้น |
ทำไมจึงสำคัญ
- แผงควบคุมที่เข้าถึงได้คือแผงควบคุมที่ถูกโจมตีได้ ปิดพอร์ต 3000 ทันทีเมื่อตัวช่วยสร้างการตั้งค่าเสร็จสิ้น โปรแกรมติดตั้งจะดำเนินการนี้ให้โดยอัตโนมัติเมื่อเปิดใช้งาน TLS
- Worker ต้องทำงานอยู่ จึงจะสามารถสร้างหรือเรียกเก็บเงินได้
sudo nexcmp statusแสดงทั้งบริการและการตรวจสอบสถานะ - วางแผนไฟร์วัลขาออก หากทราฟฟิกขาออกของเซิร์ฟเวอร์แผงควบคุมถูกกรอง ให้ALLOW ปลายทางในตารางด้านบน
- ทราฟฟิกการจัดการจะไม่ผ่านเส้นทางสาธารณะ การเชื่อมต่อกับ CloudStack, Proxmox VE, iDRAC และ Ceph จะส่งตรงจากเซิร์ฟเวอร์แผงควบคุมไปยังระบบเหล่านั้น โดยไม่ผ่าน nginx หรือ Cloudflare