# NexCMP 1.6.1 — full documentation > Complete NexCMP documentation in one file. Source: https://nexcmp.com/hi/docs/ · generated 2026-11-02. --- # NexCMP क्या है {#what-is-nexcmp} NexCMP वह सॉफ़्टवेयर है जिसे आप **अपने सर्वर** पर इंस्टॉल करके क्लाउड बुनियादी ढांचे को एक ऐसे उत्पाद में बदलते हैं जिसे आप बेच सकते हैं। यह आपको प्रदान करता है: - एक **कस्टमर पोर्टल** जहाँ लोग साइन अप करते हैं, क्रेडिट जोड़ते हैं, वर्चुअल मशीनें और अन्य सेवाएँ ऑर्डर करते हैं, कंसोल खोलते हैं, स्नैपशॉट लेते हैं और सहायता से संपर्क करते हैं; - एक **एडमिन कंसोल** (`/admin`) जहाँ आप ग्राहकों, प्लान, कीमतों, भुगतानों, बुनियादी ढांचे और सेटिंग्स का प्रबंधन करते हैं; - **बिलिंग**: प्रति ग्राहक एक वॉलेट, प्रति घंटे या मासिक शुल्क, इनवॉइस, प्रमोशन और संसाधन कोटा; - **व्हाइट-लेबल रीसेलर्स**: अन्य ब्रांड जो आपके डोमेन के तहत आपकी क्षमता बेचते हैं; - एक **API**, एक कमांड-लाइन टूल (`cmp`) और स्वचालन के लिए एक MCP सर्वर; - वैकल्पिक **AI Chat** (सहायता सहायक) और **AI Agent** (सादी भाषा में VM प्रबंधित करें)। ## यह किससे कनेक्ट होता है {#what-it-connects-to} NexCMP स्वयं वर्चुअल मशीनें होस्ट नहीं करता है। यह उस प्लेटफ़ॉर्म को संचालित करता है जो ऐसा करता है। एक *source* (जिसे प्रदाता भी कहा जाता है) इनमें से एक है: | Source | विशिष्ट उपयोग | गाइड | |---|---|---| | Apache CloudStack | ज़ोन, नेटवर्क, वर्चुअल राउटर और सार्वजनिक IP के साथ निजी या सार्वजनिक क्लाउड | [CloudStack](https://nexcmp.com/hi/docs/infrastructure/cloudstack/) | | Proxmox VE | एकल सर्वर या क्लस्टर जिन्हें आप पहले से चला रहे हैं | [Proxmox VE](https://nexcmp.com/hi/docs/infrastructure/proxmox/) | अन्य मॉड्यूल को अपने स्वयं के बुनियादी ढांचे की आवश्यकता होती है: [bare-metal servers](https://nexcmp.com/hi/docs/infrastructure/dedicated/), [VPN and proxy nodes](https://nexcmp.com/hi/docs/infrastructure/vpn-proxy-nodes/), [S3 object storage](https://nexcmp.com/hi/docs/infrastructure/s3/), [Kubernetes and Private Cloud](https://nexcmp.com/hi/docs/infrastructure/kubernetes-and-private-cloud/)। उन सभी को कवर करने वाली एक तालिका के लिए [Infrastructure requirements](https://nexcmp.com/hi/docs/infrastructure/requirements/) देखें। ## यह कैसे बनाया गया है {#how-it-is-built} NexCMP एक एकल प्रोग्राम है जिसमें एक Ubuntu सर्वर पर दो systemd सेवाएं होती हैं: - `nexcmp` — वेब सर्वर: कस्टमर पोर्टल, एडमिन कंसोल, API, सेटअप विज़ार्ड; - `nexcmp-vmd` — बैकग्राउंड वर्कर: प्रावधान कार्य, आपके CloudStack या Proxmox के साथ सिंक्रनाइज़ेशन, बिलिंग रन। डेटा `/var/lib/nexcmp` (SQLite डेटाबेस और फ़ाइलों) में रहता है, कॉन्फ़िगरेशन `/etc/nexcmp` में, प्रोग्राम `/opt/nexcmp` में। पूरी तस्वीर के लिए [Architecture](https://nexcmp.com/hi/docs/infrastructure/architecture/) देखें। ## आगे कहाँ जाना है {#where-to-go-next} 1. [requirements](https://nexcmp.com/hi/docs/getting-started/requirements/) की जाँच करें। 2. लाइसेंस प्राप्त करें — [License and purchase](https://nexcmp.com/hi/docs/getting-started/license-and-purchase/)। 3. [Install](https://nexcmp.com/hi/docs/getting-started/installation/), फिर [setup wizard](https://nexcmp.com/hi/docs/getting-started/setup-wizard/) चलाएं। 4. अपना प्लेटफ़ॉर्म कनेक्ट करें: [CloudStack](https://nexcmp.com/hi/docs/infrastructure/cloudstack/) या [Proxmox VE](https://nexcmp.com/hi/docs/infrastructure/proxmox/)। --- # NexCMP सर्वर के लिए आवश्यकताएँ {#requirements-for-the-nexcmp-server} यह पृष्ठ उस सर्वर को कवर करता है जो NexCMP को चलाता है। आपके CloudStack, Proxmox VE या अन्य बुनियादी ढांचे को जिसकी आवश्यकता है, वह [Infrastructure requirements](https://nexcmp.com/hi/docs/infrastructure/requirements/) में है। ## सर्वर {#server} | आइटम | आवश्यकता | इंस्टॉलर द्वारा जांचा गया | |---|---|---| | ऑपरेटिंग सिस्टम | Ubuntu **22.04** या **24.04** | हाँ — किसी अन्य चीज़ पर त्रुटि के साथ रुक जाता है | | CPU आर्किटेक्चर | x86_64 | हाँ | | मेमोरी | न्यूनतम 2 GB (इंस्टॉलर लगभग 1.8 GB से कम पर मना कर देता है) | हाँ | | खाली डिस्क | `/` पर 8 GB खाली न्यूनतम | हाँ | | अनुमतियाँ | root (`sudo`) | हाँ | | पैकेज | `curl`, `ca-certificates`, `zstd`, `tar`, `openssl`, `python3`, `openssh-client` — स्वचालित रूप से स्थापित | गायब होने पर स्थापित किया जाता है | | HTTPS के साथ | `nginx` और `certbot` — स्वचालित रूप से स्थापित जब तक कि आप `--no-nginx` पास न करें | गायब होने पर स्थापित किया जाता है | ::: tip साइज़िंग एक छोटा इंस्टॉलेशन (कुछ सौ ग्राहक) 2 vCPU / 4 GB RAM पर आसानी से चलता है। डिस्क का उपयोग मुख्य रूप से SQLite डेटाबेस और वैकल्पिक अपडेट और बैकअप प्रतियों द्वारा होता है — प्रोडक्शन के लिए 20 GB या अधिक की योजना बनाएं। ::: ## नेटवर्क {#network} | दिशा | पोर्ट | उद्देश्य | |---|---|---| | इनबाउंड | 80/tcp | Let's Encrypt सत्यापन और HTTPS पर रीडायरेक्ट | | इनबाउंड | 443/tcp | ग्राहक पोर्टल, एडमिन कंसोल, API | | इनबाउंड | 3000/tcp | पहले इंस्टॉलेशन पर सेटअप विज़ार्ड और केवल आपातकालीन पहुँच — [Installation](https://nexcmp.com/hi/docs/getting-started/installation/#the-panel-port-3000) देखें | | आउटबाउंड | `nexcmp.com` पर 443/tcp | लाइसेंस सक्रियण, दैनिक लाइसेंस जाँच, अपडेट | | आउटबाउंड | आपके CloudStack API / Proxmox API पर | प्रावधान और सिंक्रनाइज़ेशन | | आउटबाउंड | आपके द्वारा सक्षम किए गए भुगतान, ई-मेल और AI प्रदाताओं के लिए 443/tcp | Stripe, PayPal, SMTP, AI प्रदाता इत्यादि | यदि आप चाहते हैं कि Let's Encrypt सीधे प्रमाणपत्र जारी करे, तो सर्वर को एक **सार्वजनिक IPv4 पते** की आवश्यकता है। यदि डोमेन Cloudflare द्वारा प्रॉक्सी किया गया है, तो [DNS and Cloudflare](https://nexcmp.com/hi/docs/getting-started/dns-and-cloudflare/) देखें। ## DNS - एक **मुख्य डोमेन** (उदाहरण के लिए `cloud.example.com`) — पोर्टल `https://cloud.example.com/` है और एडमिन कंसोल `https://cloud.example.com/admin` है। - वैकल्पिक: `admin.` और `partner.`। यदि वे नाम सर्वर (या Cloudflare) पर हल होते हैं, तो इंस्टॉलर उन्हें प्रमाणपत्र में जोड़ देता है। - डोमेन आपके लाइसेंस पर पंजीकृत डोमेन से मेल खाना चाहिए। ## इस सर्वर पर आवश्यक नहीं है {#not-required-on-this-server} NexCMP एक सामान्य अप्रिविलेज्ड सर्विस यूजर (`nexcmp`) के रूप में चलता है। इसे रनटाइम पर रूट, Docker, एक अलग डेटाबेस सर्वर, Redis, या किसी हाइपरवाइज़र सॉफ़्टवेयर की **आवश्यकता नहीं होती है**। --- # लाइसेंस और खरीद {#license-and-purchase} > **एडमिन में कहाँ:** System › Admin › License & updates (`/license`) NexCMP एक **लाइसेंस कुंजी** के साथ सक्रिय होता है जिसे आप अपने [NexCMP खाते](https://nexcmp.com/licenses) में प्रबंधित करते हैं। संस्करण और वर्तमान कीमतें [nexcmp.com/pricing](https://nexcmp.com/pricing) पर सूचीबद्ध हैं; यह पृष्ठ बताता है कि एक बार लाइसेंस मिलने के बाद यह कैसे काम करता है। ## लाइसेंस प्राप्त करें {#get-a-license} 1. [nexcmp.com](https://nexcmp.com/register) पर एक खाता बनाएं और अपना ई-मेल सत्यापित करें। 2. एक संस्करण चुनें: - **NexCMP Free** — अपने स्वयं के ASN और अपने नाम पर पंजीकृत सबनेट वाले नेटवर्क ऑपरेटरों के लिए। [nexcmp.com/deploy](https://nexcmp.com/deploy) पर एक आवेदन भेजें (कंपनी, ASN, सबनेट, पैनल डोमेन)। आपके खाते का ई-मेल उस कंपनी डोमेन पर होना चाहिए जिसे सार्वजनिक रजिस्ट्री (WHOIS) ASN या सबनेट के लिए सूचीबद्ध करती है। प्रत्येक आवेदन की समीक्षा की जाती है; निर्णय होने पर आपको एक ई-मेल मिलता है, और अनुमोदन के बाद ही लाइसेंस कुंजी दिखाई देती है। - **NexCMP Source** — एक वन-टाइम अपग्रेड, कोई ASN आवश्यक नहीं है। [nexcmp.com/pricing](https://nexcmp.com/pricing) देखें। 3. अपना लाइसेंस पृष्ठ खोलें। यह **लाइसेंस कुंजी** (प्रारूप `NXC-XXXXX-XXXXX-XXXXX-XXXXX`), **मुख्य डोमेन**, और एक रेडी-मेड इंस्टॉल कमांड दिखाता है। ::: warning कुंजी को गोपनीय रखें लाइसेंस कुंजी किसी इंस्टॉलेशन को सक्रिय करती है। इसे पासवर्ड की तरह मानें: इसे टिकट, चैट या स्क्रीनशॉट में पेस्ट न करें। ::: ## लाइसेंस में क्या शामिल होता है {#what-a-license-contains} | फ़ील्ड | अर्थ | |---|---| | मुख्य डोमेन | वह होस्टनेम जिस पर आपका पोर्टल चलता है। सक्रियण पर कुंजी इससे बंध जाती है। | | रीसेलर डोमेन | व्हाइट-लेबल पोर्टल के रूप में परोसे जाने वाले अतिरिक्त होस्टनेम — [Resellers](https://nexcmp.com/hi/docs/customers/resellers/) देखें। | | अपडेट की अवधि | वह तिथि जिस तक आपको **अपडेट और बग फ़िक्स** प्राप्त होते हैं। एक Free लाइसेंस स्वीकृत होने के दिन से **1 वर्ष** के साथ शुरू होता है; अपने लाइसेंस पृष्ठ पर प्रति वर्ष $99 में इसे नवीनीकृत करें। सुरक्षा फ़िक्स हमेशा वितरित किए जाते हैं, इस तिथि के बाद भी। | | स्थिति | `active`, या निलंबित / समाप्त / निरस्त। | ## जब मुफ़्त वर्ष समाप्त हो जाता है {#when-the-free-year-ends} "Updates until" तिथि बीत जाने पर सॉफ़्टवेयर **चलना जारी रखता है**: ग्राहकों, सेवाओं और बिलिंग पर कोई प्रभाव नहीं पड़ता है। आप नए फ़ीचर रिलीज़ और बग-फ़िक्स अपडेट प्राप्त करना बंद कर देते हैं (सुरक्षा फ़िक्स अभी भी आते हैं)। जारी रखने के लिए अपने लाइसेंस पृष्ठ [nexcmp.com/licenses](https://nexcmp.com/licenses) पर प्रति वर्ष $99 में नवीनीकृत करें; नवीनीकरण वर्तमान समाप्ति तिथि में 12 महीने जोड़ देता है। NexCMP Free में केवल बग फ़िक्स शामिल हैं — कोई तकनीकी सहायता और कोई ऐप्स नहीं। ## NexCMP Source क्या जोड़ता है {#what-nexcmp-source-adds} Source लाइसेंस आपके लाइसेंस का एक वन-टाइम $1,999 अपग्रेड है: पूरा सोर्स कोड, आपके लिए निर्मित और ब्रांडेड सभी NexCMP ऐप्स (Android, iOS, Windows, macOS, Linux, Chrome / Edge / Brave और Firefox), और एक विशेषज्ञ इंजीनियर के साथ 30 कार्य दिवस — VMware, WHMCS या किसी अन्य पैनल से निःशुल्क माइग्रेशन, या एक पूर्ण A-to-Z सेटअप। नए सोर्स रिलीज़ 12 महीने के लिए शामिल हैं; उसके बाद उन्हें नवीनीकृत करना ($99 प्रति वर्ष) वैकल्पिक है, और आपके द्वारा डाउनलोड किया गया सोर्स आपके पास ही रहता है। [Source license terms](https://nexcmp.com/legal/source-license/) देखें। ## इंस्टॉलेशन अपने लाइसेंस की जाँच कैसे करता है {#how-the-installation-checks-its-license} - इंस्टॉल होने पर सर्वर आपके डोमेन के लिए कुंजी को सक्रिय करता है और एक **हस्ताक्षरित टोकन** प्राप्त करता है। - टोकन को हर **24 घंटे** में स्वचालित रूप से नवीनीकृत किया जाता है। यह **14 दिनों** तक वैध रहता है, इसलिए इंटरनेट का संक्षिप्त आउटेज हानिरहित है। - सभी रिलीज़ और टोकन प्रोग्राम में बने Ed25519 हस्ताक्षर से सत्यापित किए जाते हैं; छेड़छाड़ किया गया डाउनलोड अस्वीकार कर दिया जाता है। एडमिन कंसोल में या `sudo nexcmp status` के साथ किसी भी समय स्थिति जाँचें। ## यदि लाइसेंस मान्य नहीं है {#if-the-license-is-not-valid} जब टोकन समाप्त हो जाता है, या लाइसेंस निलंबित कर दिया जाता है या डोमेन अब मेल नहीं खाता: - ग्राहक **नई सेवाएँ नहीं बना सकते** और एडमिन कंसोल पर एक बैनर दिखाई देता है; - जो सेवाएँ पहले से चल रही हैं, **बिलिंग और मौजूदा ग्राहक प्रभावित नहीं होते**; - कारण को ठीक करें (सर्वर को इंटरनेट से पुनः कनेक्ट करें, [nexcmp.com/licenses](https://nexcmp.com/licenses) पर नवीनीकरण करें) और License & updates में **Check now** पर क्लिक करें। ## नए सर्वर या डोमेन पर जाना {#moving-to-a-new-server-or-domain} उसी कुंजी और पंजीकृत डोमेन के साथ नए सर्वर पर सक्रिय करें ([Installation](https://nexcmp.com/hi/docs/getting-started/installation/) देखें)। पंजीकृत डोमेन बदलने के लिए, पहले इसे अपने लाइसेंस पेज [nexcmp.com/licenses](https://nexcmp.com/licenses) पर करें, फिर नए `--domain` के साथ इंस्टॉलर को दोबारा चलाएं। --- # Install NexCMP {#install-nexcmp} इंस्टॉलर आपके लाइसेंस सर्वर द्वारा प्रदान की जाने वाली एक सिंगल स्क्रिप्ट है। यह मशीन की जाँच करता है, आपके लाइसेंस को सक्रिय करता है, प्रोग्राम को डाउनलोड और सत्यापित करता है, सेवाएँ इंस्टॉल करता है और (वैकल्पिक रूप से) Let's Encrypt प्रमाणपत्र के साथ nginx सेट अप करता है। ## शुरू करने से पहले {#before-you-start} - एक सर्वर जो [requirements](https://nexcmp.com/hi/docs/getting-started/requirements/) को पूरा करता हो, और रूट एक्सेस। - आपके [license page](https://nexcmp.com/licenses) से आपकी **लाइसेंस कुंजी** और **मुख्य डोमेन** — [License and purchase](https://nexcmp.com/hi/docs/getting-started/license-and-purchase/) देखें। - डोमेन के लिए एक DNS रिकॉर्ड — [DNS and Cloudflare](https://nexcmp.com/hi/docs/getting-started/dns-and-cloudflare/) देखें। आप पहले इंस्टॉल करके बाद में भी DNS ठीक कर सकते हैं; इंस्टॉलर आपको बताता है कि क्या गायब है और इसे दोबारा चलाया जा सकता है। ## इंस्टॉल करें {#install} 1. सर्वर पर लॉग इन करें और रूट बनें (या `sudo` उपसर्ग जोड़ें)। 2. अपने लाइसेंस पेज से कमांड चलाएँ। यह इस तरह दिखता है: ```bash curl -fsSL https://nexcmp.com/install.sh | sudo bash -s -- \ --license NXC-XXXXX-XXXXX-XXXXX-XXXXX \ --domain cloud.example.com \ --email admin@example.com ``` 3. चेकचिह्न (checkmark) का इंतज़ार करें। एक नए इंस्टॉलेशन में कुछ मिनट लगते हैं; पहली शुरुआत डेटाबेस स्कीमा बनाती है और धीमी डिस्क पर एक मिनट तक का समय ले सकती है। 4. अंत में सारांश पढ़ें। यह पोर्टल और एडमिन URL, **सेटअप कोड**, और अगला चरण प्रिंट करता है। ![पोर्टल URL, एडमिन URL और वन-टाइम सेटअप कोड के साथ समाप्त होने वाला इंस्टॉलर](https://nexcmp.com/hi/docs/images/getting-started/installation-01-finish.webp) ## पैरामीटर {#parameters} | पैरामीटर | डिफ़ॉल्ट | अर्थ | |---|---|---| | `--license KEY` | पहली बार इंस्टॉल करने पर आवश्यक | लाइसेंस कुंजी। | | `--domain NAME` | पहली बार इंस्टॉल करने पर आवश्यक | मुख्य डोमेन। लाइसेंस से मेल खाना चाहिए। `https://` और ट्रेलिंग पथ हटा दिए जाते हैं। | | `--email ADDRESS` | कोई नहीं | Let's Encrypt समाप्ति सूचनाओं के लिए संपर्क ईमेल। इसके बिना प्रमाणपत्र बिना ईमेल के पंजीकृत किया जाता है। | | `--port N` | `3000` | पैनल का स्थानीय पोर्ट (1–65535)। | | `--no-nginx` | बंद | nginx / TLS को इंस्टॉल या कॉन्फ़िगर न करें। जब आप अपना खुद का रिवर्स प्रॉक्सी चलाते हैं या पहले NexCMP को देखना चाहते हैं, तो इसका उपयोग करें। | | `--behind-cloudflare` | स्वचालित रूप से पहचाना गया | फोर्स "डोमेन Cloudflare द्वारा प्रॉक्सी किया गया है" मोड। आमतौर पर DNS से पहचाना जाता है। | | `--channel NAME` | `stable` | रिलीज़ चैनल। | **बिना पैरामीटर के** इंस्टॉलर को दोबारा चलाने से सहेजे गए पैरामीटर (`/etc/nexcmp/install.conf`) पुन: उपयोग किए जाते हैं और डेटा, कॉन्फ़िगरेशन और खातों को सुरक्षित रखते हुए अपग्रेड किया जाता है। ठीक यही `sudo nexcmp update` करता है। ## इंस्टॉलर क्या करता है {#what-the-installer-does} 1. **मशीन की जाँच करता है** — Ubuntu 22.04/24.04, x86_64, कम से कम 2 GB RAM, 8 GB खाली डिस्क। 2. यह आवश्यक **पैकेज इंस्टॉल करता है** (`curl`, `zstd`, `openssl`, `python3`, `openssh-client` …)। 3. **सर्विस यूजर** `nexcmp` और ये डायरेक्ट्रीज़ बनाता है: `/opt/nexcmp` (प्रोग्राम, रूट के स्वामित्व में, सर्विस के लिए रीड-ओनली), `/etc/nexcmp` (कॉन्फ़िगरेशन), `/var/lib/nexcmp` (डेटा), `/var/log/nexcmp`। 4. डोमेन के लिए **लाइसेंस एक्टिवेट करता है** और इस मशीन के लिए एक निश्चित इंस्टेंस आईडी स्टोर करता है। 5. **वह नवीनतम रिलीज डाउनलोड करता है जिसके आप हकदार हैं**, फिर इसके SHA-256 और Ed25519 हस्ताक्षर को सत्यापित करता है। वैध हस्ताक्षर के बिना किसी भी रिलीज को अस्वीकार कर दिया जाता है। यह कभी भी किसी नए चल रहे संस्करण को डाउनग्रेड नहीं करता है। 6. **कॉन्फ़िगरेशन और systemd यूनिट्स लिखता है** (`nexcmp`, `nexcmp-vmd`, `nexcmp-update`) और सेवाओं को शुरू करता है; यह `/healthz` के उत्तर देने का इंतजार करता है। 7. **nginx और TLS सेट अप करता है** (जब तक कि `--no-nginx` न हो): डोमेन के लिए और उन नामों के लिए भी जब वे नाम भी रिजॉल्व होते हैं `admin.` / `partner.`, certbot (webroot चैलेंज) के साथ Let's Encrypt सर्टिफिकेट प्राप्त करता है। यदि DNS अभी भी इस सर्वर (या Cloudflare) की ओर इशारा नहीं करता है, तो यह इस चरण को छोड़ देता है और ऐसा बताता है। 8. URL के साथ एक **सारांश प्रिंट करता है** और, यदि अभी तक कोई एडमिनिस्ट्रेटर मौजूद नहीं है, तो **सेटअप कोड** प्रिंट करता है। ## पैनल पोर्ट (3000) {#the-panel-port-3000} - पहले इंस्टॉलेशन के दौरान पैनल `0.0.0.0:3000` पर सुनता है ताकि आप `http://:3000/setup` पर सेटअप विज़ार्ड खोल सकें। - एक बार विज़ार्ड पूरा हो जाने **और** TLS सक्रिय होने के बाद, पैनल केवल `127.0.0.1` पर सुनता है; nginx `https://` को इस पर प्रॉक्सी करता है। - आपात स्थितियों के लिए (nginx खराब, DNS गलत) आप सीमित समय के लिए पोर्ट खोल सकते हैं: `sudo nexcmp open-port 30` (30 मिनट, फिर यह अपने आप बंद हो जाता है) — या SSH टनल का उपयोग करें: `ssh -L 3000:127.0.0.1:3000 ` और `http://127.0.0.1:3000/` ब्राउज़ करें। ::: warning सादा HTTP पोर्ट 3000 सादा HTTP है। इसका उपयोग केवल एक विश्वसनीय नेटवर्क पर सेटअप विज़ार्ड के लिए, या SSH टनल के माध्यम से करें। इसे खुला न छोड़ें। ::: ## सार्वजनिक डोमेन के बिना इंस्टॉल करना (लैब या परीक्षण) {#installing-without-a-public-domain-lab-or-test} आप बिना किसी DNS वाली मशीन पर इंस्टॉल कर सकते हैं: ```bash curl -fsSL https://nexcmp.com/install.sh | sudo bash -s -- \ --license NXC-XXXXX-XXXXX-XXXXX-XXXXX --domain lab.example.com --no-nginx ``` फिर SSH टनल (`ssh -L 3000:127.0.0.1:3000 `, `http://127.0.0.1:3000/setup` ब्राउज़ करें) के माध्यम से विज़ार्ड खोलें। एक बार DNS मौजूद होने पर `--no-nginx` के बिना इंस्टॉलर को दोबारा चलाएं। ## Docker और Kubernetes {#docker-and-kubernetes} कोई प्रकाशित कंटेनर इमेज उपलब्ध नहीं है। इंस्टॉलर (एक नेटिव systemd इंस्टॉलेशन) समर्थित इंस्टॉलेशन विधि है। ## सत्यापित करें {#verify} ```bash sudo nexcmp status ``` आपको संस्करण, `nexcmp: active`, `nexcmp-vmd: active`, `healthz: ok`, और — विज़ार्ड पूरा होने तक — सेटअप कोड दिखाई देना चाहिए। [setup wizard](https://nexcmp.com/hi/docs/getting-started/setup-wizard/) के साथ जारी रखें। यदि कुछ विफल रहता है, तो [Installation errors](https://nexcmp.com/hi/docs/troubleshooting/installation-errors/) देखें। --- # DNS और Cloudflare {#dns-and-cloudflare} NexCMP को एक DNS नाम — इसके **मुख्य डोमेन** — की आवश्यकता होती है और यह दो मोड में काम करता है। ## मोड A: DNS सीधे सर्वर पर इंगित करता है {#mode-a-dns-points-straight-at-the-server} 1. एक **A** रिकॉर्ड `cloud.example.com → ` बनाएं (और यदि सर्वर में IPv6 है तो **AAAA** रिकॉर्ड)। 2. वैकल्पिक, यदि आप उनका उपयोग करते हैं: `admin.cloud.example.com` और `partner.cloud.example.com` समान IP की ओर इशारा करते हैं। 3. [installer](https://nexcmp.com/hi/docs/getting-started/installation/) चलाएं (या दोबारा चलाएं)। यह देखता है कि नाम सर्वर के अपने सार्वजनिक IP पर रिजॉल्व होता है और पोर्ट 80 पर HTTP-01 चैलेंज के माध्यम से Let's Encrypt सर्टिफिकेट प्राप्त करता है। ## मोड B: डोमेन Cloudflare द्वारा प्रॉक्सी किया जाता है {#mode-b-the-domain-is-proxied-by-cloudflare} ऑरेंज क्लाउड (**Proxied**) के साथ वही रिकॉर्ड बनाएं। इंस्टॉलर यह पहचानता है कि नाम केवल Cloudflare पतों पर रिजॉल्व होता है और Cloudflare मोड पर स्विच हो जाता है: - nginx अभी भी आपके सर्वर पर 80/443 पर सुनता है; - आगंतुक का वास्तविक IP `CF-Connecting-IP` हेडर से पढ़ा जाता है — यह **केवल** Cloudflare के प्रकाशित रेंजों से आने वाले कनेक्शनों के लिए है, ताकि इसे कोई अन्य व्यक्ति जाली न बना सके; - प्रमाणपत्र Let's Encrypt के माध्यम से प्राप्त किया जाता है (Cloudflare आपके ओरिजिन पर चैलेंज अग्रेषित करता है); यदि यह अभी संभव नहीं है, तो एक **सेल्फ-साइंड ओरिजिन सर्टिफिकेट** बनाया जाता है ताकि "Full" मोड काम करे, और इंस्टॉलर के बाद के पुनः रन पर यह Let's Encrypt में अपग्रेड हो जाता है। आप `--behind-cloudflare` के साथ इस मोड को बाध्य कर सकते हैं। ::: important Cloudflare में SSL/TLS मोड सेट करें Cloudflare में **SSL/TLS › Overview** पर जाएं और इंस्टॉलर द्वारा Let's Encrypt प्रमाणपत्र रिपोर्ट किए जाने के बाद **Full (strict)** चुनें। सेल्फ-साइंड ओरिजिन सर्टिफिकेट के साथ **Full** का उपयोग करें। **Flexible** के कारण रीडायरेक्ट लूप हो सकते हैं। ::: ::: tip यदि "Always Use HTTPS" चालू है, तो Cloudflare आपके ओरिजिन के पोर्ट 443 पर सत्यापन अनुरोध भेजता है। इंस्टॉलर पहले अस्थायी सेल्फ-साइंड सर्टिफिकेट बनाकर और फिर Let's Encrypt का पुनः प्रयास करके इसे संभालता है। ::: ## जांच करें {#check-it} ```bash dig +short cloud.example.com # A record (a Cloudflare address in mode B) curl -I https://cloud.example.com/healthz sudo certbot certificates # certificate name, domains and expiry ``` प्रमाणपत्र certbot के टाइमार के साथ स्वचालित रूप से नवीनीकृत होते हैं। नवीनीकरण webroot `/var/www/nexcmp-acme` का उपयोग करता है, इसलिए पोर्ट 80 को (प्रत्यक्ष रूप से या Cloudflare के माध्यम से) पहुंच योग्य रहना चाहिए। ## सामान्य समस्याएं {#common-problems} | लक्षण | कारण | सुधार | |---|---|---| | इंस्टॉलर कहता है "DNS … does not point to … (nor to Cloudflare) — skipping nginx/TLS" | DNS रिकॉर्ड गायब है, गलत है या प्रचारित नहीं हुआ है | रिकॉर्ड ठीक करें, प्रचार की प्रतीक्षा करें, इंस्टॉलर को फिर से चलाएं। | | ब्राउज़र Cloudflare के पीछे `ERR_TOO_MANY_REDIRECTS` दिखाता है | SSL मोड **Flexible** है | **Full (strict)** (या **Full**) सेट करें। | | Cloudflare त्रुटि 525/526 | ओरिजिन प्रमाणपत्र अस्वीकृत | सेल्फ-साइंड ओरिजिन सर्टिफिकेट के साथ **Full** का उपयोग करें, या Let's Encrypt के साथ **Full (strict)** का उपयोग करें। | | लॉग में सभी आगंतुकों के Cloudflare IP दिखाई देते हैं | Cloudflare मोड में नहीं है | `--behind-cloudflare` के साथ इंस्टॉलर को फिर से चलाएं। | अधिक जानकारी [Installation errors](https://nexcmp.com/hi/docs/troubleshooting/installation-errors/) में। --- # सेटअप विज़ार्ड {#setup-wizard} > **एडमिन में कहां:** विज़ार्ड `/setup` पर एक स्टैंडअलोन पेज है जो केवल पहले एडमिनिस्ट्रेटर के अस्तित्व में आने तक दिखाया जाता है। इसके बाद वही जांच System › Admin › Start (`/setup`) के अंतर्गत रहती हैं। विज़ार्ड एक नए इंस्टॉलेशन को चार छोटे चरणों में एक कार्यशील पैनल में बदल देता है। यह पोर्ट 3000 (`http://:3000/setup`) पर या, जब TLS पहले से सक्रिय हो, `https:///setup` पर परोसा जाता है। ::: warning चरण 3 के बाद विज़ार्ड गायब हो जाता है एक बार एडमिनिस्ट्रेटर बन जाने के बाद विज़ार्ड बंद हो जाता है और सेटअप कोड हटा दिया जाता है। बाद में पैनल तक पहुंचने के लिए एडमिन कंसोल का उपयोग करें। ::: ## चरण 0 — सेटअप कोड {#step-0-—-setup-code} इंस्टॉलर अंत में एक **वन-टाइम सेटअप कोड** प्रिंट करता है। आप इसे इसके साथ फिर से पढ़ सकते हैं: ```bash sudo nexcmp status ``` इसे **Setup code** में पेस्ट करें और **Continue** पर क्लिक करें। कोड विज़ार्ड की सुरक्षा करता है: खुले पोर्ट को खोजने वाला कोई भी व्यक्ति इसके बिना एडमिनिस्ट्रेटर नहीं बना सकता है। ![वन-टाइम सेटअप कोड मांगने वाला सेटअप विज़ार्ड का चरण 0](https://nexcmp.com/hi/docs/images/getting-started/setup-wizard-00-code.webp) ## चरण 1 — लाइसेंस {#step-1-—-license} | फ़ील्ड | मान | |---|---| | लाइसेंस कुंजी | `NXC-XXXXX-XXXXX-XXXXX-XXXXX` — इंस्टॉलर द्वारा पहले से सक्रिय, इसलिए यह चरण सामान्य रूप से "Activated for cloud.example.com" दिखाता है | | मुख्य डोमेन | license पर पंजीकृत डोमेन | यदि इंस्टaller ने लाइसेंस पहले ही सक्रिय कर दिया है, तो विज़ार्ड इसे पहचान लेता है और आगे बढ़ता है। अन्यथा कुंजी और डोमेन दर्ज करें और **Activate** पर क्लिक करें। त्रुटियां लाल रंग में दिखाई जाती हैं — [Installation errors](https://nexcmp.com/hi/docs/troubleshooting/installation-errors/) देखें। ![मुख्य डोमेन के लिए पहले से सक्रिय लाइसेंस दिखाने वाला सेटअप विज़ार्ड का स्टेप 1](https://nexcmp.com/hi/docs/images/getting-started/setup-wizard-01-license.webp) ## Step 2 — CloudStack (or Connect later) {#step-2-—-cloudstack-or-connect-later} आपके पास दो विकल्प हैं: - **अभी कनेक्ट करें।** CloudStack **API URL** (`https://cloudstack.example.com/client/api`), **API key** और **Secret key** दर्ज करें, **Test connection** पर क्लिक करें, फिर **Zone**, **Guest network for customer VMs**, **Zone display name** और दो अक्षरों का **Country** चुनें। **Save CloudStack** पर क्लिक करें। - **बाद में कनेक्ट करें।** **Connect later** पर क्लिक करें। बाकी सब काम करता है; आप Infrastructure के अंतर्गत बाद में CloudStack या Proxmox VE कनेक्ट करते हैं। तब तक हेल्थ पैनल आपको याद दिलाता है कि कोई सोर्स कनेक्ट नहीं है। ![उदाहरण मानों से भरे CloudStack API URL, API key और secret key फ़ील्ड के साथ विज़ार्ड का स्टेप 2](https://nexcmp.com/hi/docs/images/getting-started/setup-wizard-02-cloudstack-form.webp) ::: important समर्पित CloudStack खाते का उपयोग करें ROOT प्रशासक कुंजी का उपयोग न करें। NexCMP के लिए एक समर्पित डोमेन और खाता बनाएं और उसकी API key का उपयोग करें — [CloudStack](https://nexcmp.com/hi/docs/infrastructure/cloudstack/#create-a-dedicated-account-and-api-key) देखें। विज़ार्ड जांचता है कि चुना गया नेटवर्क ज़ोन और उस कुंजी के खाते का है या नहीं। ::: ![Test connection के बाद: ज़ोन और गेस्ट नेटवर्क सूचियां, ज़ोन डिस्प्ले नाम और देश फ़ील्ड](https://nexcmp.com/hi/docs/images/getting-started/setup-wizard-02b-cloudstack-picked.webp) यदि आप केवल **Proxmox VE** का उपयोग करने की योजना बनाते हैं, तो **Connect later** चुनें और [Proxmox VE](https://nexcmp.com/hi/docs/infrastructure/proxmox/) का पालन करें। ## चरण 3 — एडमिनिस्ट्रेटर और ब्रांड {#step-3-—-administrator-and-brand} | फ़ील्ड | नियम | |---|---| | एडमिन ईमेल (लॉगिन) | मान्य ई-मेल पता। यह आपका प्रशासक उपयोगकर्ता नाम है। | | पासवर्ड | कम से कम 12 वर्ण, अक्षरों और अंकों के साथ। | | ब्रांड नाम | आपके ग्राहकों को दिखाया गया (डिफ़ॉल्ट "Cloud"). अधिकतम 60 वर्ण। | | सहायता ईमेल | डिफ़ॉल्ट रूप से एडमिन ई-मेल होता है। | ![प्रशासक ई-मेल, पासवर्ड, ब्रांड नाम और सहायता ई-मेल के साथ विज़ार्ड का स्टेप 3](https://nexcmp.com/hi/docs/images/getting-started/setup-wizard-03-admin.webp) **Finish setup** पर क्लिक करें। पैनल पुनः आरंभ होता है (लगभग 1–2 सेकंड) और पृष्ठ आपको `https:///admin/` पर एडमिन लॉगिन पर भेजता है। यदि वह पता अभी भी प्रतिक्रिया नहीं देता है (DNS या TLS लंबित है), तो यह इसके बजाय वर्तमान पते पर `/` पर भेजता है। ![पैनल पुनः आरंभ होने के संदेश के साथ पूरा होने के बाद का विज़ार्ड](https://nexcmp.com/hi/docs/images/getting-started/setup-wizard-03-done.webp) ## विज़ार्ड आपके लिए क्या सेटअप करता है {#what-the-wizard-sets-up-for-you} - ब्रांड नाम, साइट URL (`https://`), एडमिन URL (`https:///admin`), कंसोल URL (`https:///console`), सहायता ई-मेल और प्रेषक नाम। - NexCMP के साथ आने वाले मॉड्यूल के लिए डिफ़ॉल्ट सेटिंग्स: DDoS & BGP, AI और वेब SSH **बंद** हैं; बैंडविड्थ मीटरिंग **चालू** है। [Modules](https://nexcmp.com/hi/docs/infrastructure/modules/) देखें। - यदि आपने CloudStack कनेक्ट किया है: प्रदाता #1, इसका पहला ज़ोन, गेस्ट नेटवर्क, और एक ऑपरेशन की जोड़ी जो ग्राहक VM से जुड़ी होती है ताकि आप उनका समर्थन कर सकें। अगला: [First login](https://nexcmp.com/hi/docs/getting-started/first-login/)। --- # पहला लॉगिन और अगले चरण {#first-login-and-next-steps} > **एडमिन में कहाँ:** लॉगिन पेज `/admin` है; साइन-इन के बाद लैंडिंग पेज Overview › Dashboard है। ## पते {#addresses} | What | URL | |---|---| | कस्टमर पोर्टल | `https:///` | | एडमिन कंसोल | `https:///admin` | | आईपी द्वारा सेटअप / इमरजेंसी | `http://:3000/` ([पैनल पोर्ट](https://nexcmp.com/hi/docs/getting-started/installation/#the-panel-port-3000) देखें) | | हेल्थ चेक | `https:///healthz` | ## साइन इन करें {#sign-in} 1. `https:///admin` खोलें। 2. विज़ार्ड में आपके द्वारा बनाया गया एडमिनिस्ट्रेटर ईमेल और पासवर्ड दर्ज करें। 3. आप **Dashboard** पर पहुँचते हैं। यदि लाइसेंस वैध नहीं है या कोई सोर्स कनेक्टेड नहीं है, तो सबसे ऊपर एक बैनर दिखाई देता है। ![एडमिन लॉगिन पेज](https://nexcmp.com/hi/docs/images/getting-started/first-login-01-login.webp) ## अनुशंसित चेकलिस्ट {#recommended-checklist} इन्हें क्रम से पूरा करें — प्रत्येक अपने पेज से लिंक है। | # | टास्क | पेज | |---|---|---| | 1 | अपने लिए टू-फैक्टर ऑथेंटिकेशन चालू करें | [Security](https://nexcmp.com/hi/docs/administration/security/) | | 2 | एक इंफ्रास्ट्रक्चर सोर्स कनेक्ट करें (यदि आपने "Connect later" चुना था) | [CloudStack](https://nexcmp.com/hi/docs/infrastructure/cloudstack/) या [Proxmox VE](https://nexcmp.com/hi/docs/infrastructure/proxmox/) | | 3 | ज़ोन और मशीन टेम्पलेट्स / ओएस सूची की जाँच करें | [Zones](https://nexcmp.com/hi/docs/infrastructure/zones/), [Templates](https://nexcmp.com/hi/docs/infrastructure/templates/) | | 4 | प्लान और कीमतों की समीक्षा करें | [Plans](https://nexcmp.com/hi/docs/catalog/plans/) | | 5 | अपना लोगो, रंग और लीगल पेज सेट करें | [Branding](https://nexcmp.com/hi/docs/customers/branding/), [Legal](https://nexcmp.com/hi/docs/customers/legal/) | | 6 | आउटगोइंग ईमेल कॉन्फ़िगर करें और एक टेस्ट भेजें | [SMTP and emails](https://nexcmp.com/hi/docs/administration/smtp-and-emails/) | | 7 | कम से कम एक पेमेंट चैनल सक्षम करें और टॉप-अप का परीक्षण करें | [Payment channels](https://nexcmp.com/hi/docs/billing/payment-channels/) | | 8 | तय करें कि आप कौन से मॉड्यूल बेचते हैं | [Modules](https://nexcmp.com/hi/docs/infrastructure/modules/) | | 9 | कस्टमर के रूप में एक टेस्ट ऑर्डर दें और उसे हटाएं | [Ordering](https://nexcmp.com/hi/docs/portal/ordering/) | | 10 | पहला बैकअप लें | [Backup and restore](https://nexcmp.com/hi/docs/getting-started/backup-and-restore/) | ## अपना पहला ऑर्डर बनाएं (स्मोक टेस्ट) {#create-your-first-order-smoke-test} 1. प्राइवेट विंडो में कस्टमर पोर्टल खोलें और एक टेस्ट अकाउंट रजिस्टर करें। 2. क्रेडिट जोड़ें (वाउचर या टेस्ट पेमेंट)। 3. अपने ज़ोन में सबसे छोटा प्लान ऑर्डर करें। 4. एडमिन में Services › Virtual Machines के तहत इसे प्रकट होते देखें, इसका कंसोल खोलें, फिर इसे नष्ट करें। यदि वीएम *रनिंग* स्थिति में नहीं पहुँचता है, तो **Infrastructure › Cloud provider › Sync & errors** खोलें और त्रुटि पढ़ें। --- # NexCMP अपडेट करना {#updating-nexcmp} > **एडमिन में कहाँ:** System › Admin › License & updates (`/license`) → *Update* कार्ड। ## आपको क्या मिलता है {#what-you-receive} | रिलीज का प्रकार | कब वितरित किया जाता है | |---|---| | सुरक्षा सुधार | **हमेशा**, आपकी "अपडेट्स समाप्त होने की तिथि" के बाद भी | | फ़ीचर रिलीज़ | केवल तभी जब इसे आपकी "अपडेट्स समाप्त होने की तिथि" **को या उससे पहले** प्रकाशित किया गया था | आप दोनों तिथियाँ **License & updates** के अंतर्गत देख सकते हैं। [nexcmp.com/licenses](https://nexcmp.com/licenses) पर अधिकार का नवीनीकरण करें। ## एडमिन कंसोल से अपडेट करें {#update-from-the-admin-console} 1. **System › Admin › License & updates** खोलें। 2. **Update** कार्ड में **Check for update** पर क्लिक करें। कार्ड वर्तमान संस्करण, आपके द्वारा इंस्टॉल किए जा सकने वाले सबसे नए संस्करण, प्रासंगिक होने पर एक *security* टैग और चेंजलॉग दिखाता है। 3. **Update to X.Y.Z** पर क्लिक करें और पुष्टि करें। प्रोग्राम रिलीज़ को डाउनलोड करता है, इसके **SHA-256 और Ed25519 हस्ताक्षर** को सत्यापित करता है, बाइनरी को परमाणु रूप से बदलता है (`.bak` कॉपी रखते हुए) और पुनरारंभ करता है। लगभग **10 सेकंड** के डाउनटाइम की अपेक्षा करें। 4. पेज को रीलोड करें और License & updates के शीर्ष-दाएं कोने में संस्करण की जाँच करें। ![चल रहे संस्करण और Check for new version बटन के साथ Update कार्ड](https://nexcmp.com/hi/docs/images/getting-started/updating-01-card.webp) ## कमांड लाइन से अपडेट करें {#update-from-the-command-line} ```bash sudo nexcmp update ``` यह उस इंस्टॉलर को चलाता है जो `/etc/nexcmp/install.conf` से सहेजे गए मापदंडों के साथ *वर्तमान में इंस्टॉल किए गए रिलीज़ के भीतर* भेजा जाता है (उस समय डाउनलोड की गई स्क्रिप्ट नहीं)। यह बाइनरी, systemd यूनिट्स, nginx टेम्प्लेट और नोड एजेंट को ताज़ा करता है, और डेटा, कॉन्फ़िगरेशन तथा खातों को सुरक्षित रखता है। ::: tip कभी डाउनग्रेड नहीं होता यदि सर्वर चल रहे संस्करण से पुराना संस्करण प्रदान करता है, तो इंस्टॉलर चल रहे संस्करण को बनाए रखता है। ::: ## अपडेट करने से पहले {#before-you-update} 1. बैकअप लें: `sudo nexcmp backup` — [Backup and restore](https://nexcmp.com/hi/docs/getting-started/backup-and-restore/) देखें। 2. Update कार्ड में चेंजलॉग पढ़ें। 1.3 के बाद के बदलावों के लिए, VPN एजेंट अपडेट और Bare Metal मूल्य निर्धारण नियमों सहित [1.6.1 तक के रिलीज़ नोट्स](https://nexcmp.com/hi/docs/getting-started/release-notes/) देखें। 3. किसी शांत अवधि के दौरान अपडेट करें; चल रही वर्चुअल मशीनों को छुआ नहीं जाता है, लेकिन ग्राहक कुछ सेकंड के लिए पोर्टल का उपयोग नहीं कर सकते हैं। ## अपडेट करने के बाद {#after-you-update} - `sudo nexcmp status` चलाएं और पुष्टि करें कि दोनों सेवाएं सक्रिय हैं। - एडमिन डैशबोर्ड और **Needs attention** पेज खोलें। - नए संस्करण के पहली बार शुरू होने पर डेटाबेस माइग्रेशन स्वचालित रूप से चलते हैं। - यदि आप VPN नोड्स चलाते हैं, तो उनके एजेंट को अलग से अपडेट करें और उपयोग रीडिंग की जांच करें। पैनल को अपडेट करने से नया एजेंट उपलब्ध हो जाता है; यह साबित नहीं होता कि प्रत्येक रिमोट नोड इसे पहले से चला रहा है। [VPN नोड डेटा अलाउंस](https://nexcmp.com/hi/docs/infrastructure/vpn-proxy-nodes/#data-allowance-on-a-vpn-node) देखें। यदि कोई अपडेट विफल हो जाता है, तो [Update errors](https://nexcmp.com/hi/docs/troubleshooting/update-errors/) देखें। --- # रिलीज़ नोट्स {#release-notes} > **एडमिन में कहाँ:** System › Admin › License & updates (`/license`), **Update** कार्ड। ये नोट्स 1.3 के बाद से **NexCMP 1.6.1** तक के बदलावों को कवर करते हैं। अपडेट करने से पहले बैकअप लें और अपने इंस्टॉलेशन के **Update** कार्ड द्वारा ऑफ़र किए गए रिलीज़ का उपयोग करें। कमांड और सिग्नेचर जांच के लिए [NexCMP अपडेट करना](https://nexcmp.com/hi/docs/getting-started/updating/) देखें। ## 1.6.1 - **Bare Metal मेट्रिक्स:** ग्राहक **Overview** हालिया इतिहास के साथ CPU, RAM, डिस्क गतिविधि और नेटवर्क टाइल्स दिखाता है। अनुपलब्ध माप एक डैश और कारण दिखाते हैं। नेटवर्क रीडिंग के लिए ट्रैफ़िक काउंटर की आवश्यकता होती है; वे iDRAC हार्डवेयर इन्वेंट्री से अनुमानित नहीं होते हैं। - **Bare Metal sample plans:** sample नामों में `BM-40C-` का उपयोग किया जाता है। बिल्ट-इन sample plans जिन्हें आपने एडिट नहीं किया है, उन्हें न्यूट्रल नाम मिलते हैं। एडिट किए गए plans सुरक्षित रहते हैं, और संदर्भित plan अपना कोड बनाए रखता है। किसी plan को sellable बनाने से पहले वास्तविक सर्वर हार्डवेयर की जांच करें। - **प्लान परिवर्तन:** एडमिन अनुरोध सूची सर्वर पर सॉर्ट होती है और क्षैतिज रूप से स्क्रॉल करते समय इसके एक्शन दृश्यमान रहते हैं। - **बग रिपोर्ट करें:** फॉर्म स्क्रॉल होता है और इसके बटन दिखाई देते रहते हैं। पासवर्ड मास्किंग आस-पास के डायग्नोस्टिक टेक्स्ट को बनाए रखती है। - **लोडिंग:** नेविगेशन में होने वाली देरी को कम करने के लिए पेज संसाधन और आमतौर पर उपयोग किए जाने वाले एडमिन डेटा को पहले लोड किया जाता है। [Bare Metal सेटअप, मूल्य निर्धारण और ग्राहक नियंत्रण](https://nexcmp.com/hi/docs/infrastructure/dedicated/) और [बग रिपोर्ट करें](https://nexcmp.com/hi/docs/administration/report-a-bug/) देखें। ## 1.6.0 - **Bare Metal सेटअप:** **Safety › Management network connection** में iDRAC नेटवर्क, ISO सर्वर पता और पैनल कॉलबैक पता दर्ज करें। कॉन्फ़िगर किए जाने तक सैंपल मान लाइव ऑपरेशन्स को ब्लॉक करते हैं। - **ISO होस्टिंग:** `sudo nexcmp dedicated-setup-iso` प्रबंधन-नेटवर्क ISO वेब सर्वर सेट करता है। इंस्टॉलर `--baremetal` या ISO विकल्पों के साथ कंसोल और ISO टूल्स इंस्टॉल कर सकता है। अनुपलब्ध टूल्स `tools_missing` के साथ लाइव ऑपरेशन्स को ब्लॉक करते हैं। - **Bare Metal कीमतें:** एक नया या अप्रयुक्त इंस्टॉलेशन USD कीमतों के साथ शुरू होता है। एक इंस्टॉलेशन जिसमें पहले से ही VND मूल्य निर्धारण डेटा है, वह VND बनाए रखता है और फिर भी उसे USD/VND दर की आवश्यकता होती है। अपडेट करने से उन मौजूदा कीमतों की डॉलर के रूप में पुनर्व्याख्या नहीं होती है। - **ग्राहक सर्वर पेज:** पहले से रिन्यू करें, बिलिंग चक्र में बदलाव शेड्यूल करें, प्लान बदलने का अनुरोध करें, इनवॉइस पढ़ें और इंस्टॉलेशन के बाद OS लॉगिन देखें। नया मालिक पिछले मालिक का पासवर्ड नहीं देख सकता है। - **ग्राहक प्रोफाइल:** आठ टैब ओवरव्यू, सेवाओं, बिलिंग, कोटा, सुरक्षा, सपोर्ट, एफिलिएट और लॉग को समूहीकृत करते हैं। सेवाएं एक खोजने योग्य और सॉर्ट करने योग्य तालिका साझा करती हैं। - **Service actions:** lock, unlock, बिना रीफ़ंड cancel करना या रीफ़ंड के साथ cancel करना एक कॉमन डायलॉग का उपयोग करते हैं। रीफ़ंड मूल वॉलेट या क्रेडिट आवंटन में वापस जाते हैं; पेमेंट प्रोसेसर्स पर ऑटोमैटिकली रीफ़ंड नहीं किया जाता है। [Dedicated servers](https://nexcmp.com/hi/docs/infrastructure/dedicated/) और [Managing customers](https://nexcmp.com/hi/docs/customers/managing-customers/) देखें। NexCMP में BYOIP और किसी Bare Metal सर्वर से कस्टमर सबनेट जोड़ना अभी भी अनुपलब्ध हैं। ## 1.5.2 मुख्य एडमिनिस्ट्रेटर **Report a bug** खोल सकते हैं, जो **Docs** के बगल में है, और बिना किसी अलग साइन-इन के लाइसेंस खाते में टिकट भेज सकते हैं। डायग्नोस्टिक्स वैकल्पिक हैं। स्टाफ, ग्राहक और AI सहायक इस कार्रवाई के माध्यम से रिपोर्ट नहीं भेज सकते। [Report a bug](https://nexcmp.com/hi/docs/administration/report-a-bug/) देखें। ## 1.5.1 - **VPN usage:** एजेंट नोड्स पैनल को ट्रैफ़िक रिपोर्ट करते हैं। ऐसा सब्सक्रिप्शन जिसका GB कोटा समाप्त हो जाता है, उसे कट ऑफ़ कर दिया जाता है; यह बैंडविड्थ अपग्रेड या नए पीरियड के बाद फिर से उपलब्ध हो जाता है। बिना यूसेज रिपोर्ट वाले नोड्स **Not measured** दिखाते हैं और उन्हें GB के आधार पर कट ऑफ़ नहीं किया जाता है। - **VPN agent:** वर्ज़न 1.5.1 अनअकनॉलेज्ड यूसेज को दोबारा भेजने की कोशिश करता है, शटडाउन पर अंतिम ट्रैफ़िक भेजता है और एंडपॉइंट रुकने पर खुले कनेक्शन्स बंद कर देता है। पैनल के साथ-साथ रिमोट एजेंट्स को भी अपडेट करें। - **Retired VPN add-ons:** High IP Reputation, High Concurrency और High Priority Network अब नहीं बेचे जाते हैं। उनकी फ़ीस मौजूदा सब्सक्रिप्शन के भविष्य के रिन्यूअल अमाउंट से हटा दी जाती है; पिछले पीरियड्स का रीफ़ंड नहीं किया जाता है। यदि कैटलॉग से कोई ऐड-ऑन हटा दिया गया था, तो रिन्यूअल अमाउंट मैन्युअल रूप से जांचें। - **Protocol labels:** IPv4 HTTP प्रॉक्सी सादा HTTP है। IPv4 पते रोटेट नहीं होते हैं। IPv6 प्रॉक्सी का पोर्ट 443 SOCKS5 सर्व करता है; यह HTTPS प्रॉक्सी एंडपॉइंट नहीं है। - **Fresh setup:** डेटाबेस इनिशियलाइज़ेशन पैनल और वर्कर के बीच अस्थायी माइग्रेशन संघर्षों का फिर से प्रयास करता है ताकि पहले प्रोवाइडर को सहेजने के लिए रीस्टार्ट की आवश्यकता न पड़े। [VPN and IPv6 proxy nodes](https://nexcmp.com/hi/docs/infrastructure/vpn-proxy-nodes/) देखें। ## 1.5.0 **AI Models** एक वैकल्पिक गेटवे और बिलिंग मॉड्यूल है, जो डिफ़ॉल्ट रूप से बंद रहता है। वे मॉडल स्रोत जोड़ें जिन्हें आप संचालित करते हैं या रीसेल करने के लिए अधिकृत हैं, मॉडल्स सिंक करें, कीमतें और रूट्स सेट करें, मॉडल्स सक्षम करें, फिर बिक्री शुरू करें। इसमें कोई बंडल किए गए प्रोवाइडर अकाउंट्स, मॉडल्स या कीमतें नहीं हैं। यह AI Chat और AI Agent मॉड्यूल से अलग है। [AI Models](https://nexcmp.com/hi/docs/infrastructure/ai-models/) देखें। ## 1.4.2 IPv6 प्रॉक्सी नोड इंस्टॉलेशन रिलीज़ पैकेज में शामिल डेमॉन और नेटवर्क स्क्रिप्ट का उपयोग करता है। पासवर्ड-आधारित SSH इंस्टॉलेशन के लिए पैनल को `sshpass` की आवश्यकता होती है। पैनल रोटेशन शेड्यूल चलाता है, और नोड सेटअप गेटवे पते को आवंटन से बाहर रखता है। Branding कस्टम VPN सर्विस डिस्प्ले नाम सेट कर सकता है। [VPN and IPv6 proxy nodes](https://nexcmp.com/hi/docs/infrastructure/vpn-proxy-nodes/) देखें। ## 1.4.0–1.4.1 - **AI administration:** एडमिन AI Chat, पर्सनल AI अकाउंट्स, एडमिन API कीज़, एडमिन MCP सर्वर, OAuth कनेक्टर्स, कॉन्फ़िगरेशन इम्पोर्ट/एक्सपोर्ट और सेटअप चेकलिस्ट उपलब्ध हैं। [Configure with AI](https://nexcmp.com/hi/docs/configure-with-ai/overview/) देखें। - **Licensing:** Free और Source वर्कफ़्लो में आधिकारिक बिल्ड और कस्टम सोर्स बिल्ड शामिल हैं। अकाउंट, लाइसेंसिंग, डाउनलोड और दस्तावेज़ `nexcmp.com` का उपयोग करते हैं। [License and purchase](https://nexcmp.com/hi/docs/getting-started/license-and-purchase/) देखें। - **Documentation links:** एडमिन में **Docs** वर्तमान पेज के लिए गाइड खोलता है। - **Currencies:** नया इंस्टॉलेशन डिफ़ॉल्ट रूप से ग्राहक की भाषा का अनुसरण करता है। USD/VND सार्वजनिक विनिमय-दर तालिका या आपकी निश्चित दर से आता है। [Currency and exchange rates](https://nexcmp.com/hi/docs/catalog/currency-and-exchange-rates/) देखें। - **Mixed-source zones:** सार्वजनिक Cloud Server कीमतें तब काम करती हैं जब CloudStack और Proxmox VE एक ज़ोन साझा करते हैं। प्लान्स अपने स्वयं के इन्फ्रास्ट्रक्चर स्रोत का उपयोग करते हैं। - **Prices derived from offerings:** प्रतिशत सेलिंग प्राइस पर मार्जिन होता है। $60 की लागत पर 40% मार्जिन किसी भी राउंडिंग से पहले $100 बनता है। ## अपग्रेड चेकलिस्ट {#upgrade-checklist} 1. बैकअप लें, **Update** कार्ड पढ़ें, अपडेट करें और `sudo nexcmp status` चलाएं। 2. VPN एजेंट्स को अपडेट करें और GB कट-ऑफ़ पर निर्भर होने से पहले पुष्टि करें कि नोड्स मेज़र्ड ट्रैफ़िक रिपोर्ट कर रहे हैं। 3. यदि Bare Metal का उपयोग कर रहे हैं, तो बिक्री या लाइव संचालन शुरू करने से पहले मैनेजमेंट-नेटवर्क फ़ील्ड, आवश्यक टूल्स, प्राइस यूनिट, टेम्प्लेट्स और सैंपल प्लान्स की जांच करें। 4. ग्राहक प्रोफ़ाइल खोलें और उसकी सर्विस लिस्ट सत्यापित करें। रीफ़ंड के साथ कैंसलेशन की पुष्टि करने से पहले राशि और मूल पेमेंट आवंटन की जांच करें। 5. वैकल्पिक मॉड्यूल को तब तक बंद रखें जब तक कि उनका इन्फ्रास्ट्रक्चर तैयार न हो जाए। AI Models के लिए, बिक्री शुरू करने से पहले एक प्रोवाइडर, एक प्राइस्ड मॉडल और एक सफल ग्राहक अनुरोध की पुष्टि करें। --- # Backup and restore {#backup-and-restore} > **एडमिन में कहाँ:** System › Admin › Backup (`/backup`) केवल तभी दिखाई देता है जब DDoS & BGP मॉड्यूल सक्षम होता है; मानक स्थापना के लिए नीचे दी गई कमांड लाइन का उपयोग करें। ## किसका बैकअप लिया जाता है {#what-is-backed-up} `sudo nexcmp backup` एक संपीड़ित संग्रह बनाता है जिसमें शामिल हैं: | भाग | सामग्री | |---|---| | `data/**/*.db` | `/var/lib/nexcmp` में प्रत्येक SQLite डेटाबेस, SQLite के ऑनलाइन बैकअप API के साथ कॉपी किया गया — पैनल चलने के दौरान भी सुसंगत | | `files.tar` | `/var/lib/nexcmp` में अन्य सभी फ़ाइलें (सेटिंग्स फ़ाइलें, ब्रांडिंग अपलोड, `secrets/`), डेटाबेस और `updates/` फ़ोल्डर को छोड़कर | | `etc/` | `/etc/nexcmp` की एक प्रति (इंस्टॉलर सेटिंग्स, इंस्टेंस आईडी, पोर्ट और बाइंड) | ::: warning संग्रह में आपकी मास्टर कुंजियाँ शामिल हैं `secrets/` में वह कुंजी होती है जो डेटाबेस में संग्रहीत API कुंजियों, भुगतान क्रेडेंशियल्स और SMTP पासवर्ड को एन्क्रिप्ट करती है। यह आर्काइव `0600` अनुमति के साथ बनाया जाता है। इसे एन्क्रिप्ट करके सर्वर से बाहर संग्रहीत करें। इन कुंजियों के बिना रीस्टोर किया गया डेटाबेस अपने सीक्रेट्स को डिक्रिप्ट नहीं कर सकता। ::: ## बैकअप लें {#take-a-backup} ```bash sudo nexcmp backup # writes to /var/backups/nexcmp sudo nexcmp backup /mnt/nas/nexcmp # or to another directory ``` यह कमांड आर्काइव पथ प्रिंट करती है, उदाहरण के लिए `/var/backups/nexcmp/nexcmp-backup-20261030-120000.tar.zst`। ### इसे शेड्यूल करें {#schedule-it} ```bash echo '17 3 * * * root /usr/local/bin/nexcmp backup /var/backups/nexcmp && find /var/backups/nexcmp -name "nexcmp-backup-*" -mtime +14 -delete' | sudo tee /etc/cron.d/nexcmp-backup ``` फ़ोल्डर को मशीन से बाहर कॉपी करें (ऑब्जेक्ट स्टोरेज, NAS, दूसरा सर्वर)। ## रीस्टोर {#restore} ऐसे सर्वर पर रीस्टोर करें जहाँ **समान संस्करण (या नया)** NexCMP स्थापित हो। 1. समान लाइसेंस और डोमेन का उपयोग करके [इंस्टॉलर](https://nexcmp.com/hi/docs/getting-started/installation/) के साथ NexCMP स्थापित करें, लेकिन सेटअप विज़ार्ड को **न** चलाएं। 2. सेवाओं को रोकें: ```bash sudo systemctl stop nexcmp-vmd nexcmp ``` 3. आर्काइव को एक अस्थायी निर्देशिका में अनपैक करें: ```bash sudo mkdir /root/restore && sudo tar --zstd -xf nexcmp-backup-20261030-120000.tar.zst -C /root/restore ``` 4. फ़ाइलों को वापस रखें: ```bash sudo tar -xf /root/restore/files.tar -C /var/lib/nexcmp sudo cp -a /root/restore/data/. /var/lib/nexcmp/ sudo cp -a /root/restore/etc/. /etc/nexcmp/ sudo chown -R nexcmp:nexcmp /var/lib/nexcmp ``` 5. सेवाएं शुरू करें और जांच करें: ```bash sudo systemctl start nexcmp nexcmp-vmd sudo nexcmp status ``` 6. *बैकअप लिए गए* सिस्टम के एडमिनिस्ट्रेटर के साथ `https:///admin` में साइन इन करें। ::: tip इसका अभ्यास करें ज़रूरत पड़ने से पहले, एक अतिरिक्त सर्वर पर चरण 1–6 को एक बार करके देखें। जिस बैकअप को आपने कभी रीस्टोर नहीं किया, वह केवल एक उम्मीद है। ::: ## शामिल नहीं है {#not-included} - nginx कॉन्फ़िगरेशन और प्रमाणपत्र (इंस्टॉलर द्वारा पुनर्जीवित; Let's Encrypt प्रमाणपत्र पुनः जारी किए जाते हैं)। - आपके CloudStack / Proxmox VE सर्वर और उन पर मौजूद वर्चुअल मशीनें — उनके अपने टूल से उनका बैकअप लें। --- # NexCMP अनइंस्टॉल करें {#uninstall-nexcmp} ::: warning ग्राहक पहुंच खो देते हैं अनइंस्टॉल करने से पोर्टल और बिलिंग रुक जाती है। आपके CloudStack या Proxmox VE पर वर्चुअल मशीनें चलती रहती हैं, लेकिन कोई भी चीज़ उन्हें प्रबंधित या बिल नहीं करती है। पहले [बैकअप](https://nexcmp.com/hi/docs/getting-started/backup-and-restore/) बनाएं। ::: ## प्रोग्राम हटाएं, डेटा रखें {#remove-the-program-keep-the-data} ```bash sudo nexcmp uninstall ``` यह `nexcmp` और `nexcmp-vmd` सेवाओं, nginx साइट और स्निपेट, `/opt/nexcmp` तथा `nexcmp` कमांड को अक्षम और हटा देता है। **Data** `/var/lib/nexcmp` और `/etc/nexcmp` में रहता है, इसलिए उसी सर्वर पर बाद का इंस्टॉलेशन वहीं से शुरू होता है जहाँ आपने रोका था। ## सब कुछ हटाएं {#remove-everything} ```bash sudo nexcmp uninstall --purge ``` इसके अतिरिक्त `/var/lib/nexcmp`, `/etc/nexcmp`, `/var/log/nexcmp` और `nexcmp` सिस्टम यूज़र को हटा देता है। इसे पूर्ववत नहीं किया जा सकता है। ## अनइंस्टॉल करने के बाद {#after-uninstalling} - Let's Encrypt प्रमाणपत्र और `nginx` / `certbot` पैकेज अपनी जगह पर छोड़ दिए जाते हैं। यदि आप चाहें तो `sudo certbot delete --cert-name ` के साथ प्रमाणपत्र हटा दें। - यदि आप इसे कहीं और सक्रिय करेंगे तो [nexcmp.com/licenses](https://nexcmp.com/licenses) पर अपने लाइसेंस पेज पर डोमेन को रिलीज़ करें। - यदि आपको अब उनकी आवश्यकता नहीं है तो NexCMP के लिए बनाए गए समर्पित CloudStack खाते / Proxmox API टोकन को हटाएं। --- # `nexcmp` कमांड संदर्भ {#nexcmp-command-reference} इंस्टॉलर `/usr/local/bin/nexcmp` पर एक हेल्पर रखता है। इसे NexCMP सर्वर पर चलाएं। सिस्टम को बदलने वाले कमांड्स को `sudo` की आवश्यकता होती है। (API के लिए ग्राहक-पक्ष का टूल एक अलग प्रोग्राम है, [cmp CLI](https://nexcmp.com/hi/docs/developers/cmp-cli/) देखें।) | कमांड | रूट की आवश्यकता है | यह क्या करता है | |---|---|---| | `nexcmp status` | नहीं (`sudo` के साथ अधिक विवरण) | संस्करण, सेवा स्थिति (`nexcmp`, `nexcmp-vmd`), `/healthz`, लाइसेंस सारांश, पब्लिक-पोर्ट स्थिति, सेटअप कोड यदि विज़ार्ड समाप्त नहीं हुआ है | | `nexcmp update` | हाँ | सहेजे गए मापदंडों के साथ स्थापित रिलीज़ में भेजे गए इंस्टॉलर को चलाता है — [Updating](https://nexcmp.com/hi/docs/getting-started/updating/) देखें | | `nexcmp backup [dir]` | हाँ | `/var/backups/nexcmp` (या `dir`) पर बैकअप लें — [Backup and restore](https://nexcmp.com/hi/docs/getting-started/backup-and-restore/) देखें | | `nexcmp uninstall [--purge]` | हाँ | सेवाएँ और प्रोग्राम निकालें; `--purge` डेटा भी हटा देता है — [Uninstall](https://nexcmp.com/hi/docs/getting-started/uninstall/) देखें | | `nexcmp open-port [minutes]` | हाँ | **आपातकालीन (Emergency)**: सभी इंटरफेस पर पैनल पोर्ट (डिफ़ॉल्ट 3000) पर 1–1440 मिनट (डिफ़ॉल्ट 30) के लिए सुनें, फिर अपने आप बंद हो जाएं | | `nexcmp close-port` | हाँ | आपातकालीन विंडो को अभी बंद करें | | `nexcmp fix-owner` | हाँ | `/var/lib/nexcmp` में जो फाइलें root की हैं, उन्हें वापस `nexcmp` यूजर को दें | ## `nexcmp status` ```text Version : 1.6.1 nexcmp : active nexcmp-vmd : active healthz : ok License : active · domain cloud.example.com · token valid until 2026-11-12 · updates until 2027-10-30 Public port: 127.0.0.1 only (nginx proxy; emergency: sudo nexcmp open-port) ``` यदि डेटा निर्देशिका में फाइलें root के स्वामित्व में हैं (उदाहरण के लिए root के रूप में किसी अन्य `nexcmp` कमांड को `sudo` के साथ चलाने से बनाई गई हैं), तो `status` एक चेतावनी प्रिंट करता है, क्योंकि सेवा यूजर उन्हें पढ़ नहीं सकता — इसका एक सामान्य लक्षण लाइसेंस का HTTP 421 दिखाना है। `sudo nexcmp fix-owner` के साथ इसे ठीक करें। यही सुधार हर सेवा शुरू होने पर अपने आप चलता है। ## आपातकालीन एक्सेस {#emergency-access} जब डोमेन, nginx या TLS खराब हो जाए तब भी आप पैनल तक पहुँच सकते हैं: ```bash sudo nexcmp open-port 30 # http://:3000/ for 30 minutes sudo nexcmp close-port # close it earlier ``` अधिक सुरक्षित, बिना कुछ खोले: `ssh -L 3000:127.0.0.1:3000 user@server` और `http://127.0.0.1:3000/` ब्राउज़ करें। ## एनवायरनमेंट {#environment} | वेरिएबल | इसके लिए उपयोग किया जाता है | |---|---| | `NEXCMP_BASE` | लाइसेंस सर्वर बेस URL को ओवरराइड करें (डिफ़ॉल्ट `https://nexcmp.com`); केवल परीक्षण के लिए | फाइलें और निर्देशिकाएँ: प्रोग्राम `/opt/nexcmp`, कॉन्फ़िगरेशन `/etc/nexcmp`, डेटा `/var/lib/nexcmp`, लॉग `/var/log/nexcmp` और `journalctl -u nexcmp -u nexcmp-vmd`। --- # Infrastructure requirements {#infrastructure-requirements} > **एडमिन में कहाँ:** Infrastructure (बायां मेनू ज़ोन) और मॉड्यूल चालू करने के लिए System › Admin › License & updates (`/license`)। यह पेज बताता है कि प्रत्येक मॉड्यूल को NexCMP सर्वर के **बाहर** क्या चाहिए। सर्वर के लिए (Ubuntu, मेमोरी, डिस्क, पोर्ट्स) [Requirements for the NexCMP server](https://nexcmp.com/hi/docs/getting-started/requirements/) देखें। मॉड्यूल चालू करने के लिए, [Modules](https://nexcmp.com/hi/docs/infrastructure/modules/) देखें। ## मॉड्यूल दर मॉड्यूल {#module-by-module} | मॉड्यूल | न्यूनतम बुनियादी ढांचा | विवरण | |---|---|---| | **Virtual Machines on CloudStack** | Apache CloudStack 4.23 (परीक्षित), KVM, गेस्ट नेटवर्क और पब्लिक IP रेंज वाला एक एडवांस्ड ज़ोन; API की (कभी भी ROOT नहीं) के साथ एक समर्पित डोमेन और अकाउंट; कम से कम एक तैयार टेम्पलेट और एक सर्विस ऑफरिंग | [CloudStack](https://nexcmp.com/hi/docs/infrastructure/cloudstack/) | | **Virtual Machines on Proxmox VE** | Proxmox VE 9.x (9.2 पर सत्यापित); कस्टम रोल वाला एक API टोकन; क्लोन करने वाला स्टोरेज; एक ब्रिज; गेटवे वाला एक IPv4 ब्लॉक; प्रति OS और प्रति नोड एक cloud-init टेम्पलेट | [Proxmox VE](https://nexcmp.com/hi/docs/infrastructure/proxmox/) | | **OS templates** | CloudStack: libguestfs और इमेज के लिए एक वेब सर्वर के साथ एक Linux बिल्ड मशीन। Proxmox VE: गेस्ट एजेंट के साथ क्लाउड-इमेज टेम्पलेट्स | [OS templates](https://nexcmp.com/hi/docs/infrastructure/templates/) | | **Bare metal / Dedicated Server** | मैनेजमेंट नेटवर्क पर पैनल से HTTPS (Redfish) के माध्यम से पहुँच योग्य iDRAC 9 वाले Dell सर्वर; उस नेटवर्क पर एक HTTP सर्वर जो ISO फाइलें परोसता है; NexCMP सेवा के लिए लिखने योग्य ISO फोल्डर | [Dedicated servers](https://nexcmp.com/hi/docs/infrastructure/dedicated/) | | **AI Models** | एक या अधिक मॉडल स्रोत जिन्हें रीसेल करने के लिए आप अधिकृत हैं, OpenAI-compatible या Anthropic-compatible API और आपकी अपनी key के साथ; पैनल से प्रत्येक स्रोत के लिए आउटबाउंड HTTPS (port 443, पब्लिक डोमेन नेम), या Allowed internal hosts के तहत सूचीबद्ध एक आंतरिक गेटवे; कोई GPU या विशेष हार्डवेयर नहीं | [AI Models](https://nexcmp.com/hi/docs/infrastructure/ai-models/) | | **VPN** | इंटरफेस पर पब्लिक IPv4 पते या उस पर रूट किए गए, आपके पैनल के लिए आउटबाउंड HTTPS वाले एक या अधिक Linux होस्ट (x86_64, systemd, root) | [VPN और प्रॉक्सी नोड्स](https://nexcmp.com/hi/docs/infrastructure/vpn-proxy-nodes/) | | **IPv6 Proxy** | पब्लिक IPv4, पोर्ट 80, 443 और 60001-65535 खाली, और एक IPv6 प्रेफिक्स जो /32 से /64 तक है और आउटबाउंड ट्रैफिक के लिए काम करता है, के साथ Linux होस्ट (x86_64, systemd, `nft`, `ip`, `ss`, `sysctl`); एक बार के इंस्टॉल के लिए पासवर्ड के साथ SSH एक्सेस | [VPN और प्रॉक्सी नोड्स](https://nexcmp.com/hi/docs/infrastructure/vpn-proxy-nodes/) | | **Object Storage (S3)** | एक Ceph क्लस्टर, जिसमें RADOS Gateway (RGW), एक Admin Ops उपयोगकर्ता और पोर्ट 443 पर एक सार्वजनिक HTTPS एंडपॉइंट हो | [S3](https://nexcmp.com/hi/docs/infrastructure/s3/) | | **Kubernetes** | CloudStack, जिसमें Kubernetes Service (CKS) सक्षम हो, कम से कम एक Kubernetes वर्ज़न ISO, और ठीक 2 vCPU तथा 2048 MB का एक मुफ़्त कंट्रोल-प्लेन सर्विस ऑफ़रिंग हो | [Kubernetes and Private Cloud](https://nexcmp.com/hi/docs/infrastructure/kubernetes-and-private-cloud/) | | **Private Cloud** | CloudStack, जिसमें एक VPC ऑफ़रिंग और प्रति बैंडविड्थ प्लान एक नेटवर्क ऑफ़रिंग (साथ ही एक लॉक किया हुआ 1 Mbps ऑफ़रिंग) हो | [Kubernetes and Private Cloud](https://nexcmp.com/hi/docs/infrastructure/kubernetes-and-private-cloud/) | | **OS & ISO Images** | CloudStack, जिसकी सेकेंडरी स्टोरेज VM ग्राहक इमेज डाउनलोड करने के लिए इंटरनेट तक पहुँच सके (डायरेक्ट लिंक, कोई रीडायरेक्ट नहीं); CloudStack खाता टेम्पलेट और ISO रजिस्टर कर सके | [Modules](https://nexcmp.com/hi/docs/infrastructure/modules/) | | **Bandwidth** | डिफ़ॉल्ट सोर्स के साथ कुछ अतिरिक्त नहीं: उपयोग CloudStack VM आँकड़ों से पढ़ा जाता है। Proxmox VE पर VM को मीटर नहीं किया जाता है | [Bandwidth](https://nexcmp.com/hi/docs/catalog/bandwidth/) | | **AI Chat and AI Agent** | एक OpenAI-संगत API (बेस URL, मॉडल और कुंजी) जिस तक पैनल सर्वर पहुँच सके। आपके सर्वर पर कोई अतिरिक्त सॉफ़्टवेयर नहीं | [AI providers](https://nexcmp.com/hi/docs/ai/ai-providers/) | | **DDoS & BGP** | एक ऐड-ऑन पैकेज जिसके लिए रूट के रूप में चलने वाले डेमॉन (BGP, फ़िल्टरिंग, फ़्लो आँकड़े) वाले एक एज राउटर होस्ट की आवश्यकता होती है। यह मानक इंस्टॉलेशन का हिस्सा नहीं है | [Modules](https://nexcmp.com/hi/docs/infrastructure/modules/) | | **DDoS Shield** | DDoS & BGP ऐड-ऑन | [Modules](https://nexcmp.com/hi/docs/infrastructure/modules/) | | **Web SSH terminal** | एक अलग SSH प्रॉक्सी सेवा और उसके लिए एक रूट। यह मानक इंस्टॉलेशन का हिस्सा नहीं है; AI Agent को इसकी आवश्यकता नहीं होती है | [Modules](https://nexcmp.com/hi/docs/infrastructure/modules/) | ## एक नज़र में नेटवर्क पथ {#network-paths-at-a-glance} | कहाँ से | कहाँ तक | पोर्ट | उद्देश्य | |---|---|---|---| | पैनल सर्वर | CloudStack प्रबंधन सर्वर | 443 या 8080 (जैसा कि आप इसे पब्लिश करते हैं) | API | | पैनल सर्वर | Proxmox VE नोड | 8006/tcp | API और कंसोल | | पैनल सर्वर | Dell iDRAC | 443/tcp (और VNC पोर्ट, डिफ़ॉल्ट 5901) | Redfish और कंसोल | | iDRAC | ISO वेब सर्वर | आपके द्वारा चुना गया HTTP पोर्ट (उदाहरण के लिए 8080) | वर्चुअल मीडिया | | पैनल सर्वर | Ceph RGW | 443/tcp | Admin Ops | | पैनल सर्वर | IPv6 प्रॉक्सी नोड | आपके द्वारा दर्ज किया गया SSH पोर्ट | वन-टाइम इंस्टॉल | | VPN और प्रॉक्सी नोड | पैनल (nginx के माध्यम से) | 443/tcp | नामांकन, हार्टबीट, कॉन्फ़िगरेशन | | ग्राहक | VPN और प्रॉक्सी नोड | प्रति-IP पोर्ट 65001-65535 (VPN); 80, 443, 60001-65535 (IPv6 प्रॉक्सी) | सेवा स्वयं | ::: tip प्रबंधन नेटवर्क को निजी रखें iDRAC और हाइपरवाइज़र प्रबंधन पते ऐसे नेटवर्क पर होने चाहिए जिन तक ग्राहक नहीं पहुँच सकें। NexCMP आपके द्वारा अनुमति प्राप्त निजी श्रेणियों के बाहर के iDRAC पतों को अस्वीकार कर देता है। ::: ## बिक्री से पहले की चेकलिस्ट {#checklist-before-you-sell} 1. पहले सेवा के पीछे का बुनियादी ढांचा जुड़ा हुआ है और **Test connection** हरा है। 2. एक ज़ोन बिक्री के लिए तैयार है (देखें [Zones](https://nexcmp.com/hi/docs/infrastructure/zones/)): एक सक्रिय बैकएंड, एक प्लान और एक तैयार टेम्पलेट। 3. एक भुगतान चैनल कॉन्फ़िगर किया गया है (देखें [Payment channels](https://nexcmp.com/hi/docs/billing/payment-channels/))। 4. ई-मेल काम कर रहा है (देखें [SMTP and e-mails](https://nexcmp.com/hi/docs/administration/smtp-and-emails/))। 5. आपने एक परीक्षण ऑर्डर दिया और VM को हटा दिया। --- # आर्किटेक्चर {#architecture} > **एडमिन में कहाँ:** यह एक संदर्भ पेज है। यहाँ वर्णित सेवाएँ `sudo nexcmp status` के साथ दिखाई देती हैं; कनेक्शन Infrastructure और System › Settings के तहत कॉन्फ़िगर किए जाते हैं। ## चित्र {#the-picture} ![NexCMP आर्किटेक्चर: ग्राहक DNS और वैकल्पिक रूप से Cloudflare के माध्यम से nginx तक पहुँचते हैं, nginx पोर्ट 3000 पर पैनल पर प्रॉक्सी करता है, पैनल और वर्कर CloudStack, Proxmox VE, iDRAC, Ceph, भुगतान गेटवे, SMTP और एक AI प्रदाता को कॉल करते हैं, और VPN और IPv6 प्रॉक्सी नोड्स पैनल से वापस बात करते हैं](https://nexcmp.com/hi/docs/images/infrastructure/architecture.svg) ### शब्दों में वही आरेख {#the-same-diagram-in-words} 1. कोई ग्राहक या व्यवस्थापक `https://cloud.example.com` (पोर्टल), `https://cloud.example.com/admin` (एडमिन कंसोल) खोलता है या REST API को कॉल करता है। DNS नाम को आपके सर्वर या Cloudflare पर इंगित करता है, जो इस पर प्रॉक्सी करता है। 2. **nginx** पैनल सर्वर पर पोर्ट 80 (रीडायरेक्ट और प्रमाणपत्र नवीनीकरण) और 443 (TLS) पर सुनता है और प्रत्येक अनुरोध को `127.0.0.1:3000` पर **पैनल** को अग्रेषित करता है। सेटअप विज़ार्ड के बाद पैनल केवल लूपबैक इंटरफ़ेस पर सुनता है। 3. **पैनल** (`nexcmp.service`) ग्राहक पोर्टल, एडमिन कंसोल, REST API, सेटअप विज़ार्ड और नोड्स को आवश्यक डाउनलोड (एजेंट बाइनरी, इंस्टॉल स्क्रिप्ट, `cmp` कमांड-लाइन टूल) प्रदान करता है। यह दिन में एक बार आपके लाइसेंस की भी जाँच करता है। 4. **वर्कर** (`nexcmp-vmd.service`) `127.0.0.1:8112` पर सुनता है, जो केवल स्थानीय है। यह वह सब कुछ चलाता है जिसमें समय लगता है या जो शेड्यूल पर होना चाहिए: प्रावधान कार्य, CloudStack और Proxmox VE के साथ सिंक्रनाइज़ेशन, बिलिंग टिक्स, बैंडविड्थ संग्रह और ब्राउज़र कंसोल कनेक्शन। 5. इन दो प्रक्रियाओं से NexCMP बाहर की ओर कॉल करता है: **CloudStack** (प्रबंधन API), **Proxmox VE** (पोर्ट 8006 पर API, प्रमाणपत्र पिन किया गया), **Dell iDRAC** (प्रबंधन नेटवर्क पर HTTPS पर Redfish), **Ceph RGW** (HTTPS पर S3 और Admin Ops), **भुगतान गेटवे** (Stripe, PayPal, USDT और बैंक-ट्रांसफर प्रदाता, जो आपके वेबहुक यूआरएल को भी कॉल करते हैं), **आपका SMTP सर्वर**, एक OpenAI-संगत API वाला **AI प्रदाता**, और वैकल्पिक रूप से **Telegram**। 6. **VPN नोड्स** `cmp-agent` चलाते हैं। प्रत्येक नोड एक बार वन-टाइम टोकन के साथ नामांकित होता है, फिर पैनल को HTTPS पर हर 5 सेकंड में एक हार्टबीट भेजता है और उत्तर में अपना कॉन्फ़िगरेशन प्राप्त करता है। **IPv6 प्रॉक्सी नोड्स** SSH पर पैनल द्वारा एक बार स्थापित किए जाते हैं, फिर पैनल से अपना कॉन्फ़िगरेशन खींचते हैं। 7. स्टेट SQLite डेटाबेस और `/var/lib/nexcmp` में कुछ फ़ाइलों में रहता है। CloudStack, Proxmox, S3, iDRAC और AI प्रदाता के लिए क्रेडेंशियल उसी क्षेत्र में मास्टर कुंजी फ़ाइलों के साथ एन्क्रिप्टेड (AES-256-GCM) संग्रहीत किए जाते हैं। ## सेवाएं और प्रक्रियाएं {#services-and-processes} | प्रक्रिया | इस रूप में चलता है | इस पर सुनता है | करता है | |---|---|---|---| | `nginx` | root (workers `www-data`) | 80, 443 | TLS, रीडायरेक्ट, पैनल पर प्रॉक्सी | | `nexcmp` | `nexcmp` | 3000 (पहले इंस्टॉल के दौरान सभी इंटरफ़ेस, फिर `127.0.0.1`) | पोर्टल, एडमिन कंसोल, API, विज़ार्ड, डाउनलोड | | `nexcmp-vmd` | `nexcmp` | `127.0.0.1:8112` | जॉब्स, सिंक, बिलिंग, बैंडविथ, कंसोल | | `nexcmp-update` | root | कोई नहीं | एडमिन कंसोल के अनुरोधों पर अपडेट लागू करता है (एक पाथ यूनिट अनुरोध की प्रतीक्षा करती है) | | `cmp-agent` (VPN नोड्स पर) | root | VPN लिसनर पोर्ट्स | पैनल को रिपोर्ट करता है, पब्लिक IPv4 पर प्रॉक्सी लिसनर चलाता है | पैनल और वर्कर किसी भी Linux क्षमताओं के बिना एक साधारण यूजर के रूप में चलते हैं, जिसमें `/var/lib/nexcmp` और `/var/log/nexcmp` को छोड़कर रीड-ओनली फ़ाइल सिस्टम होता है। इन्हें root, Docker, अलग डेटाबेस और Redis की आवश्यकता नहीं होती है। ## फ़ाइलें और वे कहाँ स्थित हैं {#files-and-where-they-are} | पाथ | सामग्री | |---|---| | `/opt/nexcmp` | प्रोग्राम: रिलीज़, `bin/`, टेम्पलेट बिल्डर जैसी साझा फ़ाइलें। root के स्वामित्व में, सर्विस के लिए रीड-ओनली। | | `/etc/nexcmp` | इंस्टॉलर सेटिंग्स (`install.conf`), पोर्ट और बाइंड (`nexcmp.env`)। | | `/var/lib/nexcmp` | SQLite डेटाबेस, अपलोड की गई ब्रांडिंग, एजेंट डाउनलोड फ़ोल्डर, लाइसेंस स्थिति, मास्टर कुंजी फ़ाइलें। इसका बैकअप लें। | | `/var/log/nexcmp` | लॉग्स। | [Backup and restore](https://nexcmp.com/hi/docs/getting-started/backup-and-restore/) देखें। मास्टर कुंजी फ़ाइलों का बैकअप डेटाबेस के साथ लिया जाना चाहिए, अन्यथा पुनर्स्थापित डेटाबेस अपनी संग्रहीत क्रेडेंशियल्स को डिक्रिप्ट नहीं कर सकता है। ## कौन किससे कनेक्ट होता है {#who-connects-to-whom} | दिशा | पाथ | पोर्ट | नोट्स | |---|---|---|---| | ग्राहक से पैनल | इंटरनेट, DNS, वैकल्पिक Cloudflare, nginx | 443 | [DNS and Cloudflare](https://nexcmp.com/hi/docs/getting-started/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 मॉड्यूल चालू हो। | | पेमेंट गेटवे से पैनल | वेबहुक | 443 | Stripe और PayPal कॉलबैक करते हैं। | | नोड से पैनल | `cmp-agent` | 443 | एनरोल, हार्टबीट, अपग्रेड। | | पैनल से IPv6 प्रॉक्सी नोड | SSH | आपके द्वारा दर्ज किया जाने वाला पोर्ट | केवल एक बार इंस्टॉल। | ## यह क्यों महत्वपूर्ण है {#why-it-matters} - **जो पैनल पहुंच में है, उस पर हमला किया जा सकता है।** सेटअप विज़ार्ड पूरा होने के बाद पोर्ट 3000 को बंद रखें। टीएलएस (TLS) सक्रिय होने पर इंस्टॉलर पहले ही ऐसा कर देता है। - **वर्कर चलना चाहिए** ताकि कुछ भी बनाया या बिल किया जा सके। `sudo nexcmp status` दोनों सेवाओं और हेल्थ चेक को दिखाता है। - **आउटबाउंड फ़ायरवॉल की योजना बनाएं।** यदि पैनल सर्वर का आउटबाउंड ट्रैफ़िक फ़िल्टर किया जाता है, तो ऊपर दी गई तालिका में गंतव्यों की अनुमति दें। - **प्रबंधन ट्रैफ़िक सार्वजनिक पथ से दूर रहता है।** CloudStack, Proxmox VE, iDRAC और Ceph के कनेक्शन सीधे पैनल सर्वर से उन सिस्टम पर जाते हैं, कभी भी nginx या Cloudflare के माध्यम से नहीं। --- # मॉड्यूल {#modules} > **एडमिन में कहां:** System › Admin › License & updates (`/license`), कार्ड **Module**। ## यह क्या करता है {#what-it-does} मॉड्यूल एक ऐसी सेवा या सुविधा है जिसे आप एक इकाई के रूप में चालू या बंद कर सकते हैं। **बंद** मॉड्यूल एडमिन मेनू से छिपा होता है और ग्राहक इसे खरीद नहीं सकते; जहां मॉड्यूल एक एड-ऑन है, वहां इसके API रूट `404 module_disabled` उत्तर देते हैं। किसी मॉड्यूल को चालू करने से केवल सुविधा सामने आती है: इसके पीछे के बुनियादी ढांचे को अभी भी कनेक्ट करना बाकी है (अंतिम कॉलम देखें)। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | खाता | लेखन पहुंच वाला एक प्रशासक। केवल-पढ़ने वाले कर्मचारी स्विच देख सकते हैं लेकिन उन्हें बदल नहीं सकते। | | Infrastructure | तालिका देखें: प्रत्येक मॉड्यूल सूचीबद्ध करता है कि उसे क्या चाहिए। | | इस पर निर्भर करता है | कुछ मॉड्यूल को अन्य की आवश्यकता होती है (DDoS Shield को DDoS & BGP की आवश्यकता होती है)। | ## बुनियादी ढांचा तैयार करें {#prepare-the-infrastructure} स्विच के लिए खुद आवश्यक नहीं है। तालिका में लिंक किए गए पृष्ठ पर बताए अनुसार प्रत्येक मॉड्यूल के बुनियादी ढांचे को कनेक्ट करें। ## NexCMP में कनेक्ट करें {#connect-in-nexcmp} 1. **System › Admin › License & updates** खोलें और कार्ड **Module** पर स्क्रॉल करें। यह बताता है कि अक्षम किए गए मॉड्यूल एडमिन मेनू से छिपे हैं और ग्राहकों द्वारा खरीदे नहीं जा सकते। 2. किसी मॉड्यूल के स्विच का उपयोग करें। पृष्ठ पुष्टि करता है **Saved: reloading menu** और पुनः लोड होता है, जिससे मेनू तुरंत बदल जाता है। ![License & updates में Module कार्ड प्रत्येक मॉड्यूल के लिए एक स्विच के साथ](https://nexcmp.com/hi/docs/images/infrastructure/modules-01-license-modules.webp) ### मॉड्यूल {#the-modules} | मॉड्यूल (जैसा दिखाया गया है) | डिफ़ॉल्ट | यह क्या जोड़ता है | आवश्यकता | पेज | |---|---|---|---|---| | **Virtual Machines** | हमेशा चालू | VM कैटलॉग, ऑर्डर, कंसोल, स्नैपशॉट | CloudStack या Proxmox VE | [CloudStack](https://nexcmp.com/hi/docs/infrastructure/cloudstack/), [Proxmox VE](https://nexcmp.com/hi/docs/infrastructure/proxmox/) | | **Bandwidth** | **चालू** | VM, Kubernetes और S3 के लिए कोटा, एड-ऑन, अलर्ट और ओवरऐज कार्रवाइयां | कुछ अतिरिक्त नहीं (CloudStack VM आंकड़े) | [Bandwidth](https://nexcmp.com/hi/docs/catalog/bandwidth/) | | **OS & ISO Images** | बंद | ग्राहक अपने स्वयं के OS इमेज और ISO पंजीकृत करते हैं, प्रति GB बिल किया जाता है | CloudStack; इसके सेकेंडरी स्टोरेज VM के लिए इंटरनेट एक्सेस | [Requirements](https://nexcmp.com/hi/docs/infrastructure/requirements/) | | **Kubernetes** | बंद | Kubernetes क्लस्टर (CKS) | CKS सक्षम के साथ CloudStack | [Kubernetes and Private Cloud](https://nexcmp.com/hi/docs/infrastructure/kubernetes-and-private-cloud/) | | **Private Cloud** | बंद | समर्पित-बैंडविड्थ योजनाओं के साथ VPC | CloudStack VPC और नेटवर्क ऑफ़रिंग | [Kubernetes and Private Cloud](https://nexcmp.com/hi/docs/infrastructure/kubernetes-and-private-cloud/) | | **Object Storage** | बंद | Ceph RGW पर S3 खाते, उपयोग के अनुसार भुगतान | Ceph RGW और S3 सेवा वाला एक ज़ोन | [S3](https://nexcmp.com/hi/docs/infrastructure/s3/) | | **VPN** | बंद | आपके अपने नोड्स पर VPN | `cmp-agent` चलाने वाले नोड | [VPN और प्रॉक्सी नोड्स](https://nexcmp.com/hi/docs/infrastructure/vpn-proxy-nodes/) | | **IPv6 Proxy** | बंद | आपके अपने नोड्स पर IPv6 प्रॉक्सी | IPv6 प्रिफ़िक्स वाले प्रॉक्सी नोड्स | [VPN और प्रॉक्सी नोड्स](https://nexcmp.com/hi/docs/infrastructure/vpn-proxy-nodes/) | | **Bare Metal** | बंद | iDRAC के माध्यम से Dell सर्वर: ऑर्डर, OS इंस्टॉल, कंसोल, पावर | मैनेजमेंट नेटवर्क पर iDRAC 9 | [Dedicated servers](https://nexcmp.com/hi/docs/infrastructure/dedicated/) | | **AI Models** | बंद | एक गेटवे जो AI models का एक्सेस बेचता है: कई मॉडलों के लिए एक key, प्रति-मॉडल कीमतें, उपयोग सीमाएँ, लॉग्स, वॉलेट बिलिंग | आपके द्वारा प्रदान किए जाने वाले मॉडल स्रोत: आपकी अपनी key के साथ OpenAI-compatible या Anthropic-compatible API | [AI Models](https://nexcmp.com/hi/docs/infrastructure/ai-models/) | | **AI** | बंद | AI Chat (स्वचालित सहायता) और AI Agent (सादी भाषा में VM एडमिनिस्ट्रेशन) | एक OpenAI-compatible प्रदाता | [AI providers](https://nexcmp.com/hi/docs/ai/ai-providers/) | | **DDoS Shield** | बंद | ग्राहकों के लिए IP सुरक्षा; इसके लिए DDoS और BGP की आवश्यकता होती है, इसलिए इसके बिना इसका स्विच अक्षम रहता है | DDoS & BGP ऐड-ऑन | नीचे | | **DDoS & BGP** | बंद, **add-on** | एज राउटर कंसोल: BGP, RTBH, XDP, सेशन और एज ट्रैफ़िक | रूट डेमॉन वाला एक एज होस्ट | नीचे | ### कौन सा स्विच क्या करता है {#which-switch-does-what} - **Bare Metal** के दो स्तर हैं। मॉड्यूल स्विच एडमिन मेन्यू और API को दिखाता है। ग्राहकों को बेचना **Services › Dedicated Server** के तहत एक टाइप किए गए पुष्टिकरण के साथ एक अलग स्विच है, और iDRAC पर प्रत्येक राइट तब तक ब्लॉक रहता है जब तक आप **Infrastructure › Bare Metal › Safety** के तहत **live ops** चालू नहीं करते। [Dedicated servers](https://nexcmp.com/hi/docs/infrastructure/dedicated/) देखें। - **Kubernetes**, **Private Cloud**, **VPN**, **IPv6 Proxy** और **Images** के लिए मॉड्यूल स्विच और सर्विस पेज पर सेल्स स्विच एक ही सेटिंग पर काम करते हैं। - **AI** को **System › Settings › AI provider** के तहत कॉन्फ़िगर किए गए प्रदाता की भी आवश्यकता होती है। - **AI Models** के दो स्तर हैं। मॉड्यूल स्विच admin मेनू और API दिखाता है। ग्राहकों को बेचना AI Models पेजों के शीर्ष पर एक अलग बिक्री स्विच है, जो डिफ़ॉल्ट रूप से बंद (off) रहता है। [AI Models](https://nexcmp.com/hi/docs/infrastructure/ai-models/) देखें। ### स्टार्ट-अप पर पढ़े जाने वाले मॉड्यूल {#modules-read-at-start-up} तीन विशेषताएँ साधारण स्विच नहीं हैं। उन्हें **सेवाएँ शुरू होने पर एक बार** पढ़ा जाता है और ऐसी बुनियादी संरचना की आवश्यकता होती है जो मानक इंस्टॉलेशन में शामिल नहीं है। | फ़ीचर | सेटिंग | स्थिति | इसे क्या चाहिए | |---|---|---|---| | DDoS & BGP | `module_ddos` | बंद होने पर **Add-on package** और चालू होने पर **Installed** के रूप में दिखाया जाता है। कंसोल में कोई स्विच नहीं है। | एज-राउटर डेमॉन (BGP, RTBH, XDP, फ़्लो आँकड़े) जो रूट के रूप में चलते हैं। पैनल एक अप्रिविलेज्ड यूज़र के रूप में चलता है और उन्हें नहीं चला सकता। | | AI | `module_ai` | एक सामान्य स्विच। रूट इसके बाद तुरंत लागू हो जाते हैं; AI Chat के बैकग्राउंड जॉब (टिकट जाँच, शेड्यूल किए गए उत्तर) सेवाओं के अगले रीस्टार्ट पर शुरू होते हैं। कंसोल बताता है कि रीस्टार्ट करना अनुशंसित है। | AI प्रदाता। | | Web SSH टर्मिनल | `feature_ssh_web` | डिफ़ॉल्ट रूप से बंद, कंसोल में कोई स्विच नहीं | एक अलग SSH प्रॉक्सी सेवा और उसका रूट। इसके बिना पोर्टल का Console टैब केवल VNC दिखाता है। **AI Agent को इसकी आवश्यकता नहीं है**: यह पैनल द्वारा स्वयं बनाए गए SSH कनेक्शन पर कमांड चलाता है। | स्टार्ट-अप सेटिंग में बदलाव के बाद, सेवाओं को रीस्टार्ट करें: `sudo systemctl restart nexcmp nexcmp-vmd`। ## सत्यापित करें {#verify} 1. पुनः लोड होने के बाद मॉड्यूल की मेनू प्रविष्टि दिखाई देती है (या गायब हो जाती है)। 2. ग्राहक-सामने वाले मॉड्यूल के लिए, पोर्टल साइन-इन किए गए ग्राहक के लिए नई मेनू प्रविष्टि दिखाता है। बंद मॉड्यूल कुछ नहीं या "coming soon" दिखाता है। ## सीमाएँ और नोट्स {#limits-and-notes} - मॉड्यूल बंद करने से कुछ भी डिलीट नहीं होता। चलने वाले VM, क्लस्टर, S3 खाते और सब्सक्रिप्शन चलते रहते हैं और बिलिंग होती रहती है; ग्राहक बस नए नहीं बना सकते। - कोटा पेज केवल उन सेवाओं को सूचीबद्ध करते हैं जिनके मॉड्यूल चालू हैं। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | मेनू प्रविष्टि दिखाई नहीं दी | पेज रीलोड नहीं किया गया था | एडमिन कंसोल रीलोड करें। | | DDoS Shield स्विच अक्षम है | DDoS & BGP स्थापित नहीं है | DDoS Shield के लिए DDoS & BGP ऐड-ऑन आवश्यक है। | | "यह मॉड्यूल एक ऐड-ऑन पैकेज है और यहाँ स्विच नहीं किया जा सकता" (HTTP 409 या 422) | आपने (या किसी स्क्रिप्ट ने) DDoS & BGP स्विच करने का प्रयास किया | यह एक ऐड-ऑन पैकेज है; कोई स्विच नहीं है। | | "DDoS Shield को DDoS & BGP ऐड-ऑन की आवश्यकता है" | वही, DDoS Shield के लिए | पहले ऐड-ऑन इंस्टॉल करें। | | एक मॉड्यूल रूट 404 `module_disabled` उत्तर देता है | मॉड्यूल बंद है | मॉड्यूल चालू करें। | | AI Chat उत्तर देता है लेकिन टिकट जाँच कभी शुरू नहीं होती | AI मॉड्यूल बिना रीस्टार्ट के चालू कर दिया गया था | `sudo systemctl restart nexcmp nexcmp-vmd`. | | रीड-ऑनली स्टाफ सेव नहीं कर सकता | उनकी भूमिका रीड-ऑनली है | एक एडमिनिस्ट्रेटर खाते का उपयोग करें। | --- # Zones {#zones} > **एडमिन में कहाँ:** Infrastructure › Datacenter › Zone (`/infra/zones`)। किसी zone का विवरण पेज `/infra/zones/` है। ## यह क्या करता है {#what-it-does} एक **zone** वह स्थान है जिसे ग्राहक ऑर्डर करते समय चुनता है: झंडे के साथ एक देश और शहर, और वहाँ बेची जाने वाली सेवाएँ। यह इसके पीछे के प्लेटफॉर्म्स के zones, clusters और nodes से अलग, बिक्री से जुड़ा एक कॉन्सेप्ट है। किसी zone के पीछे आप **infrastructure** जोड़ते हैं: एक CloudStack zone, एक Proxmox VE cluster, IP रेंजेस वाले VPN nodes, एक S3 बैकएंड। Zone 1 आपके द्वारा दर्ज किए गए डिस्प्ले नाम और देश के साथ [setup wizard](https://nexcmp.com/hi/docs/getting-started/setup-wizard/) द्वारा बनाया जाता है। जब आपके पास अधिक स्थानों पर infrastructure हो, या VPN और S3 को उनके अपने स्थान देने हों, तो और zones जोड़ें। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | अनुमतियाँ | एक एडमिनिस्ट्रेटर खाता। रीड-ऑनली स्टाफ भूमिका देख सकती है लेकिन बदल नहीं सकती। | | Infrastructure | कोई zone तब तक कुछ नहीं बेचता जब तक कि उससे कुछ न जोड़ा जाए (नीचे "कौन सी सेवा कहाँ बिकती है" देखें)। | | इस पर निर्भर करता है | VMs के लिए [CloudStack](https://nexcmp.com/hi/docs/infrastructure/cloudstack/) या [Proxmox VE](https://nexcmp.com/hi/docs/infrastructure/proxmox/), VPN के लिए [VPN and proxy nodes](https://nexcmp.com/hi/docs/infrastructure/vpn-proxy-nodes/), ऑब्जेक्ट स्टोरेज के लिए [S3](https://nexcmp.com/hi/docs/infrastructure/s3/)। | ## बुनियादी ढांचा तैयार करें {#prepare-the-infrastructure} आवश्यक नहीं। Zone NexCMP के अंदर एक रिकॉर्ड है। ## NexCMP में कनेक्ट करें {#connect-in-nexcmp} ### Zone बनाएँ {#create-a-zone} 1. **Infrastructure › Datacenter › Zone** खोलें और **Add zone** पर क्लिक करें। 2. फॉर्म भरें: | फ़ील्ड | उदाहरण मान | नोट्स | |---|---|---| | Country | `United States` | झंडा चुनता है। | | City | `New York` | वैकल्पिक। | | Name (Vietnamese), Name (English) | `New York` | वह नाम जो ग्राहक प्रत्येक भाषा में देखते हैं। | | Slug | `us-new-york` | a-z, 0-9, हाइफ़न, 2-32 कैरेक्टर। आपके द्वारा टाइप करने तक देश और शहर से स्वतः भरा जाता है। | | Visibility | Public | **Public** ज़ोन हर ग्राहक को दिखाई देते हैं; **Hidden** ज़ोन केवल एडमिनिस्ट्रेटर द्वारा दिए जाते हैं। | | क्रम (Order) | `0` | सूचियों में कम संख्या वाले पहले। | | इस ज़ोन में बेची जाने वाली सेवाएँ | Virtual Machines (VM), VPN, Object Storage (S3) | कम से कम एक चुनें। | | सक्रिय (Active) | चालू (On) | **Off** ग्राहकों से ज़ोन को छुपाता है। | | डिफ़ॉल्ट | बंद | उन ग्राहकों के लिए पूर्व-चयनित ज़ोन जिन्होंने चयन नहीं किया है। ठीक एक ज़ोन डिफ़ॉल्ट होता है। | ![देश, शहर, स्लग और टिक किए गए सर्विस के साथ Add zone डायलॉग](https://nexcmp.com/hi/docs/images/infrastructure/zones-01-add-zone.webp) 3. **Create zone** पर क्लिक करें। सूची में ज़ोन अपने फ़्लैग, ओनर, सेवाओं, स्थिति और VM, प्लान तथा जुड़ी हुई बुनियादी संरचना की गिनती के साथ दिखाई देता है। ![डिफ़ॉल्ट ज़ोन और दूसरे ज़ोन के साथ ज़ोन सूची](https://nexcmp.com/hi/docs/images/infrastructure/zones-02-list.webp) ### देखें कि क्या जुड़ा हुआ है {#look-at-what-is-attached} ज़ोन खोलने के लिए किसी पंक्ति पर क्लिक करें। **Provider infrastructure** टैब अपने प्रोवाइडर, प्रकार (CloudStack या Proxmox VE), क्षेत्र, स्थिति और प्राथमिकता के साथ प्रत्येक जुड़े हुए बैकएंड को सूचीबद्ध करता है। **VPN infrastructure** टैब ज़ोन की VPN रेंज और नोड्स को सूचीबद्ध करता है तथा VPN पूल से लिंक करता है। ![Provider infrastructure टैब के साथ ज़ोन विवरण](https://nexcmp.com/hi/docs/images/infrastructure/zones-03-detail.webp) ### कौन सी सेवा कहाँ बिकती है {#which-service-sells-where} | सेवा | यह ज़ोन में कैसे आती है | |---|---| | CloudStack पर Virtual Machines | विज़ार्ड (या **Infrastructure › Cloud provider › CloudStack**) CloudStack को ज़ोन 1 से जोड़ता है। | | Proxmox VE पर Virtual Machines | क्लस्टर के **Clusters** टैब पर, **Attach cluster to zone**। क्लस्टर किसी **मौजूदा** ज़ोन से जुड़ता है, आमतौर पर वह जो CloudStack के माध्यम से बेचता है। | | VPN | एक VPN नोड जो अपनी सार्वजनिक IP रेंजों की रिपोर्ट करता है, अपने देश के लिए एक ज़ोन बनाता (या उससे जुड़ता) है और रेंजों को VPN पूल में डालता है। आप **VPN IP pools** के तहत किसी रेंज का ज़ोन और नोड भी असाइन कर सकते हैं। | | IPv6 Proxy | एक नया IPv6 प्रॉक्सी नोड **off** स्थिति में अपना ज़ोन बनाता है। ग्राहकों द्वारा इसे चुनने के लिए सक्षम करने हेतु ज़ोन को यहाँ चालू करें। | | Object Storage (S3) | ज़ोन पर S3 सेवा पर टिक करें, फिर **Ceph S3 (RGW)** के तहत बैकएंड जोड़ें। | ### कोई ज़ोन वर्चुअल मशीनें कब बेच सकता है? {#when-can-a-zone-sell-virtual-machines} किसी ज़ोन पर तब तक **not ready to sell VMs** टैग दिखाई देता है जब तक कि उसमें कम से कम एक सक्रिय, बेचने योग्य बैकएंड **और** कम से कम एक दृश्यमान प्लान **और** उस बैकएंड पर कम से कम एक तैयार टेम्पलेट न हो। ग्राहक ऑर्डर फ़ॉर्म में केवल वही ज़ोन सूचीबद्ध होते हैं जो तैयार हैं। ## सत्यापित करें {#verify} 1. ज़ोन सूची में सही फ़्लैग के साथ **On** के रूप में दिखाई देता है। 2. इसका विवरण पृष्ठ आपकी अपेक्षा के अनुसार बैकएंड या VPN रेंजों को दिखाता है। 3. VM के लिए: **not ready to sell VMs** टैग हट जाता है। ग्राहक पोर्टल में, ऑर्डर शुरू करें और जाँचें कि ज़ोन ऑफ़र किया जा रहा है या नहीं। ## सीमाएँ और नोट्स {#limits-and-notes} - NexCMP के इस रिलीज़ में ग्राहक **default zone** (ज़ोन 1) में वर्चुअल मशीनों का ऑर्डर देते हैं। अन्य ज़ोन का उपयोग VPN, IPv6 Proxy और Object Storage के लिए किया जाता है, या बुनियादी संरचना होने से पहले किसी स्थान को तैयार करने के लिए किया जाता है; ज़ोन सूची के नीचे दिया गया नोट भी यही कहता है। - किसी ज़ोन को केवल तभी हटाया जा सकता है जब कुछ भी न जुड़ा हो: कोई बैकएंड, VM, प्लान या VPN रेंज नहीं। डिफ़ॉल्ट ज़ोन को हटाया नहीं जा सकता; पहले किसी अन्य ज़ोन को डिफ़ॉल्ट बनाएँ। - पुनर्विक्रेता (reseller) के स्वामित्व वाले ज़ोन को केवल आपके द्वारा चालू या बंद तथा छुपाया या दिखाया जा सकता है; उनके अन्य फ़ील्ड लॉक होते हैं। - स्लग आंतरिक संदर्भों का हिस्सा है। इसे एक बार चुन लें। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | "ज़ोन का नाम आवश्यक है" / "देश चुनें" / "कम से कम 1 सेवा चुनें" | एक आवश्यक फ़ील्ड खाली है | नाम भरें, देश चुनें और किसी सेवा को टिक करें। | | "अमान्य slug (a-z 0-9 -, 2-32 वर्ण)" | स्लग में अन्य वर्ण या गलत लंबाई है | केवल छोटे अक्षर, अंक और हाइफ़न का उपयोग करें। | | टैग "not ready to sell VMs" | उस ज़ोन में कोई सक्रिय बिक्री योग्य बैकएंड, कोई प्लान या तैयार टेम्पलेट नहीं है | इन्फ्रास्ट्रक्चर जोड़ें, फिर एक प्लान और टेम्पलेट जोड़ें। [Plans](https://nexcmp.com/hi/docs/catalog/plans/) और [Templates](https://nexcmp.com/hi/docs/infrastructure/templates/) देखें। | | "still attached" के साथ हटाना अक्षम है | ज़ोन में बैकएंड, VMs, प्लान या VPN रेंज हैं | पहले उन्हें हटाएँ या स्थानांतरित करें। | | "Default zone" के साथ हटाना अक्षम है | ज़ोन डिफ़ॉल्ट है | किसी अन्य ज़ोन को डिफ़ॉल्ट के रूप में सेट करें। | | ग्राहकों को ज़ोन दिखाई नहीं दे रहा है | यह छिपा हुआ है, निष्क्रिय है, या कोई सेवा टिक नहीं की गई है | Visibility को Public, Active को On पर सेट करें और सेवा को टिक करें। | | बैकएंड फ़ॉर्म से एक S3 ज़ोन गायब है | ज़ोन पर S3 सेवा टिक नहीं की गई है | ज़ोन संपादित करें और **Object Storage (S3)** को टिक करें। | --- # CloudStack > **एडमिन में कहाँ:** Infrastructure › Cloud provider › CloudStack › API connection (`/infra/cloudstack?tab=connect`)। पहला कनेक्शन [setup wizard](https://nexcmp.com/hi/docs/getting-started/setup-wizard/), चरण 2 में भी बनाया जा सकता है। ## यह क्या करता है {#what-it-does} NexCMP ऐसे वर्चुअल मशीन बेचता है जो आपके Apache CloudStack क्लाउड पर चलते हैं। यह CloudStack API के माध्यम से VMs को तैनात, शुरू, बंद, आकार बदलता, स्नैपशॉट और हटाता है, ज़ोन से सार्वजनिक IP पते आवंटित करता है, बिलिंग और बैंडविड्थ के लिए उपयोग पढ़ता है, और एडमिन कंसोल में क्षमता तथा स्वास्थ्य दिखाता है। हाइपरवाइज़र के लिए CloudStack सत्य का स्रोत बना रहता है; NexCMP इसके शीर्ष पर स्टोरफ्रंट, बिलिंग और पोर्टल है। इस पृष्ठ का उपयोग तब करें जब CloudStack आपका मुख्य VM स्रोत है (या होगा)। इसके बगल में दूसरे स्रोत के लिए, [Proxmox VE](https://nexcmp.com/hi/docs/infrastructure/proxmox/) देखें। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | CloudStack version | 4.23 परीक्षित रिलीज़ है। VM कंसोल को 4.18 या नए की आवश्यकता है और चल रहे VM के लाइव CPU/RAM स्केलिंग के लिए KVM के साथ 4.23 की आवश्यकता है। | | Zone type | ग्राहक VMs के लिए कम से कम एक गेस्ट नेटवर्क और मुफ़्त पतों के साथ एक सार्वजनिक IP रेंज वाला ज़ोन। | | Hypervisor | KVM परीक्षित हाइपरवाइज़र है। | | खाता | NexCMP के लिए बनाया गया एक **समर्पित डोमेन और खाता**। कभी भी ROOT एडमिनिस्ट्रेटर कुंजी का उपयोग न करें। | | API reachability | पैनल सर्वर को HTTP(S) पर प्रबंधन सर्वर API URL (`https://cloudstack.example.com/client/api`) तक पहुँचना होगा। VM कंसोल, बैंडविड्थ और Kubernetes सुविधाएँ एक ही एंडपॉइंट का उपयोग करती हैं। | | Optional read-only key | दूसरी, केवल-पढ़ने के लिए (read-only) कुंजी एडमिन कंसोल को होस्ट, स्टोरेज, सिस्टम VMs और सार्वजनिक IP रेंज दिखाने देती है। VMs बेचने के लिए आवश्यक नहीं है। | | Public IP | ज़ोन में मुफ़्त सार्वजनिक IPv4 पते। वह उपसर्ग जिसे NexCMP बेच सकता है, Sales IP pools के तहत कॉन्फ़िगर किया जाता है। | | Templates | कम से कम एक तैयार, पासवर्ड-सक्षम टेम्पलेट और एक सर्विस ऑफरिंग जिसे आपका खाता देख सके। [Templates](https://nexcmp.com/hi/docs/infrastructure/templates/) देखें। | | Storage | खाते के वॉल्यूम के लिए प्राइमरी स्टोरेज, और यदि आप स्नैपशॉट या इमेज बेचते हैं, तो सेकेंडरी स्टोरेज। | | इस पर निर्भर करता है | कुछ नहीं। Kubernetes, Private Cloud, Images और Bandwidth इस पेज पर निर्भर करते हैं। | ::: warning ROOT एडमिनिस्ट्रेटर कुंजी का उपयोग न करें NexCMP के लिए एक समर्पित डोमेन और खाता बनाएं। इसके बाद कुंजी केवल उसी डोमेन तक पहुंचती है, और लीक हुई कुंजी आपके बाकी क्लाउड को प्रभावित नहीं कर सकती है। सेटअप विज़ार्ड यह भी जांचता है कि आपके द्वारा चुना गया नेटवर्क उस ज़ोन का है या नहीं **और** उस खाते का है जिसके पास कुंजी है। ::: ## बुनियादी ढांचा तैयार करें {#prepare-the-infrastructure} कमांड CloudStack एडमिनिस्ट्रेटर के रूप में लॉगिन करके [CloudMonkey](https://cloudstack.apache.org/) (`cmk`) का उपयोग करते हैं। उदाहरण के नामों और कोणीय कोष्ठकों में दिए गए प्लेसहोल्डर को बदलें। ### एक समर्पित खाता और API key बनाएं {#create-a-dedicated-account-and-api-key} 1. वह डोमेन बनाएं जिसमें NexCMP की हर चीज़ होगी। ```bash cmk create domain name=nexcmp ``` आउटपुट में `id` पर ध्यान दें; नीचे इसका उपयोग `` के रूप में किया जाता है। 2. वह भूमिका खोजें जो आप खाते को देना चाहते हैं। ```bash cmk list roles type=DomainAdmin filter=id,name ``` | Role | इसे कब चुनें | |---|---| | **Domain Admin** (अनुशंसित) | पूर्ण फ़ीचर सेट: VM, नेटवर्क, Kubernetes के लिए प्रोजेक्ट, VPC, इमेज। इसकी पहुंच `nexcmp` डोमेन पर समाप्त होती है। | | User | केवल VM लाइफसाइक्ल। एक साधारण उपयोगकर्ता VM को तब तक डिलीट नहीं कर सकता जब तक कि ग्लोबल सेटिंग `allow.user.expunge.recover.vm` true न हो; इसके बाद NexCMP VM को बंद कर देता है और CloudStack `expunge.delay` के बाद उसे हटा देता है। | 3. खाता और उसका पहला उपयोगकर्ता बनाएं। एक लंबा यादृच्छिक पासवर्ड उपयोग करें; इसे दोबारा कभी टाइप नहीं किया जाता है। ```bash cmk create account name=nexcmp-api username=nexcmp-api \ password='CHANGE-ME-LONG-RANDOM' email=ops@example.com \ firstname=NexCMP lastname=API roleid= domainid= ``` 4. नए उपयोगकर्ता के लिए API key जोड़ी जनरेट करें। ```bash cmk list users domainid= username=nexcmp-api filter=id,username cmk generate userkeys id= ``` `apikey` और `secretkey` को कॉपी करें। ये **API key** और **Secret key** हैं जिन्हें आप NexCMP में दर्ज करते हैं। NexCMP उन्हें एन्क्रिप्ट करके संग्रहीत करता है और उसके बाद केवल अंतिम चार वर्ण दिखाता है। 5. सुनिश्चित करें कि डोमेन पर कोई प्रतिबंधात्मक संसाधन सीमाएँ (इंस्टेंस, वॉल्यूम, पब्लिक IP, नेटवर्क, स्नैपशॉट, टेम्पलेट, प्रोजेक्ट) नहीं हैं। ```bash cmk list resourcelimits domainid= ``` ### ग्राहक VM के लिए गेस्ट नेटवर्क बनाएं {#create-the-guest-network-for-customer-vms} कस्टमर VM को एक गेस्ट नेटवर्क में तैनात किया जाता है जो नए खाते से संबंधित होता है। वर्चुअल राउटर (VR) और स्टैटिक NAT, फ़ायरवॉल और पोर्ट फ़ॉरवर्डिंग सेवाओं वाला एक आइसोलेटेड नेटवर्क अच्छी तरह से काम करता है, क्योंकि NexCMP स्टैटिक NAT के साथ प्रत्येक VM को एक पब्लिक IP जोड़ता है। ```bash cmk list networkofferings state=Enabled guestiptype=Isolated filter=id,name cmk create network name=customers displaytext=customers zoneid= \ networkofferingid= account=nexcmp-api domainid= ``` ऑफ़रिंग की डिफ़ॉल्ट एग्रेस पॉलिसी की जाँच करें: यदि यह "deny" है, तो फ़ायरवॉल एग्रेस नियम जोड़े जाने तक कस्टमर VM की कोई आउटबाउंड पहुँच नहीं होती है। ### ऑफ़रिंग और टेम्पलेट दिखाई देने योग्य बनाएं {#make-offerings-and-templates-visible} - **Service offerings** और **network offerings** सार्वजनिक होने चाहिए या `nexcmp` डोमेन को असाइन किए जाने चाहिए, अन्यथा खाता उन्हें सूचीबद्ध या उपयोग नहीं कर सकता है। - कम से कम एक टेम्पलेट रजिस्टर या शेयर करें ([Templates](https://nexcmp.com/hi/docs/infrastructure/templates/) देखें)। NexCMP उन टेम्पलेट को सूचीबद्ध करता है जो तैयार और फ़ीचर्ड हैं। ### वैकल्पिक: बुनियादी ढांचा पृष्ठों के लिए रीड-ऑनलाइन कुंजी {#optional-read-only-key-for-infrastructure-pages} **Capacity**, **Host**, **Storage** और **System VM** टैब और पब्लिक IP रेंज सूची एक दूसरी कुंजी का उपयोग करती है जिसे केवल छह कमांड तक रीड एक्सेस की आवश्यकता होती है। पूर्ण प्रशासक कुंजी का पुन: उपयोग करने के बजाय एक सीमित भूमिका बनाएं: ```bash cmk create role name=nexcmp-readonly type=Admin # is the id printed above for api in listHosts listCapacity listSystemVms listVlanIpRanges listClusters listStoragePools; do cmk create rolepermission roleid= rule=$api permission=allow done cmk create rolepermission roleid= rule='*' permission=deny ``` फिर उस भूमिका के साथ एक खाता बनाएं (ROOT डोमेन में, क्योंकि यह ज़ोन-व्यापी डेटा पढ़ता है), चरण 4 की तरह इसकी कुंजियाँ जनरेट करें, और उन्हें अगले अनुभाग में **RO API key** के रूप में दर्ज करें। ### नेटवर्क पथ की जाँच करें {#check-the-network-path} पैनल सर्वर से: ```bash curl -fsS -o /dev/null -w '%{http_code}\n' https://cloudstack.example.com/client/api ``` कोई भी HTTP उत्तर (यहाँ तक कि 4xx भी) यह साबित करता है कि पोर्ट तक पहुँचा जा सकता है। टाइमआउट का अर्थ है आपकी तरफ से फ़ायरवॉल या DNS की समस्या। ## NexCMP में कनेक्ट करें {#connect-in-nexcmp} ### सेटअप विज़ार्ड में {#in-the-setup-wizard} [सेटअप विज़ार्ड](https://nexcmp.com/hi/docs/getting-started/setup-wizard/) का चरण 2 उन्हीं मानों के लिए पूछता है। **Test connection** उन ज़ोन और नेटवर्क की सूची देता है जिन्हें कुंजी देख सकती है; ज़ोन और गेस्ट नेटवर्क, ज़ोन के लिए एक प्रदर्शन नाम और देश चुनें, फिर **Save CloudStack** पर क्लिक करें। विज़ार्ड उस नेटवर्क को अस्वीकार कर देता है जो उस ज़ोन में नहीं है या कुंजी को दिखाई नहीं दे रहा है। ![CloudStack API URL और कुंजियाँ भरी हुई तथा Test connection के बाद ज़ोन और नेटवर्क चुना हुआ विज़ार्ड चरण 2](https://nexcmp.com/hi/docs/images/infrastructure/cloudstack-01-wizard-step.webp) ### बाद में, एडमिन कंसोल में {#later-in-the-admin-console} 1. **Infrastructure › Cloud provider › CloudStack** खोलें और **API connection** टैब चुनें। 2. कार्ड **Connection** भरें: | फ़ील्ड | उदाहरण मान | |---|---| | Endpoint API | `https://cloudstack.example.com/client/api` | | API कुंजी (लिखने की अनुमति) | `XXXX` (सहेजी गई कुंजी को बनाए रखने के लिए खाली छोड़ें) | | Secret key | `XXXX` | | RO API कुंजी / RO सीक्रेट कुंजी | वैकल्पिक, रीड-ऑनली खाते से | | Zone ID | आपके ज़ोन का UUID | ![एक उदाहरण एंडपॉइंट और छुपी हुई कुंजियों के साथ API connection टैब](https://nexcmp.com/hi/docs/images/infrastructure/cloudstack-02-connect-form.webp) 3. सहेजने से पहले **Test connection** पर क्लिक करें। यह आपके द्वारा टाइप की गई कुंजियों का परीक्षण उन्हें सहेजे बिना करता है: `listZones` और `listCapabilities` के साथ राइट कुंजी, और `listSystemVms` के साथ रीड-ऑनली कुंजी। 4. **Save connection** पर क्लिक करें। **Enable CloudStack connection** को चालू रखें; इसे बंद करने से वर्कर बिना डेटा खोए सभी CloudStack जॉब्स रोक देता है। 5. नए VM के लिए डिफ़ॉल्ट गेस्ट नेटवर्क, कस्टम ऑफ़रिंग और डिफ़ॉल्ट की पेयर सेट करने के लिए **Services › Virtual Machines › Policy › Provisioning** खोलें। ![VM पॉलिसी, प्रोविजनिंग टैब, डिफ़ॉल्ट नेटवर्क ID के साथ](https://nexcmp.com/hi/docs/images/infrastructure/cloudstack-04-provisioning.webp) 6. **Infrastructure › Cloud provider › Sales IP pools** खोलें और **Configure sales ranges** के अंतर्गत, **Sellable IP range prefixes** (उदाहरण के लिए `203.0.113.`) और **Excluded IP prefixes** सेट करें यदि ज़ोन के कुछ पतों को कभी नहीं बेचा जाना चाहिए। प्रत्येक निःशुल्क पते की अनुमति देने के लिए प्रिफिक्स को खाली छोड़ दें। ![बेचने योग्य प्रिफिक्स 203.0.113. सेट के साथ Sales IP pools](https://nexcmp.com/hi/docs/images/infrastructure/cloudstack-05-sales-ip-pool.webp) ### NexCMP क्या पढ़ता और लिखता है {#what-nexcmp-reads-and-writes} | क्षेत्र | पढ़ता है | बदलाव करता है | |---|---|---| | VMs | सूची, स्थितियाँ, उपयोग इतिहास, कंसोल एंडपॉइंट | डिप्लॉय, शुरू, बंद, रीबूट, रीइंस्टॉल, नष्ट, स्केल, पासवर्ड रीसेट और SSH Keys | | डिसके और स्नैपशॉट | वॉल्यूम, VM स्नैपशॉट, बैकअप | बनाना, अटैच करना, अलग करना, आकार बदलना, हटाना, स्नैपशॉट, रिस्टोर | | नेटवर्किंग | नेटवर्क, राउटर, पब्लिक IP, फ़ायरवॉल, पोर्ट फ़ॉरवर्डिंग, लोड बैलेंसर नियम | पब्लिक IP जोड़ना और जारी करना, स्टैटिक NAT, फ़ायरवॉल, पोर्ट फ़ॉरवर्डिंग, एग्रेस नियम, प्राइवेट क्लाउड के लिए नेटवर्क और ACL | | कैटलॉग | सेवा, डिस्क और नेटवर्क ऑफ़रिंग, टेम्पलेट, ISO, OS प्रकार | टेम्पलेट और ISO (इमेज) रजिस्टर और हटाना, कस्टम प्लान बनाते समय सेवा ऑफ़रिंग | | Kubernetes | समर्थित संस्करण, क्लस्टर, कॉन्फ़िगरेशन | प्रोजेक्ट, संसाधन सीमाएँ, नेटवर्क, क्लस्टर (मॉड्यूल Kubernetes) | | रीड-ऑनली कुंजी | होस्ट, क्लस्टर, स्टोरेज पूल, सिस्टम VM, क्षमता, VLAN IP रेंज | कुछ नहीं | ### लाइव CPU और RAM, और बैंडविड्थ {#live-cpu-and-ram-and-bandwidth} - **हॉट-प्लग (Hot-plug)।** चल रहे VM का आकार रीबूट किए बिना केवल तभी बदला जा सकता है जब इसका टेम्पलेट इसकी अनुमति देता हो (गतिशील रूप से स्केलेबल) और गेस्ट नए CPU और RAM को ऑनलाइन ले आए। NexCMP उन टेम्पलेट्स के लिए Auto Scaling चालू करता है जिनके नाम के अंत में `vN` होता है जिसमें N 6 या अधिक होता है, या जब आप इसे टेम्पलेट के **vCPU/RAM hot-plug** फ़ील्ड में मैन्युअली सेट करते हैं। [Templates](https://nexcmp.com/hi/docs/infrastructure/templates/) देखें। - **बैंडविड्थ स्रोत।** डिफ़ॉल्ट सेटिंग्स के साथ NexCMP, CloudStack VM सांख्यिकी (`listVirtualMachinesUsageHistory`, हर 5 मिनट में पोल किया जाता है और प्रति VM नेटवर्क इंटरफ़ेस जोड़ा जाता है) से ट्रैफ़िक मापता है। आंकड़ों में VM के बीच का ट्रैफ़िक शामिल होता है, इसलिए वे एज राउटर द्वारा गिने जाने वाले ट्रैफ़िक से थोड़े अधिक हो सकते हैं। CloudStack VM सांख्यिकी संग्रह सक्षम रखें; सांख्यिकी प्रतिधारण से अधिक लंबे अंतराल को छोड़ दिया जाता है। [Bandwidth](https://nexcmp.com/hi/docs/catalog/bandwidth/) देखें। ## सत्यापित करें {#verify} 1. **Test connection** आपके ज़ोन और CloudStack संस्करण के साथ "Write key: OK" लौटाता है। 2. **Infrastructure › Cloud provider › Providers** प्रदाता को हाल के परीक्षण समय के साथ सक्रिय रूप से दिखाता है। डैशबोर्ड हेल्थ पैनल अब "CloudStack: not connected" नहीं दिखाता है। 3. **Sales IP pools** मुफ़्त पते सूचीबद्ध करता है (यह लगभग हर मिनट रिफ्रेश होता है)। 4. कस्टमर पोर्टल या एडमिन कंसोल से एक छोटा VM ऑर्डर करें और जांचें कि यह Running तक पहुँचता है, इसमें एक सार्वजनिक IP है और आप कंसोल खोल सकते हैं। ## सीमाएँ और नोट्स {#limits-and-notes} - NexCMP के इस रिलीज़ में एक CloudStack क्लस्टर कनेक्ट किया जा सकता है। **Add cloud provider** संवाद दूसरे क्लस्टर की कुंजियों का परीक्षण कर सकता है लेकिन उन्हें सहेज नहीं सकता है। - एक CloudStack ज़ोन NexCMP के डिफ़ॉल्ट ज़ोन से जुड़ा हुआ है; कई ज़ोन वाला CloudStack आपके द्वारा दर्ज किए गए ज़ोन तक सीमित है, इसलिए अन्य ज़ोन के VM, IP और नेटवर्क को अनदेखा कर दिया जाता है। - CloudStack में गेस्ट नेटवर्क को हटाने से हर नया डिप्लॉयमेंट विफल हो जाता है। नेटवर्क गायब होने पर एडमिन कंसोल एक लाल सूचना दिखाता है। - क्रेडेंशियल कभी भी सर्वर से बाहर नहीं जाते हैं। API केवल अंतिम चार वर्ण लौटाता है। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | `listCapabilities: cloudstack 401: unable to verify user credentials and/or request signature` | गलत API कुंजी या गुप्त (secret), किसी अन्य उपयोगकर्ता की कुंजी, या पैनल सर्वर पर घड़ी की समस्या | `cmk generate userkeys` के साथ कुंजियाँ फिर से जनरेट करें और दोनों को पेस्ट करें। पैनल सर्वर का समय जाँचें। | | परीक्षण: `listZones: …` या टाइमआउट | पैनल सर्वर API URL तक नहीं पहुँच सकता | DNS, फ़ायरवॉल और सटीक `/client/api` पथ की जाँच करें। | | विज़ार्ड: "network not found in that zone for this API key" | चुना हुआ नेटवर्क किसी अन्य खाते या ज़ोन से संबंधित है | समर्पित खाते में नेटवर्क बनाएँ (ऊपर देखें) और फिर से **Test connection** चलाएँ। | | विज़ार्ड: "pick a zone and a network" | टेस्ट नहीं चलाया गया, या कोई ज़ोन या नेटवर्क नहीं चुना गया | **Test connection** पर क्लिक करें और दोनों सूचियाँ चुनें। | | बैनर "CloudStack key not configured" | अभी तक कोई कुंजी सहेजी नहीं गई ("Connect later") | Connection कार्ड भरें, **Save connection** पर क्लिक करें, फिर **Test connection** करें। | | Banner "CloudStack connection is OFF" | **Enable CloudStack connection** स्विच बंद है | इसे चालू करें और सहेजें। | | रीड-ऑनली कुंजी: टेस्ट में "unusable …" | अनुपलब्ध रोल अनुमति या गलत खाता | छह स्वीकृत कमांड की जाँच करें और सुनिश्चित करें कि खाता ROOT डोमेन में है। | | "Zone public IP ranges not measured yet" या "no public IP ranges declared" | कोई रीड-ऑनली कुंजी नहीं है, या वास्तव में ज़ोन में कोई पब्लिक रेंज नहीं है | read-only कुंजी जोड़ें, या CloudStack में सार्वजनिक IP रेंज जोड़ें। | | "पूल खाली है — vmd सिंक के लिए 60 s प्रतीक्षा करें" | वर्कर द्वारा IP सूची को प्रति मिनट एक बार रीफ्रेश किया जाता है | एक मिनट प्रतीक्षा करें और पुनः लोड करें। | | "रेंज 203.0.113. में कोई Free IP शेष नहीं है" | बेचे जाने वाले प्रीफ़िक्स के सभी पते उपयोग में हैं | ज़ोन में पते जोड़ें, प्रीफ़िक्स को चौड़ा करें या उपयोग न किए गए IP रिलीज़ करें। | | "नेटवर्क डेटा लाने में विफल (CloudStack प्रतिक्रिया नहीं दे रहा है या कुंजी में अनुमतियाँ नहीं हैं)" | कुंजी की पहुँच समाप्त हो गई है, या CloudStack डाउन है | **Test connection** चलाएँ; जाँचें कि खाता सक्षम है। | | "गेस्ट नेटवर्क मौजूद नहीं है" | नेटवर्क को CloudStack में हटा दिया गया था | नेटवर्क को फिर से बनाएँ और Provisioning के तहत इसे डिफ़ॉल्ट के रूप में सेट करें। | --- # Proxmox VE > **प्रशासन में कहाँ:** Infrastructure › Cloud provider › Providers (`/infra/providers`), फिर Overview, Clusters, VMs, Servers और Credentials टैब के साथ प्रदाता पृष्ठ (`/infra/providers/`)। प्लान Services › Virtual Machines › Plans & pricing (`/vm/catalog`) के तहत सेट किए जाते हैं। ## यह क्या करता है {#what-it-does} NexCMP CloudStack के साथ या उसके स्थान पर एक या अधिक Proxmox VE क्लस्टर पर चलने वाले वर्चुअल मशीन बेच सकता है। फुल क्लोन के साथ OS टेम्पलेट को क्लोन करके VM बनाया जाता है, फिर इसे cloud-init के माध्यम से कॉन्फ़िगर किया जाता है: आकार, आपके द्वारा परिभाषित पूल से IP पता, रूट पासवर्ड और SSH कुंजी। ग्राहकों को पोर्टल में पावर कंट्रोल, कंसोल, स्नैपशॉट, रीइंस्टॉल, पासवर्ड रीसेट और मेट्रिक्स मिलते हैं। वे कभी भी क्लस्टर, नोड या स्रोत का नाम नहीं देखते हैं। इसका उपयोग तब करें जब आप पहले से Proxmox VE चलाते हैं, या VM का दूसरा, भिन्न मूल्य निर्धारण वाला पूल ऑफ़र करने के लिए। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | Proxmox VE | PVE 9.x। एकीकरण को 9.2 पर सत्यापित किया गया था। इसके लिए `import` स्टोरेज सामग्री और `import-from` डिस्क विकल्प (PVE 8.2 या नया) की आवश्यकता होती है। | | पैनल से नेटवर्क | क्लस्टर API के लिए HTTPS, `https://:8006`। कोई पथ, उपयोगकर्ता नाम या क्वेरी नहीं। पैनल और वर्कर दोनों कनेक्ट होते हैं; ब्राउज़र कंसोल को पैनल के माध्यम से प्रॉक्सी किया जाता है। | | खाता | **API टोकन** और नीचे सूचीबद्ध विशेषाधिकारों के साथ एक कस्टम भूमिका वाला एक समर्पित PVE उपयोगकर्ता। कभी भी `root@pam` का उपयोग न करें। | | Storage | VM डिस्क के लिए एक स्टोरेज जो क्लोन का समर्थन करता है (उदाहरण के लिए `local-lvm`)। अंतर्निहित टेम्पलेट बिल्डर के लिए, `local` नामक स्टोरेज जिसकी सामग्री प्रकार `import` और `snippets` हैं। | | नेटवर्क | एक Linux ब्रिज (उदाहरण के लिए `vmbr0`) जो उस नेटवर्क तक पहुँचता है जहाँ ग्राहक IP रहते हैं। यदि आप VLAN टैग दर्ज करते हैं तो VLAN-aware ब्रिज का उपयोग करें। | | IP | एक IPv4 ब्लॉक (/16 से /30) जिसे उस ब्रिज पर रूट किया गया है, एक गेटवे के साथ। NexCMP स्वयं पते असाइन करता है; Proxmox में कोई IP प्रबंधन नहीं है। | | Templates | QEMU गेस्ट एजेंट के साथ, प्रत्येक OS के लिए एक क्लाउड-init टेम्पलेट VM, जिस भी नोड पर आप तैनात करते हैं। | | ज़ोन | क्लस्टर को जोड़ने के लिए एक मौजूदा ज़ोन। [Zones](https://nexcmp.com/hi/docs/infrastructure/zones/) देखें। | | इस पर निर्भर करता है | कुछ नहीं। | ## बुनियादी ढांचा तैयार करें {#prepare-the-infrastructure} किसी भी क्लस्टर नोड पर रूट के रूप में कमांड चलाएँ। ### 1. न्यूनतम-विशेषाधिकार भूमिका, उपयोगकर्ता और API टोकन बनाएँ {#_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)। इसे अभी कॉपी करें। टोकन आईडी `nexcmp@pve!api` है। 3. यूज़र और टोकन **दोनों** को यह रोल दें। लोग अक्सर यही चरण भूल जाते हैं: प्रिविलेज सेपरेशन के साथ, यदि यूज़र के पास अनुमति नहीं है, तो केवल टोकन को `Datastore.Audit` जैसी 403 त्रुटियां मिलती हैं। ```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=' https://192.0.2.10:8006/api2/json/version ``` `version` वाला JSON दस्तावेज़ यह दर्शाता है कि टोकन काम कर रहा है। (`-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 ``` - कस्टमर VMs को NexCMP में आपके द्वारा दर्ज किए गए ब्रिज पर `virtio` नेटवर्क इंटरफेस मिलते हैं। यदि आप कोई VLAN सेट करते हैं, तो ब्रिज VLAN-अवेयर होना चाहिए। - कस्टमर VMs को **नोड के मैनेजमेंट एड्रेस से अलग** किसी ब्रिज या VLAN पर रखें। यदि वे एक ही नेटवर्क शेयर करते हैं, तो Proxmox फ़ायरवॉल का स्वचालित मैनेजमेंट IP सेट उस नेटवर्क के प्रत्येक VM के लिए नोड के पोर्ट्स 22, 8006, 3128, 5900-5999 और 60000-60050 खोल देता है। यदि आप उन्हें अलग नहीं कर सकते हैं, तो मैनेजमेंट ACCEPT नियम के ऊपर उस VM सबनेट के लिए एक स्पष्ट DROP नियम जोड़ें। ### 3. स्टोरेज नोट्स (LVM-thin) {#_3-storage-notes-lvm-thin} - थिन-पूल **zeroing को उसके डिफ़ॉल्ट पर** छोड़ दें। इसे बंद करना (`lvchange -Zn`) नए आवंटित चंक्स में पुराना डेटा छोड़ सकता है और क्लोन किए गए VMs की पार्टीशन टेबल या फ़ाइल सिस्टम को भ्रष्ट कर सकता है. - "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} एक टेम्पलेट क्लाउड-init VM है जिसे NexCMP क्लोन करता है। प्रत्येक को **OS key** जैसे कि `ubuntu-24.04` के तहत इसके VM आईडी के साथ पंजीकृत किया जाता है। **VM प्राप्त करने वाले प्रत्येक नोड पर** OS के लिए एक टेम्पलेट बनाएं, क्योंकि क्लोन चुने गए नोड पर चलता है। **विकल्प A, अनुशंसित: इसे स्वयं बनाएं।** स्टॉक Ubuntu और Debian क्लाउड इमेज में गेस्ट एजेंट नहीं होता है और वे रूट लॉगिन की अनुमति नहीं देती हैं, और NexCMP क्लाउड-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: बिल्ट-इन बिल्डर।** Clusters टैब पर **Create OS template from cloud image** कार्ड (नीचे देखें) एक qcow2 इमेज डाउनलोड करता है, टेम्पलेट बनाता है और उसे पंजीकृत करता है। यह क्लाउड-init और गेस्ट एजेंट फ्लैग के साथ VM बनाता है, लेकिन यह इमेज के अंदर क्या है उसे नहीं बदलता है। इसका उपयोग केवल ऐसी इमेज के साथ करें जो पहले से ही रूट लॉगिन की अनुमति देती है और गेस्ट एजेंट चलाती है, या जब आप क्लाउड-init वेंडर-डेटा स्निपेट भी प्रदान करते हैं। **Reset password** के लिए और VM का IP एड्रेस दिखाने के लिए गेस्ट एजेंट की आवश्यकता होती है। ### 6. सर्टिफिकेट फ़िंगरप्रिंट जानें (वैकल्पिक) {#_6-know-the-certificate-fingerprint-optional} NexCMP अपने TLS सर्टिफिकेट के SHA-256 फ़िंगरप्रिंट को पिन करके क्लस्टर पर भरोसा करता है, इसलिए सेल्फ-साइंड सर्टिफिकेट ठीक है। 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` (चरण 1 में प्रिंट किया गया UUID) | | Slug | `pve-1` (a-z, 0-9, हाइफ़न, 2-32 वर्ण) | | Default node | `pve1` (खाली: सबसे अधिक मुफ़्त RAM वाला ऑनलाइन नोड) | | Storage | `local-lvm` | | Bridge | `vmbr0` | ![Proxmox VE चुने हुए और उदाहरण एंडपॉइंट, टोकन व स्टोरेज मानों के साथ Add cloud provider संवाद](https://nexcmp.com/hi/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`। जब नोड्स की CPU पीढ़ियाँ अलग हों तो `x86-64-v2-AES` का उपयोग करें। | | vmid from | ग्राहक VM को दी जाने वाली पहली VM id (डिफ़ॉल्ट 1000)। | | Storage ISO, Storage backup | जब तक आप इनका उपयोग न करें तब तक खाली छोड़ें; खाली होने का अर्थ है कि ISO और बैकअप सुविधाएँ प्रदान नहीं की जाती हैं। | | Template OS | प्रति पंक्ति एक, `os-key=vmid`, उदाहरण के लिए `ubuntu-24.04=9000`। | | Pinned TLS fingerprint (SHA-256) | पहली जाँच द्वारा भरा जाता है। क्लस्टर प्रमाणपत्र बदलने के बाद इसे साफ़ करें और दोबारा जाँच करें। | ![Clusters टैब, उदाहरण नोड, स्टोरेज, ब्रिज और OS टेम्पलेट सूची वाला Cluster configuration कार्ड](https://nexcmp.com/hi/docs/images/infrastructure/proxmox-03-cluster-config.webp) 5. वैकल्पिक: यदि आपने ऊपर विकल्प B का उपयोग किया है, तो **Create OS template from cloud image** (OS कुंजी `ubuntu-24.04`, vmid `9000`, नोड `pve1`, qcow2 इमेज URL) भरें और **Create template** पर क्लिक करें। यह पृष्ठभूमि में कुछ मिनटों के लिए चलता है; परिणाम Audit log में होता है। ![उदाहरण Ubuntu इमेज URL के साथ Create OS template from cloud image कार्ड](https://nexcmp.com/hi/docs/images/infrastructure/proxmox-04-template-from-image.webp) 6. **Add pool** पर **Cluster IP pool** में क्लिक करें और वह पूल बनाएं जिससे VMs पते प्राप्त करते हैं: | फ़ील्ड | उदाहरण मान | |---|---| | 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 कभी भी नेटवर्क पते, प्रसारण पते, गेटवे या आरक्षित पते को निर्दिष्ट नहीं करता है। एक ही क्लस्टर के पूल ओवरलैप नहीं हो सकते। किसी पूल को केवल तभी हटाया जा सकता है जब उसका कोई भी पता उपयोग में न हो। ![उदाहरण /24 और गेटवे के साथ Add IP pool संवाद](https://nexcmp.com/hi/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/hi/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} क्लस्टर पर VM की सूची देखने के लिए **Servers** टैब खोलें। **Import** किसी मौजूदा VM को बिना किसी शुल्क के ग्राहक खाते से जोड़ता है: घंटों, पावर-ऑफ समय या ट्रैफिक के लिए कोई बिल नहीं बनता है। ग्राहक इसे शुरू, बंद, रीबूट और कंसोल खोल सकता है लेकिन इसे हटा नहीं सकता; केवल एक एडमिनिस्ट्रेटर ही ऐसा कर सकता है। NexCMP इम्पोर्ट करते समय केवल क्लस्टर से डेटा पढ़ता है। - क्लस्टर उस VM के **नोड नाम** वाले ज़ोन से जुड़ा होना चाहिए (नोड को खाली छोड़ें और इम्पोर्ट रिपोर्ट करेगा कि क्षेत्र सेट अप नहीं है)। - किसी VM को **सुरक्षित** बनाने के लिए (बंद करना, रीबूट करना, रीइंस्टॉल करना, स्नैपशॉट रिस्टोर करना, नष्ट करना और प्लान बदलना अस्वीकार कर दिया जाता है), इसे कमांड लाइन से `--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 | हाँ, प्रति VM अधिकतम 5: बनाएं, सूची देखें, रिस्टोर करें, हटाएं | | Reinstall | हाँ: VM को टेम्पलेट से फिर से बनाया जाता है और नए पासवर्ड के साथ अपनी आईडी, IP और सेटिंग्स को बनाए रखता है | | पासवर्ड रीसेट करें | हाँ, गेस्ट एजेंट के माध्यम से | | Console | हाँ, पैनल द्वारा प्रॉक्सी किया गया ब्राउज़र कंसोल | | Metrics | हाँ: CPU, मेमोरी, नेटवर्क और डिस्क | | ISO माउंट, बैकअप, फ़ायरवॉल, IPv6, पोर्ट फ़ॉरवर्डिंग, IP बदलना, अतिरिक्त वॉल्यूम, Auto Scaling, DDoS Shield, VPC, बैंडविड्थ मीटरिंग | उपलब्ध नहीं है। ग्राहक VM पृष्ठ छुपाता है कि कोई सोर्स क्या नहीं कर सकता है। | ## सत्यापित करें {#verify} 1. **Test connection** OK दिखाता है और प्रदाता स्थिति सक्रिय है। 2. **Clusters** आपके नोड्स को स्टोरेज और ब्रिज के साथ ऑनलाइन के रूप में सूचीबद्ध करता है। 3. **Cluster IP pool** मुफ़्त, उपयोग किए गए और होल्ड किए गए काउंट दिखाता है। 4. क्लस्टर जुड़ने के बाद ज़ोन के टेम्पलेट्स के तहत **Services › Virtual Machines › Template** में OS कुंजी दिखाई देती है। 5. उस क्लस्टर का उपयोग करने वाले प्लान से एक टेस्ट VM ऑर्डर करें। इसे पूल से एक पता, एक रूट पासवर्ड और एक काम करने वाला कंसोल मिलना चाहिए; पूल एक उपयोग किया हुआ पता दिखाता है। ## सीमाएँ और नोट्स {#limits-and-notes} ::: tip मिक्स्ड-सोर्स ज़ोन NexCMP 1.4.0 से, सार्वजनिक Cloud Server मूल्य सूची तब भी काम करती है जब CloudStack और Proxmox VE एक ही ज़ोन साझा करते हैं। प्रत्येक प्लान अपने स्वयं के **Infrastructure source** का उपयोग करता है। क्लस्टर जोड़ने के बाद, सार्वजनिक मूल्य सूची जांचें और प्रत्येक स्रोत के लिए एक टेस्ट ऑर्डर दें। ::: - कई Proxmox क्लस्टर जोड़े जा सकते हैं। प्रत्येक एक प्रदाता है। - एक ज़ोन एक डिफ़ॉल्ट सोर्स प्रदान करता है; अपने स्वयं के **Infrastructure source** वाला प्लान ठीक उसी क्लस्टर पर तैनात किया जाता है, जब तक कि क्लस्टर सक्रिय हो और प्लान के ज़ोन में हो। - CloudStack के समान ज़ोन के पीछे का क्लस्टर CloudStack पर अपने लेगेसी प्लान रखता है। लॉन्च करने से पहले एंड-टू-एंड ऑर्डर का परीक्षण करें। - API टोकन को केवल बदला जा सकता है, कभी देखा नहीं जा सकता। इसे **Credentials** टैब में बदलें: पहले Proxmox में नया टोकन बनाएं, इसे दर्ज करें, **Test connection** चलाएं, फिर पुराने टोकन को रद्द करें। - Test, Sync और cluster-info क्रियाएं प्रति एडमिनिस्ट्रेटर प्रति मिनट छह कॉल तक सीमित हैं। - NexCMP आपके ग्राहकों को बिल करता है; क्लस्टर का हार्डवेयर और लाइसेंस खर्च आपका है। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | Test: "Key rejected (wrong access key / secret, or revoked)" या HTTP 401/403 | गलत टोकन आईडी या गुप्त (secret), या 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 सर्टिफिकेट पिन किए गए फ़िंगरप्रिंट से मेल नहीं खाता है" | क्लस्टर प्रमाणपत्र बदल दिया गया था | Clusters टैब पर **Pinned TLS fingerprint** साफ़ करें, सेव करें, और **Test connection** दोबारा चलाएं। | | स्लग अस्वीकार कर दिया गया | a-z, 0-9, हाइफ़न नहीं है, या 2-32 वर्णों का नहीं है | `pve-1` जैसा कुछ उपयोग करें। | | "टोकन आईडी प्रारूप: user@realm!tokenid और सीक्रेट आवश्यक है" | टोकन आईडी या गुप्त कुंजी गायब है | दोनों दर्ज करें; गुप्त कुंजी वह UUID है जो टोकन बनाते समय प्रिंट किया गया था। | | "अमान्य टेम्पलेट लाइन: …" | **Template OS** में एक लाइन `key=vmid` नहीं है | कुंजी में अक्षरों, अंकों, `.`, `_`, `-` का उपयोग करें और vmid कम से कम 100 रखें। | | "OS कुंजी: a-z 0-9 . _ - और vmid ≥ 100" | **Create template** में अमान्य कुंजी या आईडी | OS कुंजी को ठीक करें और एक खाली vmid का उपयोग करें। | | टेम्पलेट बनाते समय "vmid … already exists" | vmid पहले से लिया गया है | दूसरी आईडी चुनें। | | "यूआरएल आंतरिक पते की ओर इंगित करता है" | इमेज 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` को इंस्टॉल और सक्षम करें। | | "नाम, CIDR और गेटवे आवश्यक हैं" | पूल फ़ील्ड गायब है | तीनों को भरें। | | पूल निर्माण: "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 के नोड नाम के बिना जुड़ा हुआ है | नोड नाम के साथ क्लस्टर को ज़ोन से जोड़ें। | --- # OS टेम्प्लेट और ISO {#os-templates-and-isos} > **एडमिन में कहाँ:** Services › Virtual Machines › Template (`/vm/templates`)। Proxmox टेम्पलेट्स Infrastructure › Cloud provider › Providers › (cluster) › Clusters पर प्रति क्लस्टर सूचीबद्ध हैं। ## यह क्या करता है {#what-it-does} टेम्प्लेट वह ऑपरेटिंग-सिस्टम इमेज है जिससे एक नया VM शुरू होता है। NexCMP खुद इमेज स्टोर नहीं करता है: यह CloudStack की रिपोर्ट (तैयार, चुनिंदा टेम्प्लेट) या Proxmox क्लस्टर के लिए आपकी सूची को पढ़ता है, और आपको यह चुनने देता है कि ग्राहक-सामने के नाम, आइकन और लॉगिन उपयोगकर्ता के साथ कौन से बेचे जाते हैं। यह पृष्ठ दिखाता है कि NexCMP के साथ अच्छी तरह से काम करने वाली इमेज कैसे तैयार करें: पासवर्ड लॉगिन, लाइव CPU और RAM स्केलिंग, स्वैप फ़ाइल, और एक रूट डिस्क जो योजना के आकार तक बढ़ती है। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | CloudStack टेम्प्लेट बिल्डर | `libguestfs-tools` (`virt-customize`, `virt-sparsify`, `guestfish`), `qemu-utils`, `curl` और लगभग 5 GB खाली डिस्क वाली एक Linux मशीन। KVM और root की कोई आवश्यकता नहीं है। पैकेज इंस्टॉल के लिए इंटरनेट एक्सेस (या `--offline` के साथ बनाएं)। | | बिल्डर कहाँ है | यह पैनल सर्वर पर प्रत्येक रिलीज़ के साथ `/opt/nexcmp/releases//share/templates/` में आता है। आपको इसे वहाँ चलाने की आवश्यकता नहीं है: फ़ोल्डर को किसी भी Linux मशीन पर कॉपी करें। | | वेब सर्वर | तैयार `.qcow2` फ़ाइल को प्रकाशित करने के लिए कोई भी HTTP(S) सर्वर जिसे CloudStack का सेकेंडरी स्टोरेज VM एक्सेस कर सके। इसे इंटरनेट से एक्सेस करने योग्य होना जरूरी नहीं है। | | CloudStack | एक खाता जो टेम्प्लेट रजिस्टर कर सकता है, और आपके ज़ोन और एक मेल खाते OS प्रकार की ID। [CloudStack](https://nexcmp.com/hi/docs/infrastructure/cloudstack/) देखें। | | Proxmox VE | QEMU गेस्ट एजेंट के साथ Cloud-init टेम्प्लेट VM, प्रति OS और प्रति नोड एक। [Proxmox VE](https://nexcmp.com/hi/docs/infrastructure/proxmox/) देखें। | | इस पर निर्भर करता है | पहले [CloudStack](https://nexcmp.com/hi/docs/infrastructure/cloudstack/) या [Proxmox VE](https://nexcmp.com/hi/docs/infrastructure/proxmox/) कनेक्ट किया गया। | ## बुनियादी ढांचा तैयार करें {#prepare-the-infrastructure} ### CloudStack: टेम्प्लेट बनाएं {#cloudstack-build-a-template} समर्थित बेस इमेज (कुछ भी बदलने से पहले वेंडर इमेज डाउनलोड की जाती है और उसके चेकसम का सत्यापन किया जाता है): | इमेज | `--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, चेकसम फ़ाइल, फ़ैमिली `deb` या `rpm`)। 1. बिल्डर को एक बिल्ड मशीन पर कॉपी करें और चलाएं: ```bash cp -r /opt/nexcmp/releases//share/templates ~/templates && cd ~/templates ./build-template.sh --distro ubuntu-24.04 --version v7 --work ./out ``` एक वैकल्पिक फ़र्स्ट-बूट मॉनिटरिंग एजेंट को शामिल करने के लिए `--panel-url https://cloud.example.com` जोड़ें जो आपके पैनल में नामांकित होता है (केवल HTTPS)। इसके बिना, कोई एजेंट नहीं जोड़ा जाता है। अन्य विकल्प: आपके द्वारा डाउनलोड की गई इमेज का उपयोग करने के लिए `--base `, पैकेज इंस्टॉल छोड़ने के लिए `--offline`। 2. परिणाम `out/ubuntu-24.04-v7.qcow2` और इसका `.sha256` है। बिल्ड `verify-image.sh` चलाकर समाप्त होता है, जो तैयार इमेज का रीड-ऑनली निरीक्षण करता है और खराब इमेज को अस्वीकार कर देता है (इसे `.unverified` के रूप में रखा जाता है)। आप इसे किसी भी समय फिर से चला सकते हैं: `./verify-image.sh out/ubuntu-24.04-v7.qcow2 --no-agent`। बिल्डर इमेज में क्या डालता है: | आइटम | क्यों | |---|---| | `qemu-guest-agent` | CloudStack वीएम से CPU और IP के बारे में पूछ सकता है, और स्नैपशॉट के लिए इसे शांत कर सकता है। | | CloudStack डेटा स्रोत के साथ cloud-init, `set_passwords` हर बूट पर, SSH पासवर्ड लॉगिन | जनरेट किया गया पासवर्ड वर्चुअल राउटर से प्राप्त किया जाता है और **Reset password** काम करता है। | | हॉट-ऐडेड CPU और RAM के लिए एक udev नियम | हॉट-ऐडेड vCPUs और RAM अपने आप ऑनलाइन आ जाते हैं, जिससे लाइव स्केलिंग और Auto Scaling काम करते हैं। | | एक स्वैप फाइल सर्विस | डिस्क बढ़ने के बाद RAM के 50% और 4 GiB में से जो भी कम हो, उसका `/swapfile` बनाता है। `touch /etc/cmp-swap.disabled` इसे बंद कर देता है। | | cloud-init `growpart` और `resizefs` | पहला बूट होने पर छोटी रूट डिस्क प्लान के डिस्क साइज़ तक बढ़ जाती है। | | खाली machine-id, कोई SSH होस्ट कीज़ नहीं | हर VM को अपनी खुद की पहचान मिलती है। | ::: warning टेम्पलेट का नाम ` ` रखें NexCMP उन टेम्पलेट्स के लिए **Auto Scaling** चालू करता है जिनके नाम के अंत में `vN` या `vN.M` होता है और **N of 6 or more** (`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= format=QCOW2 hypervisor=KVM \ ostypeid= passwordenabled=true sshkeyenabled=true isdynamicallyscalable=true \ requireshvm=true isextractable=false ispublic=true isfeatured=true \ checksum="{SHA-256}" \ details[0].guest.cpu.mode=host-passthrough details[0].rootDiskController=osdefault ``` - `passwordenabled=true` CloudStack को VM पासवर्ड जनरेट करने देता है। - `isdynamicallyscalable=true` लाइव स्केलिंग की अनुमति देता है। - वर्तमान Rocky और Alma इमेज को बूट करने के लिए `host-passthrough` आवश्यक है; `osdefault` डिस्क कंट्रोलर को पोर्टेबल रखता है। 4. **Download Complete / Ready** तक पहुँचने के लिए टेम्पलेट का इंतज़ार करें। वेंडर इमेज अपना छोटा वर्चुअल साइज़ (Ubuntu और Debian के लिए लगभग 3.5 GiB, Rocky के लिए 10 GiB) बनाए रखती है। याद रखें कि किसी प्लान की डिस्क टेम्पलेट की डिस्क से छोटी नहीं हो सकती। ### Proxmox VE: एक टेम्पलेट बनाएं {#proxmox-ve-make-a-template} जिस भी नोड पर आप डिप्लॉय करते हैं, उस पर प्रत्येक OS के लिए गेस्ट एजेंट इंस्टॉल और रूट लॉगिन सक्षम करके एक क्लाउड-इinit VM टेम्पलेट बनाएं, फिर इसे `os-key=vmid` के रूप में रजिस्टर करें। पूर्ण कमांड [Proxmox VE](https://nexcmp.com/hi/docs/infrastructure/proxmox/) में हैं। ऊपर दिया गया CloudStack बिल्डर Proxmox के लिए **नहीं** है: यह CloudStack डेटा सोर्स के लिए cloud-init को कॉन्फ़िगर करता है। ### ISOs {#isos} ग्राहक **Images** मॉड्यूल (CloudStack) या डेडिकेटेड सर्वर मॉड्यूल के माध्यम से अपने स्वयं के ISOs माउंट करते हैं। वे इस पेज पर मौजूद OS टेम्पलेट्स से अलग हैं। [Modules](https://nexcmp.com/hi/docs/infrastructure/modules/) और [Dedicated servers](https://nexcmp.com/hi/docs/infrastructure/dedicated/) देखें। ## NexCMP में कनेक्ट करें {#connect-in-nexcmp} 1. **Services › Virtual Machines › Template** खोलें। **Sync now** पर क्लिक करें या 15 मिनट तक प्रतीक्षा करें। सिंक उन टेम्पलेट्स को जोड़ता है जो CloudStack में तैयार और फ़ीचर्ड हैं। ![सिंक किए गए टेम्पलेट्स को उनकी तैयार स्थिति और CPU हॉट-प्लग कॉलम के साथ दिखाने वाला टेम्पलेट पेज](https://nexcmp.com/hi/docs/images/infrastructure/templates-01-list.webp) 2. नए टेम्पलेट पर **Edit** पर क्लिक करें और सेट करें कि ग्राहकों को क्या दिखाई दे: | फ़ील्ड | उदाहरण मान | |---|---| | ग्राहकों के लिए प्रदर्शित नाम | `Ubuntu 24.04 LTS` | | OS परिवार | `ubuntu` (आइकन और डिफ़ॉल्ट उपयोगकर्ता) | | संस्करण | `24.04` | | लॉगिन यूज़रनेम | `ubuntu` (Windows: `Administrator`; अन्य: `root`) | | आइकन | इमेज URL, पाथ या नाम | | क्रम (Order) | `10` | | सक्रिय (Active) | चालू (On) | | vCPU/RAM हॉट-प्लग (लाइव स्केल) | **Auto by name (v6 or later)**, **Yes** या **No (needs a restart)** | ![ग्राहक-सामने वाले नाम, OS परिवार, लॉगिन उपयोगकर्ता और हॉट-प्लग विकल्प के साथ एडिट टेम्पलेट डायलॉग](https://nexcmp.com/hi/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. पंक्ति `vN` (6 या अधिक N के साथ) नाम वाले बिल्ड के लिए **ready** और **CPU hot-plug: supported** दिखाती है। 2. टेम्पलेट से एक परीक्षण VM तैनात करें और VM के भीतर जाँच करें: - आप पोर्टल में दिखाए गए पासवर्ड से लॉग इन कर सकते हैं; - `df -h /` प्लान का डिस्क आकार दिखाता है; - लाइव स्केल के बाद (बिना रीबूट के **Change plan**), `nproc` और `free -m` बढ़ते हैं; - `swapon --show` `/swapfile` को सूचीबद्ध करता है (स्वैप प्लस 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 तैनात करें। - पहली बूट से पहले `touch /etc/cmp-agent.disabled` के साथ एक VM पर एजेंट छोड़ें। इसे बाद में `systemctl disable --now cmp-agent cmp-agent-install; rm -rf /etc/cmp-agent /usr/local/bin/cmp-agent` से हटाएं, फिर प्रशासनिक कंसोल में एजेंट को हटाएं। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | `virt-customize` पैकेज डाउनलोड करने में विफल रहता है | बिल्ड मशीन में कोई आउटबाउंड नेटवर्क नहीं है | उस मशीन पर DNS या प्रॉक्सी ठीक करें, या ऐसे बेस इमेज पर `--offline` के साथ बिल्ड करें जिसमें पैकेज पहले से मौजूद हों। | | `libguestfs: error: /usr/bin/supermin exited with error status 1` | होस्ट कर्नल वर्तमान उपयोगकर्ता (Ubuntu) द्वारा पठनीय नहीं है | `sudo chmod +r /boot/vmlinuz*`, या रूट के रूप में बिल्ड चलाएं। | | चेकसम भिन्न है, या वेंडर इमेज अब मौजूद नहीं है | वेंडर अपनी "latest" फ़ाइलें स्थानांतरित करते हैं | स्वयं इमेज डाउनलोड करें, वेंडर के चेकसम फ़ाइल के मुकाबले इसकी जाँच करें और इसे `--base` के साथ पास करें। | | Rocky: नया XFS माउंट नहीं किया जा सकता | होस्ट कर्नल बहुत पुराना है | हाल के कर्नल वाली मशीन पर बिल्ड करें। | | `--version must be v6 or higher` | नाम `vN` होना चाहिए जिसमें N, 6 या अधिक हो | `--version v7` का उपयोग करें। | | `--panel-url must be a plain https:// URL` | एजेंट डाउनलोड किया जाता है और रूट के रूप में चलाया जाता है, इसलिए सादा HTTP अस्वीकार कर दिया जाता है | बिना स्पेस, कोट्स या क्वेरी स्ट्रिंग के `https://` URL का उपयोग करें। | | टेम्पलेट **not ready** रहता है | CloudStack ने डाउनलोड करना समाप्त नहीं किया है | **Download Complete** की प्रतीक्षा करें, जाँच करें कि द्वितीयक स्टोरेज VM URL तक पहुँच सकता है या नहीं। | | पंक्ति **no-pass** दिखाती है | टेम्पलेट को `passwordenabled=true` के बिना पंजीकृत किया गया था | उस फ़्लैग के साथ इसे फिर से पंजीकृत करें। | | CPU हॉट-प्लग **unsupported** दिखाता है | नाम `vN` पर समाप्त नहीं होता है (6 या अधिक N) | टेम्पलेट का नाम बदलें, या यदि इमेज में udev नियम है तो Edit में **vCPU/RAM hot-plug** को **Yes** पर सेट करें। | | पहले कनेक्शन के बाद "Empty template list" | सिंक नहीं चला है | **Sync now** पर क्लिक करें (इसके लिए वर्कर का चलना आवश्यक है) या 15-मिनट के चक्र की प्रतीक्षा करें। | --- # डेडिकेटेड सर्वर (बेयर मेटल) {#dedicated-servers-bare-metal} > **एडमिन में कहाँ:** Infrastructure › Bare Metal (Servers `/infra/baremetal`, IP Pools, Stock / iDRAC import, Operations, Templates, Customer ISOs, Safety)। प्लान और सब्सक्रिप्शन: Services › Dedicated Server (`/dedicated`)। System › Admin › License & updates (`/license`) के अंतर्गत मॉड्यूल चालू करें। ## यह क्या करता है {#what-it-does} NexCMP भौतिक सर्वर को **सीधे iDRAC के माध्यम से**, Redfish API पर प्रबंधित करता है। ग्राहक पूरा सर्वर किराए पर लेते हैं: वे इसे चालू और बंद करते हैं, ब्राउज़र कंसोल खोलते हैं, ISO माउंट करते हैं या टेम्पलेट से ऑपरेटिंग सिस्टम इंस्टॉल करवाते हैं, और हार्डवेयर तथा मेट्रिक्स देखते हैं। वे कभी भी iDRAC का पता, यूज़रनेम या पासवर्ड नहीं देखते हैं। अपने खुद के रैक से डेडिकेटेड सर्वर रीसेल करने के लिए इसका उपयोग करें। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | हार्डवेयर | **iDRAC 9** और Redfish API वाले Dell सर्वर। | | प्रबंधन नेटवर्क | **यह आप प्रदान करते हैं।** पैनल सर्वर को प्रत्येक iDRAC तक **HTTPS 443** (और कंसोल के लिए iDRAC VNC पोर्ट, डिफ़ॉल्ट **5901**) पर पहुँचने में सक्षम होना चाहिए, और प्रत्येक iDRAC को नीचे दिए गए ISO वेब सर्वर तक पहुँचने में सक्षम होना चाहिए। iDRAC एड्रेस **प्राइवेट रेंज में एक IPv4 एड्रेस** (RFC 1918, /16 या उससे छोटा प्रीफ़िक्स) होना चाहिए जिसे आप सेटिंग `dedicated_bmc_cidrs` में दर्ज करते हैं। DNS नाम और IPv6 अस्वीकार कर दिए जाते हैं। NexCMP इस नेटवर्क को नहीं बनाता है और आपके लिए इसका परीक्षण नहीं कर सकता है। | | iDRAC खाता | प्रत्येक iDRAC पर **Administrator** विशेषाधिकार वाला एक खाता। NexCMP इसका उपयोग सर्वर को रीड करने और उन सीमित कमांड्स को भेजने के लिए करता है जिनकी वह अनुमति देता है (पावर, वर्चुअल मीडिया, वन-टाइम बूट, कंसोल)। यह आपके ग्राहकों के लिए कभी भी iDRAC खाते नहीं बनाता है। | | पैनल सर्वर पर टूल्स | `xorriso` और `genisoimage` (प्रत्येक सर्वर का इंस्टाल ISO बिल्ड करते हैं) और `novnc` (ब्राउज़र कंसोल पेज)। इन्हें `sudo apt-get install -y xorriso genisoimage novnc` से इंस्टॉल करें, या इंस्टॉलर को ऐसा करने दें: इसे `--baremetal` के साथ चलाएं, या इसे ISO सर्वर विकल्प दें; जब Bare Metal मॉड्यूल पहले से चालू होता है, तो अपडेट भी इन्हें इंस्टॉल कर देता है। यदि कोई अनुपलब्ध है, तो **Safety** इसे लाल सूचना में दिखाता है, **live ops** चालू होने से मना कर देता है (त्रुटि `tools_missing`), और कंसोल व OS इंस्टाल बाद में विफल होने के बजाय यह उत्तर देते हैं कि टूल अनुपलब्ध है। | | ISO वेब सर्वर | मैनेजमेंट नेटवर्क पर एक साधारण **HTTP** सर्वर जो iDRACs को NexCMP ISO फ़ोल्डर सर्व करता है। इसका एड्रेस एक प्राइवेट IPv4 एड्रेस और एक वैकल्पिक पोर्ट है, उदाहरण के लिए `http://10.20.0.2:8080`, **बिना किसी पाथ के**, जो `dedicated_iso_base_url` में स्टोर रहता है। इसे बाइट रेंज का समर्थन करना चाहिए। यह फ़ोल्डर पैनल के वर्कर द्वारा लिखा जाता है, इसलिए वेब सर्वर सामान्यतः **पैनल सर्वर पर ही** चलता है, जो उस एड्रेस पर सुनता है जो सर्वर के पास मैनेजमेंट नेटवर्क पर है। NexCMP इसके लिए एक तैयार nginx साइट और एक वन-स्टेप कमांड प्रदान करता है (नीचे देखें)। | | ISO फ़ोल्डर | ISO फ़ाइलों के लिए एक फ़ोल्डर और उसके अंदर `pub` (जिसे iDRACs रीड करते हैं) और `server` (ग्राहक ISOs)। वन-स्टेप कमांड `/srv/nexcmp-iso` का उपयोग करता है; इसके बिना डिफ़ॉल्ट इंस्टाल के अनुसार होते हैं (सेटिंग्स `dedicated_iso_lib_dir`, `dedicated_iso_pub_dir`, `dedicated_iso_server_dir`)। NexCMP वर्कर के पास इनमें **राइट** करने की क्षमता होनी चाहिए। यह `/var/lib/nexcmp` को छोड़कर केवल-पढ़ने योग्य फ़ाइल सिस्टम के साथ चलता है, इसलिए अन्यत्र फ़ोल्डर के लिए एक systemd ड्रॉप-इन की आवश्यकता होती है (वन-स्टेप कमांड इसे इंस्टॉल करता है)। | | कॉलबैक पता | `dedicated_callback_base`, एक `https://` जिसे इंस्टॉल करने वाला सर्वर एक्सेस कर सकता है और जो आपके पैनल पर इंगित करता है। | | Storage | ISO लाइब्रेरी और ग्राहक द्वारा प्रदान किए गए ISO के लिए खाली डिस्क। | | इस पर निर्भर करता है | मॉड्यूल **Bare Metal**, एक ज़ोन, और सर्वर के IP पूल। | ::: warning नमूना मान कोई कॉन्फ़िगरेशन नहीं हैं एक नए इंस्टाल में `dedicated_bmc_cidrs`, `dedicated_iso_base_url` और `dedicated_callback_base` में नमूना मान होते हैं (एक प्राइवेट नमूना नेटवर्क और `https://example.com`)। वे आपका नेटवर्क नहीं हैं। जब तक उनमें से कोई भी अभी भी नमूना मान है, Bare Metal पेज लाल **Management network not configured** सूचना दिखाते हैं, iDRAC आयात करना अनुमति-सूची जांच में विफल रहता है, और **live ops** स्विच चालू होने से मना कर देता है (त्रुटि `config_placeholder`)। **Infrastructure › Bare Metal › Safety › Management network connection** के अंतर्गत तीनों मान सेट करें (नीचे देखें)। ::: ## बुनियादी ढांचा तैयार करें {#prepare-the-infrastructure} 1. **प्रत्येक iDRAC को एक प्रबंधन नेटवर्क पर रखें** जिसे ग्राहक एक्सेस नहीं कर सकें, और प्रत्येक को एक निश्चित प्राइवेट IPv4 पता दें। पैनल सर्वर से Redfish API की जाँच करें: ```bash curl -sk -u 'nexcmp-admin:XXXX' https://10.20.0.11/redfish/v1/Systems | head ``` 2. **NexCMP के लिए iDRAC पर एक एडमिनिस्ट्रेटर खाता बनाएँ** (iDRAC वेब UI, या `racadm`)। एक मजबूत, अद्वितीय पासवर्ड का उपयोग करें। iDRAC के अंतर्निहित खाते का पुन: उपयोग कभी न करें। 3. **iDRACs के लिए ISO फ़ोल्डर प्रकाशित करें - एक कमांड।** पैनल सर्वर पर, रूट के रूप में, उस एड्रेस के साथ जो सर्वर के पास मैनेजमेंट नेटवर्क और iDRAC नेटवर्क पर है: ```bash sudo nexcmp dedicated-setup-iso --listen 10.20.0.2:8080 --allow 10.20.0.0/24 ``` `--listen` इस सर्वर का एक एड्रेस होना चाहिए (प्राइवेट IPv4, यदि छोड़ा गया हो तो पोर्ट 8080)। `--allow` iDRAC नेटवर्क को सूचीबद्ध करता है (प्राइवेट CIDR, /16 या छोटा, 8 तक, अल्पविराम से अलग); केवल वे ही डाउनलोड कर सकते हैं, और जब वह सेटिंग अभी भी नमूना मान हो, तो कमांड उन्हें `dedicated_bmc_cidrs` के रूप में भी उपयोग करता है। `--dir /path` दूसरा ISO फ़ोल्डर चुनता है (डिफ़ॉल्ट `/srv/nexcmp-iso`)। यह कमांड: - NexCMP सर्विस यूज़र के स्वामित्व में, अंदर `pub` और `server` के साथ फ़ोल्डर बनाता है; - `nexcmp-iso` ग्रुप बनाता है और nginx यूज़र को इसमें जोड़ता है, ताकि nginx एक ISO को तब रीड कर सके जब कोई iDRAC इसे माउंट किए हो और कोई अन्य न कर सके; - nginx साइट `nexcmp-iso` (केवल तभी रखी जाती है जब `nginx -t` इसे स्वीकार करता है, अनुपलब्ध होने पर nginx इंस्टॉल किया जाता है) और एक systemd ड्रॉप-इन `nexcmp-vmd.service.d/iso.conf` (फ़ोल्डर के लिए `ReadWritePaths`, `SupplementaryGroups=nexcmp-iso`) इंस्टॉल करता है; - ISO सेटिंग्स (`dedicated_iso_base_url`, तीनों फ़ोल्डर, ग्रुप) लिखता है और NexCMP वर्कर को पुनरारंभ करता है। इसे अन्य मानों के साथ फिर से चलाया जा सकता है, और `sudo nexcmp dedicated-setup-iso --remove` nginx साइट और ड्रॉप-इन को फिर से हटा देता है (ISO फ़ाइलें बनी रहती हैं)। इसे इंस्टाल के समय भी चलाया जा सकता है: इंस्टाल कमांड में `--iso-listen`, `--iso-allow` (और `--iso-dir`) जोड़ें। यह कमांड मैनेजमेंट नेटवर्क **नहीं** बनाता है और किसी भी iDRAC से संपर्क नहीं करता है; यदि मान गलत हैं, एड्रेस इस सर्वर पर नहीं है या पोर्ट व्यस्त है, तो यह कुछ भी बदलने से पहले संदेश के साथ रुक जाता है, और जिसे `nginx -t` अस्वीकार करता है, उस nginx साइट को नहीं रखा जाता है। 4. **ISO वेब सर्वर क्या सर्व करता है।** nginx साइट `GET` (और बाइट रेंज के साथ `HEAD`) का उत्तर केवल `/pub/.iso` के लिए देती है और कुछ नहीं: कोई डायरेक्टरी लिस्टिंग नहीं, फ़ोल्डर के तहत कोई अन्य पाथ नहीं (लाइब्रेरी और `server/` तक पहुँचा नहीं जा सकता), कोई अन्य मेथड नहीं, और केवल `--allow` नेटवर्क से (अन्य किसी को भी 403 मिलता है)। NexCMP प्रत्येक ISO को, जिसे किसी iDRAC को पढ़ना होता है, `pub` में एक फ़ाइल या शॉर्ट-लिव्ड लिंक के रूप में एक्सपोज़ करता है; nginx केवल तभी किसी लिंक को फ़ॉलो करता है जब लिंक और उसके टारगेट का स्वामी एक ही हो (सर्विस यूज़र), इसलिए सिस्टम फ़ाइल के लिंक को अस्वीकार कर दिया जाता है। मैनेजमेंट नेटवर्क पर किसी अन्य होस्ट से इसकी जाँच करें: ```bash curl -I http://10.20.0.2:8080/ # 403 or 404, never a listing curl -I http://10.20.0.2:8080/pub/ # 403 or 404 ``` `pub` में मौजूद एक टेस्ट फ़ाइल को `Range` अनुरोध का उत्तर 206 के साथ देना चाहिए। *इसके बजाय इसे मैन्युअली करना:* nginx साइट और ड्रॉप-इन को रिलीज़ पैकेज में टेम्पलेट्स के रूप में शामिल किया गया है (`share/dedicated/nginx-iso.conf` और `share/dedicated/vmd-iso.conf`, जो `/opt/nexcmp/releases//` के अंतर्गत हैं)। उन्हें कॉपी करें, `__...__` मार्कर्स (listen address, फ़ोल्डर, allow लाइन्स, ग्रुप) को बदलें और ऊपर दिए गए नियमों का पालन करें। 5. **OS इमेज तैयार रखें।** लाइब्रेरी फ़ोल्डर में सेल्फ-इंस्टॉलिंग ISO रखें (नीचे **Templates** देखें)। ग्राहक किसी लिंक से भी ISO जोड़ सकते हैं; उन्हें सर्वर पर डाउनलोड किया जाता है, कभी भी iDRAC को URL के रूप में नहीं दिया जाता। ## NexCMP में कनेक्ट करें {#connect-in-nexcmp} ### 1. मॉड्यूल चालू करें {#_1-turn-the-module-on} **System › Admin › License & updates** पर, **Bare Metal** को ऑन करें। Infrastructure के अंतर्गत **Bare Metal** श्रेणी दिखाई देती है। [Modules](https://nexcmp.com/hi/docs/infrastructure/modules/) देखें। ### 2. मैनेजमेंट नेटवर्क कनेक्शन सेट करें {#_2-set-the-management-network-connection} **Infrastructure › Bare Metal › Safety** खोलें। कार्ड **Management network connection** में वे तीन मान शामिल हैं जो तय करते हैं कि कुछ भी काम कर सकता है या नहीं: | फ़ील्ड | सेटिंग | क्या दर्ज करना है | |---|---|---| | iDRAC network (CIDR) | `dedicated_bmc_cidrs` | आपके iDRACs का प्राइवेट नेटवर्क, उदाहरण के लिए `10.20.0.0/24`। केवल प्राइवेट CIDR, /16 या उससे छोटे, अधिकतम 8, कॉमा से अलग किए गए। केवल इन्हीं रेंजेस के iDRAC इम्पोर्ट किए जा सकते हैं। | | iDRACs के लिए ISO सर्वर | `dedicated_iso_base_url` | `http://[:port]`, कोई पाथ नहीं: पिछले सेक्शन के ISO वेब सर्वर का पता, उदाहरण के लिए `http://10.20.0.2:8080`। वन-स्टेप कमांड इसे आपके लिए भर देता है। | | Panel callback address | `dedicated_callback_base` | `https://`, कोई पाथ नहीं: वह पता जिस पर इंस्टॉल किया जा रहा सर्वर काम पूरा होने की रिपोर्ट करने के लिए कॉल करता है। यह उस सर्वर के नेटवर्क से सुलभ होना चाहिए। `example.com`, `localhost` और इसी तरह के पते अस्वीकार कर दिए जाते हैं। | जैसे ही आप टाइप करते हैं, फ़ॉर्म फ़ॉर्मेट की जाँच करता है और सेव करने पर सर्वर दोबारा इसकी जाँच करता है; गलत मान को कारण के साथ अस्वीकार कर दिया जाता है और पहले से सहेजा गया मान वैसा ही रहता है। जिस फ़ील्ड में अभी भी डिफ़ॉल्ट सैंपल मान मौजूद है, उस पर लाल रंग का **Not configured** लेबल दिखाई देता है, और जब तक कि तीनों मान वास्तविक न हों, तब तक प्रत्येक Bare Metal पेज पर लाल रंग की सूचना **Management network not configured** दिखाई देती है। बदलाव आपके कारण के साथ ऑडिट लॉग में दर्ज किए जाते हैं। सैंपल मान को दोबारा सेव करना तब तक कॉन्फ़िगर करना नहीं माना जाता जब तक कि आपने इसे स्वयं टाइप न किया हो। ### 3. सेफ़्टी गेट की जाँच करें (फ़िलहाल इसे बंद रहने दें) {#_3-check-the-safety-gate-leave-it-closed-for-now} **Infrastructure › Bare Metal › Safety** खोलें। **Live ops** किसी iDRAC पर प्रत्येक राइट कमांड (power, virtual media, console और OS install) के लिए सिस्टम-व्यापी स्विच है। यह **off** से शुरू होता है, और इसे तब तक चालू नहीं किया जा सकता जब तक ऊपर दिया गया management network connection सैंपल मान रखता है (स्विच `config_placeholder` का जवाब देता है और फ़ील्ड्स के नाम बताता है)। API पर और फिर वर्कर के अंदर राइट्स अस्वीकार कर दिए जाते हैं, जबकि स्टेटस पढ़ना काम करता रहता है। एक दूसरा लॉक, **ops_locked**, प्रत्येक सर्वर की सुरक्षा करता है: नए इंपोर्ट किए गए सर्वर हमेशा लॉक रहते हैं, भले ही live ops चालू हो। ![Live ops बंद होने और ब्लॉक की गई कार्रवाइयों की सूची के साथ Safety पेज](https://nexcmp.com/hi/docs/images/infrastructure/dedicated-01-safety.webp) ### 4. सर्वर इम्पोर्ट करें {#_4-import-servers} 1. **Infrastructure › Bare Metal › Stock / iDRAC import** खोलें। 2. **Add one server** के अंतर्गत iDRAC पता, खाता और पासवर्ड दर्ज करें, फिर **Test connection** पर क्लिक करें। टेस्ट केवल रीड कमांड भेजता है और कुछ भी सहेजता नहीं है। | फ़ील्ड | उदाहरण मान | |---|---| | iDRAC पता (URL या होस्ट) | `10.20.0.11` | | खाता | `nexcmp-admin` | | पासवर्ड | `XXXX` | | लेबल | `rack1-01` (empty: generated) | | पूल से IP असाइन करें | वैकल्पिक; सर्वर का सर्विस IP पूल चुनें | | बिक्री सूची में शामिल करें | तैयार होने तक बंद | ![एक उदाहरण पते और सफल रीड-केवल टेस्ट के साथ स्टॉक और iDRAC आयात](https://nexcmp.com/hi/docs/images/infrastructure/dedicated-02-import-server.webp) 3. **Save to stock** पर क्लिक करें। NexCMP iDRAC से मॉडल, CPU, RAM, डिस्क, NIC और सर्विस टैग पढ़ता है। सर्वर **locked** स्टॉक में प्रवेश करता है। 4. कई सर्वरों के लिए **Bulk import** का उपयोग करें: प्रति लाइन एक सर्वर, अल्पविराम, अर्धविराम या टैब द्वारा अलग किए गए फ़ील्ड। **Preview** अनुमति-सूची, iDRAC पते या सर्विस टैग के डुप्लिकेट की जाँच करता है, और हार्डवेयर पढ़ता है (एक बार में अधिकतम चार सर्वर)। ### 5. कस्टमर ISO और ISO वेब पता {#_5-customer-isos-and-the-iso-web-address} **Infrastructure › Bare Metal › Customer ISOs** खोलें। - **HTTP address serving ISOs to iDRAC** का मान `dedicated_iso_base_url` है, वही मान जो Safety कार्ड में है (किसी भी स्थान पर संपादन योग्य)। अपने ISO वेब सर्वर का मैनेजमेंट-नेटवर्क पता दर्ज करें। - **Customer ISO limits** एक ISO का आकार, कुल ISO स्टोरेज, न्यूनतम खाली स्थान, ISO कितने समय तक रखे जाते हैं (घंटे), अधिकतम डाउनलोड समय और समवर्ती डाउनलोड की संख्या निर्धारित करते हैं। ![iDRAC के लिए HTTP पते और ISO सीमाओं के साथ Customer ISOs](https://nexcmp.com/hi/docs/images/infrastructure/dedicated-03-iso-settings.webp) ### 6. OS टेम्प्लेट {#_6-os-templates} **Infrastructure › Bare Metal › Templates** खोलें। यह लाइब्रेरी फ़ोल्डर में मिले सेल्फ-इंस्टॉलिंग ISO को सूचीबद्ध करता है। OS family, version और account (फ़ाइल नाम से पहले से भरे हुए) भरने के लिए किसी फ़ाइल पर **Register** पर क्लिक करें, फिर टेम्पलेट को **Enable** पर स्विच करें। टेम्पलेट सक्षम करने से कुछ भी शुरू नहीं होता है: प्रत्येक इंस्टाल अभी भी सेफ्टी गेट से होकर गुजरता है। **Unregister** केवल टेम्पलेट पंक्ति को हटाता है, फ़ाइल को कभी नहीं। ![पंजीकृत और अपंजीकृत ISO के साथ Bare Metal Templates](https://nexcmp.com/hi/docs/images/infrastructure/dedicated-04-os-templates.webp) ### 7. IP पूल {#_7-ip-pools} **Infrastructure › Bare Metal › IP Pools** खोलें और उन IPv4 श्रेणियों को जोड़ें जिन्हें सर्वर सर्विस पते के रूप में प्राप्त करते हैं। प्रत्येक सर्वर को एक पता मिलता है; आयात पर **Assign an IP from a pool** अगली खाली प्रविष्टि लेता है। खाली पतों की गिनती प्रति पूल की जाती है। ![उदाहरण श्रेणियों और खाली गिनती के साथ Bare Metal IP Pools](https://nexcmp.com/hi/docs/images/infrastructure/dedicated-05-ip-pools.webp) ### 8. प्लान और बिक्री {#_8-plans-and-sale} 1. **Services › Dedicated Server › Plans & pricing** खोलें। चार सैंपल प्लान (1.6.1 में `BM-40C-` नाम वाले) को एडिट करें या अपने स्वयं के प्लान बनाएं: मूल्य, चक्र और सेटअप शुल्क। **नए इंस्टॉलेशन पर कीमतें सेंट तक, अमेरिकी डॉलर में दर्ज की जाती हैं, और वॉलेट से बिल्कुल वही शुल्क लिया जाता है: किसी विनिमय दर की आवश्यकता नहीं होती है।** ऐसा इंस्टॉलेशन जिसमें पहले से ही वियतनामी डोंग में प्लान मूल्य निर्धारित थे, वह डोंग को बनाए रखता है और उसे अभी भी अपनी सेटिंग्स में विनिमय दर की आवश्यकता होती है (इसके बिना, ऑर्डर `dedicated_fx_unavailable` के साथ अस्वीकार कर दिए जाते हैं)। सैंपल प्लान 0 की कीमत और **disabled** स्थिति के साथ शुरू होते हैं: बिक्री पर उपलब्ध प्लान के लिए कीमत 0 से अधिक होनी चाहिए। वास्तव में आयात किए जाने वाले हार्डवेयर के अनुसार प्रत्येक प्लान की जांच करें; सैंपल प्लान का नाम सर्वर के हार्डवेयर का पता नहीं लगाता या उसे बदलता नहीं है। 2. सर्वर खोलें (Infrastructure › Bare Metal › the server › **Sales**), **plan attach करें** और **Sellable** को ऑन करें। 3. **live ops** चालू करें (सेफ्टी पेज पर, टाइप्ड पुष्टि के साथ) और उन सर्वरों को अनलॉक करें जिन्हें आप संचालित करना चाहते हैं (सर्वर का **Lock** टैब, एक कारण के साथ जो ऑडिट लॉग में जाता है)। 4. **Services › Dedicated Server** पर, सेल्स को ऑन करें। इसमें दो चरण लगते हैं: परिणामों को पढ़ें, फिर `ENABLE SALES` टाइप करें। तब तक ग्राहक कोई ऑर्डर पेज नहीं देखते हैं और उनसे शुल्क नहीं लिया जाता है। ![सेल्स स्विच बंद वाले Dedicated Server प्लान](https://nexcmp.com/hi/docs/images/infrastructure/dedicated-06-plans.webp) ### ग्राहक अपने सर्वर पेज पर क्या कर सकते हैं {#what-customers-can-do-on-their-server-page} ग्राहक के सर्वर पेज पर सात समूहों (Overview, Control, Network, Hardware, Billing, Activity, Settings) में सोलह टैब होते हैं। **Billing** समूह में शामिल हैं: - **Plan & renewal**: एक ही चरण में 1 से 24 महीने आगे तक का भुगतान करें; नई तिथि की गणना वर्तमान नवीनीकरण तिथि से की जाती है और वॉलेट से एक बार शुल्क लिया जाता है। Auto-renew को चालू या बंद किया जा सकता है। - **Billing cycle**: कोई अन्य चक्र चुनें (उदाहरण के लिए त्रैमासिक); यह **अगले** नवीनीकरण से लागू होता है, और अभी कुछ भी चार्ज या रिफंड नहीं किया जाता है। - **Change plan**: ग्राहक किसी अन्य प्लान का **अनुरोध** कर सकता है। इस अनुरोध पर कोई शुल्क नहीं लिया जाता है। हार्डवेयर अपग्रेड करने या सर्वर को स्थानांतरित करने के बाद, आप इसे **Services › Dedicated Server › Plan changes** के अंतर्गत स्वीकृत या अस्वीकृत करते हैं। स्वीकृत अपग्रेड के लिए ग्राहक द्वारा पहले से भुगतान की गई शेष अवधि का अंतर शुल्क लिया जाता है; डाउनग्रेड पर कोई रिफंड नहीं मिलता और यह अगली अवधि से लागू होता है। - **Invoices**: उस सर्वर का प्रत्येक इनवॉइस (ऑर्डर, नवीनीकरण, अपग्रेड)। **Plan changes** पर, अनुरोधों को ID, दिनांक, स्थिति, प्लान या सर्वर के अनुसार सॉर्ट करें; सॉर्टिंग सर्वर पर मौजूद पूरे परिणाम पर लागू होती है। संकीर्ण स्क्रीन पर क्षैतिज रूप से स्क्रॉल करते समय भी एक्शन कॉलम दिखाई देता रहता है। **Overview** के शीर्ष पर चार लाइव टाइलें पिछले 24 घंटों के एक छोटे चार्ट के साथ **CPU**, **RAM**, **Disk** और **Network** दिखाती हैं। CPU, RAM और Disk अंतिम iDRAC पोल से उपयोग प्रतिशत हैं (Disk I/O गतिविधि है, खाली स्पेस नहीं); Network वर्तमान इनबाउंड और आउटबाउंड स्पीड के साथ ट्रैफ़िक काउंटर से लिया गया महीने का कुल योग है। जब सर्वर बंद होता है, iDRAC तक पहुँचा नहीं जा सकता, या मशीन उस मान की रिपोर्ट नहीं करती, तो टाइल **—** और एक संक्षिप्त कारण दिखाती है; यह कभी भी बनावटी 0 नहीं दिखाती। ये रीडिंग Dell iDRAC से आती हैं, और ट्रैफ़िक काउंटर के बिना Network टाइल **—** पर ही रहती है। पेज खुले रहने पर टाइलें हर मिनट रीफ़्रेश होती हैं, और क्लिक करने पर **Hardware** या **Bandwidth** टैब खुलता है। **Overview** पर **Access** कार्ड आपके द्वारा इंस्टॉल किए गए ऑपरेटिंग सिस्टम का उपयोगकर्ता नाम और पासवर्ड दिखाता है, जो डिफ़ॉल्ट रूप से छिपा रहता है और इसके साथ **Show** और **Copy** बटन होते हैं। यह केवल एक बार नहीं, बल्कि प्रत्येक इंस्टॉलेशन के बाद उपलब्ध होता है, और सर्वर का नया स्वामी कभी भी पिछले स्वामी का पासवर्ड नहीं देख पाता। यदि सर्वर के अंदर OS पासवर्ड बदला जाता है, तो भी कार्ड इंस्टॉल के समय सेट किया गया पासवर्ड ही दिखाता है। **Bandwidth** टैब केवल तभी दिखाई देता है जब कोई ट्रैफ़िक काउंटर इसे डेटा फ़ीड करता है (Limits देखें)। कोई **Subnet** टैब नहीं है: किराए के सर्वर पर अपना स्वयं का IP प्रीफ़िक्स लाना NexCMP का हिस्सा नहीं है। ### ग्राहक क्या कर सकते हैं और क्या नहीं कर सकते {#what-customers-can-and-cannot-do} | ग्राहक कर सकते हैं | कभी संभव नहीं | |---|---| | इन्वेंट्री, हेल्थ, पावर स्टेट और मेट्रिक्स देखें | iDRAC पता, यूजर नाम या पासवर्ड देखें | | पावर ऑन, ग्रेसफुल शटडाउन, रीस्टार्ट, फोर्स ऑफ, रीसेट | iDRAC खाते या iDRAC नेटवर्क सेटिंग्स बदलें | | ब्राउज़र कंसोल खोलें (एक समय में एक सत्र) | BIOS या RAID बदलें, लॉग साफ़ करें, फ़र्मवेयर अपडेट करें, iDRAC रीसेट करें | | ISO या अपना खुद का ISO लिंक माउंट करें, बूट वंस सेट करें, सक्षम टेम्पलेट से OS को रीइंस्टॉल करें | रॉ Redfish कॉल चलाएं (NexCMP में ये फ़ंक्शन मौजूद नहीं हैं) | NexCMP ग्राहकों के लिए iDRAC खाते नहीं बनाता है: वे केवल पोर्टल के नियंत्रणों का उपयोग करते हैं, और उन्हें iDRAC पता और लॉगिन कभी नहीं दिखाया जाता है। ## सत्यापित करें {#verify} 0. **Safety** पर, **Management network connection** कार्ड कोई लाल लेबल नहीं दिखाता है और Bare Metal पृष्ठ कोई लाल नोटिस नहीं दिखाते हैं। प्रबंधन नेटवर्क के किसी होस्ट से, `curl -I http:///` फ़ाइलें सूचीबद्ध नहीं करता है। 1. import फॉर्म पर **Test connection** मॉडल, CPU, RAM और सर्विस टैग लौटाता है। 2. सर्वर अपने हार्डवेयर के साथ **Servers** में दिखाई देता है। **live ops off** होने पर, "Server control is temporarily disabled system-wide" संदेश के साथ पावर एक्शन अस्वीकार कर दिया जाता है। 3. लाइव ऑप्स चालू करने और एक टेस्ट सर्वर को अनलॉक करने के बाद, **Operations** या सर्वर पेज से सर्वर को पावर ऑफ और ऑन करें, और कंसोल खोलें। 4. एक टेस्ट प्लान के साथ टेस्ट ऑर्डर दें: सर्वर असाइन किया जाता है, OS इंस्टॉल होता है, और इंस्टॉल पैनल पर रिपोर्ट करने वाले सर्वर के साथ समाप्त होता है। ## सीमाएँ और नोट्स {#limits-and-notes} - प्रत्येक भौतिक सर्वर पर अधिकतम एक लाइव सब्सक्रिप्शन होता है। - राइट कमांड केवल तब भेजा जाता है जब **दोनों** लाइव ऑप्स चालू हों **और** सर्वर का लॉक खुला हो। प्रत्येक कमांड से ठीक पहले वर्कर के भीतर चेक को दोहराया जाता है। - ऑर्डर पूरा होने से पहले **Installing** स्थिति अपने पोर्ट (SSH 22, Windows 3389, Proxmox 8006) पर नए OS के उत्तर देने की प्रतीक्षा करती है; एक इंस्टॉल की समय सीमा होती है (`dedicated_install_timeout_min`, डिफ़ॉल्ट 150 मिनट)। - Dedicated servers के लिए बैंडविड्थ की गणना एक ट्रैफ़िक-काउंटर एजेंट से की जाती है जो मानक इंस्टॉलेशन का हिस्सा नहीं है। इसके बिना कुछ भी रिकॉर्ड नहीं होता है, पोर्टल Bandwidth टैब को छिपा देता है और API `capabilities.bandwidth` को `false` के रूप में रिपोर्ट करता है। - रेंटल पर एडमिन कार्रवाइयां (lock, unlock, रिफंड के साथ या बिना रिफंड के cancel) अन्य सभी सेवाओं की तरह ही एकीकृत कार्रवाइयां हैं, जिनमें रिफंड उसी बैलेंस में वापस किया जाता है जिससे भुगतान किया गया था। - सर्वर रीसेलर्स के बीच रीसेल नहीं किए जाते हैं: Dedicated केवल मुख्य साइट से बेचा जाता है। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | पता त्रुटि के साथ टेस्ट विफल हो जाता है | पता `dedicated_bmc_cidrs` में कोई IPv4 लिटरल नहीं है (प्राइवेट, /16 या छोटा) या पोर्ट की अनुमति नहीं है | iDRAC के IPv4 पते का उपयोग करें और इसके नेटवर्क को Safety › Management network connection (`dedicated_bmc_cidrs`) के अंतर्गत जोड़ें। DNS नाम और IPv6 अस्वीकार कर दिए जाते हैं। | | लाल नोटिस "Management network not configured", या live ops स्विच `config_placeholder` प्रतिक्रिया देता है | `dedicated_bmc_cidrs`, `dedicated_iso_base_url`, `dedicated_callback_base` में से किसी एक में अभी भी डिफ़ॉल्ट सैंपल मान मौजूद है | Safety › Management network connection के अंतर्गत वास्तविक मान दर्ज करें। | | सेव करते समय कोई फ़ील्ड अस्वीकृत हो जाता है | गलत प्रारूप (CIDR निजी नहीं है या /16 से विस्तृत है, ISO पता `http://[:port]` नहीं है, कॉलबैक `https://` नहीं है), या `example.com` जैसा कोई सैंपल पता | फ़ील्ड के नीचे दिया गया संदेश पढ़ें; संग्रहीत मान अपरिवर्तित रहता है। | | कुछ भी बदलने से पहले `nexcmp dedicated-setup-iso` रुक जाता है | `--listen` इस सर्वर का पता नहीं है, पोर्ट पहले से उपयोग में है, या कोई मान मान्य नहीं है | प्रबंधन नेटवर्क पर इस सर्वर के पते का उपयोग करें, कोई अन्य पोर्ट चुनें, या संदेश में बताए गए मान को सही करें। | | "iDRAC TLS प्रमाणपत्र पिन किए गए प्रमाणपत्र से भिन्न है - पोलिंग और राइट एक्शन बंद हो गए हैं" | iDRAC प्रमाणपत्र बदल दिया गया था (नया प्रमाणपत्र, बदला हुआ iDRAC) | सर्वर खोलें, टैब **Access** पर जाएं, दोनों फ़िंगरप्रिंट की तुलना करें और, यदि बदलाव इरादे के अनुसार है, तो **Repin certificate** पर क्लिक करें। | | "सॉरी नियंत्रण को सिस्टम-वाइड रूप से अस्थायी रूप से अक्षम कर दिया गया है" | लाइव ऑप्स बंद है | इसे **Safety** में चालू करें। | | "यह सर्वर संचालन के लिए लॉक है" | प्रति-सर्वर लॉक बंद है | कारण के साथ सर्वर के **Lock** टैब में लॉक खोलें। | | "इस सर्वर पर एक अन्य ऑपरेशन अभी भी चल रहा है" | पिछला ऑपरेशन समाप्त नहीं हुआ है | प्रतीक्षा करें; **Operations** की जाँच करें। | | "इस सर्वर पर पहले से ही एक अन्य कंसोल सत्र खुला है" | एक समय में एक कंसोल | दूसरा सत्र बंद करें। | | "सर्वर का नियंत्रक अस्थायी रूप से अनुपलब्ध है" | iDRAC उत्तर नहीं दे रहा है | प्रबंधन नेटवर्क और iDRAC की जाँच करें। | | iDRAC से 403 या 404 के साथ एक ISO माउंट विफल हो जाता है | वेब सर्वर फ़ाइल को पढ़ नहीं सकता या आधार पता गलत है | ISO वेब सर्वर की अनुमतियों और iDRAC को ISO परोसने वाले **HTTP address serving ISOs to iDRAC** की जाँच करें। | | "चयनित स्थान पर यह प्लान स्टॉक में नहीं है" | इस ज़ोन में उस प्लान के साथ कोई बेचने योग्य सर्वर नहीं है | प्लान को किसी सर्वर से जोड़ें और **Sellable** चालू करें। | | "अभी असाइन करने के लिए कोई IPv4 पता उपलब्ध नहीं है" | IP पूल खाली है | पूल में पते जोड़ें। | | "स्वचालित OS इंस्टालेशन अभी उपलब्ध नहीं है" | इंस्टॉल पूर्वापेक्षाएँ गायब हैं | जाँच करें कि कोई टेम्पलेट सक्षम है और ISO फ़ोल्डर लिखने योग्य हैं; ग्राहक अभी भी ISO और कंसोल के माध्यम से इंस्टॉल कर सकते हैं। | | इंस्टालेशन रुक जाती है | इंस्टॉल करने वाला सर्वर कॉलबैक पते तक नहीं पहुँच सकता | `dedicated_callback_base` की जाँच करें और सुनिश्चित करें कि सर्वर का नेटवर्क HTTPS पर आपके पैनल तक पहुँच सकता है। | --- # VPN और IPv6 प्रॉक्सी नोड्स {#vpn-and-ipv6-proxy-nodes} > **प्रशासन में कहाँ:** Infrastructure › VPN & Proxy nodes › Agents & external nodes (`/agents`), VPN IP pools (`/vpn/pool`), IPv6 Proxy nodes (`/vpn/proxy6/nodes`)। सेवाएँ स्वयं Services › VPN और Services › IPv6 Proxy के अंतर्गत हैं। दोनों मॉड्यूल System › Admin › License & updates में चालू किए जाते हैं। ## यह क्या करता है {#what-it-does} NexCMP **आपके स्वामित्व वाले IP पतों** से बाहर निकलने वाले VPN और प्रॉक्सी एक्सेस को बेचता है, उन सर्वरों पर जिन्हें आप संचालित करते हैं। दो प्रकार के नोड मौजूद हैं: - **VPN node.** एक छोटा Go प्रोग्राम, `cmp-agent`, आपके Linux होस्ट पर चलता है। यह होस्ट पर सार्वजनिक IPv4 पतों का पता लगाता है, बेचे जाने वाले प्रत्येक पते पर एक SOCKS5, एक HTTP और एक UDP लिसनर खोलता है, और ग्राहक द्वारा कनेक्ट किए गए **समान IP** (समान-IP इग्रेस) से ट्रैफ़िक बाहर भेजता है। यह हर कुछ सेकंड में पैनल को रिपोर्ट करता है। - **IPv6 proxy node.** एक प्रॉक्सी सेवा जो ग्राहकों को आपके द्वारा होस्ट पर रूट किए जाने वाले IPv6 प्रिफ़िक्स से पते देती है। पैनल SSH के माध्यम से आपके लिए इसे इंस्टॉल करता है। उन देशों में साफ़ IP पते दोबारा बेचने के लिए इनका उपयोग करें जहाँ आपके सर्वर हैं। ## आवश्यकताएं {#requirements} ### VPN नोड {#vpn-node} | आइटम | आवश्यकता | |---|---| | ऑपरेटिंग सिस्टम | systemd और 4.15 या नए के कर्नेल (IPv6 फ़्री-बाइंड समर्थन) के साथ एक Linux वितरण। भेजा गया एजेंट बाइनरी केवल **x86_64** (amd64) है। | | अनुमतियाँ | इंस्टाल के लिए root। सेवा केवल `CAP_NET_ADMIN`, `CAP_NET_RAW` और `CAP_DAC_READ_SEARCH` रखती है। | | टूल्स | `curl` या `wget`, और `sha256sum` (इंस्टॉलर फ़ाइल की जाँच किए बिना आगे बढ़ने से मना कर देता है)। | | पब्लिक एड्रेस | होस्ट के इंटरफ़ेस पर असाइन किए गए पब्लिक IPv4 एड्रेस (प्रत्येक के लिए एक `/32`), **या** होस्ट पर रूट किया गया एक प्रीफ़िक्स जिसे आप एक अतिरिक्त सबनेट के रूप में जोड़ते हैं (IPv4 /16 से /32, IPv6 /48 से /128)। प्राइवेट, CGNAT और डॉक्यूमेंटेशन रेंज को अनदेखा किया जाता है। | | नेटवर्क, इनबाउंड | ग्राहक बेचे गए प्रत्येक पब्लिक IP से **ports 65001-65535** पर कनेक्ट होते हैं (SOCKS5 और HTTP के लिए TCP, UDP सहयोगी के लिए UDP)। प्रत्येक एंडपॉइंट लगातार तीन पोर्ट के सेट का उपयोग करता है। | | नेटवर्क, आउटबाउंड | आपके पैनल के डोमेन पर HTTPS (443)। एजेंट 3.5-सेकंड की सीमा के साथ `ip-api.com` (HTTP) और `ipinfo.io` (HTTPS) पर अपना देश भी देखता है। | | मेल | पोर्ट 25 पर आउटबाउंड कनेक्शन हमेशा ब्लॉक रहते हैं; इसे खोलने के लिए कोई सेटिंग नहीं है। | | Docker, VPN और वर्चुअल इंटरफ़ेस | `docker*`, `veth*`, `br-*`, `cni*`, `flannel*`, `virbr*`, `cali*`, `tun*`, `tap*`, `wg*` और `tailscale*` नाम वाले इंटरफ़ेस एड्रेस का योगदान नहीं देते हैं। | | इस पर निर्भर करता है | मॉड्यूल **VPN**, एक ज़ोन (होस्ट के देश से स्वचालित रूप से बनाया गया) और HTTPS पर उपलब्ध NexCMP पैनल। | ### IPv6 प्रॉक्सी नोड {#ipv6-proxy-node} | आइटम | आवश्यकता | |---|---| | ऑपरेटिंग सिस्टम | **x86_64** पर systemd के साथ Linux। कमांड `systemctl`, `nft`, `ip`, `ss`, `sysctl` और `useradd` मौजूद होने चाहिए; अन्यथा इंस्टॉलेशन रुक जाता है और गायब कमांड का नाम बताता है। | | इंस्टॉल के लिए एक्सेस | एक पब्लिक IPv4 एड्रेस (प्राइवेट, लूपबैक और CGNAT एड्रेस अस्वीकार किए जाते हैं), SSH पोर्ट, रूट या `sudo` अधिकारों वाला एक खाता और उसका **पासवर्ड**। पासवर्ड का उपयोग केवल इंस्टॉल के लिए किया जाता है और इसे सहेजा नहीं जाता है। | | मुफ़्त पोर्ट | **80, 443 और 60000 से ऊपर का प्रत्येक पोर्ट** मुफ़्त होना चाहिए। इंस्टॉलर पहले से चल रही सेवाओं को कभी रोकता या बदलता नहीं है; यह व्यस्त पोर्ट की रिपोर्ट करता है और रुक जाता है। | | IPv6 | `2000::/3` के भीतर **/32 और /64** के बीच एक पब्लिक प्रीफ़िक्स जिसे होस्ट आउटबाउंड ट्रैफ़िक के लिए स्रोत के रूप में उपयोग कर सकता है, जिसे या तो होस्ट पर **रूटेड** रूप से डिलीवर किया जाता है या NDP प्रॉक्सी के साथ **on-link** डिलीवर किया जाता है (नीचे देखें)। | | नेटवर्क | ग्राहक पोर्ट 80 (HTTP proxy), पोर्ट 443 (SOCKS5) और पोर्ट 60001-65535 (प्रत्येक स्टैटिक IP के लिए एक पोर्ट) पर नोड के IPv4 से कनेक्ट होते हैं। नोड के पास कोई प्रमाणपत्र नहीं होता, इसलिए कोई HTTPS proxy नहीं है। ट्रैफ़िक केवल IPv6 के माध्यम से बाहर जाता है, और केवल उन गंतव्यों तक जाता है जिनके पास IPv6 पता है। नोड HTTPS के माध्यम से पैनल से अपना कॉन्फ़िगरेशन प्राप्त करता है। | | पैनल सर्वर पर नोड सॉफ़्टवेयर | नोड डीमन और उसकी नेटवर्क स्क्रिप्ट NexCMP रिलीज़ पैकेज में शामिल होती हैं। पैनल इंस्टॉलेशन के दौरान उन्हें अपने इंस्टॉल फ़ोल्डर (`/opt/nexcmp/releases//bin`, या कस्टम बिल्ड पर `/opt/nexcmp/bin`) से प्रत्येक नोड पर कॉपी करता है। पैनल सर्वर को `sshpass` और एक SSH क्लाइंट की भी आवश्यकता होती है; इंस्टॉलर `sshpass` जोड़ता है, और 1.4.2 से पहले इंस्टॉल किए गए सर्वर पर आप इसे `sudo apt-get install -y sshpass` से जोड़ते हैं। | | इस पर निर्भर करता है | मॉड्यूल **IPv6 Proxy**, और पैनल URL जिस पर नोड्स वापस कॉल करते हैं (**IPv6 Proxy › Settings › Panel URL for nodes**, डिफ़ॉल्ट `https://`)। | ## बुनियादी ढांचा तैयार करें {#prepare-the-infrastructure} ### VPN नोड {#vpn-node-1} 1. **होस्ट को प्रोविजन करें** समर्थিত Linux और उन पब्लिक IPv4 एड्रेस के साथ जिन्हें आप बेचना चाहते हैं, जिन्हें या तो नेटवर्क इंटरफ़ेस पर कॉन्फ़िगर किया गया है या होस्ट पर रूट किया गया है। 2. **यदि आप रूट किया गया ब्लॉक बेचते हैं**, तो नोड जोड़ते समय इसे **Extra subnet** के रूप में दर्ज करने की योजना बनाएं। एजेंट रूट `local dev lo` इंस्टॉल करता है ताकि होस्ट ब्लॉक के प्रत्येक पते के लिए ट्रैफ़िक स्वीकार करे, और फिर उसे मिलने वाले पतों की रिपोर्ट करता है। एजेंट होस्ट की वास्तविक रूटिंग टेबल को भी पढ़ता है और कभी भी **गेटवे** पते को बेचता या कैप्चर नहीं करता: यदि ब्लॉक में होस्ट के रूट्स में से किसी एक का नेक्स्ट-हॉप शामिल है (उदाहरण के लिए ऑन-लिंक ब्लॉक का राउटर पता), तो एजेंट केवल उसके आस-पास के ब्लॉक के हिस्सों के लिए `local` रूट्स इंस्टॉल करता है, पैनल को गेटवे की रिपोर्ट करता है, और पैनल उस पते को पूल तथा प्रत्येक आवंटन से बाहर रखता है। जब अतिरिक्त सबनेट बदलता है या एजेंट बंद हो जाता है, तो यह अपने द्वारा इंस्टॉल किए गए रूट्स को हटा देता है। 3. **फ़ायरवॉल खोलें।** पब्लिक एड्रेस पर इनबाउंड TCP और UDP **65001-65535**, और पैनल पर आउटबाउंड HTTPS की अनुमति दें। 4. **वैकल्पिक: प्रति-IP बाइट काउंटर।** Conntrack अकाउंटिंग (`net.netfilter.nf_conntrack_acct = 1`) मॉनिटरिंग रोल को प्रति IP बाइट्स गिनने की अनुमति देती है। पैनल एजेंट को `acct` कमांड भेजकर इसे चालू कर सकता है, जो `/etc/sysctl.d/99-cmp-agent.conf` भी लिखता है। VPN रोल को स्वयं इसकी आवश्यकता नहीं होती है। 5. **नोड से पैनल की जाँच करें:** ```bash curl -fsS -o /dev/null -w '%{http_code}\n' https://cloud.example.com/install.sh ``` ### IPv6 प्रॉक्सी नोड {#ipv6-proxy-node-1} एक IPv6 प्रीफ़िक्स दो में से किसी एक तरीके से नोड तक पहुँचता है। इंस्टॉलर वास्तविक आउटबाउंड कनेक्शन के साथ दोनों का परीक्षण करता है और जो काम करता है उसे रखता है। | प्रकार | इसका क्या अर्थ है | आप क्या कॉन्फ़िगर करते हैं | |---|---|---| | **रूटेड** | आपका अपस्ट्रीम किसी उपसर्ग (उदाहरण के लिए /48 या /56) को **नोड के अपने पते पर** रूट करता है। आउटबाउंड पैकेट अपने स्रोत के रूप में उपसर्ग में किसी भी पते का उपयोग कर सकते हैं और उत्तर वापस नोड पर आते हैं। | अपने प्रदाता से एक रूटेड प्रिफ़िक्स मांगें जिसका अगला हॉप (next hop) नोड हो। नोड पर इसके अलावा कुछ नहीं: प्रॉक्सी सेवा ट्रांसपेरेंट सॉकेट्स, एक निश्चित पॉलिसी-रूटिंग टेबल और `nft` का उपयोग करती है। | | **On-link** | /64 नोड के समान LAN पर होता है। उत्तर तभी काम करते हैं जब नोड उपयोग में आने वाले प्रत्येक पते के लिए नेबर डिस्कवरी का उत्तर देता है (**NDP proxy**)। | सेवा उस इंटरफेस पर केवल `net.ipv6.conf..accept_ra=2`, `forwarding=1` और `proxy_ndp=1` सेट करती है, पुराने मानों को याद रखती है, बंद होने पर उन्हें पुनर्स्थापित करती है, और पूल के पतों के फॉरवर्डिंग को ब्लॉक करती है ताकि नोड पूल के लिए राउटर न बने। | जांच कैसे काम करती है: नोड 6 सेकंड के भीतर, उम्मीदवार प्रिफ़िक्स के एक यादृच्छिक पते से सार्वजनिक IPv6 पते (पोर्ट 443) पर TCP कनेक्शन का प्रयास करता है। उम्मीदवार /64 या उससे छोटे प्रिफ़िक्स वाले इंटरफेस पर ग्लोबल पते हैं, साथ ही /16 और /64 के बीच `local`, `unreachable` या `blackhole` प्रकार के रूट हैं। /64 से छोटे प्रिफ़िक्स को **routed** के रूप में स्वीकार किया जाता है यदि उसके अंदर का एक यादृच्छिक /64 काम करता है। ::: warning एक ही प्रिफ़िक्स का दो बार उपयोग न करें कोई प्रिफ़िक्स किसी अन्य नोड के प्रिफ़िक्स को ओवरलैप नहीं कर सकता, और पैनल के अपने IPv6 पूल से पहले से संबंधित प्रिफ़िक्स से चौड़ा नहीं हो सकता। पैनल के पूल के **अंदर** एक /64 की अनुमति है। ओवरलैप की रिपोर्ट इंस्टॉल परिणाम में "assign range … (node …)" के रूप में की जाती है, और प्रिफ़िक्स को छोड़ दिया जाता है। ::: नोड द्वारा स्वयं लागू की जाने वाली सीमाएं: ग्राहक पूल पतों से मेल (पोर्ट 25, 465, 587, 2525) नहीं भेज सकते हैं, और डेमॉन का अपना IPv4 ट्रैफ़िक उत्तरों तथा पैनल और DNS तक सीमित है। ## NexCMP में कनेक्ट करें {#connect-in-nexcmp} ### VPN नोड {#vpn-node-2} 1. **System › Admin › License & updates** पर, स्विच **VPN** को चालू करें। [Modules](https://nexcmp.com/hi/docs/infrastructure/modules/) देखें। ![VPN और IPv6 Proxy स्विच वाला मॉड्यूल कार्ड](https://nexcmp.com/hi/docs/images/infrastructure/vpn-proxy-nodes-01-modules.webp) 2. **Infrastructure › VPN & Proxy nodes › Agents & external nodes** खोलें। नोड जोड़ने के आपके पास दो तरीके हैं। **a. SSH पर इंस्टॉल करें।** **+ Add server (SSH)** पर क्लिक करें और भरें: | फ़ील्ड | उदाहरण मान | |---|---| | सर्वर IPv4 पता | `192.0.2.50` | | SSH पोर्ट | `22` | | SSH यूजर | `root` | | SSH पासवर्ड | `XXXX` | | डिस्प्ले नाम | `node-ny-1` (खाली: आईपी के नाम पर) | | सर्वर भूमिका | External VPN / Proxy Node | | जोन असाइनमेंट | GeoIP द्वारा ऑटो (जोन बनाएं / असाइन करें), या एक मौजूदा जोन | | अतिरिक्त सबनेट (वैकल्पिक) | इंटरफेस को ऑटो-स्कैन करने के लिए खाली छोड़ें, या एक रूटेड ब्लॉक जैसे `203.0.113.0/24` | | इंस्टॉल के बाद बिक्री के लिए सक्षम करें | पता लगाए गए प्रत्येक पते को बिक्री योग्य चिह्नित करने के लिए चालू करें | **Connect & install** पर क्लिक करें। पैनल SSH पर कनेक्ट होता है, वन-टाइम टिकट के साथ नोड पर वन-लाइन इंस्टॉलर चलाता है, और नोड नाम, GeoIP स्थान तथा पता लगाई गई रेंज दिखाता है। ![उदाहरण सर्वर पते और भूमिका के साथ Add Node via SSH संवाद](https://nexcmp.com/hi/docs/images/infrastructure/vpn-proxy-nodes-02-add-server-ssh.webp) **b. मैन्युअल रूप से इंस्टॉल करें।** **Generate manual install token** पर क्लिक करें। कमांड **एक बार** दिखाई देती है; इसे कॉपी करें और नोड पर चलाएं: ```bash curl -fsSL https://cloud.example.com/install.sh | sudo sh -s -- --token XXXX --name node-ny-1 ``` टोकन इंस्टॉलेशन मशीन को केवल मॉनिटरिंग के लिए नामांकित करता है: सुरक्षा के लिए पैनल साझा टोकन रखने वाली मशीन को स्वयं को VPN रोल देने की अनुमति नहीं देता (कमांड में `--roles vpn` जोड़ने का कोई प्रभाव नहीं होता)। मशीन सूची में दिखने के बाद, इसे खोलें और स्वयं **VPN** रोल जोड़ें। SSH पर इंस्टॉल करने से (विकल्प a) नोड को शुरू से ही VPN रोल मिल जाता है। एक नया टोकन पुराने टोकन को रद्द कर देता है; जो होस्ट पहले ही नामांकित हो चुके हैं वे काम करना जारी रखते हैं क्योंकि वे अपनी स्वयं की कुंजी का उपयोग करते हैं। ![वन-टाइम टोकन कमांड दिखाने वाला इंस्टॉल कमांड संवाद](https://nexcmp.com/hi/docs/images/infrastructure/vpn-proxy-nodes-03-install-command.webp) इंस्टॉलर क्या करता है: यह आपके पैनल से `cmp-agent-linux-amd64` डाउनलोड करता है, **इसके SHA-256 को सत्यापित करता है**, इसे `/usr/local/bin/cmp-agent` पर इंस्टॉल करता है, टोकन के साथ नामांकित करता है, `/etc/cmp-agent/agent.json` लिखता है, और systemd सेवा `cmp-agent` शुरू करता है। इसे हटाने के लिए: `curl -fsSL https://cloud.example.com/install.sh | sudo sh -s -- --uninstall`। 3. पहले हार्टबीट के बाद नोड सूची में दिखाई देता है। इसका देश GeoIP द्वारा पहचाना जाता है (पहले नोड का अपना लुकअप, फिर पैनल का डेटाबेस); उस देश के लिए एक **zone** बनाया जाता है और यदि कोई मौजूद नहीं है तो उसे पब्लिक किया जाता है, और होस्ट पर पाए जाने वाले पते पूल रेंज बन जाते हैं। 4. **Infrastructure › VPN & Proxy nodes › VPN IP pools** खोलें ताकि रेंज, उनके ज़ोन और नोड देखे जा सकें, और प्रत्येक रेंज के ज़ोन, नोड या **Sellable** स्विच को बदला जा सके। **Enable range** नए ऑर्डर्स को इसके फ़्री IPs का उपयोग करने की अनुमति देता है; **Disable range** केवल नए आवंटन को रोकता है, लीज़ किए गए IPs चलते रहते हैं। ![नोड द्वारा रिपोर्ट की गई रेंज के साथ VPN IP pools](https://nexcmp.com/hi/docs/images/infrastructure/vpn-proxy-nodes-04-vpn-pool.webp) 5. **Services › VPN** खोलें, मूल्य सूची सेट करें और बिक्री चालू करें। **Subscriptions** पर **Sell VPN** स्विच वही स्विच है जो License & updates में VPN मॉड्यूल का है। 6. **वैकल्पिक: सर्विस का नाम बदलें।** **Settings › Branding** में, **VPN service display name** यह बदलता है कि कस्टमर मेनू, ऑर्डर पेज, डिटेल पेज और डिप्लॉय लिस्ट में VPN सर्विस का क्या नाम रहेगा (उदाहरण के लिए `IPv4 Proxy`, `Datacenter Proxy` या `Static Residential Proxy`; अधिकतम 40 वर्ण, खाली रखने पर `VPN` रहता है)। यह केवल लेबल्स को बदलता है: रूट्स, डेटा और API नहीं बदलते हैं। ### IPv6 प्रॉक्सी नोड {#ipv6-proxy-node-2} 1. **System › Admin › License & updates** पर, **IPv6 Proxy** स्विच चालू करें। 2. **Infrastructure › VPN & Proxy nodes › IPv6 Proxy nodes** खोलें और **Add node (SSH)** पर क्लिक करें। नोड का IPv4 पता, SSH पोर्ट, यूजर, पासवर्ड, एक वैकल्पिक नाम, और एक **Reason** (यह ऑडिट लॉग में जाता है) दर्ज करें, फिर **Install** पर क्लिक करें। ![एक उदाहरण पते और कारण के साथ Add IPv6 node संवाद बॉक्स](https://nexcmp.com/hi/docs/images/infrastructure/vpn-proxy-nodes-05-proxy6-add-node.webp) 3. इसके बाद पैनल क्रम से: मशीन और पोर्ट्स की जाँच करता है, डेमॉन, नेटवर्क स्क्रिप्ट, सर्विस यूनिट और एक नोड-विशिष्ट पर्यावरण फ़ाइल (एक नोड टोकन और एक पासवर्ड-हस्ताक्षर कुंजी) कॉपी करता है, उपयोग योग्य उपसर्गों के लिए **probe** चलाता है, पूल में उपसर्गों को दर्ज करता है, सेवा शुरू करता है, और पहली रिपोर्ट के लिए 90 सेकंड तक प्रतीक्षा करता है। **Install log** प्रत्येक चरण को दिखाता है। 4. एक नया नोड **off** स्थिति में अपना ज़ोन बनाता है (नोड के IPv4 के GeoIP से)। ग्राहकों के लिए इसे चुनने योग्य बनाने के लिए **Infrastructure › Datacenter › Zone** के अंतर्गत ज़ोन को चालू करें। 5. प्रति नोड कुल **Mbps cap** सेट करें (प्रति दिशा 10 से 100000)। **Services › IPv6 Proxy** के अंतर्गत मूल्य सूची सेट करें और बिक्री चालू करें। 6. **IPv6 Proxy › Settings › Panel URL for nodes** देखें। नोड्स अपना कॉन्फ़िगरेशन प्राप्त करने और रिपोर्ट भेजने के लिए इस पते (`https://host`, कोई पाथ नहीं) पर कॉल करते हैं। खाली का अर्थ है `https://`। यह ऐसा होस्ट होना चाहिए जिसका पता सीधे पैनल की ओर इंगित करता हो, ताकि नोड का अपना IPv4 अपरिवर्तित रूप से उस तक पहुंच सके। ::: tip रोटेशन शेड्यूल ग्राहक 30 से 600 सेकंड का स्वचालित रोटेशन अंतराल सेट कर सकते हैं। NexCMP में पैनल उस शेड्यूल को (और कनेक्शन लॉग्स की प्रति घंटा सफ़ाई को) चलाता है; नोड्स लगभग 5 सेकंड के भीतर एक नया पता प्राप्त कर लेते हैं। ::: ### नोड रिपोर्ट कैसे करता है {#how-a-node-reports} | | VPN node (`cmp-agent`) | IPv6 प्रॉक्सी नोड | |---|---|---| | नामांकन | HTTPS पर वन-टाइम टिकट या टोकन, फिर इसकी अपनी कुंजी | वन-टाइम SSH इंस्टॉल, फिर एक नोड टोकन | | हार्टबीट | हर **5 seconds** (केवल-निगरानी एजेंट के लिए 10 s); पैनल 3 से 300 s सेट कर सकता है। विफलता के बाद यह 5 s के चरणों में 60 s तक पीछे हटता है | नोड लगभग हर 60 सेकंड में एक रिपोर्ट भेजता है और कॉन्फ़िगरेशन खींचता है | | ऑनलाइन के रूप में दिखाया गया | पिछले **60 seconds** के भीतर एक हार्टबीट | पिछले **120 seconds** के भीतर **alive**, अन्यथा **missed heartbeat** | | कॉन्फ़िगरेशन परिवर्तन | अगली हार्टबीट पर लागू किया गया | लगभग 5 सेकंड के भीतर लागू किया गया | | अपडेट | पैनल नए संस्करण, URL और SHA-256 के साथ एक `upgrade` कमांड भेज सकता है | नोड पंक्ति से पुनः इंस्टॉल करें | ### VPN नोड पर डेटा अलाउंस {#data-allowance-on-a-vpn-node} NexCMP **1.5.1** से VPN नोड एजेंट प्रत्येक हार्टबीट के साथ अपने द्वारा ले जाए गए ट्रैफ़िक को भेजता है, और पैनल इसे वर्तमान अवधि के लिए प्लान के उपयोग में जोड़ता है। वही संख्या ग्राहक को (Overview और Bandwidth टैब) तथा आपको (VPN › Subscriptions, कॉलम Used, और नोड पंक्ति) दिखाई जाती है। - **कट-ऑफ।** जब कोई प्लान अवधि के लिए अपने GB का उपयोग कर लेता है, तो पैनल एजेंट को उस प्लान के एंडपॉइंट्स भेजना बंद कर देता है, जिससे नए कनेक्शन अस्वीकार कर दिए जाते हैं और खुले हुए कनेक्शन बंद हो जाते हैं। यह कट एक हार्टबीट के भीतर होता है, इसलिए प्लान अपनी सीमा से थोड़ा अधिक चल सकता है। Unlimited टियर वाले प्लान कभी काटे नहीं जाते। - **फिर से चालू होना।** ग्राहक द्वारा अधिक बैंडविड्थ खरीदने या अगली अवधि शुरू होने के बाद एक हार्टबीट के भीतर प्लान को फिर से सेवा दी जाती है। - **Not measured.** ऐसा नोड जिसके एजेंट ने उपयोग नहीं भेजा है (उदाहरण के लिए कोई पुराना एजेंट), उसे **Not measured** के रूप में दिखाया जाता है, और GB के कारण उसके प्लान कभी बंद नहीं किए जाते हैं। - **Agent अपडेट करें।** नोड्स पर agent **1.5.1** का उपयोग करें। पुराने agents की गणना अभी भी की जाती है, लेकिन वे विफल heartbeat, रोके गए endpoint या रीस्टार्ट के बाइट्स खो सकते हैं, और प्लान कट होने पर वे खुले कनेक्शन्स को बंद नहीं करते हैं। नोड पंक्ति से (Reinstall) या `upgrade` कमांड से अपडेट करें। - गणना उस पेलोड की होती है जो प्रॉक्सी से होकर गुजरता है, इसलिए यह वायर पर मौजूद बाइट्स की तुलना में थोड़ी कम (लगभग 1 %) होती है। ### रिटायर किए गए VPN ऐड-ऑन {#retired-vpn-add-ons} High IP Reputation, High Concurrency और High Priority Network अब नए ऑर्डर पर उपलब्ध नहीं हैं। मौजूदा सब्सक्रिप्शन अपने ऐड-ऑन चयनों को बनाए रखते हैं, लेकिन उनकी रिन्यूअल राशि से रिटायर किए गए शुल्कों को हटा दिया जाता है। पहले से भुगतान की गई अवधियों का कोई रिफंड नहीं है। यह समायोजन ऐड-ऑन के वर्तमान कैटलॉग मूल्य का उपयोग करता है; यदि आपने वह मूल्य बदल दिया है या ऐड-ऑन हटा दिया है, तो इसके अगले नवीनीकरण से पहले सब्सक्रिप्शन की रिन्यूअल राशि की समीक्षा करें। ## सत्यापित करें {#verify} 1. नोड पंक्ति ऑनलाइन है। एक VPN node के लिए, **Agents & external nodes** इसका ज़ोन, देश, भूमिका और पहचानी गई रेंजों को दिखाता है। 2. **VPN IP pools** मुफ्त IP के साथ रेंजों को सूचीबद्ध करता है; ज़ोन का विवरण पृष्ठ VPN बुनियादी ढांचे को दिखाता है। 3. एक परीक्षण VPN या प्रॉक्सी प्लान का ऑर्डर दें। ग्राहक को एक एंडपॉइंट `ip:port`, एक यूजर नाम और एक पासवर्ड मिलता है; इसके माध्यम से कनेक्ट करें और जाँचें कि दिखाई देने वाला सार्वजनिक IP नोड का IP है (उदाहरण के लिए `curl --proxy socks5h://USER:XXXX@IP:PORT https://ifconfig.me`)। 4. IPv6 नोड पर, होस्ट पर चलाएं: ```bash systemctl is-active nft list tables | grep proxy6 ss -ltn | grep -E ':(80|443|6[0-9]{4})\b' ``` ## सीमाएँ और नोट्स {#limits-and-notes} - Windows होस्ट निगरानी एजेंट चला सकते हैं लेकिन VPN भूमिका नहीं। - VPN प्लान का डेटा अलाउंस (GB प्रति अवधि): NexCMP 1.5.1 से पैनल VPN नोड agent द्वारा रिपोर्ट किए गए ट्रैफ़िक को जोड़ता है और अवधि के GB समाप्त होने पर प्लान के प्रॉक्सी काट देता है (नीचे "Data allowance on a VPN node" देखें)। IPv6 Proxy प्लान में कोई GB अलाउंस नहीं होता; वे प्रति प्लान Mbps में स्पीड सीमित करते हैं। - VPN प्लान के IPv4 एड्रेस रोटेट नहीं होते हैं। कोई ग्राहक ब्लैकलिस्ट किए गए IP की रिपोर्ट करता है; आप या रीसेलर उसी ज़ोन से रिप्लेसमेंट को मंज़ूरी देते हैं। केवल IPv6 Proxy रोटेट होता है। - प्रति हार्टबीट अधिकतम 64 रेंज रिपोर्ट की जाती हैं। - एक VPN एंडपॉइंट सेट बेचे गए प्रति IP तीन पोर्ट का उपयोग करता है। पोर्ट 65001-65535 के साथ प्रत्येक IP सीमित संख्या में एंडपॉइंट (178 पोर्ट सेट) सर्व करता है; पैनल उन सेटों को छोड़ देता है जो पहले उपयोग किए गए थे। - किसी IPv6 प्रॉक्सी नोड को हटाने की अनुमति तभी होती है जब किसी भी प्लान में उस पर कोई IP न हो। यह नोड के रेंज और टोकन को हटा देता है; होस्ट पर सॉफ्टवेयर अनइंस्टॉल नहीं होता है। - ऐसी रेंज को रीसेल करना संभव है जिसमें आपके अपने VM भी हैं: VPN केवल पोर्ट 65001-65535 का उपयोग करता है, इसलिए यह अन्य सेवाओं के साथ IP साझा करता है। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | "नामांकन विफल (अमान्य टोकन या सर्वर तक पहुँच नहीं)" | गलत या पहले से उपयोग किया गया टोकन, या पैनल तक पहुंच नहीं है | एक नया टोकन जनरेट करें, या SSH इंस्टॉल को दोबारा प्रयास करें। | | "फ़ाइल हस्ताक्षर मेल नहीं खाता - रोकें" | डाउनलोड किया गया एजेंट प्रकाशित SHA-256 से भिन्न है | पैनल के `/dl/` फ़ोल्डर की जाँच करें और सुनिश्चित करें कि रास्ते में कोई भी डाउनलोड को दोबारा न लिखे। | | "यह इंस्टॉलर केवल Linux के लिए है" / "आर्किटेक्चर … अभी समर्थित नहीं है" | Windows, या x86_64 के अलावा कोई अन्य आर्किटेक्चर (रिलीज़ केवल x86_64 के लिए agent प्रदान करती है) | एक x86_64 Linux होस्ट का उपयोग करें। | | नोड कभी दिखाई नहीं देता | नोड HTTPS पर पैनल तक नहीं पहुँच सकता | नोड से `curl https:///install.sh` का परीक्षण करें; DNS और फ़ायरॉल की जाँच करें। | | नोड गलत देश के साथ दिखाई देता है | देश का पता लगाने की प्रक्रिया विफल हो गई, इसलिए पैनल के एड्रेस डेटाबेस का उपयोग किया गया था | `ip-api.com` और `ipinfo.io` पर आउटबाउंड एक्सेस की अनुमति दें, या SSH फॉर्म में ज़ोन को स्पष्ट रूप से चुनें। | | कोई रेंज नहीं मिली | नॉन-वर्चुअल इंटरफ़ेस पर कोई पब्लिक IPv4 नहीं है | एक पब्लिक एड्रेस जोड़ें, या रूट किए गए ब्लॉक को **Extra subnet** के रूप में दर्ज करें। | | VPN काम करता है, ट्रैफ़िक किसी अन्य IP से बाहर निकलता है | बेचा गया IP असाइन नहीं किया गया है या होस्ट पर रूट नहीं किया गया है | सुनिश्चित करें कि IP किसी इंटरफ़ेस पर है या `local … dev lo` द्वारा कवर किया गया है। | | "पैनल सर्वर पर sshpass नहीं है" | पैनल होस्ट पासवर्ड के साथ नोड्स में लॉग इन नहीं कर सकता | पैनल सर्वर पर `sudo apt-get install -y sshpass openssh-client` चलाएं, फिर नोड को दोबारा इंस्टॉल करें। | | IPv6 नोड इंस्टॉल करते समय "not found in the installed package" | पैनल 1.4.2 से पुराना है, या नोड फ़ाइलों के बिना एक कस्टम बिल्ड है | NexCMP को 1.4.2 या बाद के संस्करण में अपडेट करें; कस्टम बिल्ड के लिए `build.sh` का उपयोग करें, जो अब `brandy-proxy6d` और `brandy-proxy6-net` को पैक करता है। | | "SSH: …" IPv6 इंस्टॉल की शुरुआत में, या "SSH to internal/loopback addresses is not allowed" | गलत पोर्ट, यूजर या पासवर्ड, SSH अवरुद्ध है, या एड्रेस प्राइवेट है | नोड के पब्लिक IPv4 का उपयोग करें और `ssh -p PORT USER@IP` के साथ मैन्युअल रूप से एक्सेस की जाँच करें। | | "आर्किटेक्चर … समर्थित नहीं है (केवल x86_64)" | नोड x86_64 नहीं है | एक x86_64 होस्ट का उपयोग करें। | | "नोड में कमांड गायब है: …" | `nft`, `ip`, `ss`, `sysctl`, `systemctl` या `useradd` इंस्टॉल नहीं है | पैकेज इंस्टॉल करें, फिर इंस्टॉल को दोबारा चलाएं। | | "नोड पर किसी अन्य सेवा द्वारा उपयोग किए जा रहे पोर्ट: … — 80, 443, 60001-65535 खाली होने चाहिए" | 80, 443 या 60000 से ऊपर का कोई पोर्ट व्यस्त है | अन्य सेवा को स्थानांतरित करें; इंस्टॉलर इसे बंद नहीं करता है। | | "नोड से इंटरनेट एक्सेस वाला कोई IPv6 प्रिफिक्स नहीं मिला (वास्तविक एग्रेस जांच विफल)" | कोई रूटेड प्रिफिक्स नहीं, NDP प्रॉक्सी संभव नहीं है, या कोई आउटबाउंड IPv6 नहीं है | जाँच करें कि प्रिफिक्स नोड पर रूट किया गया है, इंटरफ़ेस में IPv6 कनेक्टिविटी है, और आउटबाउंड ट्रैफ़िक को कोई फ़िल्टर नहीं कर रहा है। | | "सभी पहचानी गई रेंज पहले से ही किसी अन्य नोड से संबंधित हैं" | प्रिफिक्स पहले से ही किसी अन्य नोड द्वारा उपयोग किया जा रहा है | इसे अन्य नोड से हटा दें या दूसरा प्रिफिक्स चुनें। | | इंस्टॉल "no initial report received from node" के साथ समाप्त होता है | सेवा शुरू हुई लेकिन 90 सेकंड के भीतर पैनल तक नहीं पहुँची | नोड्स को दिए गए पैनल URL और उस तक जाने वाले नोड के HTTPS पथ की जाँच करें; **Install log** देखें। | | नोड पंक्ति **missed heartbeat** दिखाती है | 120 सेकंड से कोई रिपोर्ट नहीं | नोड पर सेवा, उसकी घड़ी और पैनल तक के उसके पथ की जाँच करें। | | ग्राहकों को कोई IPv6 लोकेशन नहीं दिखती | जोन बंद है | **Zone** के तहत जोन सक्षम करें। | --- # AI Models {#ai-models} > **Admin में कहाँ:** मॉड्यूल चालू करने के लिए System › Admin › License & updates (`/license`)। फिर Services › AI Models: Providers (`/ai/providers`), Models (`/ai/models`), Profit (`/ai/profit`) और Audit (`/ai/audit`)। ग्राहक customer portal में AI › API का उपयोग करते हैं। ## यह क्या करता है {#what-it-does} AI Models आपके अपने पैनल पर एक गेटवे और बिलिंग लेयर है। आपके ग्राहकों को API keys मिलती हैं और वे OpenAI-compatible या Anthropic-compatible फ़ॉर्मेट में **आपके डोमेन पर एक ही endpoint** को कॉल करते हैं। आप चुनते हैं कि कौन-से मॉडल ऑफ़र करने हैं और प्रति 1 million tokens प्रत्येक की लागत क्या होगी। NexCMP key, सीमाओं और वॉलेट की जाँच करता है, आपके द्वारा जोड़े गए प्रोवाइडर को अनुरोध भेजता है, टोकन मापता है और ग्राहक के प्रीपेड वॉलेट से शुल्क लेता है। **मॉडल स्रोत आप खुद लाते हैं।** NexCMP बिना किसी प्रोवाइडर, बिना किसी मॉडल, बिना किसी डिफ़ॉल्ट पते और बिना किसी कीमत के आता है। यह मॉडल, API keys, टोकन या प्रोवाइडर खाते प्रदान नहीं करता है। ::: warning पहले अपने स्रोतों की शर्तें जाँचें कई मॉडल स्रोत रीसेल करने या तीसरे पक्ष को एक्सेस देने पर प्रतिबंध लगाते हैं। केवल उन्हीं स्रोतों का उपयोग करें जिन्हें उपयोग करने और रीसेल करने के लिए आप अधिकृत हैं, और उनकी शर्तों तथा आप पर लागू होने वाले कानून का पालन करें। यह पृष्ठ कानूनी सलाह नहीं है। ::: AI Models **AI Chat and AI Agent** (मॉड्यूल **AI**, देखें [AI providers](https://nexcmp.com/hi/docs/ai/ai-providers/)) से एक अलग उत्पाद है। दोनों मॉड्यूल एक-दूसरे पर निर्भर नहीं हैं। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | मॉड्यूल | License & updates, Modules के तहत **AI Models** चालू होना चाहिए। यह डिफ़ॉल्ट रूप से बंद रहता है। | | Providers | एक या अधिक मॉडल स्रोत जिन्हें रीसेल करने के लिए आप अधिकृत हैं, प्रत्येक OpenAI-संगत API (`/chat/completions`), Anthropic-संगत API (`/messages`), या दोनों के साथ। प्रत्येक के लिए एक base URL और एक API key आवश्यक है। | | नेटवर्क | पैनल को सार्वजनिक डोमेन नाम पर **port 443 पर HTTPS** के माध्यम से प्रत्येक प्रोवाइडर तक पहुँचना चाहिए। इंटरनल होस्ट, किसी अन्य पोर्ट या प्लेन HTTP पर मौजूद प्रोवाइडर को **Allowed internal hosts** (सेटिंग `ai_endpoint_allow`) के तहत सूचीबद्ध किया जाना चाहिए। | | ग्राहक | सत्यापित ईमेल पते और वॉलेट बैलेंस वाला ग्राहक खाता। | | हार्डवेयर | कोई नहीं। NexCMP केवल अनुरोध अग्रेषित करता है: कोई GPU नहीं और कोई मॉडल फ़ाइलें नहीं। | ## बुनियादी ढांचा तैयार करें {#prepare-the-infrastructure} 1. प्रत्येक मॉडल स्रोत से एक API key प्राप्त करें जिसका आप उपयोग करेंगे, और उसका base URL नोट करें (उदाहरण के लिए `https://api.example.com/v1`)। 2. रीसेलिंग पर स्रोत की शर्तें जाँचें। 3. यदि कोई स्रोत आपके नेटवर्क के अंदर चलता है, तो उसका पता तय करें, उदाहरण के लिए `http://10.0.0.5:8000/v1`। आप `10.0.0.5:8000` को **Allowed internal hosts** के तहत सूचीबद्ध करेंगे। ## NexCMP में कनेक्ट करें {#connect-in-nexcmp} ### 1. मॉड्यूल चालू करें {#_1-turn-the-module-on} **System › Admin › License & updates** खोलें, कार्ड **Module** ढूंढें, और **AI Models** को चालू करें। मेन्यू फिर से लोड होता है और **Services › AI Models** दिखाई देता है। जब तक मॉड्यूल बंद रहता है, ग्राहक पृष्ठ, admin पृष्ठ और गेटवे सभी `404 module_disabled` उत्तर देते हैं, और किसी भी प्रोवाइडर से संपर्क नहीं किया जाता है। ![AI Models स्विच ऑन के साथ Module कार्ड](https://nexcmp.com/hi/docs/images/infrastructure/ai-models-01-modules.webp) ### 2. प्रोवाइडर जोड़ें {#_2-add-a-provider} 1. **AI Models › Providers** खोलें और **Add provider** चुनें। 2. एक संक्षिप्त **slug**, एक **name** (केवल आप इसे देखते हैं), **type** (OpenAI-compatible, Anthropic-compatible या Both), **base URL** और **API key**, और एक **priority** दर्ज करें (कम संख्या को पहले आज़माया जाता है)। 3. सेव करें। key को एन्क्रिप्ट करके स्टोर किया जाता है और बाद में केवल इसके अंतिम चार अक्षर ही दिखाए जाते हैं। key केवल साइन-इन किए गए एडमिनिस्ट्रेटर सत्र से ही दर्ज की जा सकती है। **Both** का उपयोग केवल ऐसे गेटवे के लिए करें जो वास्तव में दोनों फ़ॉर्मेट को सर्व करता हो। NexCMP दोनों फ़ॉर्मेट के बीच अनुवाद **नहीं** करता है: OpenAI-compatible प्रोवाइडर द्वारा सर्व किए जाने वाले मॉडल तक `/ai/v1/chat/completions` पर पहुँचा जाता है, और Anthropic-compatible प्रोवाइडर द्वारा सर्व किए जाने वाले मॉडल तक `/ai/v1/messages` पर। ![Providers पृष्ठ जिसमें type, priority और status के साथ तीन नमूना प्रोवाइडर्स दिखाए गए हैं](https://nexcmp.com/hi/docs/images/infrastructure/ai-models-02-providers.webp) ### 3. कनेक्शन टेस्ट करें {#_3-test-the-connection} प्रोवाइडर पर **Test connection** चुनें। NexCMP key के साथ `GET /models` को पढ़ता है और **ok** रिपोर्ट करता है, या इसके विफल होने का कारण बताता है: **auth** (गलत key), **blocked**, **billing**, या **unreachable**। एक परीक्षण प्रति मिनट 6 तक सीमित है। ### 4. मॉडल सिंक करें {#_4-sync-the-models} **Sync models** चुनें। NexCMP प्रदाता की मॉडल सूची पढ़ता है और प्रत्येक नए मॉडल को **बिना किसी मूल्य के और स्विच ऑफ़ स्थिति में** जोड़ता है। प्रदाता द्वारा हटाई गई मॉडल सूची को फ़्लैग कर दिया जाता है। जब मॉड्यूल चालू होता है, तो सूची हर 6 घंटे में अपने आप सिंक भी होती है (सेटिंग `ai_models_sync_hours`)। ### 5. कीमतें निर्धारित करें और मॉडल चालू करें {#_5-set-prices-and-switch-models-on} 1. **AI Models › Models** खोलें। 2. प्रत्येक मॉडल जिसे आप बेचना चाहते हैं, उसके लिए प्रति 1 मिलियन टोकन अमेरिकी डॉलर में **विक्रय मूल्य** (selling price) निर्धारित करें: **input**, **cached input** और **output**। 3. वैकल्पिक रूप से मॉडल के लिए अपनी **लागत** दर्ज करें। फिर **Profit** दिन और मॉडल के अनुसार लागत के मुक़ाबले राजस्व दिखाता है, और आपकी लागत तथा न्यूनतम मार्जिन (सेटिंग `ai_min_margin_pct`, डिफ़ॉल्ट रूप से 10) से कम विक्रय मूल्य को तब तक अस्वीकार कर दिया जाता है जब तक कि आप जानबूझकर घाटे की पुष्टि न करें। **Set price from cost** आपके द्वारा चुने गए मार्कअप का उपयोग करता है; कोई डिफ़ॉल्ट मार्कअप नहीं है। 4. मॉडल चालू करें। बिना विक्रय मूल्य वाले मॉडल को चालू नहीं किया जा सकता। शून्य पर छोड़े गए cached input मूल्य पर input मूल्य के अनुसार शुल्क लिया जाता है। ![input, cached input और output विक्रय मूल्यों तथा ऑन-ऑफ़ स्विचों वाला Models पृष्ठ](https://nexcmp.com/hi/docs/images/infrastructure/ai-models-03-models.webp) ### 6. रूट्स और फ़ेलओवर {#_6-routes-and-failover} किसी मॉडल पर, **Routes** उन प्रदाताओं को क्रम में सूचीबद्ध करता है जो इसे सेवा प्रदान करते हैं। फ़ॉलबैक के रूप में दूसरा प्रदाता जोड़ें, क्रम सेट करें, और वैकल्पिक रूप से प्रत्येक प्रदाता के लिए एक अलग मॉडल नाम दें (प्रदाता को भेजा गया नाम आपके द्वारा प्रकाशित नाम से भिन्न हो सकता है)। जब कोई प्रदाता सर्वर त्रुटि, प्रमाणीकरण या बिलिंग त्रुटि, गुम मॉडल या रेट सीमा लौटाता है, तो NexCMP अगले रूट का प्रयास करता है। यदि अनुरोध भेजे जाने के बाद रीड टाइमआउट हो जाता है, तो इसे दूसरे प्रदाता को **नहीं** भेजा जाता है, ताकि आपको दो बार भुगतान न करना पड़े। प्रत्येक प्रदाता की गति `ai_provider_rpm` अनुरोध प्रति मिनट (डिफ़ॉल्ट रूप से 50) पर नियंत्रित की जाती है। यदि कोई प्रदाता बार-बार प्रमाणीकरण या बिलिंग त्रुटियाँ लौटाता है, तो Telegram सेट होने पर NexCMP व्यवस्थापक को Telegram पर सचेत करता है। ### 7. बिक्री स्विच खोलें {#_7-open-the-sale-switch} AI Models पृष्ठों के शीर्ष पर, **बिक्री स्विच** (सेटिंग `feature_ai_models`) डिफ़ॉल्ट रूप से बंद रहता है। जब तक यह बंद है, ग्राहकों को दिखता है कि सेवा अभी शुरू नहीं हुई है और सार्वजनिक मूल्य सूची इसे अनुपलब्ध बताती है। जाँचें कि कम से कम एक मॉडल चालू हो, उसका विक्रय मूल्य हो और कुंजी के साथ एक रूट हो, फिर इसे चालू करें। ### ग्राहक क्या कर सकते हैं {#what-customers-can-do} ग्राहक पोर्टल में, **AI › API**: - **Models** आपके मॉडल और कीमतें, बेस URL और पहले से तैयार उदाहरण कमांड दिखाता है। - **API Keys**: कुंजियाँ बनाएँ, नाम बदलें, रोटेट करें, अक्षम करें और हटाएँ। सीक्रेट केवल एक बार दिखाया जाता है; केवल हैश संग्रहीत किया जाता है। प्रति कुंजी: अनुमत मॉडल, समाप्ति, सॉफ़्ट बजट (चेतावनी देता है) और हार्ड बजट (`402` के साथ ब्लॉक करता है), अनुरोध प्रति मिनट और टोकन प्रति मिनट। - मॉडल, कुंजी और दिन के अनुसार **Usage**, निर्यात के साथ। - **Logs**: फ़िल्टर करने योग्य अनुरोध रिकॉर्ड (समय, कुंजी, मॉडल, टोकन, लागत, स्थिति, विलंबता)। **प्रॉम्प्ट और प्रतिक्रियाएँ रिकॉर्ड नहीं की जाती हैं।** लॉग डिफ़ॉल्ट रूप से 90 दिनों तक रखे जाते हैं (`ai_log_retention_days`)। - **Settings**: एक खाता बजट और बजट अलर्ट के लिए ईमेल पता। - **Playground**: किसी मॉडल से चैट करें, मॉडलों की साथ-साथ तुलना करें, और संबंधित कोड कॉपी करें। ![दोनों API प्रारूपों के लिए बेस URL वाला ग्राहक API Keys पृष्ठ](https://nexcmp.com/hi/docs/images/infrastructure/ai-models-04-keys.webp) गेटवे एंडपॉइंट, आपके डोमेन पर: ```text POST /ai/v1/chat/completions OpenAI-compatible POST /ai/v1/messages Anthropic-compatible (also /ai/v1/messages/count_tokens) GET /ai/v1/models model list GET /ai/v1/models/pricing public price list, no key needed ``` ### वॉलेट और बिलिंग {#wallet-and-billing} AI उपयोग का शुल्क अन्य सभी सेवाओं की तरह उसी प्रीपेड वॉलेट से लिया जाता है। किसी प्रदाता के पास अनुरोध जाने से पहले, NexCMP अनुरोध की अधिकतम संभावित लागत के लिए राशि आरक्षित करता है; यदि शेष राशि न्यूनतम (`ai_min_balance_cents`, डिफ़ॉल्ट रूप से 20 सेंट) से कम या बहुत कम है, तो अनुरोध को `402 insufficient_balance` के साथ अस्वीकार कर दिया जाता है और **किसी भी प्रदाता को कॉल नहीं किया जाता है**। उपयोग प्रति खाता एकत्र किया जाता है और प्रत्येक घंटे के बाद वॉलेट बहीखाता प्रविष्टियों में तय किया जाता है, जिसमें प्रत्येक 5 मिनट में स्वीप होता है; जो उपयोग अभी तक तय नहीं हुआ है, उसे गेटवे द्वारा दिखने वाली शेष राशि से पहले ही घटा दिया जाता है। Reseller अपने स्वयं के डोमेन पर AI Models बेच सकते हैं: उनका मार्कअप या डिस्काउंट आपके विक्रय मूल्य पर लागू होता है और उनके थोक वॉलेट से थोक मूल्य काटा जाता है। प्रति-reseller AI स्विच, जो डिफ़ॉल्ट रूप से चालू होता है, यह नियंत्रित करता है कि इसे कौन बेच सकता है। ## सत्यापित करें {#verify} 1. चरण 3 के बाद, **Test connection** **ok** और मॉडल की संख्या दिखाता है। 2. चरण 4 के बाद नए मॉडल बिना मूल्य के, बंद स्थिति में सूचीबद्ध होते हैं। 3. फ़ंडेड वॉलेट वाले ग्राहक के रूप में, एक कुंजी बनाएं और गेटवे को कॉल करें: ```bash curl https://your-domain/ai/v1/chat/completions \ -H "Authorization: Bearer sk-ai-…" -H "Content-Type: application/json" \ -d '{"model":"model-one","messages":[{"role":"user","content":"hello"}]}' ``` एक `200` प्रतिक्रिया मॉडल का उत्तर लाती है। **Usage** अनुरोध दिखाता है, और यदि आपने लागत दर्ज की है तो **Profit** इसे दिखाता है। 4. वॉलेट शून्य होने पर, वही कॉल `402 insufficient_balance` लौटाती है। ## सीमाएँ और नोट्स {#limits-and-notes} - इस मॉड्यूल में कोई प्रोवाइडर, मॉडल या मूल्य पहले से शामिल नहीं है, और किसी प्रोवाइडर से कभी कोई मूल्य सूची नहीं पढ़ी जाती है। - प्रोवाइडर साइड पर चलने वाले और प्रति कॉल चार्ज किए जाने वाले टूल्स, जैसे कि वेब सर्च, अस्वीकार कर दिए जाते हैं क्योंकि उन्हें मीटर नहीं किया जा सकता। केवल अनुरोध पैरामीटरों की एक संक्षिप्त सूची ही आगे भेजी जाती है। - टोकन उपयोग प्रोवाइडर के उत्तर से लिया जाता है; यदि उत्तर में कोई टोकन नहीं है, तो NexCMP इसका अनुमान लगाता है और रिकॉर्ड को अनुमानित के रूप में चिह्नित करता है। - ग्राहक तक पहुँचने से पहले प्रोवाइडर की त्रुटियों को साफ़ किया जाता है (नाम, होस्ट, पते और प्रोवाइडर का मॉडल नाम हटा दिए जाते हैं)। ग्राहक कभी नहीं देख पाते कि किस प्रोवाइडर ने अनुरोध को प्रोसेस किया। - ग्राहक आपके पैनल के डोमेन के माध्यम से गेटवे तक पहुँचते हैं, इसलिए उस डोमेन का TLS काम करना चाहिए। - NexCMP इस मॉड्यूल के लिए कोई सेवा-स्तरीय समझौता (SLA), फ़ाइन-ट्यूनिंग या GPU होस्टिंग प्रदान नहीं करता है। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण और समाधान | |---|---| | प्रत्येक AI Models पेज और गेटवे `404 module_disabled` का उत्तर देते हैं | मॉड्यूल बंद है। License & updates, Modules के तहत **AI Models** चालू करें। | | प्रोवाइडर जोड़ना `endpoint_host_not_allowed`, `endpoint_must_be_https` या `invalid_endpoint_port` के साथ विफल रहता है | base URL एक पब्लिक डोमेन नेम पर पोर्ट 443 पर HTTPS होना चाहिए। किसी इंटरनल होस्ट, अन्य पोर्ट या प्लेन HTTP के लिए, `host:port` को **Allowed internal hosts** के तहत सूचीबद्ध करें। | | `blocked_endpoint` | पता एक IP है, या नाम किसी निजी पते पर रिज़ॉल्व होता है। यदि आप यही चाहते हैं तो इसे **Allowed internal hosts** के तहत सूचीबद्ध करें। | | **Test connection** कहता है `auth` | कुंजी गलत है या उसके पास एक्सेस नहीं है। कुंजी दोबारा दर्ज करें। | | मॉडल चालू नहीं किया जा सकता (`no_price`) | पहले विक्रय मूल्य सेट करें। | | ग्राहकों को `503 ai_unavailable` मिलता है | बिक्री स्विच बंद है, या reseller का AI स्विच बंद है। | | ग्राहकों को `503 upstream_unavailable` मिलता है | कुंजी वाला कोई भी सक्षम रूट अनुरोधित प्रारूप में उस मॉडल को सेवा नहीं देता है। मॉडल के रूट्स और प्रोवाइडर प्रकार की जाँच करें। | | ग्राहकों को `402 insufficient_balance` मिलता है | वॉलेट न्यूनतम से कम है या अनुरोध के लिए बहुत छोटा है। ग्राहक से टॉप-अप करने के लिए कहें। | --- # Object Storage (S3, Ceph RGW) {#object-storage-s3-ceph-rgw} > **Admin में कहाँ:** Infrastructure › Cloud provider › Ceph S3 (RGW) (`/infra/s3`)। Accounts: Services › Object Storage › S3 accounts (`/s3`)। Pricing: Services › Object Storage › PAYG pricing (`/s3/policy`)। System › Admin › License & updates के तहत मॉड्यूल चालू करें। ## यह क्या करता है {#what-it-does} ग्राहक पोर्टल से S3 अकाउंट बनाते हैं और एक्सेस की प्राप्त करते हैं। NexCMP RGW Admin Ops API के माध्यम से **आपके Ceph RADOS Gateway (RGW)** पर मेल खाने वाले यूजर बनाता और हटाता है, बिलिंग के लिए उपयोग (usage) पढ़ता है, और पे-एज-यू-गो बिल करता है: प्रति GB प्रति माह फ्री टियर से अधिक स्टोरेज (प्रति घंटे के हिसाब से चार्ज) और प्रति GB डाउनलोड ट्रैफिक। अपलोड मुफ़्त हैं। जब आप RGW के साथ Ceph क्लस्टर चलाते हैं और ऑब्जेक्ट स्टोरेज रीसेल करना चाहते हैं, तब इसका उपयोग करें। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | Ceph | कम से कम एक RGW डेमॉन वाला क्लस्टर, जिसमें **Admin Ops API** सक्षम हो (डिफ़ॉल्ट `rgw_enable_apis` में `admin` शामिल है)। | | Admin user | नीचे सूचीबद्ध क्षमताओं (capabilities) वाला NexCMP के लिए एक RGW यूजर। ग्राहक डेटा के स्वामित्व वाले यूजर का उपयोग न करें। | | Endpoints | ग्राहक जिस S3 एंडपॉइंट का उपयोग करते हैं, और Admin Ops एंडपॉइंट। दोनों `https://host` के रूप में **बिना किसी पथ, केवल पोर्ट 443** के लिखे जाते हैं, और किसी **सार्वजनिक (public)** पते पर हल होने चाहिए: लूपबैक, लिंक-लोकल, मल्टीकास्ट, प्राइवेट और यूनिक-लोकल पते अस्वीकार किए जाते हैं। | | Certificate | एंडपॉइंट होस्ट के लिए एक मान्य सर्टिफिकेट। | | Usage log | RGW यूसेज लॉगिंग चालू (`rgw_enable_usage_log = true`), ताकि यूसेज API ट्रैफिक रिपोर्ट कर सके। | | ज़ोन | सेवा **Object Storage (S3)** पर सही का निशान लगा हुआ एक मास्टर जोन। [Zones](https://nexcmp.com/hi/docs/infrastructure/zones/) देखें। | | Storage | आपके द्वारा बेचे जाने वाले कोटा के लिए Ceph में क्षमता। | | इस पर निर्भर करता है | मॉड्यूल **Object Storage**। डाउनलोड ट्रैफिक [Bandwidth](https://nexcmp.com/hi/docs/catalog/bandwidth/) में भी गिना जाता है। | ## बुनियादी ढांचा तैयार करें {#prepare-the-infrastructure} Ceph एडमिन नोड पर: 1. एडमिन यूजर बनाएं और इसे इसकी आवश्यक Admin Ops क्षमताएं दें: ```bash radosgw-admin user create --uid=nexcmp-admin --display-name="NexCMP admin" radosgw-admin caps add --uid=nexcmp-admin --caps="users=*;buckets=*;usage=read;metadata=read" radosgw-admin user info --uid=nexcmp-admin ``` आउटपुट से `access_key` और `secret_key` कॉपी करें। NexCMP में ये **Admin access key** और **Admin secret key** हैं। 2. यूसेज लॉग चालू करें और गेटवे रीस्टार्ट करें: ```bash ceph config set client.rgw rgw_enable_usage_log true ``` 3. गेटवे को पोर्ट 443 पर HTTPS के पीछे रखें (रिवर्स प्रॉक्सी या RGW का अपना TLS), DNS नाम पब्लिश करें, और पैनल सर्वर से परीक्षण करें: ```bash curl -fsS -o /dev/null -w '%{http_code}\n' https://s3.example.com/ ``` आपको टाइमआउट नहीं, बल्कि एक S3 XML उत्तर (HTTP 200 या 403) मिलना चाहिए। ## NexCMP में कनेक्ट करें {#connect-in-nexcmp} 1. **ज़ोन को S3 सेवा दें।** **Infrastructure › Datacenter › Zone** खोलें, ज़ोन संपादित करें और **Object Storage (S3)** पर टिक करें। केवल S3 सेवा वाले मास्टर ज़ोन ही बैकएंड फ़ॉर्म में दिखाई देते हैं। 2. **Infrastructure › Cloud provider › Ceph S3 (RGW)** खोलें और **Add backend** पर क्लिक करें: | फ़ील्ड | उदाहरण मान | |---|---| | Backend name | `Ceph RGW 1` | | ज़ोन | चरण 1 का जोन | | RGW Admin Ops endpoint | `https://s3.example.com` | | कस्टमर S3 एंडपॉइंट | `https://s3.example.com` | | S3 साइनिंग क्षेत्र | `default` | | एडमिन एक्सेस की | `XXXX` | | एडमिन सीक्रेट की | `XXXX` | | सक्रिय (Active) | चालू | | बिक्री सक्षम करें (पहले कनेक्शन परीक्षण आवश्यक है) | फिलहाल **बंद** | | बदलाव का कारण | `initial setup` | ![उदाहरण एंडपॉइंट, क्षेत्र और छिपी हुई कुंजियों के साथ बैकएंड S3 संवाद](https://nexcmp.com/hi/docs/images/infrastructure/s3-02-backend-dialog.webp) 3. **OK** (सहेजें) पर क्लिक करें, फिर पंक्ति में **Check** पर क्लिक करें। NexCMP एडमिन की के साथ Admin Ops API को कॉल करता है। **Ceph connection successful** और **Verified** टैग का मतलब है कि यह काम कर रहा है। 4. **Edit** पर क्लिक करें, **Enable sales** को चालू करें और सहेजें। जाँच सफल होने तक NexCMP बिक्री खोलने से मना कर देता है। 5. **Services › Object Storage › PAYG pricing** खोलें और मूल्य निर्धारण सेट करें: | फ़ील्ड | अर्थ | |---|---| | फ्री टियर से अधिक स्टोरेज (VND/GB/माह) | स्टोरेज मूल्य; मासिक मूल्य को 730 से विभाजित करके प्रति घंटे बिल किया जाता है। | | डाउनलोड (VND/GB) | आउटगोइंग ट्रैफ़िक के लिए मूल्य। | | अपलोड (VND/GB) | हमेशा 0। | | चलती VM के साथ फ्री टियर (GB) | ग्राहक के पास कम से कम एक चालू VM होने पर प्रति खाता 100 GB पर तय, आकार के अनुसार उनके S3 खातों में साझा किया जाता है। | | ऋण सीमा (VND) | कितना अवैतनिक उपयोग अनुमति प्राप्त है। | | बिलिंग सीमा (VND) | इस राशि को पार करने के बाद उपयोग को एक चालान में एकत्रित किया जाता है। | | S3 बनाने के लिए न्यूनतम शेष राशि (VND) | खाता बनाने के लिए आवश्यक वॉलेट शेष राशि। | | प्रति ग्राहक अधिकतम S3 खाते, डिफ़ॉल्ट तकनीकी कोटा (GB) | नए खातों के लिए सीमाएँ। | ![S3 PAYG मूल्य निर्धारण फ़ॉर्म](https://nexcmp.com/hi/docs/images/infrastructure/s3-04-pricing.webp) S3 मूल्य VND में दर्ज किए जाते हैं। प्रभावी विनिमय दर पर प्रदर्शन और वॉलेट शुल्कों के लिए इन्हें परिवर्तित किया जाता है; [Currency and exchange rates](https://nexcmp.com/hi/docs/catalog/currency-and-exchange-rates/) देखें। ## सत्यापित करें {#verify} 1. **Check** "Ceph connection successful" देता है। 2. एक ग्राहक के रूप में (या परीक्षण खाते के साथ), एक S3 खाता बनाएँ। Ceph पर, `radosgw-admin user list` एक नया उपयोगकर्ता दिखाता है, और **S3 accounts** इसे सूचीबद्ध करता है। 3. कस्टमर एंडपॉइंट के विरुद्ध ग्राहक की कुंजियों का उपयोग करके किसी भी S3 क्लाइंट के साथ एक बकेट बनाएँ। एक फ़ाइल अपलोड करें। 4. अगले घंटे के बिलिंग टिक के बाद, **S3 accounts** उपयोग दिखाता है। ## सीमाएँ और नोट्स {#limits-and-notes} - एक बैकएंड जिसमें पहले से खाते जुड़े हैं, अपना **ज़ोन, एंडपॉइंट और क्षेत्र** बनाए रखता है; उन्हें बदलने के लिए, एक नया बैकएंड बनाएँ। - एक ज़ोन का अपना बैकएंड हो सकता है; खाते और बैकएंड हमेशा के लिए किसी ज़ोन से बंधे होते हैं। - फ्री टियर और "अपलोड मुफ़्त हैं" तय नियम हैं, विकल्प नहीं। - कुंजियाँ एन्क्रिप्टेड रूप से संग्रहीत की जाती हैं; कंसोल "वर्तमान कुंजी बनाए रखने के लिए खाली छोड़ें" फ़ील्ड के अलावा कुछ नहीं दिखाता है। कुंजी जोड़ी हमेशा एक साथ दर्ज की जाती है। - ग्राहकों की सीक्रेट कुंजियाँ निर्माण के समय एक बार दिखाई जाती हैं, फिर कभी नहीं। खोई हुई कुंजी को घुमाकर (रोटेट करके) बदला जाता है। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | "Endpoint requires HTTPS" | एंडपॉइंट सादे HTTP का उपयोग करता है | पोर्ट 443 पर HTTPS प्रकाशित करें। | | "एंडपॉइंट पोर्ट की अनुमति नहीं है" | 443 के अलावा अन्य पोर्ट | मानक HTTPS पोर्ट का उपयोग करें। | | "Endpoint एड्रेस अनुमत नहीं है" | नाम किसी प्राइवेट, लूपबैक, लिंक-लोकल या यूनिक-लोकल पते पर रिज़ॉल्व होता है | सार्वजनिक (public) पते का उपयोग करें। | | "Endpoint में केवल प्रोटोकॉल और होस्ट होना चाहिए" | यूआरएल (URL) में पाथ, क्वेरी या यूजर जानकारी है | Use `https://host` only. | | "Endpoint रिज़ॉल्व करने में विफल" | पैनल सर्वर से डीएनएस (DNS) रिज़ॉल्व नहीं होता है | Fix DNS. | | "Failed to connect to Ceph" | Firewall or TLS error | पैनल सर्वर से `curl` के साथ टेस्ट करें। | | "Ceph returned HTTP 403 AccessDenied" | गलत कुंजियाँ या गायब क्षमताएं | कुंजियों की जाँच करें और `radosgw-admin caps add` को दोबारा चलाएं। | | "Invalid Ceph response" | एंडपॉइंट RGW Admin Ops API नहीं है | इसे किसी वेब पेज के बजाय RGW पर इंगित करें। | | "बिक्री सक्षम करने से पहले कनेक्शन टेस्ट सफल होना चाहिए" | आपने सफल **Check** से पहले बिक्री चालू कर दी है | **Check** चलाएं, फिर बिक्री सक्षम करें। | | "Endpoint के लिए सभी नई keys आवश्यक हैं" | दोनों कुंजियों के बिना एंडपॉइंट बदल गया | एक्सेस की और सीक्रेट की एक साथ दर्ज करें। | | "बैकएंड में पहले से जुड़े संसाधन मौजूद हैं; ज़ोन या एंडपॉइंट बदलने के लिए नया बैकएंड बनाएं" | इस बैकएंड पर खाते मौजूद हैं | एक नया बैकएंड बनाएं। | | "S3 सेवा वाला मास्टर ज़ोन चुनें" | जोन मास्टर जोन नहीं है या उसमें S3 सेवा नहीं है | जोन पर **Object Storage (S3)** चुनें। | | "Invalid region" | क्षेत्र (region) में अक्षरों, अंकों, `-` और `_` के अलावा अन्य वर्ण हैं | `default` या अपने RGW जोनग्रुप नाम का उपयोग करें। | | "Ceph उपयोग सारांश गायब है; बिल नहीं बनाया गया" | Usage log disabled | Enable `rgw_enable_usage_log`. | --- # Kubernetes and Private Cloud {#kubernetes-and-private-cloud} > **प्रशासन में कहाँ:** Kubernetes: Infrastructure › Cloud provider › CloudStack › Kubernetes (CKS) (`/infra/cloudstack?tab=k8s`), फिर Services › Kubernetes (Overview, Clusters, Versions, Policy)। Private Cloud: Services › Private Cloud (Overview `/vpc`, VPC `/vpc/list`, Plans & pricing `/vpc/plans`)। System › Admin › License & updates के अंतर्गत दोनों मॉड्यूल चालू करें। ## यह क्या करता है {#what-it-does} - **Kubernetes.** ग्राहक CloudStack Kubernetes Service (CKS) के साथ आपके CloudStack पर प्रबंधित Kubernetes क्लस्टर बनाते हैं। कंट्रोल प्लेन मुफ़्त है; ग्राहक **worker** नोड्स के लिए भुगतान करते हैं। NexCMP प्रत्येक क्लस्टर के लिए एक अलग नेटवर्क और सार्वजनिक आईपी बनाता है और प्रत्येक ग्राहक के क्लस्टर अलग रखता है। - **Private Cloud.** ग्राहकों को एक राउटर, सबनेट (टियर), फ़ायरवॉल नियमों (नेटवर्क ACL) और इसके अंदर वर्चुअल मशीनों के साथ एक प्राइवेट नेटवर्क (CloudStack VPC) मिलता है। इसे समर्पित, अनमीटर्ड गति (उदाहरण के लिए 50, 100, 500 Mbps, 1 और 3 Gbps) वाले **bandwidth plan** द्वारा बेचा जाता है। डिफ़ॉल्ट रूप से प्रत्येक ग्राहक के पास एक VPC हो सकता है। दोनों [CloudStack](https://nexcmp.com/hi/docs/infrastructure/cloudstack/) पर बने हैं और एक ही कनेक्शन के माध्यम से इसके API का उपयोग करते हैं। ## आवश्यकताएं {#requirements} ### Kubernetes {#kubernetes} | आइटम | आवश्यकता | |---|---| | CloudStack | 4.23 (परीक्षण किया गया)। CKS **सक्षम** (`cloud.kubernetes.service.enabled = true`) होना चाहिए। | | खाता | समर्पित डोमेन में एक **Domain Admin** खाता, ताकि NexCMP प्रत्येक ग्राहक के लिए एक CloudStack प्रोजेक्ट और उसके भीतर संसाधन सीमाएँ बना सके। [CloudStack](https://nexcmp.com/hi/docs/infrastructure/cloudstack/#create-a-dedicated-account-and-api-key) देखें। | | `endpoint.url` | CloudStack ग्लोबल सेटिंग आपके प्रबंधन API को इंगित करनी चाहिए, जो क्लस्टर VM से पहुंच योग्य हो। NexCMP एंडपॉइंट जाँच का मान और परिणाम दिखाता है। | | वर्जन | **Enabled** स्थिति में अपनी बाइनरी ISO के साथ कम से कम एक Kubernetes समर्थित-वर्जन प्रविष्टि। जीवनकाल समाप्त हो चुके वर्जन बिक्री के लिए नहीं रखे जा सकते। | | कंट्रोल-प्लेन ऑफरिंग | **बिल्कुल 2 vCPU, 2048 MB RAM और CPU कैप (`limitcpuuse = true`)** वाली एक निःशुल्क सेवा ऑफरिंग, जो खाते को दिखाई देती है। सर्वर `cp_offering_invalid` के साथ बाकी किसी भी चीज़ को अस्वीकार कर देता है। | | नेटवर्क | CKS-सक्षम आइसोलेटेड नेटवर्क ऑफरिंग जो सक्षम है। | | IP | बिक्री योग्य रेंज में निःशुल्क सार्वजनिक IPv4 पते; प्रत्येक क्लस्टर एक का उपयोग करता है। | | क्षमता | कंट्रोल प्लेन और एक छोटे राउटर VM के लिए प्रत्येक क्लस्टर की आपको 2 से 4 GB RAM खर्च करनी होती है। क्षमता टैब पर नज़र रखें। | ### Private Cloud {#private-cloud} | आइटम | आवश्यकता | |---|---| | CloudStack | VPC सक्षम के साथ 4.23 (परीक्षित)। | | VPC ऑफरिंग | एक VPC ऑफरिंग। डुअल-स्टैक ऑफरिंग प्रत्येक टियर को एक IPv6 /64 भी देती है। | | टियर नेटवर्क ऑफरिंग्स | **प्रत्येक बैंडविड्थ प्लान के लिए एक नेटवर्क ऑफरिंग**, VPC के लिए बनाई गई, जिसमें **network rate** (Mbps) प्लान के बराबर हो, साथ ही **1 Mbps** की एक **locked** ऑफरिंग जो तब लागू होती है जब कोई VPC गैर-भुगतान के लिए लॉक किया जाता है। | | खाता | समर्पित खाता (Domain Admin अनुशंसित)। VPC नेटवर्क प्रोजेक्ट्स में नहीं, खाते में रहते हैं। | | IP | निःशुल्क सार्वजनिक IPv4 पते (प्रत्येक VPC स्रोत NAT के लिए एक का उपयोग करता है)। | | पता स्थान | प्रत्येक VPC को `10.128.0.0/9` से एक /16 प्राप्त होता है। उस रेंज को अपने खुद के नेटवर्क पर उपयोग न करें। | | इस पर निर्भर करता है | CloudStack कनेक्टेड; मॉड्यूल **Private Cloud**। | ## बुनियादी ढांचा तैयार करें {#prepare-the-infrastructure} ### Kubernetes: CKS सक्षम करें और वर्जन जोड़ें {#kubernetes-enable-cks-and-add-versions} 1. सेवा सक्षम करें और एंडपॉइंट सेट करें, फिर प्रबंधन सर्वर को पुनरारंभ करें: ```bash cmk update configuration name=cloud.kubernetes.service.enabled value=true cmk update configuration name=endpoint.url value=https://cloudstack.example.com/client/api sudo systemctl restart cloudstack-management ``` `endpoint.url` को क्लस्टर के कंट्रोलर द्वारा वापस कॉल किया जाता है, इसलिए यह एक ऐसा पता होना चाहिए जिसे क्लस्टर VM तक पहुँच मिल सके। 2. CloudStack सोर्स ट्री से `create-kubernetes-binaries-iso.sh` स्क्रिप्ट के साथ, उस वर्जन के लिए एक Kubernetes बाइनरी ISO बनाएँ जिसे आप बेचना चाहते हैं, इसे एक वेब सर्वर पर होस्ट करें और इसे पंजीकृत करें: ```bash cmk add kubernetessupportedversion name="Kubernetes 1.35.0" semanticversion=1.35.0 \ url=https://files.example.com/setup-v1.35.0-calico-amd64.iso zoneid= \ mincpunumber=2 minmemory=2048 cmk list kubernetessupportedversions filter=name,semanticversion,state,isostate ``` ISO स्थिति के **Ready** होने और वर्जन के **Enabled** होने की प्रतीक्षा करें। 3. NexCMP डोमेन तक सीमित, कंट्रोल-प्लेन ऑफरिंग बनाएँ: ```bash cmk create serviceoffering name=K8S-CP-2-2 displaytext="Kubernetes control plane" \ cpunumber=2 cpuspeed=1000 memory=2048 limitcpuuse=true offerha=false domainid= ``` 4. जाँच करें कि CKS नेटवर्क ऑफरिंग सक्षम है: ```bash cmk list networkofferings state=Enabled forvpc=false filter=id,name ``` ### Private Cloud: ऑफरिंग्स बनाएँ {#private-cloud-create-the-offerings} CloudStack UI में (**Service Offerings › Network Offerings › Add network offering**) या `cmk` के साथ: 1. सूची बनाएँ कि आपके पास क्या है: ```bash cmk list vpcofferings filter=id,name,state cmk list networkofferings forvpc=true filter=id,name,networkrate,state ``` 2. सक्षम VPC ऑफरिंग का उपयोग करें (यदि आप IPv6 चाहते हैं तो डुअल-स्टैक)। यदि आपको नए की आवश्यकता है, तो CloudStack की डिफ़ॉल्ट VPC ऑफरिंग को क्लोन करें और इसे सक्षम करें। 3. बेचे जाने वाले **प्रत्येक** बैंडविड्थ प्लान के लिए, **VPC के लिए** एक नेटवर्क ऑफरिंग बनाएँ (डिफ़ॉल्ट "isolated network offering for VPC networks" को क्लोन करें) और **Network rate (Mb/s)** को प्लान की गति पर सेट करें: `50`, `100`, `500`, `1000`, `3000`। प्रत्येक ऑफरिंग को सक्षम करें। 4. लॉक किए गए VPC के लिए **network rate 1** (`VPC-LOCKED-1M`) के साथ एक और ऑफरिंग बनाएँ: ग्राहक अभी भी SSH के माध्यम से अपने सर्वर तक पहुँच सकते हैं, लेकिन गति सीमित है। 5. प्रत्येक offering का UUID नोट करें। NexCMP को अगले अनुभाग में इनकी आवश्यकता होगी। ::: warning भेजी गई offering ID आपके क्लाउड में मौजूद नहीं हैं Private Cloud फ़ॉर्म में ऐसी offering UUID पहले से भरी होती हैं जो किसी अन्य CloudStack इंस्टॉलेशन से संबंधित हैं। **हर एक** को अपनी खुद की offering से बदलें, अन्यथा पहला VPC ऑर्डर विफल हो जाएगा। ::: ## NexCMP में कनेक्ट करें {#connect-in-nexcmp} ### Kubernetes {#kubernetes-1} 1. **Infrastructure › Cloud provider › CloudStack** खोलें और **Kubernetes (CKS)** टैब चुनें। दाईं ओर का कार्ड **CKS status on CloudStack (read-only)** `kubernetesserviceenabled`, `endpoint.url` को **Endpoint check**, CKS नेटवर्क offering, `cloud.kubernetes.*` सेटिंग्स तथा ISOs और संस्करणों की सूची के साथ दिखाता है। किसी चीज़ को ठीक करने के बाद **Recheck** पर क्लिक करें। 2. **Sales config** में, **Control plane Offering** चुनें (यदि यह ठीक 2 vCPU / 2048 MB / CPU cap नहीं है तो एक चेतावनी दिखाई देती है), **Max workers per cluster** सेट करें (1 से 9: CKS नियंत्रण नोड सहित 10 नोड्स की अनुमति देता है), **Enable CKS for this backend** स्विच चालू करें और **Save** करें। कोई offering चुने जाने तक स्विच अक्षम रहता है। ![नियंत्रण प्लेन offering चुने जाने और CKS स्टेटस कार्ड के साथ Kubernetes (CKS) टैब](https://nexcmp.com/hi/docs/images/infrastructure/kubernetes-and-private-cloud-01-cks.webp) 3. **Services › Kubernetes › Versions** खोलें और **Sync from CloudStack** पर क्लिक करें। जिन संस्करणों को आप बेचते हैं उनके लिए **Available for new clusters** स्विच चालू करें, डिफ़ॉल्ट सेट करें और यदि चाहें तो **End of life (EOL)** तिथि दें। 4. **Services › Kubernetes › Policy** खोलें। **Worker plans** में **Plan code** (A-Z, 0-9, हाइफ़न, अधिकतम 16 वर्ण) के साथ प्लान जोड़ें। **NVMe per worker (GB)**, **Min and max workers** तथा क्लस्टर सीमाएँ (प्रति खाता सक्रिय क्लस्टर, प्रति 24 घंटे में निर्माण, वैश्विक कैप, समवर्ती CKS संचालन) सेट करें। फिर **Sell Kubernetes (CKS)** स्विच चालू करें। बिक्री पर कम से कम एक प्लान अवश्य रहना चाहिए। ![वर्कर प्लान और बिक्री स्विच के साथ Kubernetes पॉलिसी](https://nexcmp.com/hi/docs/images/infrastructure/kubernetes-and-private-cloud-03-policy.webp) ### Private Cloud {#private-cloud-1} 1. **Services › Private Cloud** (Overview) खोलें। पॉलिसी कार्ड में **VPC offering** और **Locked offering tier** को अपने स्वयं के UUID से बदलें। सीमाओं (प्रति खाता VPC, टियर, VM और प्रति VPC ACL नियम, बनाने के लिए आवश्यक प्लान शुल्क के घंटों में बैलेंस, प्रति 24 घंटे में प्लान परिवर्तन, समवर्ती संचालन जहाँ 0 एक आपातकालीन स्टॉप है) और DNS सर्वर की जाँच करें। **Save** पर क्लिक करें (एक कारण पूछा जाता है)। ![VPC offering और locked offering फ़ील्ड के साथ Private Cloud ओवरव्यू](https://nexcmp.com/hi/docs/images/infrastructure/kubernetes-and-private-cloud-04-vpc-policy.webp) 2. **Services › Private Cloud › Plans & pricing** खोलें। प्रत्येक प्लान के लिए **Edit** पर क्लिक करें और **VND price per month**, **On sale** तथा **CloudStack tier offering** UUID सेट करें जिसकी नेटवर्क दर प्लान के Mbps के बराबर हो। पंक्ति पूर्ण उपयोग पर लागत और लाभ दिखाती है, जिससे आप देख सकते हैं कि कौन से प्लान आपकी लागत से कम हैं। ![प्राइवेट क्लाउड बैंडविड्थ प्लान के लिए संपादित करें प्लान संवाद](https://nexcmp.com/hi/docs/images/infrastructure/kubernetes-and-private-cloud-05-vpc-plan.webp) 3. **Sell Private Cloud** स्विच चालू करें। पहले आज़माने के लिए, **Beta accounts** में परीक्षण खाता ID जोड़ें: जब बिक्री स्विच बंद हो तब वे खाते सेवा का उपयोग कर सकते हैं। ## सत्यापित करें {#verify} 1. Kubernetes: स्टेटस कार्ड `kubernetesserviceenabled: true`, एक अच्छा एंडपॉइंट चेक और एक सक्षम संस्करण दिखाता है। एक ग्राहक के रूप में एक-वर्कर वाला परीक्षण क्लस्टर बनाएँ; इसे रनिंग तक पहुँचना चाहिए और `kubectl get nodes` को इसे तैयार दिखाना चाहिए। बाद में इसे हटा दें: नेटवर्क और IP पूल में वापस चले जाते हैं। 2. Private Cloud: एक परीक्षण ग्राहक के रूप में सबसे छोटे प्लान के साथ एक VPC बनाएँ। VPC सक्रिय दिखाई देता है, एक टियर को अपना सबनेट मिलता है, टियर में एक VM VPC राउटर के माध्यम से इंटरनेट तक पहुँचती है, और किसी बड़े प्लान पर **Change plan** कनेक्शन छोड़े बिना लगभग 20 सेकंड के भीतर प्रभावी हो जाता है। ## सीमाएँ और नोट्स {#limits-and-notes} - Kubernetes: वर्करों पर प्लान की कीमतों पर VM की तरह बिल लगाया जाता है और VM सीमाओं में उन्हें VM के रूप में गिना जाता है। CKS की 10 नोड्स की सीमा के कारण एक क्लस्टर में अधिकतम 9 वर्कर हो सकते हैं। - Kubernetes: नियंत्रण प्लेन, राउटर और क्लस्टर का सार्वजनिक IP ग्राहक के लिए मुफ़्त हैं; आप उनकी लागत वहन करते हैं। - Private Cloud: सभी प्लान **unmetered** हैं। फ़ॉर्म में कीमतें प्रति माह वियतनामी डोंग हैं; लागत स्तंभ एक संदर्भ मूल्य का उपयोग करता है जो आपका नहीं है, इसलिए अपने स्वयं के नंबरों का उपयोग करें। - एक लॉक किए गए VPC को 1 Mbps तक सीमित किया जाता है, इसका बिल नहीं भेजा जाता है और यह अपने आप हटता नहीं है। - Private Cloud प्रति VPC एक राउटर का उपयोग करता है, न कि अतिरेक जोड़ी (redundant pair) का। यदि इसका होस्ट विफल हो जाता है, तो CloudStack इसे कुछ ही मिनटों में पुनर्निर्माण कर देता है। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | `cp_offering_invalid` / "यह ऑफ़रिंग 2 vCPU / 2048 MB / limitcpuuse नहीं है" | कंट्रोल-प्लेन ऑफ़रिंग में अन्य आकार हैं या कोई CPU कैप नहीं है | चरण 3 के अनुसार ऑफ़रिंग बनाएं और इसे फिर से चुनें। | | **Enable CKS** स्विच अक्षम है | कोई कंट्रोल-प्लेन ऑफ़रिंग नहीं चुनी गई | पहले एक चुनें। | | `kubernetesserviceenabled: false` | CloudStack में CKS बंद है | इसे सक्षम करें और मैनेजमेंट सर्वर को पुनरारंभ करें। | | एंडपॉइंट जांच विफल होती है | क्लस्टर VM से `endpoint.url` तक नहीं पहुँचा जा सकता | एक पहुँचने योग्य URL सेट करें, मैनेजमेंट सर्वर को पुनरारंभ करें, **Recheck** पर क्लिक करें। | | "EOL: बिक्री के लिए सक्षम नहीं किया जा सकता" | संस्करण की एंड-ऑफ़-लाइफ तिथि बीत चुकी है | एक नया संस्करण पंजीकृत करें। | | "कोई संस्करण नहीं: Sync from CloudStack पर क्लिक करें" | कोई Kubernetes संस्करण पंजीकृत नहीं है | एक संस्करण पंजीकृत करें और सिंक करें। | | "CKS बैकएंड बंद है: बिक्री फ़्लैग सक्षम होने पर भी ग्राहक क्लस्टर नहीं बना सकते" | बिक्री स्विच चालू है लेकिन CKS बैकएंड बंद है | CloudStack टैब पर CKS सक्षम करें। | | "कम से कम 1 प्लान बिक्री पर होना चाहिए" | अंतिम वर्कर प्लान हटाया गया | कम से कम एक प्लान रखें, या Kubernetes बिक्री बंद करें। | | क्लस्टर निर्माण में अटका हुआ है | पर्याप्त क्षमता नहीं है या ISO गायब है | क्षमता टैब और संस्करण की ISO स्थिति की जाँच करें। | | पहला VPC पहले चरण में विफल हो जाता है | VPC ऑफ़रिंग या टियर ऑफ़रिंग ID मान्य नहीं है | प्रत्येक ऑफ़रिंग UUID को अपने CloudStack के किसी UUID से बदलें। | | "cs_offering_id एक UUID होना चाहिए" | कोई ऑफ़रिंग ID एक UUID नहीं है | `cmk list networkofferings` से ID पेस्ट करें। | | प्लान बदलना विफल होता है | नई टियर ऑफ़रिंग मौजूद नहीं है या नेटवर्क रेट गलत है | ऑफ़रिंग UUID और उसके नेटवर्क रेट की जाँच करें। | --- # Plans and pricing {#plans-and-pricing} > **एडमिन में कहाँ:** Services › Virtual Machines › Plans & pricing (`/vm/catalog`), जिसमें Plan, Custom plan, Cycle और Offering CloudStack टैब शामिल हैं। टेम्पलेट अलग पेज Services › Virtual Machines › Template (`/vm/templates`) पर हैं। ## यह क्या करता है {#what-it-does} **प्लान** एक ऐसा आकार है जिसे ग्राहक खरीद सकते हैं: vCPU, RAM, रूट डिस्क और एक निश्चित मूल्य, जो किसी ज़ोन में एक स्रोत (CloudStack या Proxmox VE क्लस्टर) से उपलब्ध होता है। ग्राहक एक प्लान, ऑपरेटिंग सिस्टम और **बिलिंग चक्र** (प्रति घंटा, मासिक या लंबी प्रीपेड अवधि) चुनता है। प्लान ग्राहक पोर्टल, API और रीसेलर्स की साइटों के माध्यम से बेचे जाते हैं। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | Source | CloudStack जुड़ा हुआ है (एक प्लान CloudStack सर्विस ऑफ़रिंग को इंगित करता है) या ज़ोन से जुड़ा Proxmox VE क्लस्टर। [CloudStack](https://nexcmp.com/hi/docs/infrastructure/cloudstack/) और [Proxmox VE](https://nexcmp.com/hi/docs/infrastructure/proxmox/) देखें। | | ज़ोन | एक ज़ोन जो वर्चुअल मशीन बेचता है। [Zones](https://nexcmp.com/hi/docs/infrastructure/zones/) देखें। | | Templates | कम से कम एक सक्षम, तैयार टेम्पलेट। [OS templates](https://nexcmp.com/hi/docs/infrastructure/templates/) देखें। | | विनिमय दर | केवल तभी जब आप VND में मूल्य दर्ज करते हैं। [Currency and exchange rates](https://nexcmp.com/hi/docs/catalog/currency-and-exchange-rates/) देखें। | | अनुमतियाँ | एक प्रशासक; हर कीमत परिवर्तन के लिए एक कारण आवश्यक है। | ## बुनियादी ढांचा तैयार करें {#prepare-the-infrastructure} - **CloudStack:** बेचने के लिए अपनी सेवा प्रस्तुतियाँ (service offerings) बनाएँ (सार्वजनिक, या NexCMP डोमेन के साथ साझा)। एक प्लान किसी एक प्रस्तुति को इंगित करता है। **Offering CloudStack** टैब CloudStack से लाइव प्रस्तुतियाँ और डिस्क प्रस्तुतियाँ सूचीबद्ध करता है (60 सेकंड के लिए कैश्ड)। जब प्लान तालिका खाली होती है, तो वर्कर आपकी वास्तविक प्रस्तुतियों से स्वचालित रूप से छह प्लान बनाता है। - **Proxmox VE:** Proxmox में कुछ नहीं; एक प्लान में अपना खुद का CPU, RAM और डिस्क होता है। डिस्क, टेम्पलेट की डिस्क से छोटी नहीं होनी चाहिए। ## NexCMP में कनेक्ट करें {#connect-in-nexcmp} ### कीमतें कैसे सहेजी जाती हैं {#how-prices-are-stored} NexCMP प्रत्येक कीमत को **माइक्रो-डॉलर प्रति घंटे** (µ$/hour; 1 µ$ का अर्थ 1/1,000,000 USD है) के रूप में सहेजता है। आप अपनी पसंदीदा इकाई में कीमत टाइप कर सकते हैं और फॉर्म इसे परिवर्तित कर देता है: | इकाई | नोट्स | |---|---| | USD / घंटा (6 दशमलव) | जैसे का तैसे सहेजा गया। | | USD / महीना | प्रति-माह सेटिंग्स (730) से विभाजित। | | VND / महीना | वर्तमान विनिमय दर पर एक बार परिवर्तित किया जाता है, फिर µ$/hour में सहेजा जाता है। केवल तभी दिखाई देता है जब कोई दर मौजूद हो। | फॉर्म परिणाम दिखाता है: µ$/hour, USD/hour, मासिक कीमत और प्रत्येक बिलिंग चक्र। **मास्क कीमत = प्रति घंटा कीमत × 730**; एक लंबी अवधि का चक्र **मास्क कीमत × महीने × (1 − छूट)** होता है। ### एक प्लान जोड़ें {#add-a-plan} 1. **Services › Virtual Machines › Plans & pricing** खोलें और **Add plan** पर क्लिक करें। 2. फॉर्म भरें: | फ़ील्ड | उदाहरण मान | |---|---| | प्लान का नाम | `VM-2-4` | | Slug | खाली: नाम से बनाया गया | | ज़ोन | आपका डिफ़ॉल्ट ज़ोन | | इन्फ्रास्ट्रक्चर स्रोत | CloudStack के लिए खाली, या Proxmox क्लस्टर | | सेवा प्रस्तुति CloudStack (लाइव) | एक चुनें (केवल CloudStack के लिए दिखाया गया) | | CPU (कोर), RAM (MB), रूट डिस्क (GB) | `2`, `4096`, `40` | | डिस्क प्रस्तुति | वैकल्पिक, एक कस्टम रूट आकार के लिए | | द्वारा कीमत दर्ज करें / कीमत | `USD / month`, `12` | | संक्षिप्त विवरण | `2 vCPU, 4 GB RAM, 40 GB NVMe` | | क्रम (Order) | `10` | | सक्रिय (Active) | चालू: ग्राहक खरीद सकते हैं | | Visibility | कैटलॉग में दिखाई दे रहा है | | कीमत परिवर्तन का कारण | `initial price` | 3. **OK** पर क्लिक करें। प्लान अपनी प्रति घंटा और मासिक कीमत तथा प्रत्येक सक्षम चक्र के लिए एक सेल के साथ तालिका में दिखाई देता है। ![प्रति घंटा, मासिक और प्रति-चक्र कीमतों के साथ प्लान तालिका](https://nexcmp.com/hi/docs/images/catalog/plans-02-list.webp) ### बिलिंग चक्र {#billing-cycles} ग्राहक कौन से चक्र चुन सकते हैं और उनकी छूट क्या होगी, यह सेट करने के लिए **Cycle** टैब खोलें। | चक्र | डिफ़ॉल्ट | नोट्स | |---|---|---| | प्रति घंटा | हमेशा चालू | प्रति घंटे के हिसाब से शुल्क लिया जाता है। | | मासिक | चालू, 0% | | | 1 वर्ष | चालू, 10% | | | 2 वर्ष | चालू, 15% | | | 3 वर्ष | चालू, 20% | | आप किसी चक्र का नाम बदल सकते हैं, उसका डिस्काउंट (0 से 90%) बदल सकते हैं और उसे चालू या बंद कर सकते हैं। यह बदलाव आपके सहेजने के **बाद** खरीदे या नवीनीकृत किए गए VM पर लागू होता है; चल रहे VM अपनी लॉक की गई कीमत बनाए रखते हैं। ![प्रत्येक बिलिंग चक्र पर डिस्काउंट वाला Cycle टैब](https://nexcmp.com/hi/docs/images/catalog/plans-03-cycles.webp) ### एक बेस प्लान सेट करें और अन्य प्लान डिराइव करें {#set-a-base-plan-and-derive-the-others} **Set base plan + derive other plans** विकल्प एक ही कीमत से पूरी टेबल की कीमतें दोबारा तय करता है। बेस प्लान और उसकी कीमत चुनें, फिर या तो प्लान्स के बीच **current price ratios** बनाए रखें या **component prices** (प्रति vCPU, प्रति GB RAM और प्रति GB NVMe के लिए µ$/घंटा, 0 से 50% के वैकल्पिक बंडल डिस्काउंट के साथ) से गणना करें। कुछ भी सेव होने से पहले एक पूर्वावलोकन टेबल पुरानी और नई कीमतें दिखाती है। **Apply** पर क्लिक करें, और एक कारण दें। जब आप नई कीमतें लागू करते हैं: चल रहे **hourly** VM को अगले बिलिंग घंटे से **कम** कीमत मिलती है, और प्रीपेड VM को यह नवीनीकरण पर मिलती है। यदि कीमत **बढ़ जाती है**, तो चल रहे VM अपनी पुरानी कीमत बनाए रखते हैं। ### कस्टम प्लान {#custom-plans} **Custom plan** टैब ग्राहकों को अपना vCPU, RAM और NVMe साइज़ चुनने देता है। एक vCPU, RAM के एक GB और NVMe के एक GB के लिए प्रति घंटा यूनिट कीमत सेट करें (प्रतिशत डिस्काउंट से डिराइव करने के लिए खाली छोड़ें), प्रत्येक के लिए न्यूनतम, अधिकतम और स्टेप सेट करें, और लागू होने वाले बिलिंग चक्र चुनें। एक **custom** प्लान की कीमत उसी साइज़ के फिक्स प्लान से ज़्यादा होनी चाहिए, वरना ग्राहक फिक्स प्लान छोड़ देंगे; पेज उन पंक्तियों को फ़्लैग करता है जहाँ कस्टम प्लान सस्ता है। बेचने के लिए **Enable custom plans for customers** ऑन करें; ऑफ होने पर पोर्टल में "Coming soon" दिखता है। प्रत्येक कस्टम VM को अपनी छिपी हुई प्लान पंक्ति मिलती है; जब तक VM मौजूद है, उन पंक्तियों को संपादित या हटाया नहीं जा सकता। ### बदलाव, छिपाना, क्लोन करना, हटाना {#change-hide-clone-delete} | Action | यह क्या करता है | |---|---| | **Edit** | नाम, विवरण, क्रम, कीमत, सक्रिय स्थिति और दृश्यता बदलता है। | | **On/Off** | **Off**: ग्राहक खरीद नहीं सकते; चल रहे VM प्रभावित नहीं होते हैं। | | **Hide / Show** | छिपा हुआ प्लान कैटलॉग में नहीं होता है लेकिन मौजूदा VM इसे बनाए रखते हैं और एक प्रशासक इसे असाइन कर सकता है। | | **Clone** | पुराने प्लान को वैकल्पिक रूप से छिपाते हुए, नए स्रोत, साइज़ या कीमत के साथ उसी ज़ोन में एक नया प्लान बनाता है। CloudStack और Proxmox से एक ही कॉन्फ़िगरेशन बेचने के लिए, इसे क्लोन करें और दूसरा स्रोत चुनें। | | **Move up/down** | क्रम बदलता है। | | **Delete** | प्लान को बिक्री से और टेबल से हटाता है। जो VM पहले से इसका उपयोग कर रहे हैं, वे इसे बनाए रखते हैं। | ::: warning उपयोग में आने वाले प्लान लॉक होते हैं एक बार जब किसी प्लान में VM आ जाते हैं, तो उसके **zone, offering, CPU, RAM, disk और source** लॉक हो जाते हैं ताकि चल रहे VM चुपचाप न बदलें। नया कॉन्फ़िगरेशन बनाने के लिए **Clone** का उपयोग करें; पुराने प्लान के पास उसके VM बने रहते हैं। ::: ## सत्यापित करें {#verify} 1. अपेक्षित प्रति घंटा और मासिक कीमत के साथ प्लान टेबल में दिखाई देता है। 2. ग्राहक पोर्टल में, एक ऑर्डर शुरू करें: ज़ोन प्लान ऑफ़र करता है और चक्र की कीमतें **Cycle** टैब से मेल खाती हैं। 3. एक टेस्ट ऑर्डर दें, दिखाई गई कीमत के मुकाबले वॉलेट चार्ज की जाँच करें, और VM को हटा दें। ## सीमाएँ और नोट्स {#limits-and-notes} - एक प्लान **एक** ज़ोन और **एक** स्रोत से संबंधित होता है। - कीमतें µ$/घंटा में संग्रहीत की जाती हैं; दिखाई गई VND कीमत **VND rounding step** (मुद्रा पेज देखें) द्वारा डिराइव और राउंड की जाती है। वॉलेट हमेशा USD में होता है। - रिसेलर को सूची मूल्य से डिराइव मूल्य और खुदरा मूल्य मिलते हैं; किसी मौजूदा प्लान की कीमत बदलने से कस्टम रिसेलर की कीमतें ऐसे क्लोन पर कॉपी नहीं होती हैं जिसका कॉन्फ़िगरेशन आपने बदल दिया है। - कस्टम प्लान की मिन, मैक्स और स्टेप सीमाओं की जाँच CloudStack की अपनी सीमाओं के मुकाबले की जाती है; CloudStack की `storage.max.volume.size` से ऊपर की अधिकतम डिस्क डिप्लॉयमेंट को विफल कर देती है और रिफंड कर देती है। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | "प्लान का नाम आवश्यक है" / "सर्विस ऑफ़रिंग आवश्यक है" | गायब फ़ील्ड | नाम भरें; CloudStack के लिए एक ऑफरिंग चुनें। | | "CPU/RAM/डिस्क > 0 होना चाहिए" | साइज़ खाली है या शून्य है | तनों दर्ज करें। | | "अमान्य कीमत (µ$/hr 1 … 100,000,000 होना चाहिए)" | कीमत सीमा से बाहर है | इकाई और राशि की जाँच करें। | | "कीमत बदलने के लिए एक कारण आवश्यक है" | संपादन करते समय कारण खाली है | कोई कारण टाइप करें (3 अक्षर या अधिक)। | | "ऑफरिंग "X" 4c/8192 है लेकिन प्लान 2c/4096 निर्दिष्ट करता है - CloudStack ऑफरिंग के अनुसार प्रावधान करेगा। सहेजें?" | प्लान के नंबर ऑफरिंग से भिन्न हैं | उन्हें मेल खाएँ, या CloudStack का साइज़ बनाए रखने की पुष्टि करें। | | "CloudStack से ऑफरिंग प्राप्त करने में विफल" | कनेक्शन डाउन है या कुंजी के पास अनुमति नहीं है | [CloudStack](https://nexcmp.com/hi/docs/infrastructure/cloudstack/) देखें। | | "टेम्पलेट CloudStack पर तैयार नहीं है - तैनाती विफल हो जाएगी। फिर भी सक्षम करें?" | आपने एक अधूरा टेम्पलेट सक्षम किया है | टेम्पलेट के तैयार होने की प्रतीक्षा करें। | | प्लान संपादित नहीं किया जा सकता ("has VMs - locked") | VMs इस प्लान का उपयोग करते हैं | इसे क्लोन करें। | | प्लान ग्राहकों को नहीं दिखाई देता | बंद है, छिपा हुआ है, या ज़ोन तैयार नहीं है | **Active**, **Visibility** और ज़ोन टैग की जाँच करें। [Zones](https://nexcmp.com/hi/docs/infrastructure/zones/) देखें। | | "कम से कम 1 बिलिंग चक्र चुनें" | कस्टम प्लान के लिए कोई साइकिल टिक नहीं किया गया | कम से कम एक चुनें। | | "बंडल छूट 0–50% के बीच होनी चाहिए" | सीमा से बाहर | 0 से 50 का उपयोग करें। | | VND मूल्य विकल्प गायब है | अभी तक कोई विनिमय दर नहीं है | पहले दर अपडेट करें। | --- # बैंडविड्थ कोटा और ऐड-ऑन {#bandwidth-quotas-and-add-ons} > **एडमिन में कहाँ:** Services › Bandwidth: Summary (`/bandwidth`), Add-on (`/bandwidth/addons`) और Quotas, pricing & policy (`/bandwidth/policy`)। मॉड्यूल स्विच System › Admin › License & updates में है। ## यह क्या करता है {#what-it-does} बैंडविड्थ हर मीटर की गई सेवा को मासिक ट्रैफ़िक **कोटा** देता है। NexCMP उपयोग को मापता है, 80% और 100% पर ग्राहक को चेतावनी देता है, और, जब कोटा पार हो जाता है, तो आपकी **ओवरऐज पॉलिसी** के अनुसार काम करता है। ग्राहक अपने वॉलेट से अतिरिक्त टेराबाइट के **ऐड-ऑन** खरीद सकते हैं; आप ऐड-ऑन मुफ्त में भी दे सकते हैं। | सेवा | कोटा | |---|---| | Virtual Machines | प्रति VM प्रति माह (डिफ़ॉल्ट 2048 GB, यानी 2 TB) | | Kubernetes | वर्कर की संख्या से गुणा किया गया VM कोटा | | Object Storage | प्रति ग्राहक प्रति माह डाउनलोड ट्रैफ़िक (डिफ़ॉल्ट 100 GB); इसके बाद सामान्य पे-एज़-यू-गो मूल्य लागू होता है | | VPN | अपने प्लान का कोटा रखता है; VPN पेज पर बैंडविड्थ अपग्रेड करें | | Private Cloud | **Unmetered** | ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | मॉड्यूल | **Bandwidth** डिफ़ॉल्ट रूप से चालू रहता है। इसे छिपाने के लिए License & updates के तहत बंद करें। | | माप स्रोत | डिफ़ॉल्ट स्रोत के साथ, **CloudStack VM statistics**। CloudStack में VM सांख्यिकी संग्रहण सक्षम रखें; 720 मिनट का डिफ़ॉल्ट रिटेंशन पर्याप्त है। | | Proxmox VE | Proxmox VE पर VMs **मीटर नहीं किए जाते** हैं। | | विनिमय दर | ऐड-ऑन मूल्य VND में दर्ज किया जाता है। [Currency and exchange rates](https://nexcmp.com/hi/docs/catalog/currency-and-exchange-rates/) देखें। | | इस पर निर्भर करता है | VM और Kubernetes ट्रैफ़िक के लिए [CloudStack](https://nexcmp.com/hi/docs/infrastructure/cloudstack/), स्टोरेज डाउनलोड के लिए [S3](https://nexcmp.com/hi/docs/infrastructure/s3/)। | ## बुनियादी ढांचा तैयार करें {#prepare-the-infrastructure} CloudStack कनेक्ट होने के अलावा किसी अन्य चीज़ की आवश्यकता नहीं है। NexCMP खाते के सभी VMs के लिए `listVirtualMachinesUsageHistory` को एक कॉल में, हर 5 मिनट में, अधिकतम दो घंटे की विंडो में पढ़ता है। प्रत्येक सैंपल एक मिनट को कवर करता है और **जोड़ा जाता है**। सैंपल तीन मिनट पहले लिए जाते हैं ताकि उन्हें पहुँचने का समय मिल सके। CloudStack के रिटेंशन (लगभग 12 घंटे) से अधिक लंबा गैप छोड़ दिया जाता है और रिकॉर्ड किया जाता है। ::: info संख्याओं का अर्थ उपयोग प्रत्येक VM के नेटवर्क इंटरफ़ेस पर गिना जाता है, इसलिए इसमें VMs के बीच का ट्रैफ़िक भी शामिल होता है, न कि केवल इंटरनेट का ट्रैफ़िक। यह एज राउटर द्वारा गिने जाने वाले ट्रैफ़िक से थोड़ा अधिक हो सकता है। ::: ## NexCMP में कनेक्ट करें {#connect-in-nexcmp} 1. **Services › Bandwidth › Quotas, pricing & policy** खोलें। 2. मान सेट करें और **Save** पर क्लिक करें; एक कारण पूछा जाता है और रिकॉर्ड किया जाता है। वर्कर लगभग 30 सेकंड के भीतर बदलाव लागू करता है। | फ़ील्ड | डिफ़ॉल्ट | अर्थ | |---|---|---| | Bandwidth सक्षम करें (ग्राहक मेनू और ऐड-ऑन खरीदना) | चालू | मॉड्यूल के बिक्री पक्ष के लिए स्विच। | | VM, GB/महीना (Kubernetes = यह मान × वर्कर्स) | 2048 | प्रति अवधि प्रति VM कोटा। | | S3, GB डाउनलोड/महीना प्रति ग्राहक | 100 | इसके बाद सामान्य S3 पे-एज़-यू-गो लागू होता है। | | कोटा दिशा (VM, Kubernetes) | इन + आउट | या **Outbound only**। | | +1 TB मूल्य (VND) | 100,000 | कोट दर पर सेंट में परिवर्तित किया गया। | | प्रति खरीदारी अधिकतम (TB) | 50 | | | ओवरएज पॉलिसी | निलंबित करें | **notify**, **throttle** या **suspend** (नीचे)। | | वास्तविक निलंबन लागू करें | माइग्रेशन तिथि + 24 घंटे | इस तिथि से पहले कुछ भी निलंबित नहीं किया जाता है; ग्राहकों को केवल चेतावनी दी जाती है। | | थ्रॉटल दर सीमा (Mbps) | | केवल थ्रॉटल द्वारा उपयोग किया जाता है। | ![बेंडविड्थ पॉलिसी: डिफ़ॉल्ट कोटा, ऐड-ऑन मूल्य और ओवरएज पॉलिसी](https://nexcmp.com/hi/docs/images/catalog/bandwidth-01-policy.webp) ### ओवरएज पॉलिसी {#overage-policies} | पॉलिसी | जब कोई सेवा 100% पार कर जाती है तो क्या होता है | |---|---| | **notify** | ग्राहक को सूचित किया जाता है। इसके अलावा कुछ नहीं। | | **throttle** | अभी के लिए notify की तरह: इस रिलीज़ में स्पीड लिमिटर कनेक्ट नहीं है। | | **suspend** (डिफ़ॉल्ट) | VM, क्लस्टर या S3 खाता तब तक निलंबित रहता है जब तक कि ग्राहक ऐड-ऑन नहीं खरीदता या अगली अवधि शुरू नहीं होती। **suspend-from** तिथि से ही प्रभावी। | 80% और 100% अलर्ट (घंटी और ई-मेल) हमेशा चलते हैं, प्रति थ्रेशोल्ड, अवधि और सेवा एक बार। यदि आप किसी ऐसी सेवा को अनलॉक करते हैं जो कोटा से अधिक होने के कारण बैंडविड्थ के लिए निलंबित कर दी गई थी, तो अगली जाँच (5 मिनट के भीतर) इसे फिर से निलंबित कर देती है। इसे चालू रखने के लिए, **ऐड-ऑन प्रदान करें**। ### उपयोग देखें और ऐड-ऑन प्रदान करें {#watch-usage-and-grant-add-ons} **Services › Bandwidth › Summary** खोलें। यह वर्तमान अवधि में प्रत्येक सेवा को उसके उपयोग, ऐड-ऑन सहित कोटा, शेष कोटा और 80% तथा 100% के अंकों के साथ सूचीबद्ध करता है। KPI टाइलें सेवाओं की संख्या, पिछले 30 दिनों में बिके ऐड-ऑन और कलेक्टर की स्थिति (रनिंग, कर्सर) दिखाती हैं। **Daily** तालिका वर्तमान अवधि को दिन-प्रतिदिन दिखाती है। ![कलेक्टर की स्थिति और प्रति सेवा उपयोग के साथ Bandwidth Summary](https://nexcmp.com/hi/docs/images/catalog/bandwidth-02-summary.webp) ग्राहक को जगह देने के लिए, किसी सेवा पर **Grant** का उपयोग करें (बिना किसी शुल्क के पूरे टेराबाइट का एक ऐड-ऑन)। खरीदारी और अनुदान के इतिहास के लिए, सबसे नया पहले, प्रकार फ़िल्टर के साथ **Add-on** खोलें। ![खरीद और मुफ्त अनुदान दिखाने वाला Add-on इतिहास](https://nexcmp.com/hi/docs/images/catalog/bandwidth-03-addons.webp) ### ग्राहक क्या देखते हैं {#what-customers-see} कस्टमर पोर्टल में उपयोग, शेष कोटा और वॉलेट से भुगतान किए जाने वाले **buy +1 TB** एक्शन (आपकी प्रति-खरीद अधिकतम सीमा तक) के साथ एक **Bandwidth** मेनू मिलता है। ऐड-ऑन वर्तमान अवधि के लिए मान्य हैं। ## सत्यापित करें {#verify} 1. **Summary** पर कलेक्टर चल रहा है और इसका कर्सर हर कुछ मिनटों में आगे बढ़ता है। 2. ट्रैफिक वाली VM लगभग 10 से 15 मिनट बाद उपयोग दिखाती है। 3. चेतावनी देखने के लिए, **test** इंस्टॉलेशन पर VM कोटा को कुछ GB तक कम करें और कुछ ट्रैफिक जनरेट करें। इसे प्रोडक्शन पर न करें: कोटा हर VM पर लागू होता है। ## सीमाएँ और नोट्स {#limits-and-notes} - उपयोग प्रति अवधि (एक महीना) गिना जाता है। ऐड-ऑन और कोटा वर्तमान अवधि पर लागू होते हैं। - "Enforce actual suspend from" आपको मॉड्यूल पहली बार सक्षम होने के तुरंत बाद ग्राहकों को निलंबित करने से बचाता है। - इस रिलीज़ में थ्रॉटल पॉलिसी केवल सूचित करती है। - कोटा बदलने से रीसेलर साइटों सहित हर साइट पर असर पड़ता है। रीसेलर के खुदरा और थोक ऐड-ऑन मूल्य उनके डिस्काउंट या मार्कअप का पालन करते हैं। - **Dedicated servers** के लिए बैंडविड्थ एक अलग विषय है; [Dedicated servers](https://nexcmp.com/hi/docs/infrastructure/dedicated/) देखें। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | चल रही VM के लिए उपयोग शून्य पर रहता है | वर्कर बंद है, CloudStack डिस्कनेक्ट है, या VM आँकड़े अक्षम हैं | `sudo nexcmp status` जांचें और **Test connection** करें [CloudStack](https://nexcmp.com/hi/docs/infrastructure/cloudstack/) में; CloudStack VM सांख्यिकी सक्षम करें। | | उपयोग में अंतराल हैं | CloudStack रिटेंशन पार हो गया था, या वर्कर लगभग 12 घंटे से अधिक समय तक बंद था | पुनर्प्राप्त करने योग्य नहीं; अंतराल दर्ज किया जाता है। | | उपयोग उम्मीद से थोड़ा अधिक है | VM के बीच ट्रैफिक और अन्य इंटरफ़ेस ट्रैफिक शामिल है | अपेक्षित; ग्राहकों को यह समझाएँ। | | अनलॉक करने के बाद एक निलंबित सेवा निलंबित ही वापस आती है | यह अभी भी कोटे से अधिक है | ऐड-ऑन प्रदान करें या कोटा बढ़ाएँ। | | पॉलिसी **suspend** होने के बावजूद कुछ भी निलंबित नहीं होता है | निलंबन-से तिथि भविष्य में है | इसे वर्तमान पर सेट करें (प्रभावी होने पर पेज "ACTIVE" दिखाता है)। | | "bw_over_policy notify, throttle या suspend होना चाहिए" | API के माध्यम से अमान्य पॉलिसी भेजी गई | तीन मानों में से एक का उपयोग करें। | | Proxmox VM कोई उपयोग नहीं दिखाते हैं | उनकी पैमाइश नहीं की जाती है | अपेक्षित। | | ग्राहक ऐड-ऑन नहीं खरीद सकते | बैंडविड्थ बंद है, या वॉलेट खाली है | स्विच और वॉलेट की जाँच करें। | --- # मुद्रा और विनिमय दरें {#currency-and-exchange-rates} > **एडमिन में कहाँ:** दरों के लिए Finance › Payment channels › Exchange rates (`/payments/fx`)। System › Settings › Brand (`/settings/branding`) **Site currency** स्विच के लिए। ## यह क्या करता है {#what-it-does} NexCMP वॉलेट और इनवॉइस को USD में रखता है। VM plan की कीमतें प्रति घंटे माइक्रो-डॉलर के रूप में स्टोर की जाती हैं। डिस्प्ले करेंसी ग्राहकों को प्रकाशित दर पर अपनी मुद्रा में USD राशि देखने की सुविधा देती हैं; वे वॉलेट बैलेंस को नहीं बदलती हैं। कुछ सेवाएं VND में दर्ज की गई कीमतें स्वीकार करती हैं, जिनमें बैंडविड्थ ऐड-ऑन, S3, Private Cloud और मौजूदा Bare Metal plans शामिल हैं जो VND मूल्य निर्धारण बनाए रखते हैं। Sepay के माध्यम से बैंक ट्रांसफ़र का भुगतान VND में किया जाता है। दरें **एक एडमिनिस्ट्रेटर द्वारा प्रकाशित** की जाती हैं। कोई भी चीज़ अपने आप रीफ्रेश नहीं होती, इसलिए आपके द्वारा सहेजी गई दरें तब तक बिल्कुल वैसी ही रहती हैं जब तक आप अपडेट बटन नहीं दबाते। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | इंटरनेट एक्सेस | पैनल सर्वर को `open.er-api.com` (USD/VND के लिए) और `api.frankfurter.dev` (अन्य मुद्राओं के लिए) तक पहुँचना चाहिए जब आप **Update exchange rates** दबाते हैं। | | अनुमतियाँ | बदलावों के लिए एक एडमिनिस्ट्रेटर; हर बदलाव के लिए एक कारण पूछा जाता है। | | इस पर निर्भर करता है | कुछ नहीं। [Plans](https://nexcmp.com/hi/docs/catalog/plans/), [Bandwidth](https://nexcmp.com/hi/docs/catalog/bandwidth/), [S3](https://nexcmp.com/hi/docs/infrastructure/s3/) और VND बैंक ट्रांसफर इस दर का उपयोग करते हैं। | ## बुनियादी ढांचा तैयार करें {#prepare-the-infrastructure} आवश्यक नहीं है। यदि आपका सर्वर आउटबाउंड ट्रैफ़िक को फ़िल्टर करता है, तो उपरोक्त दोनों सेवाओं के लिए HTTPS की अनुमति दें। ## NexCMP में कनेक्ट करें {#connect-in-nexcmp} ### 1. साइट मुद्रा चुनें {#_1-choose-the-site-currency} **System › Settings › Brand** खोलें और **Site currency** सेट करें: | विकल्प | ग्राहक क्या देखते हैं | |---|---| | **Language-based (auto)** (नए इंस्टॉलेशन में डिफ़ॉल्ट) | पोर्टल भाषा से प्रदर्शन मुद्रा चुनता है (नीचे दी गई तालिका)। ग्राहक इसके बजाय USD चुन सकते हैं। | | **USD** | कीमतें और शेष राशि केवल USD में। कोई मुद्रा स्विच और कोई परिवर्तित राशि नहीं। | | **VND** | लेगेसी सेटिंग; Auto के समान ही भाषा-आधारित प्रदर्शन नियमों का पालन करती है। | सहेजें। ग्राहक पृष्ठ लगभग एक मिनट के भीतर अपडेट हो जाते हैं। जब साइट ग्राहक की भाषा का पालन करती है: | भाषा | डिस्प्ले मुद्रा | |---|---| | अंग्रेज़ी | USD | | वियतनामी | VND | | चीनी (सरलीकृत / पारंपरिक) | CNY / TWD | | जापानी, कोरियाई | JPY, KRW | | फ्रेंच, जर्मन, स्पैनिश, इतालवी | EUR | | पुर्तगाली, रूसी | BRL, RUB | | अरबी, हिंदी | SAR, INR | | इंडोनेशियाई, थाई | IDR, THB | जिस मुद्रा की दर प्रकाशित नहीं की गई है, वह ऑफ़र नहीं की जाती: पोर्टल USD पर वापस आ जाता है। ### 2. दरें प्रकाशित करें {#_2-publish-the-rates} 1. **Finance › Payment channels › Exchange rates** खोलें। 2. कार्ड **Currency by language** प्रति USD दर, स्रोत (Frankfurter) और अंतिम अपडेट के समय के साथ 11 डिस्प्ले मुद्राओं को सूचीबद्ध करता है। **Update exchange rates** पर क्लिक करें। यह बटन एक ही चरण में दो काम करता है: यह **USD/VND** के लिए सार्वजनिक बाज़ार तालिका पढ़ता है और अन्य 11 दरों को पढ़ता है। किसी को भी सहेजने से पहले दोनों की जांच की जाती है। यदि कोई एक विफल हो जाता है, तो कुछ भी नहीं बदला जाता है और पिछली दरें बनी रहती हैं। 3. कार्ड **Active exchange rate** लागू USD/VND दर, उसका स्रोत टैग (सार्वजनिक बाज़ार या फिक्स्ड), मार्जिन और टाइमस्टैम्प के साथ बाज़ार संदर्भ आंकड़े दिखाता है। 4. कार्ड **Config** (कारण के साथ सहेजें): | फ़ील्ड | अर्थ | Range | |---|---|---| | Margin (bp, 100 = 1 %) | मार्केट रेफरेंस रेट के ऊपर जोड़ा जाता है। प्रभावी दर रेफरेंस रेट और मार्जिन का योग होती है, जिसे राउंड अप किया जाता है। | 0 से 1000 | | फिक्स्ड दर (प्रति USD VND, 0 = बाज़ार का अनुसरण करें) | वह दर जो आप स्वयं निर्धारित करते हैं। यह बाज़ार के आंकड़े की जगह लेती है। | 0 या 15,000 से 50,000 | | Jump threshold (bp) | ऐसी नई बाज़ार दर जो वर्तमान दर से इससे अधिक भिन्न होती है, आपके पुष्टि करने तक **होल्ड** पर रखी जाती है। | 50 से 2000 (डिफ़ॉल्ट 500) | | VND rounding step | VND मूल्यों और बैंक-ट्रांसफर राशियों को पूर्णांकित करता है। | 1, 100, 1,000 (डिफ़ॉल्ट) या 10,000 | 5. यदि कोई नई बाज़ार दर सीमा से अधिक बदल जाती है, तो कार्ड **Pending exchange rate** दिखाई देता है और दर **लागू नहीं की जाती है**। अपने चुने हुए संदर्भ से इसका मिलान करें और **Apply this rate** पर क्लिक करें। 15,000 से 50,000 VND प्रति USD के दायरे से बाहर के मार्केट रेट को अमान्य मानकर अस्वीकार कर दिया जाता है। मैन्युअल रीफ़्रेश प्रति पांच मिनट में एक अनुरोध तक सीमित हैं, इसलिए बटन आपसे प्रतीक्षा करने के लिए कह सकता है। 6. **Exchange rate history** तालिका में प्रत्येक फ़ेच किए गए या पुष्ट किए गए रेट को उसके समय, प्रभावी रेट, मार्केट संदर्भ, स्रोत, क्या इसे लागू किया गया था, इसे किसने किया था और एक नोट (रोके गए उछालों को **held** के रूप में चिह्नित किया जाता है) के साथ सूचीबद्ध किया जाता है। ## दर का उपयोग कैसे किया जाता है {#how-a-rate-is-used} | Place | Rule | |---|---| | Wallet and invoices | USD सेंट। दर कभी भी बैलेंस नहीं बदलती। | | VND में दर्ज किए गए VM प्लान | सेव करते समय प्रभावी रेट पर **एक बार** कनवर्ट किया जाता है, फिर USD में स्टोर किया जाता है। बाद में रेट में होने वाले बदलाव इन VM प्लान की कीमत दोबारा निर्धारित नहीं करते हैं। | | Sepay के माध्यम से बैंक ट्रांसफर | ग्राहक `ceil(USD × rate)` भुगतान करता है, जिसे पूर्णांक चरण तक ऊपर की ओर पूर्णांकित किया जाता है। USD/VND दर मौजूद होने तक Sepay **अवरुद्ध** रहता है। | | Bare Metal प्लान | नए इंस्टॉलेशन सीधे USD का उपयोग करते हैं। मौजूदा VND प्लान अपनी मूल्य इकाई बनाए रखते हैं और चार्ज करते समय उन्हें रेट की आवश्यकता होती है; [Dedicated servers](https://nexcmp.com/hi/docs/infrastructure/dedicated/) देखें। | | VND में दर्ज अन्य अंतर्राष्ट्रीय भुगतान | निकटतम सेंट तक पूर्णांकित। | | पोर्टल में प्रदर्शन | प्रदर्शन मुद्रा की प्रकाशित दर से गुणा किया गया USD, भाषा के अनुसार स्वरूपित। | ## सत्यापित करें {#verify} 1. **Active exchange rate** हाल के "fetched" समय के साथ USD/VND मान दिखाता है। 2. ग्रिड **Currency by language** गैर-रिक्त दरें दिखाता है। 3. कस्टमर पोर्टल में, भाषा को वियतनामी में बदलें (साइट करेंसी Auto): कीमतें डोंग में दिखाई देती हैं; जापानी में बदलें: येन। साइट करेंसी USD होने पर, केवल डॉलर दिखाए जाते हैं। 4. प्लान फॉर्म (Plans & pricing) पर **Enter price by** सूची **VND / month** प्रदान करती है। ## सीमाएँ और नोट्स {#limits-and-notes} - कोई स्वचालित रीफ़्रेश नहीं। जब आप नई दरें चाहते हैं तो **Update exchange rates** दबाएं, और यदि दरें आपके लिए मायने रखती हैं तो एक रिमाइंडर सेट करें। - USD/VND के लिए सार्वजनिक मार्केट रेट का उपयोग किया जाता है; यह बैंक खरीद या बिक्री कोट के बजाय एक संदर्भ दर है। अन्य डिस्प्ले करेंसी Frankfurter से आती हैं; 14 दिनों से अधिक पुरानी तारीख या अधूरी तालिका को अस्वीकार कर दिया जाता है। - मार्جين और एक निश्चित दर केवल USD/VND को प्रभावित करते हैं। 11 प्रदर्शन मुद्राओं पर कोई मार्जिन नहीं होता है। - प्रत्येक ग्राहक की भाषा की एक मुद्रा होती है। भाषा बदलने पर वह उसी भाषा की मुद्रा पर रीसेट हो जाती है, जब तक कि ग्राहक ने उसी भाषा के लिए USD न चुना हो। - रिफeller साइटें समान दरों का पालन करती हैं। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | "नया विनिमय दर सीमा से अधिक विचलन करता है - होल्ड पर है, मैन्युअल पुष्टि आवश्यक है" | छलांग (जंप) सीमा (थ्रेशोल्ड) से अधिक है | सत्यापित करें और **Apply this rate** पर क्लिक करें, या सीमा बदलें। | | "सर्वर ने नई विनिमय दर अस्वीकार कर दी" | मार्केट का आंकड़ा 15,000 से 50,000 के बाहर है या विकृत है | प्रतीक्षा करें और पुनः प्रयास करें, या कोई निश्चित दर सेट करें। | | रीफ़्रेश करने पर पुनः प्रयास करने से पहले प्रतीक्षा करने के लिए कहा जाता है | बहुत बार होने वाले अपडेट | प्रतीक्षा करें और पुनः प्रयास करें। | | "दर प्राप्त नहीं की जा सकी: …" | पैनल सर्वर दर सेवाओं तक नहीं पहुँच सकता है | आउटबाउंड HTTPS की अनुमति दें और पुनः प्रयास करें। | | **Sepay blocked** टैग | अभी तक कोई USD/VND दर प्रकाशित नहीं की गई है | **Update exchange rates** दबाएं या एक निश्चित दर सेट करें। | | पोर्टल में कोई मुद्रा गायब है | इसकी दर गायब है | **Update exchange rates** दबाएं। | | ग्राहकों को कीमतें केवल USD में दिखाई देती हैं | साइट की मुद्रा USD है, या दर गायब है | **Site currency** को Auto पर सेट करें और रेट प्रकाशित करें। | | "Fx अधूरी दर तालिका; पिछली दरें सुरक्षित रखी गईं" | Frankfurter ने 11 से कम मुद्राएँ लौटाईं | बाद में पुनः प्रयास करें; कुछ भी बदला नहीं गया था। | | प्लान फ़ॉर्म में VND विकल्प गायब है | कोई USD/VND दर नहीं है | पहले एक दर प्रकाशित करें। | --- # भुगतान चैनल {#payment-channels} > **प्रशासन में कहाँ:** Finance › Payment channels (`/payments`)। स्विच और शुल्क: Finance › Payment channels › Fees & limits (`/payments/fees`)। NexCMP एक **प्रीपेड USD वॉलेट** का उपयोग करता है। ग्राहक भुगतान चैनल के माध्यम से वॉलेट में पैसे जोड़ते हैं; इसके बाद प्रत्येक सेवा का भुगतान वॉलेट से किया जाता है। कोई चैनल ग्राहकों को तभी दिखाया जाता है जब वह **सक्षम** और **कॉन्फ़िगर** दोनों हो। ## यह क्या करता है {#what-it-does} भुगतान चैनल आपके भुगतान खातों (Stripe, PayPal, Binance, एक वियतनामी बैंक) को ग्राहक वॉलेट से जोड़ते हैं। एक पुष्ट भुगतान ठीक एक वॉलेट क्रेडिट बन जाता है — प्रत्येक क्रेडिट गेटवे भुगतान ID द्वारा पहचाना जाता है, इसलिए एक दोहराया गया वेबहुक कभी भी दो बार पैसे नहीं जोड़ सकता है। यह देखने के लिए इस पृष्ठ का उपयोग करें कि कौन से चैनल तैयार हैं, उन्होंने पिछले 30 दिनों में कैसा प्रदर्शन किया, और किन पर ध्यान देने की आवश्यकता है। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | सार्वजनिक HTTPS पता | गेटवे `https:///v1/billing/...` पर वेबहुक भेजते हैं, इसलिए आपके पैनल को वैध TLS पर इंटरनेट से पहुँचा जा सकने योग्य होना चाहिए (देखें [DNS and Cloudflare](https://nexcmp.com/hi/docs/getting-started/dns-and-cloudflare/))। | | खाते | प्रत्येक प्रदाता के साथ आपका अपना खाता जिसे आप उपयोग करना चाहते हैं। क्रेडेंशियल एडमिन में दर्ज किए जाते हैं और फिर कभी नहीं दिखाए जाते हैं (केवल अंतिम 4 वर्ण)। | | एडमिन भूमिका | एक प्रशासक खाता। | | डिपेंडेंसी | कोई नहीं। VN बैंक चैनल को अतिरिक्त रूप से एक [exchange rate](https://nexcmp.com/hi/docs/catalog/currency-and-exchange-rates/) की आवश्यकता होती है। | ## चैनल {#the-channels} | चैनल | ग्राहक क्या देखता है | इसमें सेट अप करें | लेख | |---|---|---|---| | कार्ड (Stripe) | कार्ड फॉर्म, सहेजा गया कार्ड | Payment channels › Stripe | [Stripe](https://nexcmp.com/hi/docs/billing/stripe/) | | Apple Pay, Google Pay, Link | वॉलेट बटन (Stripe Express Checkout) | Stripe, साथ ही डोमेन पंजीकरण | [Stripe](https://nexcmp.com/hi/docs/billing/stripe/#apple-pay-google-pay-and-link) | | Alipay | Alipay पर रीडायरेक्ट (Stripe द्वारा JPY में शुल्क लिया जाता है) | Stripe, साथ ही Fees & limits | [Stripe](https://nexcmp.com/hi/docs/billing/stripe/#alipay) | | PayPal | PayPal बटन, सहेजा गया PayPal खाता | Payment channels › PayPal | [PayPal](https://nexcmp.com/hi/docs/billing/paypal/) | | USDT | जमा पता और सटीक राशि | Payment channels › USDT | [USDT](https://nexcmp.com/hi/docs/billing/usdt/) | | VN बैंक ट्रांसफर | QR कोड और ट्रांसफर विवरण (केवल वियतनामी इंटरफ़ेस) | Payment channels › VN bank transfer में | [Bank transfer (Vietnam)](https://nexcmp.com/hi/docs/billing/bank-transfer-vn/) | ## बुनियादी ढांचा तैयार करें {#prepare-the-infrastructure} आवश्यक नहीं। सब कुछ एडमिन में कॉन्फ़िगर किया गया है; सर्वर पर कुछ भी इंस्टॉल करने की आवश्यकता नहीं है। ## NexCMP में कनेक्ट करें {#connect-in-nexcmp} 1. **Finance › Payment channels** (`/payments`) खोलें। ओवरव्यू तालिका प्रत्येक चैनल को उसकी स्थिति के साथ सूचीबद्ध करती है। 2. चैनल का अपना टैब (**Stripe**, **PayPal**, **USDT**, **VN bank transfer**) खोलें और उसका लेख फॉलो करें। प्रत्येक टैब के अंत में एक **Save** बटन और, जहाँ उपलब्ध हो, एक **Test** बटन होता है। 3. **Fees & limits** (`/payments/fees`) खोलें, कार्ड **Payment gateways & fees (wallet top-up)** ढूंढें, इसके स्विच से चैनल चालू करें और **Save channels & fees** पर क्लिक करें। ![सक्षम, कॉन्फ़िगर किए गए और 30-दिन के आंकड़ों के साथ गेटवे को सूचीबद्ध करने वाला Payment channels overview](https://nexcmp.com/hi/docs/images/billing/payment-channels-01-overview.webp) ![चैनल स्विच और शुल्क फ़ील्ड के साथ Fees and limits पेज](https://nexcmp.com/hi/docs/images/billing/payment-channels-02-fees.webp) ### स्विच और शुल्क (Fees & limits) {#switches-and-fees-fees-limits} | सेटिंग | डिफ़ॉल्ट | अर्थ | |---|---|---| | कार्ड (Stripe) | चालू (On) | डिपॉजिट स्क्रीन पर कार्ड फॉर्म। Stripe के पास सीक्रेट की होने तक छिपा रहता है। | | Apple Pay, Google Pay, Link | चालू (On) | वॉलेट बटन। ये तभी दिखाई देते हैं जब डोमेन Stripe पर सत्यापित हो जाता है। | | Alipay | बंद | Stripe डैशबोर्ड में Alipay सक्रिय होना आवश्यक है। | | PayPal | बंद | केवल तब दिखाया जाता है जब PayPal कॉन्फ़िगर किया गया हो। | | USDT (Binance) | बंद | डिपॉजिट पते को Binance के विरुद्ध सत्यापित किए जाने तक स्विच लॉक रहता है। | | Stripe शुल्क % / निश्चित (सेंट) | 3.6 % और 0 | ग्राहक को शुल्क दिखाने और क्रेडिट की जाने वाली राशि की गणना करने के लिए उपयोग किया जाता है। इसे अपने वास्तविक Stripe टैरिफ पर सेट करें। | | PayPal शुल्क % / निश्चित | 4.4 % और 30 सेंट | वही, PayPal के लिए। | | USDT शुल्क % | 1 % | वही, USDT के लिए। | | कस्टमर टॉप-अप शुल्क का भुगतान करता है | बंद | **On**: कस्टमर राशि + शुल्क का भुगतान करता है और वॉलेट में पूरी राशि जमा होती है। **Off**: शुल्क काट लिया जाता है और वॉलेट में शुल्क घटाकर शेष राशि जमा होती है। | कस्टमर भुगतान करने से पहले हमेशा शुल्क और अंतिम वॉलेट क्रेडिट देखता है। किसी चैनल को बंद करने पर बटन छिप जाता है और सर्वर `method_disabled` (HTTP 403) के साथ नए भुगतानों को अस्वीकार कर देता है। ::: tip Top-up limits प्रति टॉप-अप न्यूनतम और अधिकतम राशि उसी पेज पर होती है — देखें [Minimum top-up](https://nexcmp.com/hi/docs/billing/minimum-top-up/)। ::: ## सत्यापित करें {#verify} 1. अवलोकन तालिका पर चैनल **Enabled** और **Configured** दिखाता है; चैनल के टैब पर **Test** क्लिक करने के बाद **Last test** कॉलम भर जाता है। 2. एक टेस्ट ग्राहक के रूप में पोर्टल में साइन इन करें और **Billing › Deposit** खोलें। चैनल बटन मौजूद है। 3. एक छोटा भुगतान करें (टेस्ट कार्ड या सैंडबॉक्स खातों के लिए चैनल का लेख देखें)। बैलेंस बढ़ता है, एक **Top-up received** सूचना दिखाई देती है, और भुगतान **Finance › Billing › Top-ups** (`/billing/deposits`) में सूचीबद्ध होता है। ## Limits & notes {#limits-notes} - **अवलोकन कॉलम:** *30 days* (भुगतानों की संख्या, सफलताएँ, विफलताएँ और वॉल्यूम), *Stuck 24h* (वे भुगतान जो एक दिन बाद भी लंबित हैं) और *Unmatched* (USDT या बैंक ट्रांसफर जो पहुँचे लेकिन किसी ऑर्डर से मेल नहीं खाते)। KPI पंक्ति 30-दिन का वॉल्यूम, दोषपूर्ण चैनलों की संख्या (सक्षम लेकिन कॉन्फ़िगर नहीं किए गए, या अटके हुए भुगतान) और कुल बेमेल राशि जोड़ती है। - **Webhook events** **Payment channels › Gateway events** (`/payments/events`) के अंतर्गत सूचीबद्ध हैं। Stripe का अपना टैब है; PayPal और USDT एक साझा करते हैं। किसी विफल इवेंट को दोबारा चलाया जा सकता है — वॉलेट बहीखाता (ledger) आइडमपोटेंट है, इसलिए दोबारा चलाने से कभी भी दो बार क्रेडिट नहीं होता। - **Resellers** के पास अपने स्वयं के Stripe, PayPal, USDT और बैंक चैनल हो सकते हैं। उनकी पंक्तियाँ भी यहाँ दिखाई देती हैं, और हेडर में साइट चयनकर्ता उन्हें फ़िल्टर करता है। देखें [Resellers](https://nexcmp.com/hi/docs/customers/resellers/)। - **रिफ़ंड:** Stripe और PayPal भुगतानों को भुगतान सूची से रिफंड किया जा सकता है; USDT भुगतानों को स्रोत पर रिफंड नहीं किया जा सकता (सर्वर `usdt_no_refund` उत्तर देता है)। - **रखरखाव मोड (Maintenance mode)** अभी भी गेटवे वेबहुक स्वीकार करता है, इसलिए रखरखाव से ठीक पहले किया गया भुगतान खोता नहीं है। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | कस्टमर की डिपॉजिट स्क्रीन पर चैनल गायब है | बंद है, कॉन्फ़िगर नहीं किया गया है, या (VN बैंक) इंटरफ़ेस वियतनामी नहीं है | **Fees & limits** और चैनल टैब की जाँच करें; देखें [Bank transfer (Vietnam)](https://nexcmp.com/hi/docs/billing/bank-transfer-vn/)। | | KPI **Faulty channels** 0 से ऊपर है | कोई चैनल क्रेडेंशियल के बिना सक्षम किया गया है, या भुगतान 24 घंटे से अधिक समय से लंबित हैं | पंक्ति खोलें और **Configure** पर क्लिक करें; अटके हुए भुगतानों के लिए **Gateway events** खोलें और दोबारा चलाएं। | | कस्टमर ने भुगतान किया लेकिन बैलेंस नहीं बदला | वेबहुक नहीं पहुँचा | चैनल टैब पर वेबहुक URL की जाँच करें, फिर **Gateway events** में इवेंट को दोबारा चलाएं। | | Server answers `method_disabled` | स्विच बंद है | इसे **Fees & limits** में चालू करें और सेव करें। | | USDT स्विच धूसर (greyed out) है | डिपॉजिट पता सत्यापित नहीं है | USDT टैब पर **Test & verify address** पर क्लिक करें। | --- # Stripe > **एडमिन में कहाँ:** Finance › Payment channels › Stripe (`/payments/stripe`)। स्विच और शुल्क: Finance › Payment channels › Fees & limits (`/payments/fees`)। ## यह क्या करता है {#what-it-does} Stripe वॉलेट टॉप-अप के लिए कार्ड भुगतान स्वीकार करता है। इसी अकाउंट से आप **Apple Pay**, **Google Pay**, **Link** और **Alipay** भी दे सकते हैं, और ग्राहकों को [automatic top-up](https://nexcmp.com/hi/docs/billing/auto-top-up/) के लिए **कार्ड सेव** करने दे सकते हैं। अंतरराष्ट्रीय ग्राहकों के लिए इसे प्राथमिक चैनल के रूप में उपयोग करें। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | Stripe account | एक Stripe अकाउंट जो **USD** में भुगतान स्वीकार कर सके। Alipay से शुल्क JPY में लिया जाता है और इसे आपके अकाउंट के लिए Stripe द्वारा सक्रिय किया जाना चाहिए। | | Keys | एक गुप्त कुंजी (`sk_live_...` या `sk_test_...`) और एक सार्वजनिक कुंजी (`pk_live_...` या `pk_test_...`)। फॉर्म केवल इन उपसर्गों वाली कुंजियों को स्वीकार करता है। | | नेटवर्क | आपका पैनल इंटरनेट से HTTPS के माध्यम से पहुंच योग्य होना चाहिए (Stripe वेबहुक को कॉल करता है) और पोर्ट 443 पर `api.stripe.com` तक पहुंचना चाहिए। | | Domain (wallets only) | ग्राहक-सामने वाले डोमेन को `/.well-known/apple-developer-merchantid-domain-association` दिखाना होगा — NexCMP आपके लिए यह करता है। | | डिपेंडेंसी | कोई नहीं। | ::: info साझा किए गए Stripe अकाउंट NexCMP केवल उन भुगतानों के लिए वेबहुक इवेंट्स को प्रोसेस करता है जिन्हें इसने खुद बनाया है, इसलिए आप ऐसे Stripe अकाउंट का उपयोग कर सकते हैं जो किसी अन्य एप्लिकेशन को भी सेवा देता है। ::: ## बुनियादी ढांचा तैयार करें {#prepare-the-infrastructure} Stripe की तरफ़: 1. [Stripe Dashboard](https://dashboard.stripe.com) में साइन इन करें। यह तय करने के लिए कि आप परीक्षण कर रहे हैं या लाइव जा रहे हैं, **Test mode** को चालू या बंद करें। एक मोड की कुंजियाँ दूसरे के साथ कभी काम नहीं करतीं। 2. **Developers › API keys** खोलें। **Publishable key** कॉपी करें और **Secret key** को प्रकट करके कॉपी करें। गुप्त कुंजी को निजी रखें। 3. (वैकल्पिक) **Settings › Payment methods** खोलें और यदि आप इसे देना चाहते हैं तो **Alipay** सक्रिय करें। 4. आपको वेबहुक मैन्युअल रूप से बनाने की आवश्यकता **नहीं** है — NexCMP इसे आपके लिए बना सकता है (नीचे चरण 5 देखें)। यदि आप इसे मैन्युअल रूप से करना पसंद करते हैं, तो **Developers › Webhooks** में [Webhook](#webhook) में सूचीबद्ध URL और इवेंट्स के साथ एक एंडपॉइंट बनाएं। ## NexCMP में कनेक्ट करें {#connect-in-nexcmp} 1. **Finance › Payment channels › Stripe** (`/payments/stripe`) खोलें। 2. **API keys** कार्ड में **Mode** (`live` या `test`) चुनें, **Secret key** और **Publishable key** पेस्ट करें। 3. **Save** पर क्लिक करें। कुंजियाँ सर्वर पर एक कॉन्फ़िगरेशन फ़ाइल में लिखी जाती हैं जिसे केवल NexCMP सर्विस अकाउंट पढ़ सकता है। उन्हें कभी भी ब्राउज़र पर वापस नहीं भेजा जाता है; उसके बाद पेज केवल अंतिम 4 वर्ण दिखाता है। 4. **Check** पर क्लिक करें। एक संवाद बॉक्स कनेक्शन, मोड, उपलब्ध और लंबित शेष राशि, अकाउंट ID, क्या चार्ज सक्षम हैं, क्या वेबहुक मौजूद है और क्या Alipay उपलब्ध है, इसकी रिपोर्ट करता है। एक लाल रेखा का मतलब है कि उस हिस्से पर ध्यान देने की आवश्यकता है। 5. **Webhook** कार्ड में **Create webhook** पर क्लिक करें और पुष्टि करें। NexCMP आवश्यक इवेंट के साथ एंडपॉइंट बनाने के लिए Stripe से कहता है और **Webhook signing secret** (`whsec_...`) को अपने आप भर देता है। फ़ील्ड में पहले से भरा हुआ URL `https:///v1/billing/stripe/webhook` है, उदाहरण के लिए `https://cloud.example.com/v1/billing/stripe/webhook`। 6. **Fees & limits** (`/payments/fees`) खोलें, **Card (Stripe)** चालू रखें, **Stripe fee %** और **Stripe fixed fee (cents)** को अपने वास्तविक टैरिफ पर सेट करें और **Save channels & fees** पर क्लिक करें। [Payment channels](https://nexcmp.com/hi/docs/billing/payment-channels/#switches-and-fees-fees-limits) देखें। ![मोड, गुप्त कुंजी और सार्वजनिक कुंजी के साथ Stripe पेज जो उदाहरण मानों से भरा हुआ है](https://nexcmp.com/hi/docs/images/billing/stripe-01-keys.webp) ### वेबहुक {#webhook} लाल बैनर "Missing webhook_secret" तब तक रहता है जब तक कि साइनिंग सीक्रेट सेव नहीं हो जाता। इसके बिना Stripe टॉप-अप **रिकॉर्ड नहीं किए जाते**, भले ही Stripe ने पैसे ले लिए हों। | आइटम | मान | |---|---| | URL | `https:///v1/billing/stripe/webhook` | | Events | `checkout.session.completed`, `payment_intent.succeeded`, `payment_intent.payment_failed`, `charge.refunded`, `charge.dispute.created`, `charge.dispute.closed`, `radar.early_fraud_warning.created`, `refund.updated`, `refund.failed` | | Signature | Stripe `Stripe-Signature` हेडर, HMAC-SHA256, 300 सेकंड की सहिष्णुता। खराब हस्ताक्षर वाले अनुरोधों को HTTP 400 मिलता है। | | Idempotency | प्रत्येक इवेंट ID को एक बार संग्रहीत किया जाता है; बार-बार डिलीवरी होने पर कभी भी दो बार क्रेडिट नहीं मिलता है। | यदि आपने ऐसे रिलीज़ से अपग्रेड किया है जिसने कम इवेंट्स रजिस्टर किए थे, तो **Create webhook** पर फिर से क्लिक करें — पुराना एंडपॉइंट रखा जाता है, इसलिए इसके बाद Stripe Dashboard में इसे हाथ से हटा दें। Webhook कार्ड में **24h events** और **Latest event** पंक्तियाँ बताती हैं कि क्या Stripe पैनल तक पहुँच रहा है। व्यक्तिगत इवेंट **Payment channels › Gateway events** (`/payments/events`, टैब Stripe) में सूचीबद्ध होते हैं, जहाँ प्रत्येक इवेंट को देखा जा सकता है (**Payload**) या फिर से चलाया जा सकता है (**Replay**)। ### Apple Pay, Google Pay and Link {#apple-pay-google-pay-and-link} 1. **Wallets (Apple Pay · Google Pay · Link) & Alipay** कार्ड में, फ़ील्ड **Customer app Domain registered with Stripe** आपके साइट के होस्ट नाम से पहले से भरी होती है (उदाहरण के लिए `cloud.example.com`)। 2. **Register / verify domain** पर क्लिक करें और पुष्टि करें। NexCMP Stripe के भुगतान विधि डोमेन में डोमेन पंजीकृत करता है और Stripe से इसे मान्य करने के लिए कहता है। 3. परिणाम **Apple Pay**, **Google Pay** और **Link** की स्थिति दिखाता है। Apple Pay केवल तभी दिखाई देता है जब स्थिति `active` हो। 4. **Fees & limits** में **Apple Pay · Google Pay · Link** चालू रखें। ![पंजीकृत डोमेन और Apple Pay, Google Pay तथा Link की स्थितियाँ दिखाने वाला वॉलेट कार्ड](https://nexcmp.com/hi/docs/images/billing/stripe-03-wallets.webp) ::: tip Apple Pay निष्क्रिय रहता है Apple Pay को आपके सार्वजनिक डोमेन पर HTTP 200 का उत्तर देने के लिए डोमेन-एसोसिएशन फ़ाइल की आवश्यकता होती है। यदि आप सामने Cloudflare या कोई अन्य प्रॉक्सी रखते हैं, तो `/.well-known/` को ब्लॉक न करें। ::: ### Alipay {#alipay} Alipay वैकल्पिक है। इसे **Stripe Dashboard › Settings › Payment methods** में सक्रिय करें, **Check** पर क्लिक करें और संवाद में Alipay उपलब्ध दिखने तक प्रतीक्षा करें, फिर **Alipay (Stripe, JPY display)** को **Fees & limits** में चालू करें। **Alipay fee %**, **Alipay fixed fee**, **¥/USD rate** (50–500) और **FX spread %** (0–20) सेट करें। ¥/USD दर को नियमित रूप से अपडेट करें; 7 दिनों से अधिक पुरानी होने पर पृष्ठ चेतावनी देता है। ## सत्यापित करें {#verify} 1. टेस्ट मोड में, पोर्टल में एक टेस्ट ग्राहक के रूप में साइन इन करें, **Billing** खोलें, **Deposit** पर क्लिक करें, **Card** चुनें और Stripe टेस्ट कार्ड `4242 4242 4242 4242` (कोई भी भविष्य की तिथि, कोई भी CVC) के साथ न्यूनतम भुगतान करें। 2. बैलेंस सेकंडों में बढ़ जाता है और भुगतान *Completed* स्थिति के साथ **Finance › Billing › Top-ups** के तहत दिखाई देता है। 3. **Payment channels › Gateway events › Stripe** खोलें: आपको प्रोसेस किए गए समय के साथ `checkout.session.completed` या `payment_intent.succeeded` दिखाई देना चाहिए। 4. Stripe पेज पर वापस, **24h events** 0 से ऊपर है। लाइव होने से पहले, **Mode** को `live` पर बदलें, लाइव कुंजियाँ पेस्ट करें और **Create webhook** पर फिर से क्लिक करें (टेस्ट और लाइव मोड के वेबहुक अलग-अलग होते हैं)। ## Limits & notes {#limits-notes} - **राशि और मुद्रा।** वॉलेट USD में हैं। कार्ड, वॉलेट और लिंक भुगतान USD में लिए जाते हैं; Alipay ग्राहक को JPY में दिखाया जाता है और आपकी दर पर रूपांतरित किया जाता है। - **शुल्क।** Stripe का वास्तविक शुल्क स्वचालित रूप से वापस नहीं पढ़ा जाता है; आपके द्वारा सेट किया गया शुल्क प्रतिशत यह तय करता है कि ग्राहक क्या देखता है और वॉलेट में क्या जमा किया जाता है। शुल्क शीर्ष पर जोड़ने के लिए *Fees & limits* में **Customer pays top-up fee** चुनें। - **सहेजे गए कार्ड।** जब ग्राहक *ऑटो टॉप-अप के लिए कार्ड सहेजें* को चुनता है, तो कार्ड आपके सर्वर पर नहीं, बल्कि Stripe पर सहेजा जाता है। [सहेजे गए भुगतान तरीके](https://nexcmp.com/hi/docs/billing/saved-payment-methods/) देखें। - **रिफंड।** कार्ड पर रिफंड देना एक दो-चरण की प्रक्रिया है: एक एडमिन पूर्ण किए गए भुगतान के लिए रिफंड अनुरोध बनाता है (**Finance › Billing › Top-ups**, भुगतान पर रिफंड कार्रवाई) और फिर इसे **Finance › Payouts › Card refunds** (`/billing/payouts`) के तहत स्वीकृत करता है। Alipay रिफंड एसिंक्रोनस होते हैं; असफल रिफंड (`refund.failed`) रोकी गई राशि को वॉलेट में वापस कर देता है। - **विवाद।** `charge.dispute.created` पर NexCMP ग्राहक का खाता ब्लॉक कर देता है, उनकी प्रीपेड सेवाओं को रोक देता है (कुछ भी हटाया नहीं जाता) और एक एडमिन अलर्ट भेजता है। यदि आप जीत जाते हैं (`charge.dispute.closed`), तो राशि वापस वॉलेट में क्रेडिट कर दी जाती है। - **प्रतीक्षारत भुगतान।** यदि कोई वेबहुक कभी नहीं आता है, तो NexCMP 10 मिनट से अधिक समय तक पेंडिंग रहने वाले भुगतानों की स्वयं Stripe के विरुद्ध जाँच करता है और उन्हें पूरा करता है। 7 दिन से पुराने भुगतानों को छोड़ दिया जाता है। - **Resellers** अपना खुद का Stripe खाता (वेबहुक `https:///v1/billing/stripe/webhook/r/`) जोड़ सकते हैं; [Resellers](https://nexcmp.com/hi/docs/customers/resellers/) देखें। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | "Secret key sk_live_/sk_test_ से शुरू होनी चाहिए" | गलत कुंजी पेस्ट की गई | **Developers › API keys** से सीक्रेट कुंजी पेस्ट करें। | | "Secret key live/test मोड से मेल नहीं खाती" | मोड और कुंजी मेल नहीं खाते | **Mode** को कुंजी के उपसर्ग (prefix) के अनुरूप बनाएं। | | "Publishable key pk_ से शुरू होनी चाहिए" | Wrong key | पब्लिशेबल कुंजी का उपयोग करें। | | जांच से पता चलता है कि कनेक्शन विफल हो गया | गलत कुंजी, निरस्त की गई कुंजी, या सर्वर तक नहीं पहुंच सकता `api.stripe.com` | कुंजी को दोबारा पेस्ट करें; सर्वर से `curl -I https://api.stripe.com` के साथ परीक्षण करें। | | लाल बैनर "Missing webhook_secret" | साइनिंग सीक्रेट सहेजा नहीं गया है | **Create webhook** पर क्लिक करें या Stripe डैशबोर्ड से `whsec_...` सीक्रेट पेस्ट करें और **Save** करें। | | पैसा कट गया लेकिन बैलेंस नहीं बदला | वेबहुक डिलीवर नहीं हुआ या हस्ताक्षर विफल हो रहे हैं | जांच लें कि URL `/v1/billing/stripe/webhook` पर समाप्त होता है, सीक्रेट एंडपॉइंट से मेल खाता है, और **Gateway events** में इवेंट को रीप्ले करें। Stripe में, एंडपॉइंट खोलें और डिलीवरी प्रयासों को देखें (HTTP 400 का अर्थ गलत साइनिंग सीक्रेट है)। | | "Create webhook" fails | URL HTTPS नहीं है या पहुंच योग्य नहीं है | अपने सार्वजनिक `https://` डोमेन का उपयोग करें। | | Apple Pay स्थिति सक्रिय नहीं है | Domain not validated | डोमेन-एसोसिएशन फ़ाइल के 200 उत्तर देने के बाद **Register / verify domain** पर दोबारा क्लिक करें। | | चेक डायलॉग में Alipay उपलब्ध नहीं है | Not activated at Stripe | Stripe डैशबोर्ड में इसे सक्रिय करें, फिर **Check** पर क्लिक करें। | | ग्राहक को कोई कार्ड फॉर्म नहीं दिखता | **Card (Stripe)** बंद है या कोई गुप्त कुंजी नहीं है | इसे **Fees & limits** में चालू करें और कुंजियों को सहेजें। | --- # PayPal > **Where in the admin:** Finance › Payment channels › PayPal (`/payments/paypal`). द ऑन/ऑफ़ स्विच और फ़ीस Finance › Payment channels › Fees & limits (`/payments/fees`) में हैं। ## यह क्या करता है {#what-it-does} ग्राहकों को अपने PayPal बैलेंस, बैंक खाते या PayPal पर मौजूद कार्ड से अपने USD वॉलेट को टॉप अप करने देता है। ग्राहक [automatic top-up](https://nexcmp.com/hi/docs/billing/auto-top-up/) के लिए NexCMP को अपना PayPal खाता याद रखने की अनुमति भी दे सकते हैं। PayPal पसंद करने वाले ग्राहकों के लिए इसे [Stripe](https://nexcmp.com/hi/docs/billing/stripe/) के साथ उपयोग करें। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | PayPal account | एक PayPal **Business** खाता जो USD प्राप्त कर सकता है। | | REST app | PayPal डेवलपर डैशबोर्ड (**Apps & Credentials**) में एक REST ऐप जो **Client ID** और **Client secret** प्रदान करता है। परीक्षण के लिए **Sandbox** टैब का उपयोग करें, प्रोडक्शन के लिए **Live** का उपयोग करें। | | नेटवर्क | इंटरनेट से HTTPS पहुंच योग्य (PayPal वेबहुक को कॉल करता है) और `api-m.paypal.com` (लाइव) या `api-m.sandbox.paypal.com` (सैंडबॉक्स) तक आउटबाउंड एक्सेस, पोर्ट 443। | | अनुमतियाँ | REST ऐप को रिफंड और वेबहुक क्षमताओं की आवश्यकता है। **Check** डायलॉग दिखाता है कि दोनों स्कोप मौजूद हैं या नहीं। | | डिपेंडेंसी | कोई नहीं। | ## बुनियादी ढांचा तैयार करें {#prepare-the-infrastructure} 1. अपने बिजनेस खाते से [developer.paypal.com](https://developer.paypal.com) में साइन इन करें और **Apps & Credentials** खोलें। 2. **Sandbox** (परीक्षण) या **Live** चुनें, फिर **Create App** करें। इसका नाम उदाहरण के लिए "NexCMP" रखें। 3. ऐप का **Client ID** और **Secret** कॉपी करें। 4. परीक्षण के लिए, कोई *Personal* (खरीदार) सैंडबॉक्स खाता खोजने या बनाने के लिए **Testing Tools › Sandbox Accounts** का उपयोग करें। 5. आपको स्वयं वेबहुक बनाने की आवश्यकता नहीं है; NexCMP इसे **Create webhook** बटन से बनाता है। ## NexCMP में कनेक्ट करें {#connect-in-nexcmp} 1. **Finance › Payment channels › PayPal** खोलें (`/payments/paypal`)। 2. **API keys** में, **Mode** चुनें: `live` (वास्तविक धन, `api-m.paypal.com`) या `sandbox` (`api-m.sandbox.paypal.com`)। 3. **Client ID** (कम से कम 20 वर्ण) और **Client secret** पेस्ट करें। 4. **Check** पर क्लिक करें। यह आपके द्वारा टाइप किए गए क्रेडेंशियल्स की जांच करता है (सहेजना आवश्यक नहीं है) और कनेक्शन, ऐप आईडी, मोड, रिफंड और वेबहुक स्कोप मौजूद हैं या नहीं तथा टोकन की अवधि की रिपोर्ट देता है। 5. **Save** पर क्लिक करें। 6. **Webhook** कार्ड में पुष्टि करें कि URL `https:///v1/billing/paypal/webhook` है (यह `https` होना चाहिए), फिर **Create webhook** पर क्लिक करें और पुष्टि करें। NexCMP PayPal से 11 इवेंट के साथ वेबहुक बनाने या अपडेट करने का अनुरोध करता है और लौटाए गए **Webhook ID** को सहेजता है। बटन **सहेजी गई** कुंजियों का उपयोग करता है — यदि आपने अभी-अभी उनमें संपादन किया है तो पहले सहेजें। 7. **Check** पर फिर से क्लिक करें: **Webhook** पंक्ति में "exists, 11 events" लिखा होना चाहिए। 8. **Fees & limits** खोलें, **PayPal** को चालू करें, **PayPal fee %** (डिफ़ॉल्ट 4.4) और **PayPal fixed fee (cents)** (डिफ़ॉल्ट 30) को अपने टैरिफ के अनुसार सेट करें और **Save channels & fees** पर क्लिक करें। ![सैंडबॉक्स मोड और दर्ज किए गए उदाहरण क्रेडेंशियल्स के साथ PayPal पेज](https://nexcmp.com/hi/docs/images/billing/paypal-01-keys.webp) ### Webhook events {#webhook-events} NexCMP इन 11 इवेंट को पंजीकृत करता है: `CHECKOUT.ORDER.APPROVED`, `PAYMENT.CAPTURE.COMPLETED`, `PAYMENT.CAPTURE.PENDING`, `PAYMENT.CAPTURE.DECLINED`, `PAYMENT.CAPTURE.REFUNDED`, `PAYMENT.CAPTURE.REVERSED`, `CUSTOMER.DISPUTE.CREATED`, `CUSTOMER.DISPUTE.UPDATED`, `CUSTOMER.DISPUTE.RESOLVED`, `RISK.DISPUTE.CREATED`, `CHECKOUT.PAYMENT-APPROVAL.REVERSED`। प्रत्येक वेबहुक को PayPal के हस्ताक्षर-सत्यापन API को कॉल करके सत्यापित किया जाता है, एक बार संग्रहीत किया जाता है और आइडमपोटेंट तरीके से प्रोसेस किया जाता है। NexCMP वेबहुक बॉडी में दी गई राशि पर कभी भरोसा नहीं करता: कैप्चर को क्रेडिट करने से पहले यह PayPal से कैप्चर प्राप्त करता है। ## सत्यापित करें {#verify} 1. **Mode** को `sandbox` पर रखें। पोर्टल में, **Billing › Deposit** खोलें, **PayPal** चुनें, **Continue on PayPal** (या PayPal बटन) पर क्लिक करें और सैंडबॉक्स खरीदार खाते से लॉग इन करें। 2. भुगतान स्वीकृत करें। आप पोर्टल पर लौटते हैं, बैलेंस बढ़ जाता है और भुगतान **Finance › Billing › Top-ups** के अंतर्गत *Completed* के रूप में दिखाई देता है। 3. **Payment channels › Gateway events › PayPal & USDT** खोलें: `PAYMENT.CAPTURE.COMPLETED` इवेंट सूचीबद्ध है। 4. जब सब कुछ काम करे, तो **Mode** को `live` पर स्विच करें, लाइव क्रेडेंशियल्स दर्ज करें, **Save** करें, फिर **Create webhook** पर दोबारा क्लिक करें (सैंडबॉक्स और लाइव वेबहुक अलग-अलग होते हैं)। ## Limits & notes {#limits-notes} - **भुगतान कैसे पूरा होता है।** ऑर्डर USD में बनाया जाता है; ग्राहक द्वारा इसे स्वीकृत करने के बाद, **सर्वर** इसे कैप्चर करता है (आइडमपोटेंट अनुरोध आईडी) और वॉलेट को ठीक एक बार क्रेडिट करता है। यदि ग्राहक ब्राउज़र बंद कर देता है, तो वेबहुक और हर 10 मिनट में चलने वाला रिकंसीडिएशन जॉब सुरक्षा कवच का काम करते हैं। - **लंबित और छोड़े गए ऑर्डर।** एक ऑर्डर 12 घंटे तक खुला रह सकता है। एक ग्राहक के पास अधिकतम 5 लंबित ऑर्डर हो सकते हैं (सर्वर `too_many_pending`, HTTP 429 उत्तर देता है)। 24 घंटे के बाद भी कैप्चर न किया गया ऑर्डर विफल चिह्नित कर दिया जाता है। - **कोई वेबहुक कॉन्फ़िगर नहीं किया गया।** जब तक वेबहुक आईडी सहेजी नहीं जाती, पैनल प्रत्येक PayPal वेबहुक को HTTP 503 उत्तर देता है। पोर्टल के माध्यम से किए गए कैप्चर और 10 मिनट का रिकंसीडिएशन अभी भी वॉलेट को क्रेडिट करते हैं, लेकिन PayPal द्वारा वेबहुक के माध्यम से रिपोर्ट की गई कोई भी चीज़ (विवाद, उलटफेर, देर से कैप्चर) लागू नहीं होती है — **Create webhook** पर क्लिक करें। - **सहेजा गया PayPal खाता।** जब ग्राहक PayPal को सहेजना चुनता है (या पहला डिपॉजिट पूरा करता है, जिससे [automatic top-up](https://nexcmp.com/hi/docs/billing/auto-top-up/) चालू हो जाता है), तो PayPal अपने वॉल्ट में भुगतान टोकन संग्रहीत करता है। NexCMP केवल एक पहचानकर्ता और PayPal ईमेल रखता है। [Saved payment methods](https://nexcmp.com/hi/docs/billing/saved-payment-methods/) देखें। - **रिफंड और विवाद** को Stripe की तरह संभाला जाता है: रिफंड अनुरोध **Finance › Payouts › Card refunds** के अंतर्गत स्वीकृत किए जाते हैं; एक विवाद ग्राहक के खाते को ब्लॉक कर देता है और आपके द्वारा हल किए जाने तक उनकी प्रीपेड सेवाओं को रोक देता है। - **शुल्क।** PayPal का शुल्क वापस नहीं पढ़ा जाता है; आपके द्वारा कॉन्फ़िगर किया गया प्रतिशत और निश्चित शुल्क यह निर्धारित करता है कि ग्राहक को क्या दिखाई देता है और क्या क्रेडिट किया जाता है। वास्तविक टैरिफ आपके देश पर निर्भर करता है (फ़ॉर्म वियतनाम के लिए 4.4% और अमेरिका के लिए 3.49% का संकेत देता है)। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | "Client ID बहुत छोटा है" | 20 से कम वर्ण पेस्ट किए गए हैं | पूरा Client ID कॉपी करें। | | "वेबहुक URL https होना चाहिए" | URL इस प्रकार टाइप किया गया: `http://` | अपने सार्वजनिक `https://` डोमेन का उपयोग करें। | | जांच में कनेक्शन त्रुटि रिपोर्ट की जाती है | गलत मोड (सैंडबॉक्स में लाइव कुंजियाँ या इसके विपरीत), गलत गुप्त कुंजी, कोई आउटबाउंड एक्सेस नहीं | **Mode** को कुंजी प्रकार से मिलाएं; सर्वर से `curl -I https://api-m.paypal.com` का परीक्षण करें। | | स्कोप रिफंड / वेबहुक "no" दिखाता है | REST ऐप में सुविधाओं की कमी है | PayPal Developer Dashboard में ऐप पर सुविधाओं को सक्षम करें। | | बैनर "PayPal key set, NO webhook" | वेबहुक ID गायब है | **Create webhook** पर क्लिक करें। | | Check में "Webhook not found" | वेबहुक PayPal पर हटा दिया गया था या किसी अन्य ऐप से संबंधित है | **Create webhook** पर दोबारा क्लिक करें। | | ग्राहक को बताया जाता है कि PayPal ने भुगतान अस्वीकार कर दिया | PayPal ने उस फंडिंग स्रोत को अस्वीकार कर दिया | ग्राहक से कोई अन्य भुगतान स्रोत चुनने के लिए कहें। | | ग्राहक "Too many pending requests" देखता है | 5 खुले ऑर्डर | उनके समाप्त होने की प्रतीक्षा करें या उन्हें पूरा करें। | | PayPal बटन गायब है | **Fees & limits** में PayPal बंद है या कॉन्फ़िगर नहीं किया गया है | इसे चालू करें और क्रेडेंशियल सहेजें। | --- # USDT (Binance) {#usdt-binance} > **प्रशासन में कहाँ:** Finance › Payment channels › USDT (`/payments/usdt`)। स्विच और शुल्क: Finance › Payment channels › Fees & limits (`/payments/fees`)। बेमेल जमा: Finance › Payment channels › Gateway events › PayPal & USDT (`/payments/events?tab=gateways`)। ## यह क्या करता है {#what-it-does} ग्राहक **आपके Binance जमा पते** पर USDT भेजते हैं; NexCMP **रीड-ऑनली** Binance API कुंजी के माध्यम से जमा इतिहास पढ़ता है और जब कोई जमा किसी खुले अनुरोध से मेल खाती है, तो वॉलेट में राशि जमा करता है। Binance द्वारा लिए जाने वाले शुल्क के अलावा आपकी तरफ से कोई भुगतान-प्रोसेसर शुल्क नहीं लगता है, और NexCMP के पास कभी भी कोई निजी कुंजी नहीं होती है। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | Binance खाता | आपके द्वारा चुने गए नेटवर्क पर USDT जमा सक्षम वाला एक सत्यापित Binance खाता। | | API कुंजी | केवल **Enable Reading** वाली Binance API कुंजी। Enable Withdrawals, Internal Transfer और Spot/Margin Trading **बंद** होने चाहिए। | | IP प्रतिबंध | अत्यधिक अनुशंसित: कुंजी को सर्वर के आउटबाउंड IP तक सीमित करें (**Test & verify address** संवाद इसे दिखाता है)। | | नेटवर्क | `api.binance.com` पर आउटबाउंड HTTPS। किसी इनबाउंड पोर्ट की आवश्यकता नहीं है। | | समर्थित नेटवर्क | `TRX` (Tron, TRC20), `BSC` (BNB Smart Chain, BEP20), `SOL` (Solana), `ETH` (Ethereum, ERC20)। सिक्का USDT पर तय है। | | डिपेंडेंसी | कोई नहीं। | ::: warning नेटवर्क एक बार चुनें गलत नेटवर्क पर भेजने वाले ग्राहकों के फंड खो जाते हैं। कम शुल्क वाला वह नेटवर्क चुनें जिसका आपके ग्राहकों के एक्सचेंज समर्थन करते हैं (TRX और BSC सामान्य विकल्प हैं), और इसे बार-बार न बदलें। ::: ## बुनियादी ढांचा तैयार करें {#prepare-the-infrastructure} 1. Binance में **Account › API Management** खोलें और एक नई API कुंजी बनाएं (सिस्टम जनरेटेड)। इसे "NexCMP" जैसी लेबल दें। 2. अनुमतियाँ संपादित करें: केवल **Enable Reading** को चेक किया हुआ छोड़ें। निकासी, ट्रांसफर या ट्रेडिंग सक्षम न करें। 3. **Restrict access to trusted IPs only** के अंतर्गत अपने NexCMP सर्वर का पब्लिक IP पता जोड़ें। यदि आपको यह अभी ज्ञात नहीं है, तो बिना प्रतिबंध के कुंजी बनाएं, NexCMP में पहला परीक्षण चलाएं (यह आउटबाउंड IP प्रिंट करता है) और फिर IP जोड़ें। 4. **API key** और **Secret key** को कॉपी करें (सीक्रेट केवल एक बार दिखाया जाता है)। 5. **Wallet › Deposit › Crypto** खोलें, **USDT** और वह **network** चुनें जिसका आप उपयोग करेंगे, और **deposit address** कॉपी करें (उदाहरण के लिए TRX पर `T...` पता या BSC/ETH पर `0x...`)। ## NexCMP में कनेक्ट करें {#connect-in-nexcmp} 1. **Finance › Payment channels › USDT** (`/payments/usdt`) खोलें। 2. **API key (Binance › API Management)** में **API key** और **API secret** पेस्ट करें। दोनों को एक साथ दर्ज किया जाना चाहिए। 3. **Deposit address** में **Network** चुनें और **USDT deposit address on the selected network** पेस्ट करें। प्रारूप की नेटवर्क के विरुद्ध जाँच की जाती है (TRX के लिए `T` + 33 अक्षर, BSC और ETH के लिए `0x` + 40 हेक्स अक्षर, SOL के लिए base58)। 4. **Save** पर क्लिक करें। पता या नेटवर्क बदलने से सत्यापन रीसेट हो जाता है और चैनल तब तक暂停 रहता है जब तक आप इसे दोबारा सत्यापित नहीं करते; पेज आपसे पुष्टि करने के लिए कहता है। 5. **Test & verify address** पर क्लिक करें। (असंरक्षित बदलावों को अस्वीकार कर दिया जाता है — जाँच सहेजे गए कॉन्फ़िगरेशन पर चलती है।) संवाद बॉक्स दिखाता है: - कुंजी की अनुमतियाँ (पढ़ना, निकासी, आंतरिक स्थानांतरण, ट्रेडिंग, IP प्रतिबंध) — खतरनाक अनुमतियों के लिए लाल चेतावनियाँ; - सर्वर का आउटबाउंड IP (Binance में दर्ज करने के लिए); - नेटवर्क (डिपॉजिट खुले हैं या बंद, आवश्यक कन्फर्मेशन, डस्ट); - वह पता जो Binance उस नेटवर्क के लिए जारी करता है और क्या यह आपके पते से **मिल खाता है**। 6. जब पता मेल खा जाता है, तो NexCMP सत्यापन का समय रिकॉर्ड करता है। उसके बाद ही आप **Fees & limits** खोल सकते हैं, **USDT (Binance)** चालू कर सकते हैं, **USDT fee %** (डिफ़ॉल्ट 1) और **USDT request expires after (mins)** (5–180, डिफ़ॉल्ट 30) की जाँच कर सकते हैं, और **Save channels & fees** पर क्लिक कर सकते हैं। ## भुगतान का मिलान कैसे किया जाता है {#how-a-payment-is-matched} 1. ग्राहक **Billing › Deposit › USDT** में राशि दर्ज करता है और **Get deposit address** पर क्लिक करता है। 2. NexCMP एक अनुरोध बनाता है और छह दशमलव स्थानों के साथ पता, नेटवर्क और एक **सटीक राशि** दिखाता है — उदाहरण के लिए `19.173742`। अंतिम चार दशमलव स्थान एक यादृच्छिक नॉनस (nonce) हैं जो राशि को उस अनुरोध के लिए अद्वितीय बनाते हैं। 3. ग्राहक को उस नेटवर्क पर **बिल्कुल** वही राशि भेजनी होगी। भुगतान जो मेल नहीं खाता (गोलाकार राशि, गलत नेटवर्क) उसे स्वचालित रूप से असाइन नहीं किया जा सकता है। 4. हर 60 सेकंड में NexCMP पिछले 24 घंटों के Binance डिपॉजिट को पढ़ता है। एक मिलान करने वाला डिपॉजिट अनुरोध को *confirming* में ले जाता है, और एक बार जब Binance के पास आवश्यक कन्फर्मेशन हो जाते हैं, तो वॉलेट में क्रेडिट हो जाता है। कन्फर्मेशन लंबित रहने पर फंड देखने वाला अनुरोध कभी समाप्त नहीं होता है। 5. समाप्ति समय (डिफ़ॉल्ट 30 मिनट) के भीतर भुगतान न किया गया अनुरोध समाप्त (expired) चिह्नित किया जाता है। ## सत्यापित करें {#verify} 1. पते के सत्यापित होने और USDT चालू होने के बाद, एक परीक्षण ग्राहक के रूप में साइन इन करें और एक छोटे डिपॉजिट (न्यूनतम टॉप-अप) का अनुरोध करें। 2. दूसरे वॉलेट या एक्सचेंज से सटीक राशि भेजें। कुछ मिनट प्रतीक्षा करें। 3. पोर्टल *Transfer seen — confirming*, फिर *USDT received — balance updated* दिखाता है। 4. USDT पेज हालिया **Last poll** समय और 0 पर **Unmatched** दिखाता है। ## Limits & notes {#limits-notes} - **दर।** 1 USDT = 1.00 USD। **USDT fee %** में शुल्क ग्राहक को दिखाया जाता है और **Customer pays top-up fee** के आधार पर राशि से काटा जाता है या उसमें जोड़ा जाता है। - **कोई रिफंड नहीं।** NexCMP द्वारा USDT भुगतान कभी भी स्रोत पर वापस नहीं किए जाते हैं (HTTP 409 `usdt_no_refund`)। यदि आवश्यक हो तो सिस्टम के बाहर मैन्युअल रूप से रिफंड करें। - **लंबित सीमा।** एक ग्राहक के पास खुले अनुरोधों की एक सीमित संख्या होती है; उसके आगे सर्वर `too_many_pending` (HTTP 429) उत्तर देता है। - **Resellers** अपने स्वयं के Binance खाते का उपयोग कर सकते हैं; [Resellers](https://nexcmp.com/hi/docs/customers/resellers/) देखें। - **यदि आप Binance खाते को** किसी अन्य सिस्टम के साथ साझा करते हैं, तो प्रत्येक सिस्टम को एक अलग नेटवर्क दें ताकि दो पोलर कभी भी एक ही डिपॉज़िट को न देखें। ### बेमेल डिपॉज़िट {#unmatched-deposits} जो डिपॉज़िट किसी अनुरोध से मेल नहीं खाता (गलत राशि, गलत नेटवर्क, समाप्त अनुरोध), वह `deposit.unmatched` इवेंट और एडमिन अलर्ट बनाता है। **Payment channels › Gateway events › PayPal & USDT** खोलें, इवेंट ढूंढें, Binance पर ट्रांजेक्शन की जांच करें और सही ग्राहक को क्रेडिट करने के लिए असाइन एक्शन पर क्लिक करें। USDT पेज और चैनल ओवरव्यू पर **Unmatched** काउंटर इसके बाद 0 पर आ जाता है। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | "API की और secret को एक साथ दर्ज किया जाना चाहिए" | केवल एक फ़ील्ड भरा गया | दोनों भरें। | | "पता network के प्रारूप में नहीं है ..." | पता चयनित नेटवर्क के प्रारूप में नहीं है | इसे उसी नेटवर्क के लिए Binance से दोबारा कॉपी करें। | | "सहेजे न गए बदलाव — पहले Save करें फिर Test करें" | टेस्ट सहेजी गई सेटिंग पर चलता है | **Save** पर क्लिक करें, फिर टेस्ट करें। | | चेतावनी "key has Enable Withdrawals" | अतिरिक्त अनुमति | इसे Binance API Management में हटाएं। | | चेतावनी "key not restricted to IP" | `ipRestrict` बंद है | डायलॉग में दिखाया गया सर्वर का आउटबाउंड IP जोड़ें। | | चेतावनी "key lacks Enable Reading" | अनुमति अनुपस्थित है | Enable Reading सक्षम करें। | | चेतावनी "Binance has deposits disabled for USDT on the network" | नेटवर्क निलंबित | दूसरा नेटवर्क चुनें या प्रतीक्षा करें। | | "खतरा: कॉन्फ़िगर किया गया पता Binance द्वारा जारी किए गए पते से भिन्न है" | गलत पता या नेटवर्क | उस नेटवर्क के लिए Binance से पता फिर से कॉपी करें। | | Fees & limits में USDT स्विच ग्रे आउट है | पता सत्यापित नहीं है | **Test & verify address** तब तक चलाएं जब तक यह मेल न खा जाए। | | ग्राहक ने भुगतान किया, कुछ भी क्रेडिट नहीं हुआ | गोलाई गई राशि या गलत नेटवर्क | Gateway events में इवेंट ढूंढें और इसे हाथ से असाइन करें। | | डिपॉज़िट देखा गया लेकिन बहुत देर से प्रतीक्षा हो रही है | अभी तक पर्याप्त कन्फर्मेशन नहीं मिले हैं | प्रतीक्षा करें; कन्फर्म होने के दौरान अनुरोध समाप्त नहीं होता है। | --- # बैंक ट्रांसफर (वियतनाम) {#bank-transfer-vietnam} > **एडमिन में कहां:** Finance › Payment channels › VN bank transfer (`/payments/bank`)। विनिमय दर: Finance › Payment channels › Exchange rates (`/payments/fx`)। ## यह क्या करता है {#what-it-does} ग्राहकों को वियतनामी डोंग में सामान्य बैंक ट्रांसफर द्वारा USD वॉलेट टॉप अप करने देता है। NexCMP एक VietQR कोड, खाता विवरण और एक अद्वितीय **transfer memo** दिखाता है; [Sepay](https://sepay.vn) आपके बैंक खाते पर नज़र रखता है और पैसा आने पर वेबहुक कॉल करता है, और NexCMP वॉलेट को क्रेडिट करता है। यदि आप वियतनाम में ग्राहकों को बेचते हैं तो इसका उपयोग करें। ::: info केवल वियतनामी इंटरफ़ेस में दिखाया गया है VN बैंक विकल्प किसी ग्राहक को केवल तभी पेश किया जाता है जब पोर्टल **Vietnamese** में प्रदर्शित होता है। किसी अन्य भाषा के ग्राहक इसे कभी नहीं देखते हैं। ::: ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | बैंक खाता | [my.sepay.vn](https://my.sepay.vn) पर एक Sepay खाते से कनेक्टेड एक वियतनामी बैंक खाता (या Sepay वर्चुअल खाता, **VA**)। | | Sepay | वेबहुक इंटीग्रेशन सक्षम वाला एक Sepay खाता। | | विनिमय दर | USD से VND की दर मौजूद होनी चाहिए: इसे पहले **Exchange rates** के तहत अपडेट करें। दर के बिना चैनल `fx_unavailable` का उत्तर देता है और ग्राहक ट्रांसफर शुरू नहीं कर सकते। | | नेटवर्क | आपका पैनल HTTPS द्वारा एक्सेस करने योग्य होना चाहिए ताकि Sepay `https:///v1/billing/sepay/webhook` को कॉल कर सके। | | डिपेंडेंसी | [Currency and exchange rates](https://nexcmp.com/hi/docs/catalog/currency-and-exchange-rates/)। | ## बुनियादी ढांचा तैयार करें {#prepare-the-infrastructure} Sepay की ओर: 1. [my.sepay.vn](https://my.sepay.vn) में अपना बैंक खाता कनेक्ट करें (या VA बनाएं) और सुनिश्चित करें कि ट्रांजैक्शन दिखाई देते हैं। 2. **memo prefix** तय करें — 2 से 5 बड़े अक्षर, उदाहरण के लिए `PAY`। NexCMP प्रीफिक्स के बाद 8 यादृच्छिक अंकों के रूप में मेमो जेनरेट करता है (उदाहरण के लिए `PAY48210937`)। प्रीफिक्स में `ORD` नहीं होना चाहिए, और इसका उपयोग किसी अन्य सिस्टम द्वारा उसी खाते में पैसे प्राप्त करने के लिए नहीं किया जाना चाहिए। 3. यदि आपका Sepay खाता *payment code structure* का उपयोग करता है, तो Sepay को मेमो पहचानने के लिए वहां भी वही प्रीफिक्स रजिस्टर करें। 4. वेबहुक को बाद में बनाएं, जब NexCMP पेज आपको URL और कुंजी (नीचे दिया गया चरण 7) दे दे। ## NexCMP में कनेक्ट करें {#connect-in-nexcmp} 1. **Finance › Payment channels › Exchange rates** खोलें और यदि कोई दर स्टोर नहीं की गई है तो **Update exchange rates** पर क्लिक करें। 2. **Finance › Payment channels › VN bank transfer** (`/payments/bank`) खोलें। 3. **Receiving account** में भरें: | फ़ील्ड | Example | Rule | |---|---|---| | Bank | `VCB` Vietcombank | सूची में से चुनें; BIN स्वतः भर जाता है। | | Account number | `0123456789` | 4–24 अंक या बड़े अक्षर। | | वर्चुअल अकाउंट (VA — वैकल्पिक) | | यदि सेट किया जाता है, तो ग्राहक VA में ट्रांसफर करते हैं और QR इसे दिखाता है। | | Account holder name | `NGUYEN VAN A` | कोई एक्सेंट नहीं, UPPERCASE, 2–60 वर्ण। | | Transfer memo prefix | `PAY` | 2–5 बड़े अक्षर, कोई `ORD` नहीं। | 4. **Webhook authentication** में **Auth method** चुनें: **HMAC-SHA256** (अनुशंसित) या **API key**, और **Webhook key / HMAC secret** (8–200 वर्ण) दर्ज करें। वैकल्पिक रूप से Sepay से **userapi token** दर्ज करें; इसका उपयोग केवल उन ट्रांसफर का मिलान करने के लिए किया जाता है जिनका वेबहुक खो गया था। 5. **Channel & limits** में सीमाएं सेट करें (कोशिकाओं में डिफ़ॉल्ट): **Min / order** (10,000 VND), **Max / order** (200,000,000 VND), **Order expiry** (120 मिनट, 15–1440), **Max pending orders / account** (3, 1–10), **Reconcile every** (10 मिनट) और, वैकल्पिक रूप से, **Allowed webhook IPs** (अल्पविराम से अलग किए गए; खाली होने पर IP केवल लॉग किया जाता है)। 6. **Save** पर क्लिक करें। खाता, नाम, प्रीफिक्स और कुंजी मान्य होने के बाद लाल बैनर "Sepay not configured" गायब हो जाता है। 7. **Webhook URL to paste into my.sepay.vn** (यह `https:///v1/billing/sepay/webhook` है) को **Copy** से कॉपी करें। Sepay में webhook इंटीग्रेशन खोलें, URL पेस्ट करें, वही authentication टाइप और key चुनें, और "money in" इवेंट इनेबल करें। 8. **Test connection** पर क्लिक करें। फिर **Enable Sepay for clients (main site)** और **Save** चालू करें। ![VN बैंक ट्रांसफर पेज जिसमें उदाहरण मानों के साथ प्राप्त होने वाला खाता, मेमो प्रिफ़िक्स और वेबहुक ऑथेंटिकेशन भरे गए हैं](https://nexcmp.com/hi/docs/images/billing/bank-transfer-vn-01-config.webp) ![Sepay स्विच चालू और डिफ़ॉल्ट सीमाओं के साथ चैनल और सीमा कार्ड](https://nexcmp.com/hi/docs/images/billing/bank-transfer-vn-02-limits.webp) ### Webhook security {#webhook-security} | Method | Sepay को क्या भेजना होगा | |---|---| | HMAC-SHA256 | हेडर `X-SePay-Signature: sha256=`, `"."` पर गणना की गई; टाइमस्टैम्प में अधिकतम 300 सेकंड का अंतर हो सकता है। | | API कुंजी | हेडर `Authorization: Apikey `। | केवल हेडर की जाँच की जाती है (कभी भी बॉडी या क्वेरी स्ट्रिंग की नहीं) और तुलना कॉन्स्टेंट-टाइम होती है। आपके कॉन्फ़िगर किए गए खाते या VA में केवल आने वाले ट्रांसफर (`transferType = in`) का उपयोग किया जाता है। प्रत्येक SePay ट्रांजैक्शन को एक बार स्टोर किया जाता है, इसलिए रीry किया गया वेबहुक कभी भी दो बार क्रेडिट नहीं करता है। NexCMP जानबूझकर किसी ट्रांजैक्शन को अनदेखा करने पर भी `200 {"success":true}` उत्तर देता है, और केवल अस्थायी त्रुटियों के लिए HTTP 5xx देता है ताकि SePay दोबारा प्रयास करे। ## ग्राहक भुगतान कैसे करता है {#how-the-customer-pays} 1. **Billing › Deposit** (वियतनामी इंटरफ़ेस) में ग्राहक VN बैंक ट्रांसफर विकल्प और राशि चुनता है, फिर क्रिएट-ट्रांसफर बटन पर क्लिक करता है। 2. NexCMP संग्रहीत दर पर USD राशि को परिवर्तित करता है (**Exchange rates** में आपके द्वारा सेट किए गए मार्जिन और राउंडिंग चरण सहित) और **VND राशि को राउंडिंग चरण तक ऊपर की ओर राउंड** करता है। 3. ग्राहक को खाता संख्या, बैंक, राशि और मेमो के साथ एक QR कोड (VietQR, स्थानीय रूप से जेनरेट किया गया) दिखाई देता है। 4. ट्रांसफर के बाद, SePay वेबहुक को कॉल करता है, NexCMP `floor(VND received × 100 / rate)` सेंट क्रेडिट करता है। ऑर्डर बनाते समय दर लॉक हो जाती है; यदि ऑर्डर समाप्त होने के बाद पैसे आते हैं, तो लॉक की गई और वर्तमान दर में से जो अधिक हो उसका उपयोग किया जाता है। 5. ऑर्डर **Order expiry** के बाद समाप्त हो जाते हैं; सुरक्षा नेट के रूप में reconciliation हर **Reconcile every** मिनट पर चलता है (userapi टोकन की आवश्यकता होती है)। ## सत्यापित करें {#verify} 1. वियतनामी इंटरफ़ेस पर ग्राहक के रूप में एक टेस्ट ऑर्डर बनाएँ। जाँच लें कि राशि, खाता और मेमो सही हैं। 2. सटीक मेमो के साथ न्यूनतम स्वीकृत राशि ट्रांसफर करें। 3. एक मिनट के भीतर पोर्टल डिपॉजिट को पूर्ण के रूप में दिखाता है और वॉलेट बढ़ जाता है; बैंक पेज पर **State** कार्ड अंतिम वेबहुक का समय दिखाता है। 4. **Finance › Billing › Top-ups** खोलें और जाँच करें कि प्राप्त VND राशि के साथ भुगतान सूचीबद्ध है। ## Limits & notes {#limits-notes} - **न्यूनतम।** ग्राहक को जो VND न्यूनतम दिखाई देता है, वह **Min / order** और [minimum top-up](https://nexcmp.com/hi/docs/billing/minimum-top-up/) के VND मूल्य में से जो अधिक हो, वह होता है। - **लंबित ऑर्डर।** एक ग्राहक के पास केवल **Max pending orders / account** खुले ऑर्डर हो सकते हैं (डिफ़ॉल्ट 3)। - **एक ही मेमो दो बार।** एक ही मेमो के साथ दो बार ट्रांसफर करने से वर्तमान दर पर दूसरा पूर्ण भुगतान बनता है। - बैंक खाते में **कोई स्वचालित रिफंड नहीं**। - **शुल्क।** **Fees & limits** में चैनल की कोई निश्चित शुल्क लाइन नहीं है; दर मार्जिन ही एकमात्र समायोजन है। - **Resellers** अपना खाता स्वयं कॉन्फ़िगर कर सकते हैं; उनका वेबहुक URL `/v1/billing/sepay/webhook/r/` पर समाप्त होता है। ### मेल न खाने वाले ट्रांसफर {#unmatched-transfers} वह पैसा जो खाते तक पहुँच गया है लेकिन कोई वैध मेमो नहीं है, पेज के नीचे **Unmatched transactions** में दिखाई देता है (फ़िल्टर *All channel owners* या *Master*)। ग्राहक के साथ बैंक संदर्भ की जाँच करें, फिर **Assign** पर क्लिक करें और खाता चुनें। वॉलेट को वर्तमान दर पर क्रेडिट किया जाता है। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | बैनर "Sepay not configured" | बैंक, खाता, धारक का नाम, उपसर्ग या कुंजी गायब या अमान्य है | **Receiving account** और **Webhook authentication** कार्ड पूरे करें। | | बैनर "USD/VND rate blocked" (`fx_unavailable`) | कोई एक्सचेंज रेट संग्रहीत नहीं है | **Exchange rates › Update exchange rates**। | | `prefix: 2–5 capital letters, no ORD` | उपसर्ग अमान्य है | `ORD` के बिना 2–5 बड़े अक्षरों का उपयोग करें। | | `account_name` त्रुटि | उच्चारण चिह्न (accents) या छोटे अक्षर (lowercase) | बिना उच्चारण चिह्न वाले बड़े अक्षरों, अंकों, स्पेस, बिंदु या हाइफ़न का उपयोग करें। | | `webhook_secret: 8–200 characters` | कुंजी बहुत छोटी है | कम से कम 8 प्रिंट करने योग्य वर्णों का उपयोग करें। | | ग्राहक विकल्प नहीं देख सकता है | वियतनामी इंटरफ़ेस में नहीं है, स्विच बंद है, या कोई दर नहीं है | भाषा, स्विच और दर की जाँच करें। | | ग्राहक ने भुगतान किया लेकिन राशि जमा नहीं हुई | वेबहुक नहीं पहुँचा, मेमो बदल गया, गलत राशि | Sepay का वेबहुक लॉग जाँचें; यदि मेमो गलत था तो ट्रांसफर **Unmatched transactions** के अंतर्गत होगा। | | वेबहुक 401 या 403 लौटाता है | ऑथेंटिकेशन विधि या कुंजी मेल नहीं खाती | Sepay और NexCMP में समान विधि और कुंजी का उपयोग करें। | | ग्राहक "Too many pending requests" देखता है | लंबित ऑर्डर की सीमा पूरी हो गई | वे समाप्त हो जाते हैं या समाप्ति की प्रतीक्षा करें। | --- # न्यूनतम टॉप-अप {#minimum-top-up} > **एडमिन में कहाँ:** Finance › Payment channels › Fees & limits (`/payments/fees`), कार्ड **Wallet & top-up (Billing › Policy)**। ## यह क्या करता है {#what-it-does} **न्यूनतम टॉप-अप** से कम या **प्रति लेनदेन अधिकतम टॉप-अप** से अधिक की राशि को प्रत्येक भुगतान चैनल अस्वीकार कर देता है। डिफ़ॉल्ट मान **$10.00** और **$5,000.00** हैं। छोटे भुगतानों से बचने के लिए न्यूनतम का उपयोग करें जिनका गेटवे शुल्क उनके मूल्य से अधिक होता है। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | Role | एक एडमिनिस्ट्रेटर। | | डिपेंडेंसी | कोई नहीं। | ## सीमाएँ सेट करें {#set-the-limits} 1. **Finance › Payment channels › Fees & limits** (`/payments/fees`) खोलें। 2. कार्ड **Wallet & top-up (Billing › Policy)** में **Min top-up (USD)** और **Max top-up per transaction (USD)** को संपादित करें। 3. **Save Wallet & top-up** पर क्लिक करें। ![न्यूनतम टॉप-अप 10.00 और अधिकतम 5000.00 वाला वॉलेट और टॉप-अप कार्ड](https://nexcmp.com/hi/docs/images/billing/minimum-top-up-01-limits.webp) | सेटिंग | डिफ़ॉल्ट | अनुमत सीमा | Rule | |---|---|---|---| | Min top-up (USD) | $10.00 | $0 से $10,000 | अधिकतम से कम या उसके बराबर होना चाहिए। | | प्रति ट्रांजैक्शन अधिकतम टॉप-अप (USD) | $5,000.00 | $1 से $1,000,000 | कम से कम न्यूनतम होना चाहिए। | मान सेंट में संग्रहीत किए जाते हैं (`min_topup_cents`, `max_topup_cents`)। ## सीमाएँ कहाँ लागू होती हैं {#where-the-limits-apply} | Place | व्यवहार | |---|---| | Card, Apple/Google Pay, Link, Alipay, PayPal, USDT | सीमा से बाहर की राशियों को सर्वर द्वारा अस्वीकार कर दिया जाता है। पोर्टल "Enter an amount between {min} and {max}" दिखाता है। | | VN बैंक ट्रांसफर | VND राशि Sepay सीमाओं के भीतर **और** इसका USD मान (जो वॉलेट को प्राप्त होता है) न्यूनतम और अधिकतम के भीतर होना चाहिए। पोर्टल दोनों VND न्यूनतम में से बड़ा मान दिखाता है। [Bank transfer (Vietnam)](https://nexcmp.com/hi/docs/billing/bank-transfer-vn/) देखें। | | [Automatic top-up](https://nexcmp.com/hi/docs/billing/auto-top-up/) | प्रत्येक स्वचालित शुल्क कम से कम न्यूनतम और अधिकतम से अधिक नहीं होता है। निश्चित मोड में ग्राहक की राशि न्यूनतम और $1,000 के बीच होनी चाहिए। | | टॉप-अप कोड ([Vouchers](https://nexcmp.com/hi/docs/billing/promotions/)) | प्रभावित नहीं। | | एडमिन क्रेडिट / डेबिट | प्रभावित नहीं। | | रेसलर वॉलेट टॉप-अप | Resellers › Defaults के तहत एक अलग न्यूनतम (`rs_topup_min_cents`, डिफ़ॉल्ट $20)। | ## संबंधित सीमाएँ {#related-floors} न्यूनतम टॉप-अप एकमात्र बैलेंस नियम नहीं है। ये **Services › Virtual Machines › Policy** (`/vm/policy`) में हैं: | Rule | डिफ़ॉल्ट | अर्थ | |---|---|---| | न्यूनतम बैलेंस (`min_balance_cents`) | $5.00 | VM बनाने के लिए ग्राहक को न्यूनतम वॉलेट बैलेंस की आवश्यकता होती है। | | कोटा | बंद | जब **Quotas** चालू होते हैं, तो VM बनाने के लिए उस VM के कुछ घंटों के बराबर बैलेंस की भी आवश्यकता होती है। [Quotas](https://nexcmp.com/hi/docs/billing/quotas/) देखें। | ## सत्यापित करें {#verify} 1. पोर्टल में **Billing › Deposit** खोलें और अपने न्यूनतम से ठीक कम राशि टाइप करें। भुगतान बटन अक्षम हो जाता है और सीमा संदेश दिखाई देता है। 2. न्यूनतम दर्ज करें और पुष्टि करें कि भुगतान शुरू हो गया है। ## Limits & notes {#limits-notes} - बदलाव नए भुगतानों पर लागू होता है। पहले से बनाए गए ऑर्डर उन राशियों को बनाए रखते हैं जिनके साथ वे बनाए गए थे। - ग्राहक-सामने वाला संकेत ("Minimum $10.00, maximum $5,000.00") और त्वरित-राशि बटन स्वचालित रूप से नई सीमाओं का पालन करते हैं। - यदि आप VND प्रदर्शित करते हैं (**Exchange rates** पृष्ठ), तो न्यूनतम को केवल प्रदर्शन के लिए संग्रहीत दर पर परिवर्तित किया जाता है; वॉलेट और सीमाएं USD में रहती हैं। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | "न्यूनतम टॉप-अप अधिकतम से कम या उसके बराबर होना चाहिए" | मान एक दूसरे को काट रहे हैं | न्यूनतम कम करें या अधिकतम बढ़ाएँ। | | ग्राहक VN बैंक ट्रांसफर के माध्यम से छोटी राशि का भुगतान नहीं कर सकता है | Sepay VND न्यूनतम या USD न्यूनतम अधिक है | बैंक पृष्ठ पर **Min / order** या USD न्यूनतम कम करें। | | टॉप-अप पर सर्वर त्रुटि `invalid_argument` | राशि सीमा से बाहर है | प्रदर्शित सीमा के भीतर की राशि का अनुरोध करें। | --- # सहेजे गए भुगतान तरीके {#saved-payment-methods} > **पोर्टल में कहाँ:** Billing › Settings (`/billing?settings=1`)। **Admin में कहाँ:** Customers › List › a customer › Overview (`/customers/`), कार्ड **Payment**, सहेजा गया तरीका और ऑटो टॉप-अप इतिहास दिखाता है। ## यह क्या करता है {#what-it-does} सहेजा गया भुगतान तरीका NexCMP को ग्राहक की **उपस्थिति के बिना** शुल्क लेने की अनुमति देता है, ताकि वॉलेट समाप्त होने के कारण उनकी सेवाएँ कभी बंद न हों। इसका उपयोग केवल [automatic top-up](https://nexcmp.com/hi/docs/billing/auto-top-up/) द्वारा किया जाता है। दो प्रकार मौजूद हैं: Stripe पर सहेजा गया **कार्ड** (Apple Pay, Google Pay या Link के माध्यम से उपयोग किए जाने वाले कार्ड सहित जब Stripe एक पुनusable कार्ड लौटाता है) और PayPal वॉल्ट में संग्रहीत **PayPal खाता**। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | चैनल | [Stripe](https://nexcmp.com/hi/docs/billing/stripe/) और/या [PayPal](https://nexcmp.com/hi/docs/billing/paypal/) कॉन्फ़िगर और सक्षम हैं। | | साइट | मुख्य साइट, या एक रीसेलर साइट जिसका भुगतान चैनल प्लेटफ़ॉर्म द्वारा एकत्र किया जाता है। अपनी खुद की Stripe खाता उपयोग करने वाली रीसेलर साइट कार्ड सहेज नहीं सकती है। | | ग्राहक | एक ग्राहक खाता जिसने कार्ड या PayPal से टॉप-अप किया है। | ## कोई तरीका कैसे सहेजा जाता है {#how-a-method-gets-saved} 1. ग्राहक **Billing** खोलता है, **Deposit** पर क्लिक करता है और **Card** या **PayPal** से भुगतान करता है। 2. भुगतान इस तरह से बनाया जाता है कि तरीके को बाद में फिर से उपयोग किया जा सके: Stripe ग्राहक के साथ कार्ड को Stripe पर संग्रहीत करता है (ऑफ़-सेशन उपयोग), PayPal एक वॉल्ट टोकन संग्रहीत करता है। NexCMP केवल संदर्भ (एक Stripe भुगतान-विधि आईडी और ग्राहक आईडी, या PayPal वॉल्ट आईडी) और एक प्रदर्शन लेबल जैसे `visa •••• 4242` या PayPal ईमेल रखता है। **कार्ड नंबर कभी भी आपके सर्वर को स्पर्श नहीं करते हैं।** 3. जब भुगतान पूरा हो जाता है, तो [automatic top-up](https://nexcmp.com/hi/docs/billing/auto-top-up/) को एक बार चालू किया जाता है यदि ग्राहक ने पहले कभी सेटिंग नहीं चुनी थी। स्क्रीन पर कोई अतिरिक्त टिक बॉक्स या संदेश नहीं होता है। सर्वर साक्ष्य के रूप में समय, ग्राहक का IP पता और तरीका रिकॉर्ड करता है। 4. अगली बार, डिपॉजिट स्क्रीन कार्ड ड्रॉपडाउन में **Saved card ...** और PayPal के लिए **Saved PayPal ...** प्रदान करती है। ## प्रबंधित करें और हटाएँ {#manage-and-remove} 1. पोर्टल में **Billing** पर जाएं और **Settings** पर क्लिक करें। पैनल सहेजे गए तरीके (Stripe कार्ड और/या PayPal) और स्वचालित टॉप-अप विकल्प दिखाता है। 2. कार्ड हटाने के लिए **Remove card** पर क्लिक करें और पुष्टि करें। Stripe कार्ड को हटा देता है और **auto top-up बंद हो जाता है**। 3. PayPal हटाने के लिए **Remove saved PayPal** पर क्लिक करें और पुष्टि करें। ### Admin view {#admin-view} **Customers › List** में कस्टमर को खोलें। **Payment** कार्ड, जो **Overview** टैब पर है, सेव किए गए मेथड लेबल्स (**Saved cards**), ऑटोमैटिक चार्ज के लिए उपयोग किया जाने वाला गेटवे, सहमति का सहेजा गया प्रमाण (समय, IP, मेथड) और स्टेटस व कारण के साथ पिछले 20 ऑटोमैटिक चार्ज प्रयासों (**Auto top-up history**) को दिखाता है। ## सत्यापित करें {#verify} 1. एक टेस्ट ग्राहक के रूप में, कार्ड से न्यूनतम राशि जमा करें। भुगतान पूरा होने के बाद, **Billing › Settings** खोलें: कार्ड और ऑटो टॉप-अप स्विच (चालू) दिखाई दे रहे हैं। 2. एक और जमा शुरू करें: ड्रॉपडाउन में सहेजा गया कार्ड उपलब्ध होता है। 3. एडमिन में, ग्राहक के **Payment** कार्ड पर वही कार्ड लेबल दिखाई देता है। ## Limits & notes {#limits-notes} - **Stripe Link और वॉलेट।** Link, Apple Pay और Google Pay Stripe की सुविधाएँ हैं। NexCMP कोई भी Link-विशेष डेटा संग्रहीत नहीं करता है; यह केवल Stripe द्वारा लौटाए गए कार्ड संदर्भ को रखता है। - **PayPal।** ग्राहक द्वारा शुरू किए जाने वाले प्रत्येक PayPal टॉप-अप के लिए क्लिक की आवश्यकता होती है; सहेजे गए PayPal का उपयोग केवल स्वचालित टॉप-अप द्वारा किया जाता है, अन्य सुविधाओं द्वारा नहीं। - **Reseller साइटें।** यदि कोई reseller अपने स्वयं के Stripe या PayPal खाते का उपयोग करता है, तो सहेजे गए तरीके छिपे रहते हैं और उस साइट के लिए स्वचालित टॉप-अप उपलब्ध नहीं होता है। - **विवाद (Disputes)।** किसी भी भुगतान पर विवाद खाते को ब्लॉक कर देता है और उसकी प्रीपेड सेवाओं को रोक देता है; [Stripe](https://nexcmp.com/hi/docs/billing/stripe/) देखें। - ** अंतिम तरीका हटाने से** auto top-up बंद हो जाता है; ग्राहक के पास वॉलेट बैलेंस सुरक्षित रहता है। - **प्रमाण (Evidence)।** सहमति रिकॉर्ड सर्वर द्वारा लिखा जाता है (ग्राहक द्वारा संपादित नहीं किया जा सकता) और विवाद समाधान के लिए रखा जाता है। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | ग्राहक को Settings बटन या सहेजा गया कार्ड नहीं दिखता | साइट reseller-स्वामित्व वाले भुगतान चैनल का उपयोग करती है, या अभी तक कोई कार्ड भुगतान नहीं किया गया है | प्लेटफॉर्म चैनल के माध्यम से कार्ड या PayPal टॉप-अप करें। | | Stripe भुगतान के बाद "Saved card" गायब है | भुगतान ऐसे तरीके से किया गया था जिसका पुनරුपयोग नहीं किया जा सकता (उदाहरण के लिए Alipay) | कार्ड से दोबारा भुगतान करें। | | PayPal: "यह खाता अभी सहेजा नहीं जा सकता" | PayPal ने वॉल्ट टोकन नहीं लौटाया | वन-टाइम भुगतान के साथ जारी रखें, या दूसरा PayPal खाता आज़माएं। | | कार्ड हटाने के बाद auto top-up रुक गया | अपेक्षित: कार्ड हटाने से यह अक्षम हो जाता है | अगلی जमा राशि के साथ एक नया तरीका सहेजें। | --- # Auto top-up {#auto-top-up} > **एडमिन में कहाँ:** Finance › Payment channels › Fees & limits (`/payments/fees`), कार्ड **Wallet & top-up (Billing › Policy)**, अनुभाग **Auto top-up (Stripe / PayPal)**। **पोर्टल में कहाँ:** Billing › Settings (`/billing?settings=1`)। ## यह क्या करता है {#what-it-does} जब किसी ग्राहक का वॉलेट बैलेंस बहुत कम हो जाता है, तो NexCMP उनके [saved payment method](https://nexcmp.com/hi/docs/billing/saved-payment-methods/) से शुल्क लेता है और वॉलेट में क्रेडिट करता है, ताकि फंड की कमी के कारण चल रही सेवाएं निलंबित न हों। एक बैकग्राउंड जॉब **हर 5 मिनट** में सभी सक्षम ग्राहकों की जाँच करती है। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | चैनल | [Stripe](https://nexcmp.com/hi/docs/billing/stripe/) और/या [PayPal](https://nexcmp.com/hi/docs/billing/paypal/) कॉन्फ़िगर किया गया है। | | Saved method | ग्राहक के पास सहेजा गया कार्ड या PayPal खाता है। | | साइट | मुख्य साइट, या ऐसी reseller साइट जिसका Stripe/PayPal चैनल प्लेटफॉर्म द्वारा एकत्र किया जाता है। | | Global switch | **Auto top-up enabled** चालू है (डिफ़ॉल्ट रूप से चालू)। | ## यह कैसे काम करता है {#how-it-works} किसी ग्राहक के **पहले Stripe या PayPal टॉप-अप** के बाद सर्वर भुगतान विधि को सहेज लेता है और **By usage** मोड में ऑटो टॉप-अप चालू कर देता है — बशर्ते ग्राहक ने खुद कभी ऑटो टॉप-अप सेट न किया हो। जमा स्क्रीन पर कोई अतिरिक्त चेक बॉक्स नहीं होता; सर्वर साक्ष्य के रूप में समय, IP पता और विधि को रिकॉर्ड करता है। यदि ग्राहक बाद में ऑटो टॉप-अप बंद कर देता है, तो यह अपने आप दोबारा कभी चालू नहीं होता। | मोड | ट्रिगर (जब शेष राशि इससे कम हो...) | शुल्क ली गई राशि | |---|---|---| | **By usage** (पहले टॉप-अप के बाद डिफ़ॉल्ट) | चल रही सेवाओं के अगले 24 घंटों की लागत (प्रति घंटा VM और 24 घंटों में देय प्रीपेड नवीनीकरण), लेकिन **$5** से कम कभी नहीं | 24 घंटे की लागत जिसे निकटतम पूर्ण डॉलर तक पूर्णांकित किया गया हो, कम से कम [minimum top-up](https://nexcmp.com/hi/docs/billing/minimum-top-up/), अधिकतम top-up और दैनिक सीमा के भीतर | | **Fixed amount** | ग्राहक की अपनी सीमा ($1 से $500) | ग्राहक की अपनी राशि (न्यूनतम टॉप-अप से $1,000 तक, और सीमा से अधिक) | **By usage** मोड में कोई सेवा न चल रही होने पर, कोई शुल्क नहीं लिया जाता। सीमा के मुकाबले तुलना की जाने वाली शेष राशि **वॉलेट में मौजूद वास्तविक धन** होती है। प्रमोशन कोड से मिलने वाले सर्विस क्रेडिट अलग रखे जाते हैं और उनकी गिनती नहीं होती (देखें [Promotions](https://nexcmp.com/hi/docs/billing/promotions/))। शुल्क को सामान्य टॉप-अप की तरह संभाला जाता है: **Customer pays top-up fee** चालू होने पर, कार्ड से राशि और शुल्क दोनों वसूले जाते हैं और वॉलेट में पूरी राशि जमा होती है; इसके बंद होने पर, वॉलेट में शुल्क काटकर शेष राशि जमा होती है। ## वैश्विक सीमाएँ कॉन्फ़िगर करें {#configure-the-global-limits} 1. **Finance › Payment channels › Fees & limits** (`/payments/fees`) खोलें। 2. **Auto top-up (Stripe / PayPal)** में सेट करें: | सेटिंग | डिफ़ॉल्ट | Range | अर्थ | |---|---|---|---| | ऑटो टॉप-अप सक्षम | चालू (On) | चालू या बंद | बंद करने पर सभी पृष्ठभूमि शुल्क तुरंत रुक जाते हैं। | | डिफ़ॉल्ट ऑटो टॉप-अप सीमा (USD, फ़िक्सड मोड फ़ॉलबैक) | $5.00 | $0 से $10,000 | फ़िक्सड मोड में केवल शुरुआती सीमा के रूप में उपयोग किया जाता है। | | प्रति ग्राहक प्रति 24 घंटे अधिकतम ऑटो टॉप-अप | 3 | 1 से 50 | सफल और लंबित प्रयासों की गिनती करता है। | | प्रति ग्राहक प्रति 24 घंटे ऑटो टॉप-अप राशि कैप (USD) | $500.00 | $0 से $1,000,000 | एक रोलिंग दिन में स्वचालित शुल्कों का कुल योग। | 3. **Save Wallet & top-up** पर क्लिक करें। ![वैश्विक स्विच और दैनिक सीमाओं के साथ Fees and limits पेज का Auto top-up अनुभाग](https://nexcmp.com/hi/docs/images/billing/auto-top-up-01-limits.webp) ## ग्राहक क्या देखता है {#what-the-customer-sees} 1. पोर्टल में ग्राहक **Billing** खोलता है और **Settings** पर क्लिक करता है। 2. पैनल में सहेजी गई भुगतान विधि/विधियाँ, चालू/बंद स्विच, मोड (**By usage** या **Fixed amount**), अनुमानित वर्तमान उपयोग और अगला शुल्क, तथा **Recent automatic top-ups** दिखाई देते हैं। 3. **Fixed amount** पर स्विच करने से वे सीमा और राशि दर्ज कर सकते हैं। स्विच बंद करने से शुल्क रुक जाते हैं। ![By usage मोड में ऑटो टॉप-अप और हाल के स्वचालित टॉप-अप के साथ ग्राहक बिलिंग सेटिंग्स](https://nexcmp.com/hi/docs/images/billing/auto-top-up-02-portal.webp) ## सत्यापित करें {#verify} 1. एक टेस्ट ग्राहक के रूप में, टेस्ट कार्ड ([Stripe](https://nexcmp.com/hi/docs/billing/stripe/#verify)) से पहला टॉप-अप करें। **Billing › Settings** खोलें: ऑटो टॉप-अप चालू है। 2. एक छोटा VM चलाएँ ताकि उपयोग हो, और शेष राशि को सीमा से नीचे ले आएँ (उदाहरण के लिए **Customers › customer › Credit / debit** के साथ)। 3. लगभग 5 मिनट के भीतर शुल्क ले लिया जाता है। ग्राहक के **Overview › Payment** कार्ड में, **Auto top-up history** स्थिति *Done* के साथ प्रयास को दिखाती है, और एक *Top-up received* सूचना भेजी जाती है। ## Limits & notes {#limits-notes} - **प्रति गिरावट एक शुल्क।** शुल्क के बाद जॉब तब तक प्रतीक्षा करती है जब तक कि शेष राशि वापस阈值 से ऊपर न बढ़ जाए या प्रतीक्षा समय समाप्त न हो जाए: सफलता के बाद 1 घंटा, पेंडिंग शुल्क के बाद 24 घंटे, सिस्टम त्रुटि के बाद 30 मिनट। - **दैनिक सीमाएँ।** जब कोई भी दैनिक सीमा पूरी हो जाती है, तो कोई शुल्क नहीं लिया जाता है और एक *Daily limit reached* पंक्ति लिखी जाती है (हर 6 घंटे में अधिकतम एक बार)। - **असफलताएँ।** अस्वीकृत कार्ड, समय-समाप्त कार्ड या अपर्याप्त धन को कार्ड की विफलता माना जाता है। जॉब 1 घंटे बाद, फिर 6 घंटे बाद, फिर 24 घंटे बाद पुनः प्रयास करती है। **लगातार 3 कार्ड विफलताओं के बाद ऑटो टॉप-अप बंद कर दिया जाता है** और ग्राहक को सूचित किया जाता है (*Auto top-up failed*)। जिस भुगतान के लिए ग्राहक की पुष्टि की आवश्यकता होती है (उदाहरण के लिए 3-D Secure) उसे विफलता नहीं गिना जाता; ग्राहक को इसकी पुष्टि करने के लिए कहा जाता है। - **कोई दोहरा शुल्क नहीं।** सीमा से नीचे गिरने पर प्रत्येक शुल्क को प्रति गिरावट परमाणु रूप से दावा किया जाता है और गेटवे पर एक आइडपोटेंसी कुंजी का उपयोग किया जाता है। - **कार्ड हटाना** ऑटो टॉप-अप को बंद कर देता है। - **Resellers।** यदि कोई रीसेलर अपने स्वयं के भुगतान चैनल का उपयोग करता है, तो ग्राहक ऑटो टॉप-अप सक्षम नहीं कर सकता है (HTTP 403 `feature_disabled`)। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | ग्राहक इसे चालू नहीं कर सकता: "Top up once with a card or PayPal" | कोई सहेजा गया तरीका नहीं | पहले एक कार्ड या PayPal टॉप-अप करें। | | त्रुटि `no_card` (422) | चुने गए गेटवे में कोई सहेजा हुआ तरीका नहीं है | वह गेटवे चुनें जिसमें तरीका हो, या कोई तरीका सहेजें। | | राशि पर त्रुटि `invalid_argument` | निश्चित मोड स्वीकृत सीमाओं से बाहर है | थ्रेशोल्ड $1–$500, न्यूनतम टॉप-अप और $1,000 के बीच की राशि, थ्रेशोल्ड से अधिक राशि। | | बैलेंस कम होने के बावजूद कोई चार्ज नहीं लिया जाता | ग्लोबल स्विच बंद है, By usage मोड में कोई रनिंग सर्विस नहीं है, दैनिक सीमा पूरी हो गई है, या पिछला चार्ज अभी भी प्रतीक्षा में है | स्विच, इतिहास और सीमाओं की जाँच करें। | | "N लगातार असफल प्रयास — 3 के बाद ऑटो टॉप-अप बंद हो जाता है" | कार्ड बार-बार असफल हो रहा है | ग्राहक नए डिपॉजिट के साथ कार्ड बदलता है। | | स्थिति *Needs your confirmation* | बैंक को 3-D Secure की आवश्यकता है | ग्राहक एक बार सामान्य टॉप-अप पूरा करता है। | --- # इनवॉइस और लेजर {#invoices-and-ledger} > **एडमिन में कहाँ:** Finance › Billing (`/billing`), जिसमें Overview, Transactions (`/billing/ledger`), Invoices (`/billing/invoices`), Top-ups (`/billing/deposits`), Payouts (`/billing/payouts`), Vouchers (`/billing/vouchers`) और Reports (`/billing/reports`) टैब हैं। **पोर्टल में कहाँ:** Billing (`/billing`)। ## यह क्या करता है {#what-it-does} NexCMP में हर राशि USD सेंट के रूप में सहेजी जाती है और एक बार दर्ज की जाती है। मुख्य विचार: **वॉलेट लेजर** बैलेंस के लिए सत्य का स्रोत (source of truth) है; इनवॉइस, टॉप-अप भुगतान और रिपोर्ट इससे बनाई गई व्यू हैं। लेजर केवल **अपेंड-ऑनिश** (append-only) है — किसी गलती को इतिहास में संपादन करके नहीं, बल्कि एक विपरीत प्रविष्टि जोड़कर सुधारा जाता है। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | Role | एक एडमिनिस्ट्रेटर। | | विक्रेता विवरण | **System › Settings › General** के **Seller & invoicing** (`/settings?tab=seller`) टैब में, **Seller details (printed on invoices)** कार्ड में कानूनी नाम, टैक्स आईडी, पता, संपर्क ईमेल और इनवॉइस नंबर प्रीफिक्स सेट करें। | | डिपेंडेंसी | धन प्राप्ति के लिए [Payment channels](https://nexcmp.com/hi/docs/billing/payment-channels/)। | ## हिस्से {#the-pieces} | एडमिन टैब | यह क्या सूचीबद्ध करता है | विशिष्ट उपयोग | |---|---|---| | **Overview** | आज और इस महीने का राजस्व, प्रकार के अनुसार लेजर कुल (डिपाजिट, चार्ज, रिफंड, एडजस्टमेंट, वाउचर), स्थिति के अनुसार इनवॉइस, लंबित रिफंड, शॉर्टकट, पिछले 30 दिनों में प्रति सेवा खर्च | दैनिक जाँच | | **Transactions** | वॉलेट लेजर, प्रत्येक गतिविधि के लिए एक पंक्ति | ग्राहक के बैलेंस को समझाना | | **Invoices** | इनवॉइस, और प्रत्येक सेवा की हर खरीद के साथ **Orders** का दूसरा व्यू | दस्तावेज़ ढूँढना, दोबारा भेजना, भुगतान किया हुआ चिह्नित करना | | **Top-ups** | गेटवे के माध्यम से प्राप्त भुगतान | भुगतान की जाँच करना, उसे रिफंड करना | | **Payouts** | कार्ड रिफंड, एफिलिएट पेआउट, रीसेलर निकासी | बाहर जाने वाले पैसों को स्वीकृत करना | | **Vouchers** | टॉप-अप कोड | [Promotions](https://nexcmp.com/hi/docs/billing/promotions/) देखें | | **Reports** | राजस्व, सेवा के अनुसार, रीसेलर के अनुसार | एकाउंटिंग | ### Transactions (ledger) {#transactions-ledger} कॉलम: समय, ग्राहक, **प्रकार (kind)**, सेवा, राशि (साइन के साथ), वीएम (VM), संदर्भ (reference), अभिनेता (actor), नोट। फ़िल्टर: प्रकार, सेवा, ग्राहक आईडी, साइट (जब आपके पास रीसेलर हों), दिनांक सीमा, और एक वीएम लिंक। | प्रकार | अर्थ | |---|---| | `deposit` | गेटवे से टॉप-अप | | `charge` | सेवा के लिए लिया गया पैसा (ऑर्डर, नवीनीकरण, प्रति घंटा उपयोग...) | | `refund` | वॉलेट में लौटाई गई राशि | | `adjust` | प्रशासक क्रेडिट या डेबिट, और टॉप-अप कोड भी (संदर्भ `vch:` से शुरू होता है) — ओवरव्यू वाउचर को उनकी अपनी पंक्ति के रूप में दिखाता है | प्रत्येक पंक्ति में `dep:stripe:` जैसा एक संदर्भ (reference) होता है; वही संदर्भ दो बार नहीं लिखा जा सकता है, यही कारण है कि बार-बार आने वाला वेबहुक दो बार क्रेडिट नहीं दे सकता। मैन्युअल एडजस्टमेंट जोड़ने के लिए **Customers › List › customer › Credit / debit** का उपयोग करें: एक कारण अनिवार्य है, एक सकारात्मक राशि धन की कमी के कारण लॉक किए गए वीएम को अनलॉक करने का प्रयास भी करती है, और कार्रवाई दो चरणों में कन्फ़र्म की जाती है। ![Transactions टैब जो प्रकार, सेवा, राशि और संदर्भ के साथ वॉलेट लेजर पंक्तियाँ दिखाता है](https://nexcmp.com/hi/docs/images/billing/invoices-and-ledger-01-ledger.webp) ### Invoices {#invoices} जब कोई ग्राहक वॉलेट से भुगतान की गई कोई वस्तु खरीदता या नवीनीकृत करता है, या टॉप-अप के लिए, तो एक इनवॉइस अपने आप बन जाती है। नंबर `-<000001>` जैसे दिखते हैं (उदाहरण के लिए `NX202610-000042`); रीसेलर साइटें अपने खुद के उपसर्ग (prefix) और अनुक्रम का उपयोग करती हैं। जब आप उपसर्ग बदलते हैं तो मौजूदा नंबर कभी नहीं बदलते। | फ़ील्ड | मान (Values) | |---|---| | प्रकार | Receipt, Renewal, Top-up, Manual, Refund | | स्थिति | Unpaid, Paid, Overdue, Cancelled, Refunded | पंक्ति पर कार्रवाई: | Action | प्रभाव (Effect) | |---|---| | **View** / **Print** | इनवॉइस खोलता है; पोर्टल इसे प्रिंट या पीडीएफ के रूप में सहेज भी सकता है। | | **Mark paid** (केवल अनपेड या ओवरड्यू) | इसे **वॉलेट के पैसे हिलाए बिना** भुगतान किया हुआ चिह्नित करता है — जब ग्राहक ने आपको NexCMP के बाहर भुगतान किया हो तब इसका उपयोग करें। एक कारण आवश्यक है। नवीनीकरण इनवॉइस के लिए यह लॉक किए गए वीएम को बढ़ाता और अनलॉक भी करता है। | | **Cancel** (केवल अनपेड या ओवरड्यू) | इनवॉइस रद्द करता है। एक कारण आवश्यक है। | | **Resend** | इनवॉइस को दोबारा ईमेल करता है। | **Create manual invoice** (टैब के शीर्ष पर बटन): ग्राहक ID, 1 से 50 लाइनें (विवरण, मात्रा, यूनिट मूल्य), वैकल्पिक VM ID, वैकल्पिक देय दिन (0 से 365, डिफ़ॉल्ट 7), वैकल्पिक नोट। यह अवैतनिक के रूप में बनाया जाता है; ग्राहक इसे **Billing › Invoice History** में देखता है। सेवाओं के अवैतनिक इनवॉइस जैसे ही पैसे आते हैं, **वॉलेट से स्वचालित रूप से चुका दिए जाते हैं**, इसलिए ग्राहक का काम केवल टॉप-अप करना होता है। ### टॉप-अप (भुगतान) {#top-ups-payments} प्रति प्रयास एक पंक्ति: समय, ग्राहक, **गेटवे और तरीका**, प्रकार (टॉप-अप या ऑटो टॉप-अप), स्थिति (pending, completed, failed, refunded, disputed, canceled), ग्राहक ने कितना भुगतान किया, शुल्क, वॉलेट में कितना गया, गेटवे संदर्भ और पूर्ण होने का समय। पूर्ण किए गए Stripe और PayPal भुगतानों में **Refund** क्रिया होती है। वेबहुक देखने के लिए गेटवे इवेंट पृष्ठों का उपयोग करें ([Payment channels](https://nexcmp.com/hi/docs/billing/payment-channels/))। ### पेआउट {#payouts} तीन सब-टैब: **Card refunds** (रिफंड अनुरोधों को स्वीकृत या अस्वीकृत करें; अनुरोध पूर्ण भुगतान से बनाया जाता है), **Affiliate payouts** (कमीशन निकासी) और **Reseller withdrawals**। प्रत्येक निर्णय का ऑडिट किया जाता है। ### रिपोर्ट {#reports} **Revenue** (30-दिन का ट्रेंड, महीने-दर-महीने, शीर्ष ग्राहक), **By service** और **By reseller**। ![राजस्व KPI और तीस दिनों के ट्रेंड को दिखाने वाला Reports टैब](https://nexcmp.com/hi/docs/images/billing/invoices-and-ledger-03-reports.webp) ## ग्राहक क्या देखता है {#what-the-customer-sees} **Billing** में ग्राहक के पास **Balance**, **Deposit**, **Redeem code**, **Settings** (ऑटो टॉप-अप) और टैब के साथ एक इतिहास होता है: **Invoice History**, **Payment Order**, **Ledger** और **Orders** (हर सेवा एक ही सूची में, सेवा और प्रकार के फ़िल्टर के साथ)। प्रत्येक इनवॉइस में **View**, **Print** और **Save as PDF** होता है; राशि USD में होती है, जिसे वैकल्पिक रूप से प्रदर्शन मुद्रा (display currency) में दिखाया जाता है। ## सत्यापित करें {#verify} 1. एक टेस्ट ग्राहक के रूप में थोड़ा टॉप-अप करें। 2. **Transactions** एक `deposit` पंक्ति दिखाता है, **Top-ups** भुगतान को *Completed* के रूप में दिखाता है, और **Overview** राजस्व बढ़ जाता है। 3. कुछ खरीदें: एक `charge` पंक्ति दिखाई देती है, और **Invoices** आपके द्वारा कॉन्फ़िगर किए गए विक्रेता विवरण के साथ *Receipt* या *Renewal* इनवॉइस दिखाता है। ## Limits & notes {#limits-notes} - **Append-only।** लेज़र लाइन को संपादित या हटाने का कोई तरीका नहीं है; कारण के साथ एक एडजस्टमेंट जोड़ें। - **Currency।** राशि USD में होती है; प्रदर्शन मुद्रा (display currency) केवल दिखावे के लिए होती है (देखें [Currency and exchange rates](https://nexcmp.com/hi/docs/catalog/currency-and-exchange-rates/))। - **Refund to card** दो चरणों में होता है (अनुरोध, फिर Payouts के तहत अनुमोदन); USDT और बैंक ट्रांसफर को स्रोत पर रिफ़ंड नहीं किया जाता है। - **Everything is audited**, System › Logs › Admin actions के तहत आपके द्वारा दर्ज किए गए कारण के साथ। - **Orders vs invoices।** प्रति घंटे के उपयोग का प्रति घंटे चालान नहीं किया जाता है; Orders व्यू इसे दिन के हिसाब से समूहित करता है ताकि आप इसे फिर भी देख सकें। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | ग्राहक का बैलेंस गलत प्रतीत होता है | एक चार्ज, एडजस्टमेंट या वाउचर जिसकी आपको उम्मीद नहीं थी | ग्राहक ID द्वारा **Transactions** को फ़िल्टर करें और संदर्भों व नोट्स को पढ़ें। | | "इनवॉइस का पहले ही भुगतान किया जा चुका है" (409) | भुगतान किए गए इनवॉइस पर भुगतान किया गया के रूप में चिह्नित करना | करने के लिए कुछ नहीं है। | | इनवॉइस रद्द नहीं किया जा सकता | केवल भुगतान न किए गए या अतिदेय (overdue) इनवॉइस ही रद्द किए जा सकते हैं | भुगतान किए गए इनवॉइस के लिए रिफ़ंड या एडजस्टमेंट का उपयोग करें। | | इनवॉइस पर विक्रेता का विवरण गायब है | भरा नहीं गया है | System › Settings › General › Seller & invoicing में **Seller details** पूरा करें। | | क्रेडिट / डेबिट अस्वीकार कर दिया गया | राशि शून्य है या $100,000 से अधिक है | 1 सेंट और $100,000 के बीच की राशि का उपयोग करें। | | एक भुगतान लंबे समय तक *Pending* दिखाता है | वेबहुक गायब है | **Gateway events** देखें और पुनः चलाएं (replay)। | --- # Promotions {#promotions} > **एडमिन में कहाँ:** Finance › Billing › Vouchers (`/billing/vouchers`)। **पोर्टल में कहाँ:** Billing › Redeem code (डिपॉजिट ड्रॉअर के भीतर भी)। ## यह क्या करता है {#what-it-does} एक **टॉप-अप कोड** (वाउचर) एक बार उपयोग होने वाला सीक्रेट है जिसे आप ग्राहकों को देते हैं। इसे बनाने के तरीके के आधार पर, यह कर सकता है: | प्रकार | ग्राहक को क्या मिलता है | मान कहाँ जाता है | |---|---|---| | सभी सेवाओं के लिए **Bonus credit** | वॉलेट में जोड़ी गई राशि | वॉलेट बैलेंस। किसी भी चीज़ के लिए उपयोग योग्य। | | चुनी गई सेवाओं के लिए **Bonus credit** | एक सेवा क्रेडिट | एक अलग पॉकेट जो केवल उन सेवाओं के लिए भुगतान कर सकती है। | | **Discount %** | चयनित सेवाओं के पहले ऑर्डर पर प्रतिशत की छूट | कुछ भी क्रेडिट नहीं किया जाता है; चेकआउट के समय छूट लागू होती है। | इनका उपयोग अभियानों, माफी क्रेडिट, पार्टनर डील या पहले-ऑर्डर की छूट के लिए करें। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | Role | एक एडमिनिस्ट्रेटर। | | ग्राहक | ग्राहक पोर्टल में साइन इन होने पर (अतिथि के रूप में नहीं) कोड रिडीम करते हैं। डिफ़ॉल्ट रूप से ग्राहक का ईमेल सत्यापित होना चाहिए। | | VND कोड | VND में बनाया गया कोड रिडेम्पशन के समय संग्रहीत एक्सचेंज रेट का उपयोग करके USD में परिवर्तित हो जाता है (देखें [Currency and exchange rates](https://nexcmp.com/hi/docs/catalog/currency-and-exchange-rates/))। | ## एक बैच बनाएँ {#create-a-batch} 1. **Finance › Billing › Vouchers** खोलें और **Create vouchers** पर क्लिक करें। 2. फ़ॉर्म भरें। उदाहरण मान ब्रैकेट में हैं। | फ़ील्ड | नोट्स | |---|---| | बैच का नाम | 1–80 वर्ण (`Spring welcome`)। | | लक्ष्य | **मुख्य साइट के ग्राहक**, **एकल पुनर्विक्रेता के ग्राहक** (ग्राहकों की सूची चाहिए) या **पुनर्विक्रेता वॉलेट**। | | योग्य उपयोगकर्ता | **लक्षित दर्शकों में से सभी** या **निर्दिष्ट** — प्रति लाइन एक ईमेल या ग्राहक आईडी, अधिकतम 1,000 तक। पुनर्विक्रेता के ग्राहकों के लिए यह *निर्दिष्ट* होना चाहिए। | | प्रति लक्ष्य 1 कोड | *निर्दिष्ट* के साथ, सूचीबद्ध प्रत्येक ग्राहक के लिए एक कोड बनाता है। | | कोड का प्रकार | **Bonus credit** या **Discount %**। | | इस पर लागू होता है | एक या अधिक सेवाएँ चुनें; खाली = **सभी सेवाएँ**। | | मुद्रा, अंकित मूल्य | USD $1.00 से, या VND 10,000 से 1,000 के गुणकों में (केवल बोनस क्रेडिट)। | | छूट (%) | 1 से 100 (केवल छूट %)। | | अधिकतम छूट कैप (USD) | छूट % के लिए आवश्यक, $1.00 से। यह प्रति रिडेम्पशन आपके द्वारा खोई जा सकने वाली अधिकतम राशि भी है। | | न्यूनतम ऑर्डर (USD) | `0` = कोई नहीं। पहला ऑर्डर कम से कम इस राशि का होना चाहिए। | | कोड की संख्या | 1 से 1,000 यादृच्छिक कोड। | | प्रति कोड उपयोग | 1 से 100,000। `1` का अर्थ है प्रति कोड एक व्यक्ति; साझा कोड के लिए इसे बढ़ाएँ। | | प्रति खाता अधिकतम उपयोग | कम से कम 1। Discount % के लिए यह `1` होना चाहिए। | | प्रारंभ समय (वैकल्पिक), समाप्त होता है | समाप्ति तिथि आज के बाद और प्रारंभ के बाद होनी चाहिए, अधिकतम 2 वर्ष आगे। | | कोड उपसर्ग (0–6 अक्षर) | केवल अक्षर; खाली छोड़ने पर साइट के उपसर्ग का उपयोग होता है। | | कस्टम कोड (केवल जब count = 1 हो) | 6 से 32 अक्षर A–Z और 0–9। साझा करने में आसान लेकिन अनुमान लगाना आसान: उपयोग कम रखें। | | सत्यापित ईमेल आवश्यक है | डिफ़ॉल्ट रूप से चालू। | | आंतरिक नोट, कारण | कारण अनिवार्य है और ऑडिट लॉग में जाता है। | 3. फ़ॉर्म **Maximum exposure** (फेस वैल्यू x कोड x उपयोग) दिखाता है ताकि आपको सबसे खराब स्थिति का पता रहे। **Generate codes** पर क्लिक करें। 4. **कोड अभी कॉपी करें।** वे केवल एक बार दिखाए जाते हैं: NexCMP केवल एक हैश और अंतिम 4 वर्ण संग्रहीत करता है। **Copy all** या **Download CSV** का उपयोग करें, पुष्टिकरण पर टिक करें और बॉक्स बंद करें। ## प्रत्येक प्रकार का व्यवहार कैसे होता है {#how-each-type-behaves} ### वॉलेट बोनस (कोई सेवा चयनित नहीं) {#wallet-bonus-no-service-selected} वॉलेट में **adjustment** प्रविष्टि (संदर्भ `vch:...`) के साथ क्रेडिट किया जाता है। यह कार्ड में वापसी योग्य नहीं है, सहबद्ध कमीशन अर्जित नहीं करता है, चालान नहीं बनाता है और कोटे के लिए वॉलेट शेष के रूप में गिना जाता है। VND कोड रिडेम्पशन के समय विनिमय दर का उपयोग करते हैं। ### सेवा क्रेडिट (सेवाएँ चयनित) {#service-credit-services-selected} - क्रेडिट एक **अलग पॉकेट** में रहता है, केवल चुनी हुई सेवाओं के शुب (नए ऑर्डर, नवीनीकरण, प्रति घंटा या दैनिक शुल्क, अपग्रेड) का भुगतान कर सकता है और वॉलेट से **पहले** खर्च किया जाता है। - इसे निकाला, स्थानांतरित या पैसे में परिवर्तित नहीं किया जा सकता है, और यह कोड के साथ समाप्त हो जाता है। - लेज़र पूरा शुल्क और एक मिलान क्रेडिट लाइन दिखाता है, इसलिए प्रति सेवा राजस्व सही रहता है जबकि वॉलेट केवल उतना ही कम होता है जितना ग्राहक ने वास्तव में भुगतान किया था। - यह [quota](https://nexcmp.com/hi/docs/billing/quotas/) टियर को **नहीं** बढ़ाता है और [auto top-up](https://nexcmp.com/hi/docs/billing/auto-top-up/) द्वारा अनदेखा किया जाता है। - यदि क्रेडिट या छूट के साथ भुगतान किए गए शुल्क की वापसी की जाती है, तो कोड द्वारा भुगतान किया गया हिस्सा वॉलेट रिफंड से वापस ले लिया जाता है और क्रेडिट पॉकेट में लौटा दिया जाता है। ### Discount % {#discount} 1. ग्राहक कोड दर्ज करता है: यह **activated** हो जाता है। प्रतिशत कोड का उपयोग प्रति खाता केवल एक बार किया जा सकता है। 2. किसी चयनित सेवा का **पहला शुल्क** जो प्रति घंटा शुल्क नहीं है, और कम से कम **Minimum order**, प्रतिशत द्वारा छूट दी जाती है, कभी भी **Maximum discount cap** से अधिक नहीं। 3. छूट शुल्क के समय सर्वर द्वारा पुनर्गणना की जाती है; ब्राउज़र में राशि को अनदेखा कर दिया जाता है। रिडेम्पशन पंक्ति वास्तविक छूट के साथ कोड का वास्तव में उपयोग किए जाने पर लिखी जाती है। 4. प्रति घंटा उपयोग शुल्क कभी भी कोड का उपयोग नहीं करते हैं। ## ग्राहक क्या करता है {#what-the-customer-does} 1. पोर्टल में **Billing** खोलें और **Redeem code** पर क्लिक करें, या Deposit ड्रॉवर में **Have a top-up code?** का उपयोग करें। 2. कोड टाइप करें (केस-संवेदनशील नहीं; डैश वैकल्पिक) और **Check** पर क्लिक करें। पोर्टल बताता है कि यह क्या देता है, उदाहरण के लिए *Valid code: +$5.00*, *$5.00 credit for VPN* या *20% off voucher for Virtual Machines (up to $5.00)*, और *Valid for orders from $10.00*। 3. **Redeem** पर क्लिक करें और पुष्टि करें। प्रत्येक कोड का उपयोग प्रति खाता एक बार किया जा सकता है। कोड साइट से जुड़े होते हैं: एक साइट का कोड दूसरी साइट पर "अमान्य" होता है, और यह संकेत भी नहीं मिलता कि वह कहीं और मौजूद है। गलत अनुमानों को सीमित किया जाता है और कई बार कोशिश करने के बाद खाता कुछ मिनटों के लिए लॉक हो जाता है ("N attempts left before a temporary lock")। ## ट्रैक और रोकें {#track-and-stop} - **Batches** प्रत्येक बैच को उसकी स्थिति (*active*, *disabled*, *expired*, *used up*), भुनाई गई संख्या और एक्सपोजर के साथ सूचीबद्ध करता है। **Codes** (मास्क किए गए) और **Redemptions** टैब तथा **Export CSV** के लिए कोई बैच खोलें। - **Redemptions** सभी बैचों में प्रत्येक रिडेम्पशन को सूचीबद्ध करता है; **Reseller quotas** दिखाता है कि प्रत्येक रीसेलर की मासिक जारी करने की सीमा का कितना उपयोग किया गया है; **Settings** रीसेलर कोड को चालू या बंद करता है और डिफ़ॉल्ट मासिक सीमा सेट करता है। - **Disable batch** सभी अनुपयुक्त कोड को रोक देता है; पहले से किए गए रिडेम्पशन बने रहते हैं। एक अकेले कोड को भी अक्षम किया जा सकता है। ## सत्यापित करें {#verify} 1. 1 कोड का एक बैच बनाएं: Discount % 20, cap $5, minimum order $10, service Virtual Machines। 2. एक परीक्षण ग्राहक के रूप में इसे रिडीम करें। पोर्टल कहता है कि यह सक्रिय है। 3. कम से कम $10 (मासिक चक्र) का एक VM ऑर्डर करें: इनवॉइस में छूट (अधिकतम $5) दिखाई देती है। 4. बैच में, वास्तविक छूट के साथ कोड 1 रिडेम्पशन दिखाता है। ## Limits & notes {#limits-notes} - कोड निर्माण के समय **audience** और **site** से बंधे होते हैं; उन्हें बाद में स्थानांतरित नहीं किया जा सकता। - रीसेलर मासिक एक्सपोजर सीमा के भीतर अपने ग्राहकों को कोड जारी कर सकते हैं; [Resellers](https://nexcmp.com/hi/docs/customers/resellers/) देखें। - ग्राहकों के लिए साइडबार प्रोमो स्लाइड (**Marketing › Promo slides**) एक अलग सुविधा है और कोई छूट नहीं देती है। - चूंकि सादे पाठ में कोड कभी संग्रहीत नहीं किया जाता है, इसलिए खोए हुए बैच को पुनर्प्राप्त नहीं किया जा सकता है: उसे अक्षम करें और एक नया बनाएं। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | "प्रतिशत कोड: प्रति खाता एक उपयोग" (`percent_one_per_account`) | Discount % के लिए प्रति खाता Max uses 1 से अधिक | इसे `1` पर सेट करें। | | फ़ॉर्म कहता है कि कैप आवश्यक है | Maximum discount cap के बिना Discount % | कम से कम $1.00 दर्ज करें। | | ग्राहक नहीं मिले | सूची में कोई ईमेल या आईडी मौजूद नहीं है | सूची को ठीक करें (त्रुटि अज्ञात प्रविष्टियों के नाम बताती है)। | | ग्राहक कहता है "invalid code" | गलत साइट, समाप्त, अक्षम, समाप्त उपयोग, लक्षित ग्राहक नहीं, या ईमेल सत्यापित नहीं है | बैच और ग्राहक की जाँच करें। | | क्रेडिट का उपयोग नहीं किया गया था | चार्ज किसी अन्य सेवा से संबंधित है | क्रेडिट केवल बैच पर चुनी गई सेवाओं का भुगतान करता है। | | छूट लागू नहीं की गई | न्यूनतम से कम ऑर्डर, प्रति घंटा शुल्क, या कोड किसी अन्य सेवा के लिए सक्रिय किया गया था | पात्र पहला ऑर्डर दें। | | ग्राहक रिडीम करने से लॉक हो गया | बहुत अधिक गलत प्रयास | लॉक समाप्त होने की प्रतीक्षा करें। | --- # कोटा {#quotas} > **Where in the admin:** Services › Virtual Machines › Policy › Quota tab (`/vm/policy?tab=quota`)। प्रति ग्राहक: Customers › List › a customer › Overview (`/customers/`), कार्ड **Quota**। **Where in the portal:** Client › Quotas (`/client/quotas`)। ## यह क्या करता है {#what-it-does} कोटा नए खातों द्वारा दुरुपयोग से आपकी रक्षा करता है: ग्राहक ने वॉलेट में जितना अधिक वास्तविक पैसा डाला होगा, वे उतने ही अधिक संसाधन बना सकते हैं। इसके दो स्तर हैं: - **VM and Kubernetes resources**: कुल vCPU, RAM और डिस्क, और VM की संख्या। टियर आपके निश्चित प्लान हैं। - **Service quotas**: जमा किए गए धन द्वारा संचालित पांच टियर (L0 से L4) में कितने IP, क्लस्टर, VPC, GB स्टोरेज आदि हैं। किसी भी चीज़ का चार्ज लेने से **पहले** कोटा की जाँच की जाती है। सीमा से अधिक के अनुरोध को HTTP 403 `quota_exceeded` और एक संदेश के साथ अस्वीकार कर दिया जाता है जो ग्राहक को बताता है कि कितना टॉप-अप करना है। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | Role | एक एडमिनिस्ट्रेटर। | | स्विच | **Enable quota** (`quota_enabled`) डिफ़ॉल्ट रूप से **off** होता है। जब तक आप इसे चालू नहीं करते, नीचे दी गई कोई भी बात लागू नहीं होती। | | निश्चित प्लान | कम से कम एक गैर-कस्टम प्लान (देखें [Plans](https://nexcmp.com/hi/docs/catalog/plans/)) — संसाधन टियर आपके निश्चित प्लान हैं। किसी भी प्लान के बिना केवल VM-गिनती नियम लागू होता है। | | डिपेंडेंसी | सेवा कोटा पंक्तियाँ केवल उन उत्पादों के लिए मौजूद होती हैं जो आपके इंस्टॉलेशन में सक्षम हैं (VPN, IPv6 proxy, Kubernetes, Private Cloud, Images, Object Storage, Dedicated)। | ## आधार की गणना कैसे की जाती है {#how-the-basis-is-calculated} NexCMP अकेले कार्ड भुगतानों को नहीं देखता है। **आधार** ग्राहक का **पोस्ट किया गया वॉलेट बैलेंस** होता है: गेटवे टॉप-अप, एडमिनिस्ट्रेटर क्रेडिट्स (**Credit / debit**) और रिडीम किए गए वॉलेट वाउचर सभी वॉलेट लेज़र के माध्यम से एक बार गिने जाते हैं। प्रमोशन कोड से मिलने वाले ऑर्डर डिस्काउंट और सर्विस क्रेडिट वॉलेट का पैसा नहीं हैं और इनकी गिनती नहीं होती है। ग्राहक द्वारा कभी भी हासिल किया गया उच्चतम आधार **सुरक्षित** रखा जाता है (प्रति साइट) — खर्च करने या रिफंड मिलने से पहले से अनलॉक हुआ टियर कभी नीचा नहीं होता है। ### VM और Kubernetes संसाधन {#vm-and-kubernetes-resources} 1. टियर साइट की निश्चित योजनाएं हैं, जिन्हें उन्हें 24 घंटे चलाने की लागत के अनुसार क्रमित किया गया है। 2. कोई ग्राहक उस उच्चतम टियर पर होता है जिसकी 24-घंटे की लागत उनके आधार से अधिक नहीं होती है। सीमा उस योजना के vCPU, RAM और डिस्क होती है। जो ग्राहक सबसे सस्ती योजना का खर्च भी नहीं उठा सकता, उसे भी सबसे सस्ती योजना के संसाधन मिलते हैं। 3. सीमा के विरुद्ध गिने जाने वाले उपयोग में प्रत्येक लाइव VM (लॉक की गई सहित), खरीदे गए डेटा वॉल्यूम (अलग किए जाने पर भी) और Kubernetes वर्कर तथा कंट्रोल प्लेन (वर्कर भी VM के रूप में गिने जाते हैं) शामिल हैं। 4. **VM संख्या:** **Max VMs at 24h tier** (डिफ़ॉल्ट 2) तक। अगली VM से, ग्राहक के *वर्तमान* वॉलेट बैलेंस को उनकी सभी मौजूदा VM और नई VM को मिलाकर **30 दिनों (720 घंटे)** तक का खर्च कवर करना होगा, जो **Max VMs when meeting 30-day threshold** (डिफ़ॉल्ट 10) तक हो सकता है। 5. **VM बनाना** के लिए उस VM के कम से कम **N घंटे** के बैलेंस (**Create VM: balance ≥ N hours**, डिफ़ॉल्ट 2) और प्लेटफॉर्म न्यूनतम बैलेंस की भी आवश्यकता होती है। 6. VM को छोटा बनाना कभी ब्लॉक नहीं होता है। केवल बढ़ने वाले आयाम की जाँच की जाती है, इसलिए जो ग्राहक डिस्क सीमा से ऊपर है, वह भी vCPU सीमा अनुमति देने पर vCPU जोड़ सकता है। ## कॉन्फ़िगर करें {#configure} 1. **Services › Virtual Machines › Policy** खोलें और **Quota** टैब चुनें। 2. **Enable quota** चालू करें। 3. तीन संख्याओं की समीक्षा करें (सभी संपादित करने योग्य): | फ़ील्ड | डिफ़ॉल्ट | Range | |---|---|---| | VM बनाएं: बैलेंस ≥ N घंटे | 2 | 1 से 720 | | Max VMs at 24h tier | 2 | 1 से 100 | | 30-दिन की सीमा पूरी होने पर अधिकतम VMs | 10 | 1 से 1000 (पिछले फ़ील्ड से कम नहीं) | 4. **Tier-based service quotas** में तालिका (नीचे) संपादित करें। 5. **Save** पर क्लिक करें। NexCMP एक **कारण** मांगता है, जिसे पुराने और नए मानों के साथ ऑडिट लॉग में लिखा जाता है। यह परिवर्तन सभी ग्राहकों पर लागू होता है। ![सक्षम स्विच, VM सीमाओं और टियर-आधारित सेवा कोटा तालिका के साथ कोटा टैब](https://nexcmp.com/hi/docs/images/billing/quotas-01-policy.webp) ### सेवा कोटा तालिका {#service-quota-table} इस तालिका में पाँच टीयर हैं। हेडर सेल **L0** से **L4** में **सेंट में डिपाजिट थ्रेशोल्ड** होते हैं: डिफ़ॉल्ट `0, 1000, 5000, 20000, 100000` का अर्थ है नए खाते के लिए L0, $10 से L1, $50 से L2, $200 से L3 और $1,000 से L4। पहला थ्रेशोल्ड `0` ही रहना चाहिए। प्रत्येक पंक्ति प्रति टीयर एक कुंजी का कोटा निर्धारित करती है; **-1 का अर्थ असीमित है**। | कुंजी | अर्थ | L0 | L1 | L2 | L3 | L4 | |---|---|---|---|---|---|---| | `vpn.ips` | VPN IPs | 2 | 10 | 30 | 100 | 500 | | `proxy6.ips` | IPv6 proxy IPs | 500 | 2000 | 10000 | 50000 | -1 | | `dedicated.servers` | Bare-metal servers | 1 | 2 | 5 | 20 | 50 | | `s3.storage_gb` | Object Storage GB allocated | 2048 | 4096 | 10240 | 51200 | -1 | | `k8s.clusters` | Kubernetes clusters | 1 | 2 | 5 | 10 | 30 | | `k8s.workers` | Kubernetes worker nodes | 3 | 9 | 18 | 50 | 200 | | `vpc.count` | Private Cloud networks | 1 | 2 | 5 | 10 | 30 | | `images.gb` | कस्टम इमेज स्टोरेज GB | 50 | 100 | 200 | 500 | 2000 | तालिका में उन उत्पादों के लिए भी कुछ पंक्तियाँ सूचीबद्ध हैं जो इस रिलीज़ का हिस्सा नहीं हैं; उन्हें वैसे ही रहने दें। जिस उत्पाद की कुंजी बंद है वह छिपी होती है और उस पर कभी अमल नहीं किया जाता। मान `-1` या `0` और `10,000,000` के बीच होना चाहिए। सेवा कोटा VM टीयर की तरह ही **फंड्स बेसिस** का पालन करते हैं: कुल कार्ड भुगतानों के बजाय पहुँच गया उच्चतम वॉलेट बैलेंस। रीसेलर ग्राहक समान डिफ़ॉल्ट का उपयोग करते हैं और रीसेलर केवल उन्हें देख सकता है। ## प्रति-ग्राहक ओवरराइड {#per-customer-overrides} 1. **Customers › List** खोलें, फिर ग्राहक को। **Overview** में कार्ड **Quota** खोजें। 2. **VM संसाधन:** **Quota override** पर क्लिक करें और इनमें से कोई एक चुनें - **टॉप-अप बैलेंस द्वारा (ओवरराइड हटाएँ)** — डिफ़ॉल्ट व्यवहार; - **असीमित (VM काउंट सहित)** — इस ग्राहक के लिए हर सीमा को हटा देता है; - **प्लान टीयर** — संसाधन सीमा को उस प्लान पर तय करता है; VM-काउंट नियम अभी भी लागू होता है। एक कारण दर्ज करें। प्लेटफ़ॉर्म प्रशासक कोई भी टीयर सेट कर सकते हैं; रीसेलर द्वारा सेट किया गया ओवरराइड ग्राहक के रखे गए बेसिस से अधिक नहीं हो सकता। 3. **सेवाएँ:** *Service quotas* के अंतर्गत तालिका *In use*, प्रभावी सीमा और उसके *Source* (टीयर या ओवरराइड) के साथ प्रत्येक कुंजी दिखाती है। किसी पंक्ति पर **Edit** पर क्लिक करें, **New quota** (`-1` = असीमित, खाली = वापस टीयर डिफ़ॉल्ट पर) और एक कारण टाइप करें। ![टीयर, संसाधन उपयोग और ओवरराइड के साथ सेवा कोटा तालिका दिखाने वाला ग्राहक कोटा कार्ड](https://nexcmp.com/hi/docs/images/billing/quotas-02-customer.webp) प्रत्येक ओवरराइड को प्रशासक, कारण और पहले/बाद के मानों के साथ ऑडिट लॉग में दर्ज किया जाता है। ## ग्राहक क्या देखता है {#what-the-customer-sees} **Client › Quotas** (`/client/quotas`) ग्राहक का **वर्तमान टीयर**, उपयोग किए गए और कुल vCPU, RAM, disk और VM काउंट (VM और Kubernetes के बीच विभाजित), **पात्र वॉलेट बैलेंस**, **धारक संसाधन बेसिस** (खर्च करने पर यह कम नहीं होता), और अगले टीयर के लिए कितना टॉप-अप करना है, यह दिखाता है। एक स्लाइडर उन्हें एक लक्ष्य टीयर चुनने और सीधे डिपाजिट स्क्रीन पर जाने देता है। **Service Quotas** कार्ड प्रत्येक सेवा को कोटे, उपयोग की गई मात्रा, उनके टीयर (L0 से L4), अगले टीयर के लिए और कितना डिपाजिट करना है, और एक **Request increase** बटन के साथ सूचीबद्ध करता है जो एक सपोर्ट टिकट ड्राफ्ट खोलता है। एक **Quota policy** बटन नियमों को समझाता है। ![वर्तमान टीयर, संसाधन उपयोग और सेवा कोटा के साथ पोर्टल कोटा पृष्ठ](https://nexcmp.com/hi/docs/images/billing/quotas-03-portal.webp) ## सत्यापित करें {#verify} 1. **Enable quota** चालू करें और $0 बैलेंस वाले एक नए परीक्षण ग्राहक का उपयोग करें। 2. अपने सबसे सस्ते प्लान से बड़ा VM बनाने का प्रयास करें। अनुरोध `quota_exceeded` और संदेश "Exceeds the resources of tier ... Top up $X more to unlock tier ..." के साथ अस्वीकार कर दिया जाता है। 3. दिखाई गई राशि का टॉप-अप करें। टीयर तुरंत बदल जाता है और वही अनुरोध सफल हो जाता है। 4. L0 सीमा से ऊपर VPN IPs खरीदें: HTTP 403 `quota_exceeded`, `"scope":"service"` और `/client/quotas` के लिंक के साथ। 5. ग्राहक के कोटा कार्ड में, **Source** *tier* दिखाता है; एक ओवरराइड सेट करें और इसे बदलकर *override* होते हुए देखें। ## Limits & notes {#limits-notes} - **बंद का मतलब बंद है।** `quota_enabled` बंद होने पर पुराना नियम `new_account_max_vms` (**Services › Virtual Machines › Policy › Sales**) नए खातों को उनके डिपाजिट $10 तक पहुँचने तक 2 VM तक सीमित करता है। जब कोटा चालू होता है, तो वह नियम लागू नहीं होता। - **admin-द्वारा बनाई गई VMs ब्लॉक नहीं की जाती हैं।** - **Errors fail closed.** यदि कोटा स्थिति को नहीं पढ़ा जा सकता है, तो अनुरोध को अनुमति देने के बजाय `quota_unavailable` के साथ अस्वीकार कर दिया जाता है। - **API, CLI और MCP** अनुरोध समान हैंडलर का उपयोग करते हैं, इसलिए समान सीमाएँ लागू होती हैं। - **Promotion credit** कोई टियर नहीं बढ़ाता ([Promotions](https://nexcmp.com/hi/docs/billing/promotions/) देखें)। - **टियर सीमाएँ सेंट में हैं**, डॉलर में नहीं। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | `quota_exceeded`, कारण `resources` | नया कुल vCPU/RAM/डिश टियर से ऊपर है | संदेश में दी गई राशि का टॉप अप करें या एक ओवरराइड सेट करें। | | `quota_exceeded`, कारण `vm_30d` | 24h-टियर VM गिनती से अधिक और वॉलेट अभी तक फ्लीट के 30 दिनों को कवर नहीं करता है | दर्शित राशि का टॉप अप करें। | | `quota_exceeded`, कारण `vm_max` | पूर्ण VM कैप तक पहुँच गया है | **Max VMs when meeting 30-day threshold** बढ़ाएं या ओवरराइड का उपयोग करें। | | `quota_exceeded`, `scope: service` | प्रति-सेवा सीमा तक पहुँच गया है | तालिका मान बढ़ाएँ या ग्राहक के लिए उस कुंजी को ओवरराइड करें। | | `quota_unavailable` | कोटा स्थिति सत्यापित नहीं की जा सकी | पुनः प्रयास करें; यदि यह बनी रहती है तो सर्वर लॉग की जाँच करें। | | सहेजते समय "quota_max_vms_30d must be >= quota_max_vms_24h" | मान उलट गए | 30-दिन की संख्या को कम से कम 24-घंटे की संख्या के बराबर बनाएँ। | | ग्राहक का कहना है कि टियर गिर गया है | यह गिरता नहीं है; **Held resource basis** की तुलना प्लान लागत से करें | प्लान मूल्य सूची की जाँच करें: प्लान मूल्य वृद्धि सीमाओं को स्थानांतरित कर सकती है। | --- # Managing customers {#managing-customers} > **Where in the admin:** Customers › Customers › List (`/customers`), Deletion requests (`/customers/requests`), Service transfers (`/customers/transfers`) और API keys (`/customers/apikeys`)। ## यह क्या करता है {#what-it-does} Customers क्षेत्र वह है जहाँ सहायता कर्मचारी किसी खाते को देखते हैं, उसका वॉलेट, सेवाएँ, टिकट और साइन-इन इतिहास देखते हैं, और उस पर कार्रवाई करते हैं: लॉक करना, अनलॉक करना, ईमेल सत्यापित करना, पासवर्ड रीसेट करना, क्रेडिट जोड़ना या हटाना, प्रतिरूपण करना, VM बनाना या खाता बंद करना। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | Role | एक प्रशासक। प्रत्येक लेखन कार्रवाई के लिए एक कारण पूछा जाता है और इसे ऑडिट लॉग (System › Logs › Admin actions) में लिखा जाता है। | | ईमेल | पासवर्ड रीसेट और आमंत्रण ईमेल के लिए एक कार्यशील [SMTP configuration](https://nexcmp.com/hi/docs/administration/smtp-and-emails/) की आवश्यकता होती है। | ## ग्राहक सूची {#the-customer-list} **Customers › List** खोलें। ग्राहक आपकी मुख्य साइट के खाते हैं; रीसेलर्स के खाते भी दिखाई देते हैं और उन्हें साइट के आधार पर फ़िल्टर किया जा सकता है। ![फ़िल्टर और देश, रेफ़रल स्रोत, शेष राशि और VM गिनती कॉलम के साथ ग्राहक सूची](https://nexcmp.com/hi/docs/images/customers/managing-customers-01-list.webp) | कॉलम | अर्थ | |---|---| | **Email** (और नाम) | ग्राहक को खोलने के लिए क्लिक करें। | | **State** | *Active*, *Locked* या *Deleted*, साथ ही *verified* या *unverified* ईमेल। कारण पढ़ने के लिए लॉक टैग पर होवर करें। | | **Login** | ग्राहक के पास साइन-इन विधियाँ हैं: पासवर्ड, Google, GitHub, पासकी। | | **Country** | **IP address** से प्राप्त झंडा और नाम: पंजीकरण IP का देश, या जब वह अज्ञात हो, तो अंतिम साइन-इन IP का। टूलटिप बताती है कि किसका उपयोग किया गया था। | | **Referral source** | *Referral*, जब ग्राहक किसी एफिलिएट लिंक के माध्यम से साइन अप करता है, तो उसमें रेफरर का लिंक और रेफरल कोड होता है; अन्यथा "Not recorded"। | | **Balance**, **VMs** | वॉलेट बैलेंस (ऋणात्मक मान लाल रंग में) और चालू VMs की संख्या। | | **पंजीकृत आईपी / अंतिम** | साइन-अप के समय और दो-अक्षर वाले देश के साथ अंतिम साइन-इन के समय उपयोग किया गया IP। एक ही पते से कई खातों का पता लगाने के लिए इसका उपयोग करें। | | **Tenant** | ग्राहक की आंतरिक tenant ID। | | **Created**, **Last login** | सापेक्ष समय। | | **Site** | जब आपके पास रीeller (reseller) होते हैं तब दिखाई देता है। | **Search** में ईमेल, नाम या IP स्वीकार किए जाते हैं। **Filters:** स्थिति (all, active, locked, deleted), लॉगिन विधि (any, Google, GitHub, passkey, no password yet) और site। फ़िल्टर URL में सहेजे जाते हैं, इसलिए फ़िल्टर की गई सूची को बुकमार्क किया जा सकता है या किसी सहकर्मी के साथ साझा किया जा सकता है। **सॉर्टिंग वैश्विक है।** *Email*, *State*, *Balance*, *Vms*, *Created* या *Last login* के हेडर पर क्लिक करने से सर्वर पर **पूरा** ग्राहक आधार सॉर्ट हो जाता है, न कि केवल वह पेज जिसे आप देख रहे हैं, और पेज नंबर वापस 1 पर चला जाता है। **सूची अपने आप अपडेट होती है।** जब आप इसे देख रहे होते हैं तो यह हर कुछ सेकंड में रीफ़्रेश होती है (कोई डायलॉग खुला होने पर या आपके टाइप करने के दौरान यह रुक जाती है), जिससे नए साइन-अप और बैलेंस में बदलाव बिना रीलोड किए दिखाई देते हैं। खुला रहने पर ग्राहक पृष्ठ लगभग हर 30 सेकंड में रीफ़्रेश होता है; प्रत्येक टैब पहली बार खोले जाने पर अपना डेटा लोड करता है। ### ग्राहक बनाएं {#create-a-customer} 1. **Create customer** पर क्लिक करें। 2. **ईमेल**, एक वैकल्पिक **display name**, एक वैकल्पिक **password** (खाली = ग्राहक आमंत्रण लिंक के माध्यम से इसे सेट करता है) दर्ज करें और चुनें कि **send the invitation e-mail** करना है या नहीं। 3. पुष्टि करें। जब आप आमंत्रण भेजते हैं तो हाथ से बनाया गया खाता सत्यापित माना जाता है। ## ग्राहक का पेज {#a-customer-s-page} किसी पंक्ति पर क्लिक करें। इस पृष्ठ में आठ टैब हैं; चयनित टैब को URL में बनाए रखा जाता है ताकि आप इसे बुकमार्क कर सकें। पहली बार खोले जाने पर टैब लोड होते हैं और दूसरी जगह जाने पर भी अपनी स्थिति बनाए रखते हैं। | टैब | सामग्री | |---|---| | **Overview** | पहचान, पंजीकरण और अंतिम साइन-इन की जानकारी, वॉलेट और सेवा सारांश | | **Services** | ग्राहक की सेवाओं के लिए एक तालिका, प्रकार और स्थिति फ़िल्टर, खोज, सर्वर-साइड सॉर्टिंग और पेजिनेशन के साथ | | **Billing** | वॉलेट और क्रेडिट, लेज़र, इनवॉइस, भुगतान, रिफ़ंड, सहेजे गए भुगतान के तरीके और ऑटो टॉप-अप | | **Quota** | संसाधन सीमाएं और ओवरराइड; [Quotas](https://nexcmp.com/hi/docs/billing/quotas/) देखें | | **Security** | सत्र, प्रमाणीकरण, साइन-इन के तरीके, साइन-इन का इतिहास और API keys; [API keys](https://nexcmp.com/hi/docs/developers/api-keys/) देखें | | **Support** | हाल की टिकटें | | **Affiliate** | रेफरल प्रोग्राम की स्थिति | | **Log** | ऑडिट और गतिविधि इतिहास | हेडर में एक्शन बटन (हटाए गए खातों के लिए छिपे हुए): | बटन | यह क्या करता है | |---|---| | **Lock account** / **Unlock** | साइन-इन और API एक्सेस को ब्लॉक करता है। वैकल्पिक रूप से सभी VMs को भी रोकता है (उन्हें हटाए बिना)। प्रीपेड सेवाएँ जो VMs नहीं हैं (Kubernetes, Private Cloud, VPN इत्यादि) वे भी रोक दी जाती हैं। व्यवस्थापक द्वारा लॉक किए गए VMs को VM पेज पर अलग से खोलना होगा। | | **Verify email** | ग्राहक द्वारा लिंक पर क्लिक किए बिना ईमेल को सत्यापित के रूप में चिह्नित करता है। | | **Send reset link** | पासवर्ड रीसेट लिंक ईमेल किया जाता है (1 घंटे के लिए वैध, एकल उपयोग)। यदि SMTP कॉन्फ़िगर नहीं किया गया है तो लिंक एक बार दिखाया जाता है ताकि आप इसे खुद भेज सकें। एडमिनिस्ट्रेटर को पासवर्ड कभी नहीं दिखता। | | **Impersonate** | एक घंटे के लिए ग्राहक के रूप में साइन इन करता है। [Log in as a customer](https://nexcmp.com/hi/docs/customers/login-as/) देखें। | | **Credit / debit** | लेजर एडजस्टमेंट द्वारा वॉलेट राशि जोड़ता या हटाता है। [Invoices and ledger](https://nexcmp.com/hi/docs/billing/invoices-and-ledger/) देखें। | | **Revoke sessions** | ग्राहक को हर जगह से साइन आउट करता है; ऐप टोकन काम करना बंद कर देते हैं। | | **Create VM** | ग्राहक के लिए एक VM बनाता है। | | **Soft delete** | खाता बंद करता है। पुष्टि करने के लिए आपको ईमेल टाइप करना होगा। | ### किसी व्यक्तिगत सेवा को प्रबंधित करें {#manage-an-individual-service} ग्राहक का **Services** टैब खोलें, नाम, ID, IP या कॉन्फ़िगरेशन द्वारा सेवा खोजें, और उसकी पंक्ति की क्रियाओं का उपयोग करें। यही क्रियाएं सेवा की अपनी व्यवस्थापक सूची में भी उपलब्ध हैं। डायलॉग केवल उन्हीं क्रियाओं की पेशकश करता है जो उस सेवा और उसकी वर्तमान स्थिति द्वारा समर्थित हैं। | Action | प्रभाव (Effect) | |---|---| | **Lock** | डेटा को बनाए रखते हुए सेवा को रोकता है। ग्राहक इसे लॉक देखता है और इसे संचालित नहीं कर सकता है। टॉप-अप करने से व्यवस्थापक का लॉक नहीं हटता है; लॉक रहने के दौरान स्वचालित नवीनीकरण अवरुद्ध रहता है। | | **Unlock** | व्यवस्थापक के लॉक को हटाता है। यह किसी असंबंधित दुर्व्यवहार या अन्य सुरक्षा लॉक को नहीं हटाता है। | | **Cancel without refund** | बिना किसी रिफ़ंड लेज़र प्रविष्टि के सेवा को रद्द करता है। पुष्टिकरण चेतावनी देता है कि रद्दीकरण को वापस नहीं बदला जा सकता है। | | **Cancel and refund** | मूल भुगतान, उनके वॉलेट/क्रेडिट आवंटन, पिछले रिफ़ंड और अधिकतम रिफ़ंड योग्य राशि दिखाता है। पुष्टि करने से पहले राशि की समीक्षा करें। | प्रत्येक कार्रवाई के लिए कोई कारण दर्ज करें। यह कारण व्यवस्थापकों के लिए है; ग्राहक को एक न्यूट्रल सर्विस इवेंट या सूचना प्राप्त होती है। रिफंड किया गया वॉलेट का पैसा वॉलेट में वापस आ जाता है, और क्रेडिट या प्रमोशनल आवंटन क्रेडिट में वापस लौट जाते हैं। यह कार्रवाई Stripe, बैंक ट्रांसफर या PayPal के माध्यम से पैसे वापस नहीं भेजती है। समान प्रकार की कई सेवाओं के लिए, अधिकतम 50 पंक्तियों का चयन करें और बल्क कार्रवाई चुनें। परिणाम में प्रत्येक पंक्ति की सफलता या विफलता की सूची होती है। बल्क रिफंड प्रत्येक सेवा की सुझाई गई राशि का उपयोग करते हैं; जिन सेवाओं का सुझाया गया रिफंड शून्य है, उन्हें रिफंड मोड में छोड़ दिया जाता है और उनकी व्यक्तिगत समीक्षा या बिना रिफंड के रद्दीकरण की आवश्यकता होती है। DDoS Shield, डिस्क और Backups यहाँ केवल पढ़ने योग्य (read-only) पंक्तियाँ हैं। बैंडविड्थ ऐड-ऑन अपनी मूल सेवा का अनुसरण करते हैं। AI Models एक्सेस को लॉक किया जा सकता है, लेकिन रद्द करने के लिए इसका कोई सब्सक्रिप्शन नहीं है। किराए पर लिए गए Bare Metal सर्वर को लॉक करने के लिए, उसके ऑर्डर के बजाय उसके सब्सक्रिप्शन पर कार्रवाई करें। ### खाता बंद करना (सॉफ्ट डिलीट) {#closing-an-account-soft-delete} खाता *deleted* पर सेट हो जाता है, ब्लॉक हो जाता है, इसके सत्र रद्द कर दिए जाते हैं और इसके रेफरल कमीशन जो अभी तक भुगतान नहीं किए गए थे, उलट दिए जाते हैं। लेखांकन (accounting) के लिए इनवॉइस और लेजर बने रहते हैं। जब तक ग्राहक के पास **कोई भी लाइव सर्विस** (VM, Kubernetes, Private Cloud, Dedicated, VPN, IPv6 प्रॉक्सी), S3 खाता या अनसुलझा S3 उपयोग है, तब तक यह कार्रवाई अस्वीकार कर दी जाती है। उन्हें पहले हटाएं। ## हटाने के अनुरोध {#deletion-requests} एक ग्राहक अपने खाता पृष्ठ से हटाने का अनुरोध कर सकता है। अनुरोध **Customers › Deletion requests** के अंतर्गत (डिफ़ॉल्ट फ़िल्टर: पेंडिंग) ग्राहक, कारण, लाइव VM की संख्या, शेष राशि और अनुरोध समय के साथ दिखाई देते हैं। - **Approve deletion** तभी संभव है जब ग्राहक के पास कोई लाइव VM न हो। पुष्टि करने के लिए ईमेल टाइप करें। खाते को सॉफ्ट-डिफ़ॉल्ट किया जाता है; **शेष वॉलेट बैलेंस स्वचालित रूप से वापस नहीं किया जाता है** — यदि आप पर बकाया है तो पहले रिफंड बनाएं। - **Reject** के लिए एक कारण आवश्यक है। ## सर्विस ट्रांसफर {#service-transfers} **Customers › Service transfers** **एक ही साइट पर** एक खाते से दूसरे खाते में **VM या VPN सब्सक्रिप्शन** ले जाने के अनुरोधों की सूची देता है। - यह स्क्रीन केवल पढ़ने और बनाने के लिए है: आप किसी ग्राहक की ओर से अनुरोध बना सकते हैं या उसे रद्द कर सकते हैं। मालिक या प्राप्तकर्ता के लिए इसे स्वीकृत करने के लिए जानबूझकर कोई बटन **नहीं** है। - प्रवाह (Flow): मालिक एकल-उपयोग ईमेल लिंक (30 मिनट के लिए वैध, सक्षम होने पर TOTP के साथ) के माध्यम से पुष्टि करता है, फिर प्राप्तकर्ता साइन इन करता है और स्वीकार करता है (प्राप्तकर्ता भुगतान की जिम्मेदारी संभालता है)। 7 दिनों के भीतर स्वीकार न किया गया अनुरोध समाप्त हो जाता है। - नियम: सर्विस सक्रिय होनी चाहिए, कोई अवैतनिक इनवॉइस और कोई चालू जॉब नहीं होना चाहिए; प्राप्तकर्ता उसी साइट पर सत्यापित ईमेल वाला एक सक्रिय ग्राहक होना चाहिए। VM ट्रांसफर SSH कुंजी को हटा देता है और ऑटो-रिन्यू को बंद कर देता है; VPN ट्रांसफर कनेक्शन पासवर्ड बदल देता है। - पहले से जारी इनवॉइस पिछले मालिक के पास रहते हैं; नया मालिक पिछले मालिक के डेटा को छिपाकर सर्विस के बिलिंग इतिहास को पढ़ सकता है। - ग्राहक पोर्टल में **Transfers** के अंतर्गत अपने स्वयं के अनुरोध बना सकते हैं (प्रति घंटे 5 अनुरोध और एक समय में 3 खुले)। ## सत्यापित करें {#verify} 1. आमंत्रण ईमेल के साथ एक ग्राहक बनाएं। नया खाता कुछ सेकंड के भीतर सूची के शीर्ष पर दिखाई देता है। 2. **Balance** के अनुसार क्रमित करें: यह क्रम सभी ग्राहकों को कवर करता है। 3. ग्राहक को लॉक करें: स्थिति टैग *Locked* में बदल जाता है और ग्राहक अब साइन इन नहीं कर सकता। इसे अनलॉक करें। ## Limits & notes {#limits-notes} - देश का कॉलम IP पर आधारित एक मार्गदर्शक है, निवास का प्रमाण नहीं। निजी या अज्ञात पते कोई देश नहीं देते हैं। - खाता लॉक करने से कुछ भी रिफंड नहीं होता है और जब तक आप उन्हें बंद करने का विकल्प नहीं चुनते, तब तक VM डिलीट नहीं होते हैं। - खाता अनलॉक करने से वे VM अनलॉक नहीं होते जिन्हें एडमिनिस्ट्रेटर ने लॉक किया था; उन्हें VM पेज पर अलग से खोलें। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | "कस्टमर के पास अभी भी लाइव सेवाएं हैं... पहले बंद/डिलीट करें" | ग्राहक के पास सेवाएं या S3 खाता है | उन्हें हटाएं, फिर सॉफ्ट डिलीट करें। | | डिलीट अप्रूवल में "N VMs alive" दिखाई देता है | यही कारण है | पहले VM हटाएं। | | "e-mail queued" के बजाय रीसेट लिंक दिखाया गया | SMTP कॉन्फ़िगर नहीं किया गया है | ईमेल कॉन्फ़िगर करें, या लिंक स्वयं भेजें। | | साइन-इन विधि (`last_login_method`) नहीं हटाई जा सकती | यह ग्राहक के साइन इन करने का एकमात्र तरीका है | पहले दूसरी विधि जोड़ें। | | लॉक करने से प्रीपेड सेवाएं बंद नहीं होतीं | बंद करने में त्रुटियों की सूचना मिली थी | लॉक करने के बाद संदेश पढ़ें; सिस्टम स्वचालित रूप से बंद करने का प्रयास करता है। | | स्थानांतरण नहीं बनाया जा सकता | अवैतनिक चालान, चल रहा जॉब, प्राप्तकर्ता किसी अन्य साइट पर या सत्यापित नहीं है | स्थिति को ठीक करें और पुनः प्रयास करें। | --- # ग्राहक के रूप में लॉग इन करें {#log-in-as-a-customer} > **एडमिन में कहाँ:** Customers › Customers › List › a customer › header button **Impersonate** (`/customers/`)। ## यह क्या करता है {#what-it-does} **Impersonate** (लॉगिन-अस) सपोर्ट प्रशासक को किसी समस्या को पुनरुत्पादित करने या ऑर्डर में सहायता के लिए पोर्टल को ठीक वैसे देखने देता है जैसा ग्राहक उसे देखता है। सत्र एक घंटे तक चलता है और सामान्य सत्र से स्पष्ट रूप से अलग होता है: खाते तक स्थायी पहुंच देने वाली कोई भी चीज़ अवरुद्ध होती है, और प्रत्येक उपयोग को लॉग किया जाता है। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | Role | प्रशासक ने एडमिन कंसोल में साइन इन किया हो। | | ग्राहक | खाता **active** होना चाहिए। लॉक या डिलीट किया गया खाता "account is not active" (HTTP 409) उत्तर देता है। | | कारण | कारण अनिवार्य है; इसे ऑडिट लॉग में लिखा जाता है। | | ब्राउज़र | एडमिन पते के लिए पॉप-अप की अनुमति दें: पोर्टल एक नई विंडो में खुलता है। | ## चरण {#steps} 1. **Customers › List** खोलें और ग्राहक पर क्लिक करें। 2. **Impersonate** पर क्लिक करें। एक संवाद बताता है कि ग्राहक की साइट एक घंटे के लिए ग्राहक के रूप में खुलती है और प्रत्येक कार्रवाई का ऑडिट किया जाता है। 3. **कारण** टाइप करें (उदाहरण के लिए "Ticket 1234 — cannot create VM") और **Open app** पर क्लिक करें। 4. ग्राहक की साइट पर एक नई विंडो खुलती है और `?impersonated=1` के साथ डैशबोर्ड दिखाती है। यदि ब्राउज़र ने विंडो को ब्लॉक कर दिया है, तो पॉप-अप की अनुमति दें और दोबारा क्लिक करें। ![कारण फ़ील्ड भरा हुआ Impersonate संवाद](https://nexcmp.com/hi/docs/images/customers/login-as-01-dialog.webp) पुनर्विक्रेता के ग्राहक के लिए, विंडो **पुनर्विक्रेता के अपने डोमेन** पर खुलती है, क्योंकि लिंक केवल ग्राहक की अपनी साइट पर काम करता है। ## यह कैसे काम करता है {#how-it-works} 1. एडमिन कार्रवाई एक घंटे के लिए मान्य **सिंगल-यूज टोकन** बनाती है और ऑडिट लॉग में `customer.login_as` (प्रशासक, IP, कारण, साइट) लिखती है। 2. नई विंडो `https:///v1/portal/impersonate/` खुलती है। पहला अनुरोध केवल एक छोटा पृष्ठ दिखाता है और टोकन का उपभोग **नहीं** करता है (ताकि ब्राउज़र प्रीफ़ेचिंग इसे नष्ट न कर सके); इसके बाद पृष्ठ POST के साथ पुष्टि करता है। 3. POST टोकन का उपभोग करता है। दूसरा उपयोग, या एक घंटे के बाद उपयोग, "The impersonation link has expired or was already used" उत्तर देता है। 4. NexCMP एक ग्राहक सत्र बनाता है जो **एक घंटे** तक चलता है (सामान्य सत्र 30 दिन तक चलता है), विधि `impersonate` के साथ साइन-इन प्रविष्टि दर्ज करता है, और `customer.login_as.used` लॉग करता है। 5. टोकन केवल ग्राहक की अपनी साइट पर काम करता है; किसी अन्य होस्ट पर यह 404 उत्तर देता है। ## इम्पर्नेटेड सत्र में क्या ब्लॉक किया जाता है {#what-is-blocked-in-an-impersonated-session} ऐसी कोई भी चीज़ जो एक घंटे से ज़्यादा का एक्सेस देती है या ग्राहक की अपनी सुरक्षा को बदलती है, वह HTTP 403 `impersonate_forbidden` लौटाती है: | ब्लॉक किया गया | क्यों | |---|---| | पासवर्ड बदलना, TOTP, Google/GitHub को लिंक या अनलिक करना, पासकी संपादित करना | ग्राहक के अपने क्रेडेंशियल्स | | खाता हटाना | अपरिवर्तनीय | | **API keys** बनाना या संपादित करना | दीर्घकालिक एक्सेस | | CLI, डेस्कटॉप या MCP लॉगिन (डिवाइस लिंक) स्वीकृत करना | दीर्घकालिक एक्सेस | | Kubernetes एक्सेस, S3 कुंजियाँ, SSH कुंजियाँ, रूट पासवर्ड, कंसोल शेयर लिंक, VPN या प्रॉक्सी क्रेडेंशियल्स बनाना | ऐसे सीक्रेट जो सत्र से ज़्यादा समय तक चलते हैं | | टॉप-अप कोड रिडीम करना | धन संबंधी अभियान | | सहयोगी कमीशन का भुगतान निकालना या बदलना | सिस्टम से पैसे बाहर जाना | | AI कुंजियाँ, बजट या अलर्ट ई-मेल संपादित करना | ग्राहक कॉन्फ़िगरेशन | बाकी सब कुछ काम करता है: आप पेज पढ़ सकते हैं, VM बना या प्रबंधित कर सकते हैं, ऑर्डर दे सकते हैं और इसी तरह आगे भी। कार्रवाइयां ग्राहक की पहचान के साथ चलती हैं और ग्राहक के पैसे खर्च करती हैं; ऊपर दिए गए ऑडिट प्रविष्टियाँ यह दिखाती हैं कि सत्र के पीछे एक व्यवस्थापक था। ## सत्यापित करें {#verify} 1. किसी परीक्षण ग्राहक को इम्पर्नेट करें। पोर्टल खुलता है और उस ग्राहक का डेटा दिखाता है। 2. पासवर्ड बदलने का प्रयास करें: आपको "forbidden" (इम्पर्नेशन) मिलता है। 3. **System › Logs › Admin actions** में, अपने नाम, कारण और साइट के साथ `customer.login_as` खोजें, जिसके बाद `customer.login_as.used` हो। 4. विंडो बंद करें, वही लिंक दोबारा खोलें: "link expired or already used"। ## Limits & notes {#limits-notes} - एक घंटे की सीमा निश्चित है (3600 सेकंड)। जारी रखने के लिए, फिर से इम्पर्नेट करें। - पढ़ने और पुनरुत्पादित करने को प्राथमिकता दें; उन कार्यों से बचें जो पैसे खर्च करते हैं जब तक कि ग्राहक ने आपसे ऐसा न कहा हो। - ग्राहक पृष्ठ पर **Revoke sessions** के साथ सत्र को जल्दी रद्द करें (यह ग्राहक को भी साइन आउट कर देता है)। - Resellers के पास Resellers से अपना स्वयं का **Sign in to partner console** इंपरसोनेशन (60 मिनट) होता है; [Resellers](https://nexcmp.com/hi/docs/customers/resellers/) देखें। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | "खाता सक्रिय नहीं है" | खाता लॉक या हटाया गया | इसे पहले अनलॉक करें, या इसके बजाय ग्राहक पृष्ठ देखें। | | ब्राउज़र विंडो को ब्लॉक करता है | 팝-अप ब्लॉकर | व्यवस्थापक पते के लिए पॉप-अप की अनुमति दें और पुनः प्रयास करें। | | "लिंक की समय-सीमा समाप्त हो गई है या पहले ही उपयोग किया जा चुका है" | एक घंटे की सीमा या पुनरुुपयोग | फिर से इम्पर्नेट करें। | | "Not found" खुलता है | लिंक का उपयोग गलत होस्ट पर किया गया था | उस विंडो का उपयोग करें जिसे डायलॉग ने खोला था; लिंक को कहीं और पेस्ट न करें। | | एक कार्रवाई "forbidden" कहती है | इम्पर्नेटेड सत्रों में ब्लॉक किया गया | ग्राहक से ऐसा करने के लिए कहें, या व्यवस्थापक स्क्रीन का उपयोग करें। | --- # Resellers (व्हाइट-लेबल) {#resellers-white-label} > **Where in the admin:** Customers › Resellers › List (`/resellers`), Domains & SSL (`/resellers/domains`), Permissions & wholesale (`/resellers/entitlements`), Defaults (`/resellers/settings`)। Reseller slots: System › Admin › License & updates (`/license`)। ## यह क्या करता है {#what-it-does} एक **reseller** को **अपने स्वयं के डोमेन** पर कस्टमर पोर्टल की एक ब्रांडेड कॉपी मिलती है, जिसमें उनके अपने ग्राहक, वॉलेट, कीमतें और (वैकल्पिक रूप से) भुगतान चैनल होते हैं। वे आपसे थोक मूल्य (wholesale price) पर खरीदते हैं और अपनी कीमत पर बेचते हैं। उनके ग्राहक कभी भी आपके ब्रांड को नहीं देखते हैं, और reseller डोमेन कभी भी आपके एडमिन कंसोल को नहीं खोल सकता है। Reseller `https://partner.` पर स्थित **partner console** से अपना व्यवसाय चलाता है। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | License | प्रत्येक कस्टम reseller डोमेन के लिए आपके लाइसेंस पर एक **reseller domain slot**। लाइसेंस पेज `used/max` स्लॉट और अधिक खरीदने के लिए एक लिंक दिखाता है। बिना किसी फ्री स्लॉट के, डोमेन जोड़ने पर "Out of license reseller domain slots" त्रुटि के साथ विफलता आती है। | | DNS | प्रत्येक reseller डोमेन आपके सर्वर पर पॉइंट होना चाहिए (नीचे देखें)। | | वेब सर्वर और TLS | होस्ट नाम उस नाम के लिए एक वैध प्रमाणपत्र के साथ आपके रिवर्स प्रॉक्सी के माध्यम से NexCMP पैनल तक पहुँचना चाहिए। | | ईमेल | आमंत्रण और सूचना ईमेल के लिए SMTP कॉन्फ़िगर किया गया है। | | Master switch | **Reseller settings › General › `rs_enabled`** डिफ़ॉल्ट रूप से चालू है। | ## बुनियादी ढांचा तैयार करें {#prepare-the-infrastructure} 1. सर्वर का सार्वजनिक पता तय करें: इसका IPv4 पता और, यदि आप CNAME पसंद करते हैं, तो एक होस्ट नाम जो इस पर पॉइंट करता हो (उदाहरण के लिए `sites.cloud.example.com`)। 2. **Customers › Resellers › Defaults** (`/resellers/settings`), समूह **Domains & SSL** खोलें, और सेट करें: | कुंजी | अर्थ | |---|---| | `rs_server_ipv4` | सार्वजनिक IPv4 जिस पर resellers के A रिकॉर्ड्स पॉइंट होने चाहिए। | | `rs_cname_target` | होस्ट नाम जिस पर resellers के CNAME रिकॉर्ड्स पॉइंट होने चाहिए। | | `rs_master_hosts` | होस्ट नाम जो आपकी अपनी मुख्य साइट के हैं (वे resellers को नहीं दिए जा सकते)। | | `rs_platform_domain` | **प्लेटफॉर्म सब-डोमेन** के लिए वैकल्पिक मूल डोमेन (उदाहरण के लिए `partners.cloud.example.com` ताकि resellers को `acme.partners.cloud.example.com` दिया जा सके)। खाली छोड़ने पर विकल्प अक्षम हो जाता है। | | `rs_sites_stale_minutes` | प्रमाणपत्र सेवा को पुराना (stale) मानने से पहले के मिनट (डिफ़ॉल्ट 15)। | | `rs_ssl_fail_hours` | त्रुटि उत्पन्न होने से पहले विफल प्रयासों के घंटे (डिफ़ॉल्ट 48)। | ::: warning निर्देश भेजने से पहले इन मानों की जाँच करें `rs_server_ipv4`, `rs_cname_target` और `rs_master_hosts` उदाहरण मानों के साथ आते हैं। किसी reseller को DNS निर्देश देने से **पहले** उन्हें अपने स्वयं के सर्वर और डोमेन से बदलें, अन्यथा स्क्रीन पर दिए गए निर्देश गलत स्थान पर पॉइंट करेंगे। ::: 3. Click **Save** (एक कारण का अनुरोध किया जाता है)। 4. सुनिश्चित करें कि आपका रिवर्स प्रॉक्सी reseller होस्ट नामों को NexCMP पैनल पर अग्रेषित (forward) करता है और उनमें से प्रत्येक के लिए एक प्रमाणपत्र परोसता है। इंस्टॉलर केवल मुख्य डोमेन (और `admin.` तथा `partner.` नाम जो रिज़ॉल्व होते हैं) के लिए nginx और Let's Encrypt को कॉन्फ़िगर करता है। यदि आप Cloudflare का उपयोग करते हैं, तो होस्ट नाम को प्रॉक्सी करें और Full SSL मोड का उपयोग करें। ## NexCMP में कनेक्ट करें {#connect-in-nexcmp} ### Create the reseller {#create-the-reseller} 1. **Customers › Resellers › List** खोलें और **New reseller** पर क्लिक करें। विज़ार्ड में 8 चरण हैं और अंत में सब कुछ प्रोविज़न हो जाता है; प्रत्येक चरण को सुरक्षित रूप से पुनः प्रयास किया जा सकता है। | Step | Fill in | |---|---| | **Reseller** | कानूनी या व्यापारिक नाम, **slug** (4–31 वर्ण a–z, 0–9 या `-`, एक अक्षर से शुरू होने वाला; यह इनवॉइस उपसर्ग भी है), संपर्क नाम, ईमेल और फोन, डिफ़ॉल्ट भाषा, reseller का बिलिंग विवरण (वॉलेट टॉप-अप के खरीदार के रूप में)। | | **Console account** | उपयोगकर्ता नाम, खाता ईमेल, पूरा नाम; **Send a one-time invite link by e-mail** (72 घंटे के लिए वैध, अनुशंसित) या एक बार अस्थायी पासवर्ड दिखाएं। | | **Brand** | ब्रांड नाम, संक्षिप्त नाम, टैगलाइन, प्राथमिक रंग, समर्थन ईमेल और फोन, ग्राहक चालान पर मुद्रित विक्रेता का नाम, लोगो (हल्की और गहरी पृष्ठभूमि), चौकोर चिह्न और फ़ेविकॉन: PNG, JPEG, WEBP या ICO 256 KB तक, **कोई SVG नहीं**। | | **Domains** | कस्टमर डोमेन जो **www के साथ भी** हों, इनमें से कौन सा प्राथमिक है, एक **टेस्ट डोमेन** (sslip.io) और **dry-run** विकल्प, या प्लेटफ़ॉर्म सब-डोमेन। विज़ार्ड **DNS OK / DNS not ready** और बनाए जाने वाले रिकॉर्ड दिखाता है। | | **Pricing & wallet** | होलसेल डिस्काउंट (%), रिटेल फ़्लोर (लिस्ट का %), डिफ़ॉल्ट मार्कअप (%), क्रेडिट लिमिट, शुरुआती बैलेंस, लो-बैलेंस अलर्ट, कस्टमर्स, VMs और डोमेन पर सीमाएं, साइट फ़ीचर्स (कस्टमर साइन-अप, DDoS सुरक्षा, सपोर्ट टिकट, कस्टम प्लान, रिसाइज़, Auto Scaling)। | | **Payment channels** | कस्टमर पेमेंट कौन कलेक्ट करता है (नीचे देखें) और वैकल्पिक अपना PayPal तथा अपना VN बैंक ट्रांसफर। | | **Email** | प्रेषक का नाम और Reply-To। जब तक रीसेलर डोमेन के लिए DKIM सेट अप नहीं हो जाता, From पता प्लेटफ़ॉर्म का पता ही रहता है। | | **Review** | सब कुछ जांचें और **Provision everything** पर क्लिक करें, या **Save draft (provision later)** चुनें। | 2. प्रोविज़निंग बैकग्राउंड में (हर 30 सेकंड में) जारी रहती है। प्रगति देखने के लिए रीसेलर खोलें और यदि कोई चरण विफल रहा हो तो **Continue provisioning** या **Retry** का उपयोग करें। ![पहले चरण पर उदाहरण मानों के साथ नया रीसेलर विज़ार्ड](https://nexcmp.com/hi/docs/images/customers/resellers-01-wizard.webp) ### DNS पॉइंट करें (रीसेलर यह करता है) {#point-dns-the-reseller-does-this} रीसेलर (या आप) **Domains & SSL** टैब पर दिखाए गए रिकॉर्ड बनाता है: | रिकॉर्ड | Name | मान | |---|---|---| | TXT (स्वामित्व, केवल पहली बार) | `_site-verify.` | `sv=` स्क्रीन पर दिखाया गया है | | A (एपेक्स डोमेन जैसे `shop.example.net`) | डोमेन | आपका `rs_server_ipv4` | | CNAME (सब-डोमेन जैसे `cloud.example.net`) | डोमेन | आपका `rs_cname_target` (या `rs_server_ipv4` पर एक A रिकॉर्ड) | | CNAME (वैकल्पिक) | `www.` | आपका `rs_cname_target` | यह भी: - कोई भी **AAAA** (IPv6) रिकॉर्ड हटा दें जब तक कि आपका सर्वर उस IPv6 पते पर जवाब न देता हो। - जब तक डोमेन सत्यापित हो रहा है, CDN प्रॉक्सी को **off** (ग्रे क्लाउड) कर दें। - यदि डोमेन में **CAA** रिकॉर्ड हैं, तो `letsencrypt.org` की अनुमति दें। TXT रिकॉर्ड में टोकन हर डोमेन के लिए अलग होता है; इसे स्क्रीन से कॉपी करें। सिस्टम पहले 48 घंटों के लिए हर 5 मिनट में, फिर प्रति घंटे DNS की फिर से जांच करता है, और 72 घंटों के बाद भी TXT रिकॉर्ड गायब रहने पर नाम हटा देता है। ### डोमेन स्थितियाँ {#domain-states} **Customers › Resellers › Domains & SSL** (सभी रीसेलर) पर और रीसेलर के **Domains & SSL** टैब में: | स्थिति | अर्थ | |---|---| | `pending_verify` | TXT रिकॉर्ड की प्रतीक्षा कर रहा है। | | `pending_dns` / `verifying` | A या CNAME के आपकी ओर पॉइंट करने की प्रतीक्षा कर रहा है। | | `issuing` | प्रमाणपत्र जारी किया जा रहा है। | | `active` | रीसेलर की साइट सर्व कर रहा है। | | `cert_expiring` | प्रमाणपत्र समाप्ति के करीब है; नवीनीकरण अपेक्षित है। | | `dns_lost` | DNS ने आपकी ओर पॉइंट करना बंद कर दिया है; 30 दिनों के बाद डोमेन हटा दिया जाता है। | | `error` | त्रुटि कोड देखें; ठीक करने के बाद **Retry** करें। | | `removing` / `removed` | वापस लिया जा रहा है; लाइसेंस स्लॉट वापस कर दिया जाता है। | पंक्ति क्रियाएँ: **Check now**, **Retry**, **Make primary**, **Test mode** (टेस्ट डोमेन के लिए), **Remove**। ## अनुमतियाँ और होलसेल {#permissions-wholesale} **Customers › Resellers › Permissions & wholesale** (`/resellers/entitlements`) एक मैट्रिक्स है: प्रत्येक रीeller के लिए एक पंक्ति, जिसमें होलसेल **डिस्काउंट** और **मार्कअप** होते हैं और प्रत्येक सेवा के लिए एक स्विच होता है (उदाहरण के लिए DDoS Shield और VPN)। जब प्लेटफ़ॉर्म-व्यापी फ़ीचर चालू होता है तो स्विच संपादन योग्य होता है; अन्यथा सेल रीड-ऑनलाइन होती है और सेटिंग से लिंक होती है। **Top-up codes** सब-टैब यह सेट करता है कि प्रत्येक रीeller प्रति माह कितने कोड जारी कर सकता है (देखें [Promotions](https://nexcmp.com/hi/docs/billing/promotions/))। मूल्य निर्धारण नियम: - होलसेल मूल्य = सूची मूल्य x (1 - डिस्काउंट), और इसे रीeller के **Wholesale pricing** टैब में प्रति प्लान और प्रति बिलिंग साइकिल बदला जा सकता है। - रीeller खुद खुदरा मूल्य निर्धारित करता है और **floor** (सूची का प्रतिशत) से नीचे नहीं जा सकता। - जब उनके ग्राहक खरीदते हैं तो रीeller का **wallet** होलसेल मूल्य का भुगतान करता है। वॉलेट की क्रेडिट सीमा, ग्रेस पीरियड और ओवरड्राफ़्ट कैप होती है (देखें Defaults)। ## डिफ़ॉल्ट {#defaults} **Customers › Resellers › Defaults** (`/resellers/settings`) वे `rs_*` कुंजियाँ हैं जो प्रत्येक रीeller पर लागू होती हैं। प्रत्येक बदलाव के लिए एक कारण पूछा जाता है और उसका ऑडिट किया जाता है। | समूह | कुंजी | डिफ़ॉल्ट | अर्थ | |---|---|---|---| | सामान्य | `rs_enabled` | 1 | रीeller प्रोग्राम चालू है। | | | `rs_platform_collect_enabled` | 0 | प्लेटफ़ॉर्म को रीeller के लिए ग्राहकों के भुगतान एकत्र करने की अनुमति देता है। **केवल कानूनी समीक्षा के बाद ही सक्षम करें।** | | | `rs_totp_required` | 1 | रीeller कंसोल खातों में टू-फैक्टर प्रमाणीकरण का उपयोग होना चाहिए. | | | `rs_agreement_version` | 1 | रीeller समझौते का संस्करण जिसे उन्हें स्वीकार करना होगा। | | डिफ़ॉल्ट मूल्य निर्धारण | `rs_default_discount_bp` | 2000 (20 %) | नए रीeller के लिए होलसेल डिस्काउंट (बेसिस पॉइंट्स, 0 से 9000)। | | | `rs_default_markup_bp` | 2500 (25 %) | डिफ़ॉल्ट मार्कअप (0 से 50000)। | | | `rs_default_floor_bp` | 9000 (90 %) | रिटेल फ़्लोर (0 से 20000)। | | | `rs_default_max_domains` | 3 | प्रति रीeller अनुमत डोमेन। | | वॉलेट और भुगतान | `rs_grace_hours` | 72 | खाली रीeller वॉलेट से ग्राहकों की सेवाओं के प्रभावित होने से पहले का ग्रेस। | | | `rs_overdraft_cap_cents` | 5000 | वॉलेट पर अनुमत ओवरड्राफ़्ट। | | | `rs_retention_days` | 14 | बंद रीeller के VM नष्ट होने से पहले के दिन। | | | `rs_payout_hold_days` | 30 | कमीशन निकाले जाने से पहले रोके जाने वाले दिन। | | | `rs_payout_min_cents` | 5000 | सबसे छोटी निकासी। | | | `rs_topup_min_cents` | 2000 | रीeller द्वारा सबसे छोटा वॉलेट टॉप-अप। | | भुगतान और मेल | `rs_webhook_base` | खाली | रीeller गेटवे वेबहुक के लिए सार्वजनिक बेस URL (खाली = साइट URL का उपयोग करें)। | | | `rs_mail_from` | खाली | रीeller ई-मेल के लिए फ्रॉम एड्रेस। | | | `rs_invoice_show_processor` | 1 | इनवॉइस पर पेमेंट प्रोसेसर दिखाएं। | | | `rs_gw_stripe_enabled`, `rs_gw_usdt_enabled` | 1 | क्या रीeller अपना खुद का Stripe या USDT कॉन्फ़िगर कर सकते हैं। | ## ग्राहक भुगतान कौन एकत्र करता है {#who-collects-customer-payments} | मोड | अर्थ | |---|---| | **रीeller एकत्र करता है (स्वयं के चैनल)** — डिफ़ॉल्ट | रीeller अपना खुद का Stripe, PayPal, USDT या बैंक खाता जोड़ता है। उनके वेबहुक `https:///v1/billing//webhook/r/` हैं। इन साइटों के लिए सहेजे गए कार्ड और [auto top-up](https://nexcmp.com/hi/docs/billing/auto-top-up/) उपलब्ध नहीं हैं। | | **प्लेटफ़ॉर्म एकत्र करता है** | आपके चैनल रीeller साइट पर दिखाए जाते हैं। `rs_platform_collect_enabled = 1` तक लॉक है। | | **मिश्रित** | प्रति चैनल चुना गया एक संयोजन। | ## रीeller क्या देखता है {#what-the-reseller-sees} `https://partner.` पर पार्टनर कंसोल में Overview, Reports, Customers, VMs, Tickets, Orders, Payments, Prices, Brand, Landing & legal, Domains & SSL, Email, Wallet और Payment channels हैं। कंसोल खातों की भूमिका *reseller* (पूर्ण) या *staff* (रीड-ऑनलाइन) होती है। इसे स्वयं देखने के लिए, रीeller को खोलें और **Sign in to partner console** पर क्लिक करें: आप 60 मिनट के लिए प्रवेश करते हैं, हर राइट आपके नाम के साथ एडमिन लॉग और रीeller लॉग दोनों में दर्ज किया जाता है, और पैसे के संचालन के लिए दूसरे पुष्टिकरण की आवश्यकता होती है। ## सत्यापित करें {#verify} 1. प्रोविज़निंग के बाद, रीeller की सूची पंक्ति में *active* और एक हरा **Provisioning** कॉलम दिखाई देता है। 2. ब्राउज़र में रीeller का डोमेन खोलें: रीeller का अपना लॉगिन पेज उनके ब्रांड के साथ दिखाई देता है। `https:///admin` 404 देता है। 3. उस डोमेन पर एक टेस्ट कस्टमर साइन अप करें: कस्टमर **Customers › List** के तहत **Site** कॉलम में रीeller के साथ दिखाई देता है। 4. लाइसेंस पेज पर एक और इस्तेमाल किया गया स्लॉट दिखाई देता है। ## Limits & notes {#limits-notes} - प्रत्येक कस्टम या टेस्ट डोमेन के लिए एक लाइसेंस स्लॉट; प्लेटफ़ॉर्म सब-डोमेन स्लॉट का उपयोग नहीं करते हैं। - रीeller को सस्पेंड करने से डेटा सुरक्षित रहता है; **Close reseller** सभी डोमेन स्लॉट वापस कर देता है, और रिटेंशन अवधि के बाद ही VM को नष्ट करने की अनुमति होती है। - रीeller के कस्टमर आपकी कस्टमर सूची में दिखाई देते हैं और किसी अन्य की तरह उनका प्रतिरूपण (impersonation) किया जा सकता है (लिंक रीeller के डोमेन पर खुलता है)। - रीeller आपके भुगतान चैनल, कोटा डिफ़ॉल्ट या अन्य रीeller को देख या बदल नहीं सकते हैं। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | "लाइसेंस रीसेलर डोमेन स्लॉट समाप्त हो गए हैं" | सभी स्लॉट उपयोग हो चुके हैं | एक स्लॉट खाली करें (डोमेन हटाएं) या लाइसेंस पेज पर और खरीदें। | | डोमेन `pending_verify` में फंसा हुआ है | TXT रिकॉर्ड गायब है | बिल्कुल वैसे ही TXT रिकॉर्ड बनाएं जैसा दिखाया गया है; **Check now** का उपयोग करें। | | डोमेन `pending_dns` में फंसा हुआ है | A/CNAME आपकी ओर पॉइंट नहीं कर रहा है, AAAA रिकॉर्ड, या CDN प्रॉक्सी चालू है | DNS ठीक करें, प्रॉक्सी बंद करें, फिर **Check now** पर क्लिक करें। | | `error` स्थिति | पंक्ति पर कोड देखें (उदाहरण के लिए Let's Encrypt को ब्लॉक करने वाला CAA, दर सीमा) | ठीक करें और **Retry** पर क्लिक करें। | | ब्राउज़र कहता है कि होस्ट अज्ञात है या "421" | होस्ट नाम लाइसेंस पर नहीं है, या पैनल पर रूट नहीं किया गया है | रीeller के माध्यम से डोमेन जोड़ें (एक स्लॉट का उपयोग करता है) और रिवर्स प्रॉक्सी को ठीक करें। | | निर्देशों में गलत IP या होस्ट दिखाई देता है | `rs_server_ipv4` / `rs_cname_target` में अभी भी नमूना (sample) मान हैं | उन्हें Defaults में सेट करें। | | रीeller प्लेटफ़ॉर्म कलेक्शन सक्षम नहीं कर सकता है | लॉक किया गया | कानूनी समीक्षा के बाद `rs_platform_collect_enabled` सेट करें। | --- # ब्रेनडिंग {#branding} > **Where in the admin:** System › Settings › Brand (`/settings/branding`)। संबंधित: यूआरएल और इनवॉइस पर छपे विक्रेता विवरण के लिए System › Settings › General (`/settings`)। ## यह क्या करता है {#what-it-does} NexCMP व्हाइट-लेबल है: उत्पाद पर कोई वेंडर का नाम नहीं होता है, और आपके कस्टमर जो कुछ भी देखते हैं वह **आपका** ब्रांड होता है। ब्रांड सेटिंग्स लॉगिन और साइन-अप पेज, पोर्टल, एडमिन कंसोल और ई-मेल पर लागू होती हैं। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | Role | एक एडमिनिस्ट्रेटर। | | फ़ाइलें | लोगो: SVG, PNG, JPEG, WEBP या ICO, **प्रत्येक 512 KB तक**। | | डिपेंडेंसी | कोई नहीं। | ## चरण {#steps} 1. **System › Settings › Brand** खोलें। 2. कार्ड **Identity** में भरें: | फ़ील्ड | नोट्स | |---|---| | **Brand name** (आवश्यक) | 60 वर्णों तक। पोर्टल, ई-मेल, इनवॉइस और कानूनी पेजों में दिखाया जाता है। | | **इनवॉइस पर विक्रेता का नाम** | 120 वर्णों तक। खाली होने का मतलब है ब्रांड नाम। | | **Brand color** | एक `#rrggbb` रंग; फ़ील्ड के बगल में दिया गया छोटा बटन इसे अंतर्निहित (built-in) रंग पर रीसेट कर देता है। | | **Site currency** | **USD**: कीमतें और शेष राशि केवल USD में दिखाई जाती हैं, कोई मुद्रा स्विचन नहीं। **VND**: संग्रहीत विनिमय दर पर परिवर्तित राशि भी दिखाता है (देखें [Currency and exchange rates](https://nexcmp.com/hi/docs/catalog/currency-and-exchange-rates/))। | 3. **Save** पर क्लिक करें। 4. कार्ड **Logo & favicon** में तीन छवियां — **Logo (light background)**, **Logo (dark background)** और **Favicon** — **Upload** (या **Replace**) के साथ अपलोड करें; **Remove** एक को हटाता है। ![पहचान फ़ील्ड और तीन अपलोड की गई छवियों के साथ ब्रांड पेज](https://nexcmp.com/hi/docs/images/customers/branding-01-brand.webp) ### General में संबंधित सेटिंग्स {#related-settings-in-general} **System › Settings › General** में दो टैब हैं जो पूरी तस्वीर बनाते हैं: | टैब | फ़ील्ड | |---|---| | **Branding & URLs** | ब्रांड नाम (ईमेल, चालान), डिफ़ॉल्ट भाषा (अंग्रेजी या वियतनामी), **Customer app URL**, **Console URL**, **Admin URL** (पुनर्विक्रेता इम्परसोनेशन लिंक) और **Partner console URL** (आमंत्रण लिंक, पुनर्विक्रेता ईमेल)। सेटअप विज़ार्ड इन्हें `https://`, `https:///admin` और `https:///console` से भरता है। | | **Seller & invoicing** | कानूनी इकाई का नाम, कर आईडी, पता, संपर्क ईमेल और चालान संख्या उपसर्ग। देखें [Invoices and ledger](https://nexcmp.com/hi/docs/billing/invoices-and-ledger/)। | ईमेल का **From name**, **System › Settings › Email** ([SMTP and e-mails](https://nexcmp.com/hi/docs/administration/smtp-and-emails/)) में सेट किया जाता है। ## अपलोड की गई फ़ाइलों की जाँच की जाती है {#uploaded-files-are-checked} - रास्टर छवियों को उनकी सामग्री से पहचाना जाता है (फ़ाइल नाम से नहीं) और मापा जाता है। - **SVG फाइलों को आकृतियों** की सुरक्षित सूची से दोबारा बनाया जाता है। स्क्रिप्ट, `foreignObject`, इवेंट एट्रिब्यूट्स, बाहर इशारा करने वाले बाहरी लिंक, `url(...)`, DOCTYPE या एंटिटी वाली फ़ाइल को **अस्वीकार** कर दिया जाता है (`svg_unsafe`)। - बहुत बड़ी फ़ाइल को `asset_too_large` के साथ, गलत प्रकार को `asset_type` के साथ, खराब आयामों को `asset_dimensions` के साथ अस्वीकार कर दिया जाता है। - फ़ाइलें सख्त सुरक्षा हेडर के साथ आपके अपने डोमेन से परोसी जाती हैं। ## सत्यापित करें {#verify} 1. प्राइवेट विंडो में पोर्टल लॉगिन पेज खोलें: लोगो, नाम और रंग दिखाई देते हैं। 2. फ़ेविकॉन के लिए ब्राउज़र टैब की जाँच करें (ब्राउज़र फ़ेविकॉन कैशे करते हैं; यदि आपको अभी भी पुराना दिखाई दे रहा है तो कैशे साफ़ करके रीलोड करें)। 3. एक परीक्षण ईमेल ट्रिगर करें (उदाहरण के लिए किसी परीक्षण ग्राहक के लिए **Send reset link**) और विषय तथा फ़ुटर में ब्रांड नाम की जाँच करें। ## Limits & notes {#limits-notes} - जब ग्राहक या व्यवस्थापक डार्क थीम पर स्विच करते हैं, तो डार्क पृष्ठभूमि के लिए लोगो का उपयोग किया जाता है। - पुनर्विक्रेताओं का अपना ब्रांड होता है; वे 256 KB तक PNG, JPEG, WEBP या ICO अपलोड करते हैं (SVG नहीं)। देखें [Resellers](https://nexcmp.com/hi/docs/customers/resellers/)। - ब्रांड रंग या लोगो में बदलाव अगले पेज लोड पर दिखाई देता है; पहले से भेजे गए ईमेल नहीं बदले जाते हैं। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | अपलोड अस्वीकृत: `svg_unsafe` | SVG में स्क्रिप्ट, लिंक या बाहरी संदर्भ हैं | सादा SVG (कोई स्क्रिप्ट नहीं, कोई बाहरी छवियां नहीं) निर्यात करें या PNG का उपयोग करें। | | `asset_too_large` | फ़ाइल 512 KB से अधिक है | छवि को संपीड़ित या आकार बदलें। | | `asset_type` | SVG, PNG, JPEG, WEBP या ICO नहीं है | फ़ाइल को कनवर्ट करें। | | `invalid_argument: primary` | रंग `#rrggbb` नहीं है | छह अंकों के हेक्स मान का उपयोग करें। | | पुराना लोगो अभी भी दिखाई दे रहा है | ब्राउज़र कैशे | हार्ड-रीलोड करें; फ़ेविकॉन में अधिक समय लग सकता है। | | कीमतें केवल USD में दिखाई देती हैं | साइट मुद्रा USD है | VND पर स्विच करें और सुनिश्चित करें कि विनिमय दर संग्रहीत है। | --- # कानूनी पृष्ठ {#legal-pages} > **एडमिन में कहाँ:** System › Settings › Legal (`/settings/legal`)। **ग्राहक इन्हें कहाँ देखते हैं:** `https:///terms` और `/privacy`, जो साइन-अप और चेकआउट से जुड़े होते हैं। ## यह क्या करता है {#what-it-does} आपका इंस्टॉलेशन दो पेज प्रकाशित करता है: **Terms of Service** और **Privacy Policy**। जब तक आप अपना खुद का पेज नहीं लिखते, NexCMP एक **न्यूट्रल डिफ़ॉल्ट टेक्स्ट** दिखाता है जो सॉफ्टवेयर विक्रेता का उल्लेख नहीं करता है और किसी विशेष सेवा का वादा नहीं करता है। बिक्री शुरू करने से पहले इसे अपने वकील द्वारा समीक्षित टेक्स्ट से बदलें। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | Role | एक एडमिनिस्ट्रेटर। | | सामग्री | सादा मार्कडाउन, प्रति पेज और भाषा अधिकतम **50 KB**। | | डिपेंडेंसी | ब्रांड का नाम और विक्रेता विवरण ([Branding](https://nexcmp.com/hi/docs/customers/branding/)) डिफ़ॉल्ट टेक्स्ट में डाले जाते हैं। | ## चरण {#steps} 1. **System › Settings › Legal** खोलें। दोनों पेजों में से प्रत्येक का अपना कार्ड है जिस पर *Using the default text* या *Using your text* टैग होता है। 2. भाषा टैब चुनें, **English** या **Tiếng Việt**। 3. अपना टेक्स्ट टाइप करें। जब तक बॉक्स खाली है, डिफ़ॉल्ट टेक्स्ट एक प्लेसहोल्डर के रूप में हल्के रंग में दिखाई देता है। इससे शुरू करने के लिए, **Start from the default text** पर क्लिक करें, फिर संपादित करें। 4. **Save** पर क्लिक करें। आकार काउंटर `used / 50 KB` दिखाता है। 5. **View on the customer site** पर क्लिक करके `/terms` या `/privacy` खोलें। 6. एक भाषा के लिए डिफ़ॉल्ट पर वापस जाने के लिए, **Clear, back to default** पर क्लिक करें और सहेजें। ![शुरुआती बिंदु के रूप में डिफ़ॉल्ट टेक्स्ट दिखाने वाले Terms of Service कार्ड के साथ Legal सेटिंग्स](https://nexcmp.com/hi/docs/images/customers/legal-01-terms.webp) ## डिफ़ॉल्ट पेजों में क्या होता है {#what-the-default-pages-contain} डिफ़ॉल्ट टेक्स्ट उत्पाद में `legal_default.json` के रूप में संग्रहीत होता है और आपके ब्रांड नाम, विक्रेता नाम, साइट URL और संपर्क ईमेल (System › Settings › General के तहत **Seller & invoicing** से भरा जाता है; यदि कोई ईमेल सेट नहीं है तो यह आपकी सहायता टीम की ओर इशारा करता है)। | पेज | Sections | |---|---| | **Terms of Service** | 1 सेवा · 2 खाते और सत्यापन · 3 मूल्य और बिलिंग · 4 रिफ़ंड · 5 आपका डेटा · 6 स्वीकार्य उपयोग · 7 उपलब्धता और सहायता · 8 निलंबन और समाप्ति · 9 दायित्व · 10 परिवर्तन और शासी कानून (विक्रेता के व्यवसाय के स्थान का कानून) | | **Privacy Policy** | 1 हम क्या एकत्र करते हैं · 2 हम इसका उपयोग क्यों करते हैं · 3 कुकीज़ और स्थानीय स्टोरेज · 4 इसे और कौन देखता है · 5 प्रतिधारण · 6 आपके अधिकार · 7 संपर्क | ::: warning कानूनी सलाह नहीं डिफ़ॉल्ट टेक्स्ट एक न्यूट्रल टेम्पलेट है। वास्तविक ग्राहकों के साथ इसका उपयोग करने से पहले इसकी समीक्षा करवाएं, विशेष रूप से रिफंड, दायित्व और शासी कानून पर अनुभागों की। ::: ## मार्कडाउन नियम {#markdown-rules} - समर्थित: शीर्षक (`# 1. Title`), पैराग्राफ, बुलेट और क्रमांकित सूचियां, **बोल्ड**, और लिंक `[text](https://example.com)`। - लिंक `http://` या `https://` से शुरू होने चाहिए। - **रॉ एचटीएमएल अस्वीकार कर दिया जाता है** (कोई भी ``, ` # कस्टमर पोर्टल का अवलोकन {#customer-portal-overview} > **पोर्टल में कहाँ:** `https:///` — ग्राहक `/login` पर साइन इन करते हैं। एडमिनिस्ट्रेटर `/admin` का उपयोग करते हैं; खाता एडमिनिस्ट्रेटर होने पर एक ही लॉगिन दोनों को खोलता है। पोर्टल वह है जिसका उपयोग आपके ग्राहक हर दिन करते हैं। यह आपके नाम, लोगो और रंगों ([Branding](https://nexcmp.com/hi/docs/customers/branding/)) से ब्रांडेड है और केवल वे सेवाएँ दिखाता है जिन्हें आपने चालू किया है ([Modules](https://nexcmp.com/hi/docs/infrastructure/modules/))। ## डैशबोर्ड {#the-dashboard} साइन-इन के बाद **Dashboard** यह दिखाता है: | ब्लॉक | अर्थ | |---|---| | वॉलेट बैलेंस | वर्तमान क्रेडिट और वर्तमान बर्न दर पर यह कितने दिन चलेगा इसका अनुमान | | इस महीने खर्च हुआ | अब तक के शुल्क और महीने के अंत के लिए एक पूर्वानुमान | | वर्चुअल मशीनें | स्थिति, IP, CPU और RAM के साथ प्रत्येक VM, और त्वरित क्रियाएँ (Console, Restart) | | बैंडविड्थ | 1 h, 6 h, 24 h, 7 d, 30 d के लिए इनबाउंड/आउटबाउंड ट्रैफ़िक | | हाल की गतिविधि | खाते पर नवीनतम गतिविधियाँ | | त्वरित शुरुआत | एक चेकलिस्ट: VM बनाएँ, SSH कुंजी जोड़ें, टॉप अप करें, ऑटो टॉप-अप सक्षम करें, ई-मेल सत्यापित करें | ![वॉलेट बैलेंस, खर्च के पूर्वानुमान, एक चल रही वर्चुअल मशीन और त्वरित-शुरुआत चेकलिस्ट के साथ कस्टमर डैशबोर्ड](https://nexcmp.com/hi/docs/images/portal/overview-01-dashboard.webp) ## नेविगेशन {#navigation} मेनू प्रकार के अनुसार सेवाओं को समूहीकृत करता है। आपके द्वारा अक्षम की गई सेवा (या जिसका स्रोत कनेक्ट नहीं है) दिखाई नहीं देती है। | क्षेत्र | पेज | |---|---| | Instances | [Virtual machines](https://nexcmp.com/hi/docs/portal/virtual-machines/) और उनके विवरण पृष्ठ | | डिप्लॉय | [Ordering](https://nexcmp.com/hi/docs/portal/ordering/) — एक संसाधन बनाएँ | | Storage | सक्षम होने पर स्नैपशॉट, बैकअप और वॉल्यूम — [Snapshots](https://nexcmp.com/hi/docs/portal/snapshots/) | | बिलिंग | [Wallet and top-ups](https://nexcmp.com/hi/docs/portal/sign-up-and-wallet/), चालान, ऑर्डर, कोटा | | खाता | प्रोफ़ाइल, साइन-इन और सुरक्षा, प्राथमिकताएँ, ऑटो टॉप-अप | | सपोर्ट | चैट विजेट और टिकट — [Support](https://nexcmp.com/hi/docs/portal/support/) | | API docs | `/apidoc` — [API](https://nexcmp.com/hi/docs/developers/api/) | ## खाता {#account} **Account** में चार टैब होते हैं: **Profile** (नाम, ई-मेल, कस्टमर ID, खाता हटाने का अनुरोध), **Sign-in & security** (पासवर्ड, पासकी, लिंक किए गए Google/GitHub), **Preferences** (भाषा, प्रदर्शन मुद्रा) और **Auto top-up** ([Auto top-up](https://nexcmp.com/hi/docs/billing/auto-top-up/))। कोई ग्राहक सीधे खाता नहीं हटा सकता: वे **Request account deletion** दबाते हैं; सभी वर्चुअल मशीनें हटाए जाने के बाद, एक ऑपरेटर अनुरोध की समीक्षा करता है (Customers › Deletion requests) और लंबित रहने के दौरान ग्राहक इसे वापस ले सकता है। ## भाषा और मुद्रा {#language-and-currency} पोर्टल 16 भाषाओं में उपलब्ध है और भाषा के अनुसार चुनी गई प्रदर्शन मुद्रा में कीमतें दिखाता है; [Currency and exchange rates](https://nexcmp.com/hi/docs/catalog/currency-and-exchange-rates/) देखें। ग्राहक **Preferences** में दोनों बदल सकते हैं। ## कस्टमर कोटा {#customer-quotas} **Billing › Quotas** दिखाता है कि ग्राहक प्रत्येक संसाधन (CPU, मेमोरी, स्टोरेज, IP, VM) का कितना उपयोग कर सकता है, उनके भुगतान के आधार पर — [Quotas](https://nexcmp.com/hi/docs/billing/quotas/) देखें। --- # साइन-अप, वॉलेट और टॉप-अप {#sign-up-wallet-and-top-up} > **पोर्टल में कहाँ:** `/register`, `/login`, Billing (`/billing`)। ## खाता बनाएँ {#create-an-account} 1. ग्राहक `https:///register` खोलता है और ई-मेल और पासवर्ड (अक्षर और अंकों के साथ कम से कम 10 वर्ण) दर्ज करता है, या जब आपने उन्हें सक्षम किया है तो **Google**, **GitHub** या **passkey** का उपयोग करता है — [Security](https://nexcmp.com/hi/docs/administration/security/#customer-sign-in) देखें। 2. यदि कैप्चा सक्षम है, तो वे इसे पूरा करते हैं। 3. आपके [SMTP](https://nexcmp.com/hi/docs/administration/smtp-and-emails/) के माध्यम से एक सत्यापन ई-मेल भेजा जाता है। जब आपकी बिक्री सेटिंग इसकी मांग करती है, तो VM बनाने से पहले सत्यापन आवश्यक है। ![ई-मेल और पासवर्ड फ़ील्ड के साथ पंजीकरण पृष्ठ](https://nexcmp.com/hi/docs/images/portal/sign-up-and-wallet-01-register.webp) ::: tip काम करने वाले SMTP के बिना ग्राहक अपना ई-मेल सत्यापित या पासवर्ड रीसेट नहीं कर सकते। पहले [SMTP](https://nexcmp.com/hi/docs/administration/smtp-and-emails/) कॉन्फ़िगर करें। ::: ## वॉलेट {#the-wallet} सब कुछ आपकी बिलिंग मुद्रा में **wallet** बैलेंस से भुगतान किया जाता है। **Billing** पृष्ठ दिखाता है: | सेक्शन | अर्थ | |---|---| | खर्च करने की शक्ति | बैलेंस और लंबित टॉप-अप | | संचित शुल्क | वर्तमान चक्र में उपभोग की गई प्रति घंटा सेवाएं, अभी तक तय नहीं हुई हैं | | बकाया शेष | कोई भी देय राशि | | बिलिंग इतिहास | टैब **Invoice History**, **Payment Order**, **Ledger**, **Orders** | ![खर्च करने की शक्ति, संचित शुल्क और इतिहास टैब के साथ बिलिंग पृष्ठ](https://nexcmp.com/hi/docs/images/portal/sign-up-and-wallet-02-billing.webp) ## क्रेडिट जोड़ें {#add-credit} 1. **Deposit** पर क्लिक करें। 2. राशि दर्ज करें। न्यूनतम आपकी [minimum top-up](https://nexcmp.com/hi/docs/billing/minimum-top-up/) है। 3. भुगतान चैनल चुनें (कार्ड, PayPal, USDT, या जब इंटरफ़ेस वियतनामी हो तो बैंक ट्रांसफर) — चैनल वे हैं जिन्हें आपने [Payment channels](https://nexcmp.com/hi/docs/billing/payment-channels/) में सक्षम किया है। 4. भुगतान करें। भुगतान प्रदाता द्वारा पुष्टि करने पर बैलेंस अपडेट हो जाता है। सहेजे गए कार्ड, Stripe Link और PayPal का पुनः उपयोग किया जा सकता है और [auto top-up](https://nexcmp.com/hi/docs/billing/auto-top-up/) के लिए उपयोग किया जा सकता है; [Saved payment methods](https://nexcmp.com/hi/docs/billing/saved-payment-methods/) देखें। ## कोड भुनाएं {#redeem-a-code} **Redeem code** आपके द्वारा जारी किए गए वाउचर (Finance › Billing › Vouchers) से क्रेडिट जोड़ता है या प्रमोशन कोड लागू करता है — [Promotions](https://nexcmp.com/hi/docs/billing/promotions/) देखें। ## Invoices {#invoices} प्रत्येक भुगतान किया गया ऑर्डर एक चालान तैयार करता है जो आपके विक्रेता विवरण ([General settings](https://nexcmp.com/hi/docs/administration/general-settings/)) को दिखाता है। ग्राहक इसे **Invoice History** से खोलते हैं और ब्राउज़र से PDF के रूप में प्रिंट या सहेजते हैं। ## प्रति घंटे शुल्क {#hourly-charges} प्रति घंटे की सेवाओं के लिए संसाधन के अस्तित्व के प्रत्येक घंटे शुल्क लिया जाता है; राशि जमा होती जाती है और एक ही घंटे का शुल्क $0.00 तक गोल (round) हो सकता है। जब शेष राशि पर्याप्त नहीं होती है, तो आपके बिलिंग नियमों के अनुसार सेवाएं निलंबित कर दी जाती हैं और ग्राहक को ईमेल (`low_balance`) द्वारा सूचित किया जाता है। --- # सेवा का ऑर्डर देना {#ordering-a-service} > **पोर्टल में कहाँ:** Deploy (`/deploy/vm`)। **एडमिन में कहाँ** आप नियंत्रित करते हैं कि यहाँ क्या दिखाई देता है: Services (plans, prices) और System › Admin › License & updates (modules)। ऑर्डर पेज क्रमांकित चरणों के साथ एक स्क्रॉल करने वाला फॉर्म है। चरण 1 पर दूसरी सेवा चुनने से पेज वही रहता है और नीचे के चरण बदल जाते हैं। ## चरण {#steps} 1. **Service** — Cloud Servers, और आपके द्वारा सक्षम की गई अन्य सेवाएं (Kubernetes, Object Storage, Images, Private Cloud, VPN …)। 2. **Location** — [zone](https://nexcmp.com/hi/docs/infrastructure/zones/)। कीमतें और शामिल ट्रैफ़िक स्थान के अनुसार भिन्न हो सकते हैं। 3. **Plan** — एक निश्चित प्लान (vCPU, RAM, NVMe डिस्क, प्रति घंटे की कीमत) या **Custom** (ग्राहक vCPU, RAM और डिस्क चुनता है; संसाधन प्रति मूल्य)। प्लान [Plans](https://nexcmp.com/hi/docs/catalog/plans/) से आते हैं। 4. **Billing cycle** — **Hourly** या छूट के साथ प्रीपेड मासिक/वार्षिक चक्र (उदाहरण के लिए 1 वर्ष −10%, 2 वर्ष −15%, 3 वर्ष −20%)। 5. **Operating system** — टेम्पलेट्स की एक सूची, **My Images** (ग्राहक के अपने अपलोड), और संस्करण। 6. **Hostname & quantity** — एक नाम (या **Randomize**) और कितने सर्वर। ![सेवा, स्थान और प्लान चरणों को दिखाने वाला ऑर्डर पेज](https://nexcmp.com/hi/docs/images/portal/ordering-01-plan.webp) ![ऑर्डर पेज के बिलिंग साइकिल और ऑपरेटिंग सिस्टम चरण](https://nexcmp.com/hi/docs/images/portal/ordering-02-cycle-os.webp) ## ऑर्डर देना {#placing-the-order} सारांश कीमत दिखाता है। [quota check](https://nexcmp.com/hi/docs/billing/quotas/) और [minimum balance](https://nexcmp.com/hi/docs/billing/minimum-top-up/) नियमों के बाद, प्रोविजनिंग से **पहले** वॉलेट से ऑर्डर का शुल्क लिया जाता है। एक VM आमतौर पर लगभग एक मिनट में *Running* स्थिति में पहुँच जाता है; ग्राहक VM के **Activity** टैब में डिप्लॉय चरण देखता है और प्रारंभिक पासवर्ड वाला "VM ready" ईमेल प्राप्त करता है (जो 10 मिनट के लिए एक बार दिखाई देता है)। ## ऑर्डर को क्या रोक सकता है {#what-can-stop-an-order} | संदेश / कारण | सुधार | |---|---| | पर्याप्त शेष राशि नहीं है | टॉप अप — [Sign-up, wallet and top-up](https://nexcmp.com/hi/docs/portal/sign-up-and-wallet/) | | कोटा समाप्त | कोटा बढ़ाएँ — [Quotas](https://nexcmp.com/hi/docs/billing/quotas/) | | ईमेल सत्यापित नहीं है | ग्राहक ईमेल सत्यापित करता है | | चुने गए स्थान के लिए कोई प्लान नहीं है | उस ज़ोन में एक प्लान उपलब्ध कराएं — [Plans](https://nexcmp.com/hi/docs/catalog/plans/) | | लाइसेंस मान्य नहीं है | ग्राहक नई सेवाएं नहीं बना सकते — [License](https://nexcmp.com/hi/docs/getting-started/license-and-purchase/#if-the-license-is-not-valid) | --- # वर्चुअल मशीनें {#virtual-machines} > **पोर्टल में कहाँ:** Instances (`/vms`) और किसी VM का पेज (`/vms/`)। **Instances** नाम, OS, स्थिति, IP, विनिर्देशों और लागत के साथ ग्राहक के VM की सूची देता है। इसका पेज खोलने के लिए किसी एक पर क्लिक करें। ## VM पेज {#the-vm-page} टैब: **Overview**, **Console**, **AI SSH Agent** (जब AI मॉड्यूल चालू हो), **Monitoring**, **Storage**, **Network**, **Configuration**, **Billing**, **Activity**। ![स्थिति, विनिर्देशों, IP, बैंडविड्थ चार्ट और एक्शन लॉग के साथ एक वर्चुअल मशीन अवलोकन](https://nexcmp.com/hi/docs/images/portal/virtual-machines-01-overview.webp) ### कार्रवाई {#actions} | Action | प्रभाव (Effect) | |---|---| | Console | ब्राउज़र कंसोल खोलता है — [Console](https://nexcmp.com/hi/docs/portal/console/) | | पुनः आरंभ करें / रोकें / जबरन रोकें | पावर नियंत्रण | | पासवर्ड रीसेट करें | एक नया पासवर्ड जनरेट करता है, जो एक बार दिखाया जाता है | | OS रीइंस्टॉल करें | टेंपलेट से पुनः निर्माण करता है; डेटा नष्ट हो जाता है | | IP बदलें | पब्लिक IP को बदलता है (जहाँ स्रोत इसे सपोर्ट करता है) | | Auto Scaling सक्षम करें | सक्षम होने पर लोड के तहत CPU/RAM को स्केल करता है | | हटाएं | VM को नष्ट करता है; प्रति घंटा बिलिंग बंद हो जाती है | ### दिखाई गई जानकारी {#information-shown} अपटाइम, इस महीने की लागत, लाइव उपयोग के साथ vCPU/RAM/डिस्क, पब्लिक और प्राइवेट IP, यूजर नाम, बैंडविड्थ चार्ट, एक्शन लॉग, और बिलिंग सारांश (प्लान, साइकिल, घंटे, शेष)। ::: info फ़ील्ड स्रोत पर निर्भर करते हैं एक VM पेज केवल वही दिखाता है जो उसका स्रोत सपोर्ट करता है। उदाहरण के लिए, Proxmox VE VM में कोई पोर्ट फ़ॉरवर्डिंग या चेंज-IP नहीं होता है, और इसकी OS सूची इसके क्लस्टर के टेंपलेट सेट का पालन करती है। [Proxmox VE](https://nexcmp.com/hi/docs/infrastructure/proxmox/) में क्षमता तालिका देखें। ::: ## बिलिंग टैब {#billing-tab} प्लान, साइकिल, कुल घंटे, शेष समय और बिलिंग लॉग दिखाता है। प्रति घंटा VM हटाए जाने तक जमा होते रहते हैं। कोई ग्राहक छूट पर लंबी अवधि का भुगतान करने के लिए **switch cycle** कर सकता है। ## एडमिनिस्ट्रेटर के लिए {#for-administrators} वही VM एडमिन कंसोल में Services › Virtual Machines के तहत दिखाई देता है, जहाँ आप ग्राहक की ओर से कार्रवाई कर सकते हैं या [log in as](https://nexcmp.com/hi/docs/customers/login-as/) कर सकते हैं। --- # Console {#console} > **पोर्टल में कहाँ:** VM का पेज → **Console** टैब। **एडमिन में कहाँ:** System › Admin › License & updates → मॉड्यूल (वेब SSH)। ## यह क्या करता है {#what-it-does} **Console** टैब ब्राउज़र में VM के लिए एक ग्राफिकल (VNC) सत्र खोलता है, तब भी जब VM के अंदर का नेटवर्क खराब हो। जब SSH मॉड्यूल सक्षम होता है तो दूसरे विकल्प के रूप में एक **web SSH** टर्मिनल उपलब्ध होता है। ## आवश्यकताएं {#requirements} | आइटम | VNC कंसोल | वेब SSH | |---|---|---| | CloudStack | कंसोल प्रॉक्सी VM (CPVM) पैनल द्वारा पहुंच योग्य — [CloudStack](https://nexcmp.com/hi/docs/infrastructure/cloudstack/) देखें | VM पर एक पहुंच योग्य SSH पोर्ट | | Proxmox VE | पैनल के माध्यम से काम करता है (Proxmox API पर noVNC; TLS फ़िंगरप्रिंट पिन किया गया है) — [Proxmox VE](https://nexcmp.com/hi/docs/infrastructure/proxmox/) देखें | वही | | पैनल | [General settings](https://nexcmp.com/hi/docs/administration/general-settings/) में सेट कंसोल URL | `ssh-proxy` सेवा और मॉड्यूल फ़्लैग `feature_ssh_web`; डिफ़ॉल्ट रूप से बंद — [Modules](https://nexcmp.com/hi/docs/infrastructure/modules/) देखें | यदि वेब SSH मॉड्यूल बंद है तो टैब **VNC only** दिखाता है। ## इसका उपयोग करें {#use-it} 1. VM खोलें → **Console**। 2. **Console** (या **Open in new window**) पर क्लिक करें। एक अल्पकालिक टिकट जारी किया जाता है और कंसोल `https:///console` पर खुलता है। 3. VM के यूजर नाम और पासवर्ड से लॉगिन करें (Overview टैब पर दिखाई देता है; खो जाने पर इसे रीसेट करें)। ![एक वर्चुअल मशीन का Console टैब](https://nexcmp.com/hi/docs/images/portal/console-01-tab.webp) ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | तुरंत "Disconnected" | ब्राउज़र ने पुराना कंसोल पथ रखा था | डोमेन के लिए साइट डेटा साफ़ करें और पुनः प्रयास करें | | काली स्क्रीन | VM रुका हुआ है या बूट हो रहा है | VM शुरू करें और प्रतीक्षा करें | | CloudStack पर कंसोल नहीं खुलता है | कंसोल प्रॉक्सी VM चल नहीं रहा है या पहुंच योग्य नहीं है | CloudStack में सिस्टम VM की जाँच करें | | कोई SSH विकल्प नहीं | Web SSH मॉड्यूलं बंद आहे | `ssh-proxy` इन्स्टॉल केल्यावरच हे चालू करा | --- # Snapshots and backups {#snapshots-and-backups} > **पोर्टलमध्ये कुठे:** Snapshots (`/snapshots`), Snapshot schedules (`/snapshots/schedules`), Backups (`/backups`). ॲडमिनमध्ये हे फिचर इनेबल असल्यासच ही माहिती दिसेल. ## यह क्या करता है {#what-it-does} एक स्नैपशॉट वीएम की डिस्क की स्थिति को सहेजता है ताकि ग्राहक किसी खराब बदलाव के बाद वापस जा सके। Snapshots को हाथ से या शेड्यूल पर बनाया जा सकता है। ## उपलब्धता {#availability} | Source | Snapshots | नोट्स | |---|---|---| | CloudStack | हाँ | व्हॉल्यूम स्नॅपशॉट; कॉन्फिगर केल्यानुसार स्टोरेजचे बिल आकारले जाईल | | Proxmox VE | हाँ | प्रति VM जास्तीत जास्त **5**; तयार करणे, लिस्ट करणे, रिस्टोअर करणे आणि डिलीट करणे | हा मेनू पर्याय तेव्हाच दिसेल जेव्हा स्नॅपशॉट फिचर चालू असेल आणि ग्राहकाकडे असा VM असेल ज्याचा सोर्स याला सपोर्ट करत असेल. ## इसका उपयोग करें {#use-it} 1. **Snapshots** उघडा, **Create** वर क्लिक करा, VM निवडून नाव द्या. 2. स्थिती *ready* होईपर्यंत थांबा. 3. मागे जाण्यासाठी, स्नॅपशॉटवर **Restore** निवडा आणि कन्फर्म करा — VM त्या स्थितीमध्ये परत येतो (आणि गरज पडल्यास रिस्टार्ट होतो). 4. आता ज्यांची गरज नाही असे स्नॅपशॉट डिलीट करा. ::: warning रिस्टोअर केल्यावर स्नॅपशॉट घेतल्यानंतर लिहिलेला सर्व डेटा निघून जातो. सुरक्षित केलेले VM पोर्टलमधून रिस्टोअर किंवा नष्ट केले जाऊ शकत नाहीत. ::: --- # Support for customers {#support-for-customers} > **पोर्टलमध्ये कुठे:** प्रत्येक पानावर चॅट बबल, `/chat`, आणि Support tickets. **ॲडमिनमध्ये कुठे:** Customers › Support › Tickets (`/support/tickets`), **Settings** टॅब. ## ग्राहकांसाठी {#for-customers} - **चॅट बबल** (प्रत्येक पानाच्या खालच्या कोपऱ्यात): प्रश्न विचार; [AI Chat](https://nexcmp.com/hi/docs/ai/ai-chat/) तुमच्या दस्तऐवजीकरणाचा आणि ग्राहकाच्या स्वतःच्या खात्यातील डेटाचा वापर करून उत्तर देतो. **Expand** वर क्लिक केल्यावर `/chat` वर तीच चर्चा उघडते. - **कर्मचाऱ्यांशी बोला**: संभाषण तुमच्या टीमकडे हस्तांतरित करते (तुमच्या ॲडमिन Telegram ग्रुपद्वारे). - **Telegram / Zalo** बटणे: तुम्ही सपोर्ट सेटिंग्जमध्ये लिंक्स सेट केल्यावरच ही दिसतात. - **तिकिटे**: मोठ्या समस्यांसाठी; उत्तरांचे ई-मेल पाठवले जातात (`ticket_reply`). ## तुमच्यासाठी {#for-you} 1. **Customers › Support › Tickets** उघडा; नवीन तिकिटे आणि चॅट संभाषणासह इथे दिसतात. 2. थ्रेडमध्ये रिप्लाय द्या. तुमच्या [SMTP](https://nexcmp.com/hi/docs/administration/smtp-and-emails/) द्वारे ग्राहकाला ई-मेल पाठवला जातो. 3. **Settings** टॅबमध्ये चॅट विजेट चालू किंवा बंद करा, Telegram आणि Zalo लिंक सेट करा (फक्त https), आणि AI आपोआप उत्तरे देईल की नाही ते निवडा — [AI Chat](https://nexcmp.com/hi/docs/ai/ai-chat/) पहा. 4. [Telegram alerts](https://nexcmp.com/hi/docs/administration/telegram-notifications/) कनेक्ट करा जेणेकरून नवीन चॅटबाबत तुमच्या टीमला सूचना मिळेल. --- # AI provider {#ai-provider} > **ॲडमिनमध्ये कुठे:** System › Settings › AI provider (`/settings/ai`). AI मॉड्यूल स्विच तिथे आणि System › Admin › License & updates (`/license`), **Module** कार्डवर आहे. ## यह क्या करता है {#what-it-does} AI Chat (स्वयंचलित सपोर्ट चॅट) आणि AI Agent (साध्या भाषेतील VM प्रशासन) सोबत कोणतेही इन-बिल्ट मॉडेल येत नाही. तुम्ही **तुमचा स्वतःचा प्रदाता** निवडता: कोणतीही सेवा जी **OpenAI-सुसंगत** `chat/completions` API देते — उदाहरणार्थ OpenAI, OpenRouter, LiteLLM गेटवे किंवा तुमचा स्वतःचा vLLM सर्वहर. NexCMP एंडपॉइंट आणि API की (एनक्रिप्टेड) सेव्ह करते आणि प्रत्येक AI फिचरसाठी त्यांचा वापर करते. तुम्ही थेट प्रदात्याला पैसे देता. ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | Endpoint | OpenAI-सुसंगत बेस URL (`https://api.openai.com/v1`, `https://ai.example.com/v1`). NexCMP `/chat/completions` ला अशा URL मध्ये जोडते जी `/v1` वर संपते; इतर कोणत्याही URL साठी ते `/v1/chat/completions` जोडते; जी URL आधीच `/chat/completions` वर संपते ती जशीच्या तशी वापरली जाते. | | मॉडल | ऐसा मॉडल जो **टूल (फ़ंक्शन) कॉलिंग** को सपोर्ट करता हो। AI Chat और एजेंट दोनों इसी पर निर्भर करते हैं। | | API कुंजी | उस एंडपॉइंट के लिए एक की। प्रदाता पक्ष पर **स्पेंडिंग कैप** (जैसे मासिक बजट के साथ LiteLLM वर्चुअल की) वाली की को प्राथमिकता दें। | | नेटवर्क | पैनल सर्वर को HTTP(S) के ज़रिए एंडपॉइंट तक पहुँचना होगा। फ़ॉर्म में टाइप किया गया URL केवल पोर्ट 80, 443, 8080 या 8443 पर इंटरनेट की ओर इशारा कर सकता है; आंतरिक पते का उपयोग करने के लिए पहले प्रदाता को सहेजें और फिर परीक्षण करें। | | डिपेंडेंसी | **AI** मॉड्यूल चालू है। एजेंट के लिए [AI Agent](https://nexcmp.com/hi/docs/ai/ai-agent/#requirements) देखें। | ## बुनियादी ढांचा तैयार करें {#prepare-the-infrastructure} 1. प्रदाता के पास साइन अप करें और एक API की बनाएं। यदि प्रदाता बजट या रेट लिमिट का समर्थन करता है, तो मासिक सीमा निर्धारित करें। 2. **बेस URL** और सटीक **मॉडल का नाम** (और वैकल्पिक रूप से, अधिकतम चार फ़ॉलबैक मॉडल) नोट करें। 3. इसे दर्ज करने से पहले NexCMP सर्वर से इसका परीक्षण करें: ```bash curl -s https://ai.example.com/v1/chat/completions \ -H "Authorization: Bearer XXXX" -H "Content-Type: application/json" \ -d '{"model":"gpt-4o-mini","messages":[{"role":"user","content":"Reply with one word: OK"}]}' ``` `choices[0].message.content` वाला JSON उत्तर यह दर्शाता है कि एंडपॉइंट काम करता है। ## NexCMP में कनेक्ट करें {#connect-in-nexcmp} 1. **System › Settings › AI provider** खोलें। 2. कार्ड **Module AI** में मॉड्यूल को **on** पर स्विच करें। जब तक यह चालू नहीं होता, ग्राहक पोर्टल में AI Chat या AI Agent नहीं देख पाते। (आप इसे **License & updates** में भी स्विच कर सकते हैं।) 3. कार्ड **Connection** में भरें: | फ़ील्ड | Example | नोट्स | |---|---|---| | इस प्रदाता का उपयोग करें | चालू | चालू होने के लिए बेस URL, एक मॉडल और एक की की आवश्यकता होती है। | | डिस्प्ले नाम | `LiteLLM` | अधिकतम 60 वर्ण। | | बेस URL (OpenAI-संगत) | `https://ai.example.com/v1` | `http://` या `https://`, अधिकतम 300 वर्ण, कोई स्पेस नहीं। | | प्रदाता API की | `sk-XXXX` | एन्क्रिप्टेड रूप से सहेजा गया; इसके बाद केवल अंतिम 4 वर्ण दिखाए जाते हैं। सहेजी गई की को बनाए रखने के लिए खाली छोड़ें। | | डिफ़ॉल्ट मॉडल | `gpt-4o-mini` | अक्षर, अंक और `- _ . / : @`। | | फ़ॉलबैक मॉडल | `gemini-2.5-flash` | कॉमा से अलग किए गए, अधिकतम 4। डिफ़ॉल्ट मॉडल के विफल होने पर उपयोग किया जाता है। | | रीज़निंग प्रयास | डिफ़ॉल्ट (भेजा नहीं गया) | `Minimal`, `Low`, `Medium` या `High`। रीज़निंग मॉडल (Gemini, o-सीरीज़) के लिए लो लेवल बहुत तेज़ी से उत्तर देता है। सामान्य मॉडल के लिए डिफ़ॉल्ट पर छोड़ें। | 4. **Save** पर क्लिक करें, फिर **Test connection** पर क्लिक करें। परीक्षण एक छोटा प्रश्न भेजਦਾ है और `Connected — , ms` या प्रदाता द्वारा लौटाई गई त्रुटि को दिखाता है। ![AI मॉड्यूल चालू होने और कनेक्शन फ़ॉर्म में उदाहरण मान भरे होने के साथ AI प्रदाता पेज](https://nexcmp.com/hi/docs/images/ai/ai-providers-01-connection.webp) ### सहेजने से क्या होता है {#what-saving-does} - प्रदाता सेटिंग्स को एक कॉन्फ़िगरेशन प्रविष्टि के रूप में सहेजा जाता है और की को इस उद्देश्य के लिए बाध्य AES-256-GCM के साथ, इंस्टॉलेशन की मास्टर की का उपयोग करके एन्क्रिप्ट किया जाता है। - समर्थन सेटिंग्स **Primary model** और **Fallback model** (AI Chat द्वारा उपयोग) स्वचालित रूप से आपके डिफ़ॉल्ट और पहले फ़ॉलबैक मॉडल पर सेट हो जाती हैं। - परिवर्तन ऑडिट लॉग में लिखा जाता है (एंडपॉइंट, मॉडल, क्या की बदली गई — की कभी नहीं)। ## सत्यापित करें {#verify} 1. **Test connection** हरा रंग दिखाता है। 2. एक परीक्षण ग्राहक के रूप में पोर्टल में साइन इन करें: मेनू अब **AI Chat** (या चैट बबल) और **AI Agent** प्रदान करता है। 3. AI Chat से पूछें "What is my balance?"। आपके वास्तविक शेष को बताने वाला उत्तर यह दर्शाता है कि प्रदाता टूल कॉल को सही ढंग से संभालता है। ## Limits & notes {#limits-notes} - **एक प्रदाता।** NexCMP चैट, एजेंट और टिकट जाँच के लिए एक एकल कॉन्फ़िगर किए गए प्रदाता का उपयोग करता है। फ़ॉलबैक मॉडल उस प्रदाता के भीतर लचीलापन प्रदान करते हैं। - **की सुरक्षा।** सहेजी गई की केवल सहेजे गए एंडपॉइंट पर भेजी जाती है। यदि आप बेस URL बदलते हैं तो परीक्षण करने से पहले आपको की को फिर से टाइप करना होगा। - **प्रति ग्राहक सीमा।** AI Chat केवल साइन-इन किए गए ग्राहकों के लिए है, जिसमें प्रति-मिनट और प्रति-चैट संदेश सीमाएं होती हैं। एजेंट की प्रति खाता दैनिक कॉल सीमा होती है। [AI Chat](https://nexcmp.com/hi/docs/ai/ai-chat/) और [AI Agent](https://nexcmp.com/hi/docs/ai/ai-agent/) देखें। - **गोपनीयता।** ग्राहक के प्रश्न और AI द्वारा उस ग्राहक के लिए पढ़ा जाने वाला डेटा (केवल-पढ़ने योग्य) आपके प्रदाता को भेजा जाता है। इसे अपनी [privacy policy](https://nexcmp.com/hi/docs/customers/legal/) में बताएं। - **लागत नियंत्रण।** NexCMP AI लागत को मापता नहीं है; प्रदाता की बजट सुविधाओं का उपयोग करें। - मॉड्यूल को किसी भी समय बंद किया जा सकता है: AI मेनू आइटम गायब हो जाते हैं और AI रूट 404 देते हैं `module_disabled`। AI Chat के कुछ बैकग्राउंड जॉब (टिकट जांच, विलंबित उत्तर) पैनल के अगले रीस्टार्ट पर बदलाव को लागू करते हैं। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | `base_url must be an http(s) URL` | स्कीम या स्पेस गायब हैं | `https://host/v1` का उपयोग करें। | | `api_key is required to enable the provider` | कोई की संग्रहीत नहीं है | की दर्ज करें और सहेजें। | | `base_url and model are required to enable the provider` | रिक्त फ़ील्ड | दोनों भरें। | | "बेस URL ब्लॉक किया गया: केवल सार्वजनिक http(s), पोर्ट 80/443/8080/8443" | किसी सहेजे गए आंतरिक पते या अन्य पोर्ट का परीक्षण करना | पहले प्रदाता को सहेजें, फिर परीक्षण करें। | | `api_key is required (enter the key again when you change the endpoint)` | Base URL सहेजे गए URL से भिन्न है | की को दोबारा टाइप करें। | | `model: letters, digits and - _ . / : @` | अमान्य वर्ण | प्रदाता की सटीक मॉडल ID का उपयोग करें। | | `fallback_models: up to 4 model names` | बहुत अधिक | चार या उससे कम रखें। | | परीक्षण 401 के साथ विफल होता है | Wrong key | की और एंडपॉइंट की जांच करें। | | परीक्षण 404 या "model not found" के साथ विफल होता है | गलत पथ या मॉडल | बेस URL (`/v1`) और मॉडल ID की जांच करें। | | `Too many tests — wait a minute` (429) | प्रति मिनट 10 से अधिक परीक्षण | प्रतीक्षा करें। | | पोर्टल में अभी भी कोई AI मेनू नहीं दिख रहा है | मॉड्यूल बंद है, या प्रदाता "in use" नहीं है | मॉड्यूल चालू करें और प्रदाता को सक्षम करें। | --- # AI Chat {#ai-chat} > **एडमिन में कहाँ:** Customers › Support › Ticket, टैब **AI settings** (`/support/tickets?tab=settings`)। प्रदाता और मॉड्यूल: System › Settings › AI provider (`/settings/ai`)। **पोर्टल में कहाँ:** फ़्लोटिंग चैट बटन और पेज `/chat` (मोड **Ask AI**)। ## यह क्या करता है {#what-it-does} AI Chat ग्राहकों के प्रश्नों का किसी भी समय उत्तर देता है, *उनके अपने* खाता डेटा (बैलेंस, सेवाएं, भुगतान, हाल की त्रुटियां) की जाँच करता है, और ग्राहक की पुष्टि के बाद उनकी ओर से कार्रवाई कर सकता है — VM बनाना, प्लान बदलना। जब सहायक सहायता नहीं कर पाता है, तो ग्राहक **Talk to a human** पर क्लिक करता है: चैट आपके स्टाफ को Telegram पर चली जाती है और, यदि कोई समय पर उत्तर नहीं देता है, तो टिकट बन जाती है। समान AI सेटिंग सिस्टम को आपके स्टाफ के लिए **टिकटों की जांच** करने की अनुमति भी देती हैं। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | मॉड्यूल और प्रदाता | **AI** मॉड्यूल चालू है और एक [AI provider](https://nexcmp.com/hi/docs/ai/ai-providers/) सहेजा गया है और उपयोग में है। प्रदाता के बिना सहायक कहता है कि यह कॉन्फ़िगर नहीं है। | | ग्राहक | **केवल साइन-इन किए गए ग्राहक।** इंस्टॉल किए गए NexCMP में कोई सार्वजनिक साइट नहीं होती है, इसलिए जो आगंतुक साइन-इन नहीं है उसे "Sign in to use AI Chat" मिलता है। | | स्टाफ चैनल (वैकल्पिक) | एडमिन अलर्ट के लिए एक Telegram बॉट और चैट ([Telegram notifications](https://nexcmp.com/hi/docs/administration/telegram-notifications/) देखें)। उसी चैनल को चैट हैंड-ऑफ और टिकट ड्राफ्ट प्राप्त होते हैं। | | डिपेंडेंसी | [AI provider](https://nexcmp.com/hi/docs/ai/ai-providers/)। | ## बुनियादी ढांचा तैयार करें {#prepare-the-infrastructure} AI प्रदाता के अलावा अन्य की आवश्यकता नहीं है। यदि आप स्टाफ हैंड-ऑफ चाहते हैं: 1. @BotFather के साथ एक Telegram बॉट बनाएं और टोकन नोट करें। 2. एक ग्रुप बनाएं या बॉट के साथ अपनी प्राइवेट चैट का उपयोग करें, और चैट ID नोट करें। 3. दोनों को System › Settings › Admin alerts (देखें [Telegram notifications](https://nexcmp.com/hi/docs/administration/telegram-notifications/)) के अंतर्गत दर्ज करें। सपोर्ट सुविधाएं उसी बॉट और चैट का दोबारा उपयोग करती हैं। ## NexCMP में कनेक्ट करें {#connect-in-nexcmp} 1. सुनिश्चित करें कि AI मॉड्यूल चालू है और प्रोवाइडर टेस्ट ग्रीन है ([AI provider](https://nexcmp.com/hi/docs/ai/ai-providers/))। 2. **Customers › Support › Ticket** खोलें और टैब **AI settings** चुनें। बाएं कार्ड के शीर्ष पर तीन टैग दिखाई देते हैं: *AI provider: configured*, *Telegram: channel present* और *On shift* या *Off shift*। 3. बायां कार्ड **AI + Telegram**: | स्विच या फ़ील्ड | डिफ़ॉल्ट | अर्थ | |---|---|---| | AI टिकटों की स्वचालित रूप से जांच करता है | चालू (On) | नए टिकट या संदेश के लिए AI ग्राहक के डेटा को (केवल-पढ़ने के लिए) पढ़ता है और संभावित कारण तथा उत्तर का ड्राफ्ट **internal note** के रूप में लिखता है। यह ग्राहक को कभी नहीं भेजता। | | एडमिन को Telegram अलर्ट | चालू (On) | नोट Send, Edit और Skip बटन के साथ Telegram पर आ जाता है। | | AI ऑटो-रिप्लाई | बंद | जब सभी सुरक्षा शर्तें पूरी होती हैं (85% या अधिक का विश्वास, कोई चेतावनी नहीं) तो सामान्य हाउ-टू या सेल्स उत्तर अपने आप भेजता है; 3 मिनट के बाद भेजा जाता है और Telegram पर रद्द किया जा सकता है। | | ऑटो-रिप्लाई के लिए स्वीकृत श्रेणियां | `how_to`, `sales` | केवल ये। | | प्राथमिक मॉडल, फ़ॉलबैक मॉडल | प्रوفाइडर से सेट | सामान्यतः AI प्रोवाइडर पेज द्वारा सहेजे गए रूप में छोड़ दें। | | कार्य करने की अनुमति प्राप्त Telegram यूजर ID | खाली | खाली होने का अर्थ है अलर्ट चैनल की चैट। | 4. दायां कार्ड **Live chat (customer widget)**: | फ़ील्ड | डिफ़ॉल्ट | अर्थ | |---|---|---| | चैट विजेट सक्षम करें | चालू (On) | चैट बबल और `/chat` पेज। | | सपोर्ट के घंटे (वियतनाम समय) | `08:00-22:00` | जब स्टाफ से Telegram पर उत्तर देने की अपेक्षा की जाती है। इन घंटों के बाहर, या जब कोई Telegram चैनल मौजूद नहीं होता है, तो **Talk to a human** चैट को तुरंत एक टिकट में बदल देता है। | | स्टाफ के लिए अधिकतम प्रतीक्षा (मिनट), फिर टिकट में बदलें | 10 | 1 से 240 तक। | | AI टर्न / दिन / ग्राहक | 40 | 1 से 1000 तक। सीमा के बाद सहायक ग्राहक को किसी इंसान से बात करने के लिए आमंत्रित करता है। | | नई चैट / घंटा / IP | 20 | 1 से 1000 तक। | | **Zalo OA लिंक** | खाली | `https://zalo.me/...` चैट में **Chat on Zalo** बटन (QR कोड के साथ) दिखाता है। खाली होने पर यह छिप जाता है। | | **Telegram लिंक** | खाली | `https://t.me/...` एक **Telegram** बटन दिखाता है। खाली होने पर यह छिप जाता है। | | साइन-इन किए गए ग्राहकों के लिए AI टर्न की सिस्टम-व्यापी दैनिक सीमा | 2000 | | | सिस्टम-व्यापी दैनिक सीमा, गेस्ट | 500 | अपना पूल; गेस्ट चैट न कर पाने तक उपयोग नहीं किया जाता। | | स्वचालित टिकट जांच की सिस्टम-व्यापी दैनिक सीमा | 200 | | | एडमिन पथ ("Open admin" Telegram बटन) | खाली | आपका एडमिन URL, उदाहरण के लिए `https://cloud.example.com/admin`। | प्रत्येक स्विच या फ़ील्ड आपके बदलते ही सहेज लिया जाता है। 5. नीचे, **Reply templates** (शीर्षक, भाषा VI/EN/ZH, 4,000 वर्णों तक का पाठ) स्टाफ को तैयार उत्तर देते हैं। ![AI और Telegram स्विच तथा लाइव चैट सीमाओं और शॉर्टकट लिंक के साथ ](https://nexcmp.com/hi/docs/images/ai/ai-chat-01-settings.webp) AI settings टैब ![सहायक के साथ ग्राहक चैट पृष्ठ, Zalo और Telegram शॉर्टकट बटन तथा मानव से बात करने के विकल्प के साथ](https://nexcmp.com/hi/docs/images/ai/ai-chat-02-portal.webp) ## सहायक क्या कर सकता है और क्या नहीं {#what-the-assistant-can-and-cannot-do} - **पढ़ना:** यह आपके ज्ञान आधार (knowledge base) और सार्वजनिक दस्तावेज़ों को खोजता है, और केवल-पढ़ने योग्य (read-only) टूल के माध्यम से साइन-इन किए गए ग्राहक का अपना डेटा पढ़ता है। यह किसी अन्य ग्राहक को नहीं देख सकता। - **कार्रवाई करना:** यह ग्राहक की अपनी API अनुमतियों का उपयोग करता है। एक *read* तुरंत रन होता है। कुछ भी जो बदलता है या पैसे खर्च करता है, वह एक **confirmation card** ("Needs your confirmation", *Costs money* या *Delete* टैग के साथ) बनाता है; जब तक ग्राहक **Confirm** पर क्लिक नहीं करता, कुछ नहीं होता। एक चैट में अधिकतम 3 लंबित कार्ड और एक खाते में प्रति घंटे अधिकतम 10 पुष्ट राइट कार्रवाइयाँ हो सकती हैं। - **कभी नहीं:** यह कंसोल नहीं खोल सकता, SSH या कंसोल टोकन नहीं बना सकता, Kubernetes एक्सेस फ़ाइलें डाउनलोड नहीं कर सकता, पासवर्ड रीसेट नहीं कर सकता, या प्रॉक्सी पासवर्ड या S3 सीक्रेट जैसे सीक्रेट नहीं दिखा सकता। सीक्रेट कभी भी मॉडल के संदर्भ (context) या चैट इतिहास में नहीं डाले जाते। - **सुरक्षा:** इसके उत्तर एक आउटपुट फ़िल्टर से गुजरते हैं; ग्राहक के पाठ और टूल के परिणामों को निर्देशों के रूप में नहीं, बल्कि डेटा के रूप में माना जाता है। - **ईमानदारी बैनर:** चैट में यह दिखाई देता है — "Answered by an AI assistant — it may be imperfect. Talk to a human for anything critical." ## स्टाफ को सौंपना {#staff-hand-off} 1. ग्राहक **Talk to a human** पर क्लिक करता है और एक ई-मेल छोड़ सकता है। 2. बातचीत वाला एक संदेश स्टाफ Telegram चैट तक पहुँचता है। स्टाफ उस संदेश का उत्तर देकर जवाब देता है; वह उत्तर ग्राहक की चैट में "[brand] Support" के रूप में दिखाई देता है। 3. यदि प्रतीक्षा समय (डिफ़ॉल्ट 10 मिनट) के भीतर कोई उत्तर नहीं देता है, तो चैट **Customers › Support › Ticket** के अंतर्गत एक टिकट बन जाती है। समर्थन घंटों के बाहर या Telegram कॉन्फ़िगर न होने पर तुरंत ऐसा ही होता है, और ग्राहक को सूचित किया जाता है कि एक टिकट खोल दिया गया है। 4. एडमिन **Live chat** टैब में चल रही चैट भी देख सकते हैं। ## सत्यापित करें {#verify} 1. एक परीक्षण ग्राहक के रूप में साइन इन करें, चैट खोलें और अपनी सेवाओं के बारे में एक प्रश्न पूछें। सहायक उत्तर देता है। 2. इससे कुछ ऐसा बनाने के लिए कहें जिसमें पैसे खर्च होते हैं: एक confirmation card दिखाई देता है और जब तक आप **Confirm** पर क्लिक नहीं करते, तब तक कुछ भी नहीं बनाया जाता। 3. **Talk to a human** पर क्लिक करें। संदेश आपकी Telegram चैट तक पहुँचता है (यदि कॉन्फ़िगर किया गया है) या, प्रतीक्षा के बाद, एक टिकट दिखाई देता है। 4. Zalo और Telegram लिंक भरे होने पर, दोनों शॉर्टकट बटन चैट में दिखाई देते हैं। ## Limits & notes {#limits-notes} - **दर सीमाएँ (प्रति IP):** प्रति मिनट 20 संदेश और प्रति घंटे कुछ हैंड-ऑफ; **प्रति वार्तालाप 40 संदेश**। ये निश्चित हैं। - **लागत:** हर AI टर्न आपके प्रदाता को कॉल करता है। खर्च को सीमित करने के लिए **AI turns / day / customer** को कम करें। - **ऑटो-रिप्लाई डिफ़ॉल्ट रूप से बंद है।** कुछ समय तक ड्राफ्ट देखने के बाद ही इसे चालू करें। - **भाषाएँ:** सहायक ग्राहक की भाषा में उत्तर देता है; वियतनामी भाषा की पहचान पाठ से की जाती है। - **रीसेलर:** रीसेलर साइटें विजेट के बजाय टिकटों का उपयोग करती हैं। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | ग्राहक चैट नहीं देख पा रहे हैं | AI मॉड्यूल बंद है, या **Enable chat widget** बंद है | दोनों को चालू करें। | | "Sign in to use AI Chat" | विज़िटर साइन इन नहीं है | NexCMP में अपेक्षित: पहले साइन इन करें। | | सहायक कहता है कि कोई AI प्रदाता कॉन्फ़िगर नहीं किया गया है | प्रदाता गायब है, उपयोग में नहीं है, या की (key) गायब है | [AI provider](https://nexcmp.com/hi/docs/ai/ai-providers/) को पूरा करें। | | कुछ प्रश्नों के बाद AI "talk to a human" उत्तर देता है | प्रति ग्राहक दैनिक सीमा तक पहुँच गया है | **AI turns / day / customer** बढ़ाएँ। | | Telegram टैग "no channel" दिखाता है | बॉट या चैट ID कॉन्फ़िगर नहीं है | [Telegram notifications](https://nexcmp.com/hi/docs/administration/telegram-notifications/) सेट अप करें। | | Zalo या Telegram बटन गायब है | लिंक फ़ील्ड खाली है | लिंक भरें। | | चैट में "Too many requests" | एक IP से एक मिनट में 20 से ज़्यादा संदेश | एक मिनट इंतज़ार करें। | | चैट बातचीत भर गई है | 40 संदेश पूरे हो गए | एक नई बातचीत शुरू करें। | --- # AI Agent {#ai-agent} > **एडमिन में कहाँ:** System › Settings › AI provider (`/settings/ai`) — मॉड्यूल स्विच और प्रदाता; System › Admin › License & updates (`/license`) — मॉड्यूल स्विच। **पोर्टल में कहाँ:** AI Agent (`/ai/agent`) और पृष्ठ `/chat/agent`, या चैट के भीतर मोड **Agent**। ## यह क्या करता है {#what-it-does} AI Agent किसी ग्राहक के अपने Linux VM से SSH पर कनेक्ट होता है और सादी भाषा में बताए गए कार्यों को पूरा करता है: "check system health", "install Docker", "find recent errors", "free up disk space"। यह अपने द्वारा सुझाए गए प्रत्येक कमांड और उसके आउटपुट को दिखाता है। केवल पढ़ने वाले कमांड अपने आप चल सकते हैं; सर्वर को बदलने वाली किसी भी चीज़ के लिए ग्राहक को **Run** दबाना होता है। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | AI मॉड्यूल और प्रदाता | **AI** मॉड्यूल चालू है और एक काम करने वाला [AI provider](https://nexcmp.com/hi/docs/ai/ai-providers/) है। एजेंट को ऐसे मॉडल की भी आवश्यकता है जो टूल कॉलिंग का समर्थन करता हो। | | पैनल सर्वर पर `openssh-client` | एजेंट पैनल के अपने `ssh` प्रोग्राम (`/usr/bin/ssh`) के साथ कमांड चलाता है। इंस्टॉलर `openssh-client` इंस्टॉल करता है; `ssh -V` से जांच करें। इसके बिना एजेंट "ssh client is not installed on the panel server" रिपोर्ट करता है। | | कोई अलग SSH गेटवे नहीं | डिफ़ॉल्ट इंस्टॉलेशन में अंतर्निहित SSH का उपयोग किया जाता है और `ssh-proxy` वेब टर्मिनल की आवश्यकता **नहीं** होती है। केवल जब वैकल्पिक *web SSH* फ़ीचर (`feature_ssh_web`) सक्षम किया गया हो और `ssh-proxy` सेवा इंस्टॉल की गई हो, तब एजेंट इसके बजाय `ssh-proxy` के माध्यम से जाता है। | | नेटवर्क | पैनल सर्वर को अपने SSH पोर्ट (डिफ़ॉल्ट रूप से 22) पर VM के IP तक पहुँचना चाहिए। पैनल और गेस्ट नेटवर्क के बीच फ़ायरवॉल और सुरक्षा समूहों की जाँच करें। | | VM | ग्राहक के स्वामित्व वाला, **चल रहा**, लॉक नहीं, **Linux** (Windows VM अस्वीकार किए जाते हैं), सार्वजनिक या पहुँच योग्य IP पते के साथ। | | SSH क्रेडेंशियल्स | NexCMP द्वारा संग्रहीत VM का लॉगिन उपयोगकर्ता और पासवर्ड (VM बनाए जाने पर या उसका पासवर्ड रीसेट होने पर सहेजा गया, एन्क्रिप्टेड), या पैनल की ऑपरेशन कुंजी यदि इंस्टॉल की गई है। यदि दोनों में से कोई भी मौजूद नहीं है तो एजेंट कहता है कि वह लॉगिन नहीं कर सकता। | ## बुनियादी ढांचा तैयार करें {#prepare-the-infrastructure} 1. पैनल सर्वर पर SSH क्लाइंट की जाँच करें: ```bash ssh -V sudo apt-get install -y openssh-client # only if missing ``` 2. जाँच करें कि पैनल सर्वर गेस्ट VM पर SSH खोल सकता है: ```bash nc -vz 198.51.100.10 22 ``` पते को किसी परीक्षण VM के IP से बदलें। यदि यह विफल हो जाता है, तो पहले रूटिंग या फ़ायरवॉल को ठीक करें। 3. सुनिश्चित करें कि गेस्ट NexCMP द्वारा संग्रहीत उपयोगकर्ता के लिए पासवर्ड लॉगिन की अनुमति देता है (कुछ क्लाउड इमेज इसे अक्षम करती हैं), या पैनल की ऑपरेशन कुंजी गेस्ट पर इंस्टॉल है। ## NexCMP में कनेक्ट करें {#connect-in-nexcmp} 1. पूर्ण [AI provider](https://nexcmp.com/hi/docs/ai/ai-providers/): मॉड्यूल चालू, प्रदाता सहेजा गया, **Test connection** हरा। 2. एडमिन साइड पर कुछ और कॉन्फ़िगर नहीं किया गया है। मॉड्यूल स्विच से ग्राहक पोर्टल में **AI Agent** प्रविष्टियाँ दिखाई देने लगती हैं। 3. एक ग्राहक के रूप में: **AI Agent** खोलें, एक चल रहे सर्वर को चुनें और **Choose server** पर क्लिक करें। पृष्ठ पहले एक निश्चित हानिरहित कमांड के साथ SSH की जाँच करता है (कोई AI कॉल उपयोग नहीं किया जाता है) और *SSH connected* या इसके विफल होने का कारण दिखाता है। 4. कोई टास्क टाइप करें या कोई क्विक स्टार्ट चुनें (*Check system health*, *Install Docker*, *Install Nginx*, *Find recent errors*, *Security check*, *Free up disk space*)। ## यह कमांड्स कैसे चलाता है {#how-it-runs-commands} - **कहाँ से:** पैनल सर्वर से, सिस्टम `ssh` क्लाइंट के साथ, एक बार में एक नॉन-इंटरैक्टिव कमांड। टारगेट हमेशा डेटाबेस से **VM का IP** होता है, अनुरोध (request) से नहीं; केवल मालिक की अपनी चल रही, अनलॉक VM तक ही पहुँचा जा सकता है। - **प्रमाणन (Authentication):** संग्रहीत पासवर्ड को प्रोसेस एनवायरनमेंट में एक वन-शॉट `SSH_ASKPASS` हेल्पर के माध्यम से पास किया जाता है — इसे डिस्क पर नहीं लिखा जाता और न ही कमांड लाइन पर रखा जाता है। होस्ट की पिन नहीं किए जाते हैं (VM को नए की के साथ रीइंस्टॉल किया जाता है)। प्रति कमांड आउटपुट 200 KB तक सीमित है और प्रत्येक कमांड की समय सीमा (60 सेकंड) होती है। - **Agent लूप:** AI कमांड का प्रस्ताव रखता है और आउटपुट पढ़ता है; एक टर्न अधिकतम **10 चरणों** के बाद समाप्त होता है। - **मोड:** | मोड | व्यवहार | |---|---| | **Confirm** | हर कमांड **Run** का इंतज़ार करती है। | | **Auto** | केवल वे कमांड जो एक सख्त रीड-ऑलरेडी अनुमति-सूची (allow-list) को पास करती हैं, अपने आप चलती हैं (उदाहरण के लिए `df -h`, `ps`, `journalctl`)। इसके अलावा कुछ भी, और ऐसा कुछ भी जिसे पार्सर निश्चितता के साथ विश्लेषण नहीं कर सकता (वेरिएबल, कमांड सबस्टीट्यूशन, फ़ाइलों के रिडायरेक्ट), **Run** का इंतज़ार करता है। | - **रिस्क लेबल:** जो कमांड फ़ाइलों को ओवरराइट या डिलीट करती हैं, डिस्क पर लिखती हैं, अकाउंट या SSH की बदलती हैं, किसी बाहरी सर्वर को डेटा भेजती हैं, रॉ नेटवर्क कनेक्शन खोलती हैं, ओफ़्फ़स्केटेड कोड चलाती हैं, कोई स्क्रिप्ट डाउनलोड करके चलाती हैं, मशीन को बंद या पुनरारंभ करती हैं, या अन्य सर्वरों तक पहुँचती हैं, वे Auto मोड में भी हमेशा **Needs_confirmation** दिखाती हैं। - **अविश्वसनीय आउटपुट:** कमांड आउटपुट को मॉडल को अविश्वसनीय डेटा के रूप में दिखाया जाता है; इसके अंदर के निर्देशों का पालन नहीं किया जाता है। ## सत्यापित करें {#verify} 1. चल रही कोई टेस्ट VM चुनें। पेज पर *SSH connected* दिखाई देता है। 2. "Check CPU, RAM and disk" पूछें। Auto मोड में रीड-ऑलरेडी कमांड चलती हैं और उत्तर उनका सारांश देता है। 3. "Install Nginx" पूछें। इंस्टॉल कमांड **Run** और **Skip** के साथ दिखाई देती है; जब तक आप **Run** नहीं दबाते, कुछ नहीं चलता। 4. शीर्ष पर काउंटर आज उपयोग की गई AI कॉल की संख्या दिखाता है (उदाहरण के लिए `3/300`)। ## Limits & notes {#limits-notes} - **दैनिक सीमा:** प्रति ग्राहक प्रति दिन (UTC) 300 AI कॉल; यह 00:00 UTC पर रीसेट हो जाती है। जब यह समाप्त हो जाती है तो Agent "Daily AI quota reached" उत्तर देता है। - **समवर्तीता (Concurrency):** एक ही समय में प्रति ग्राहक अधिकतम 2 Agent रन; एक सत्र एक समय में एक टर्न चलाता है। - **सत्र:** प्रति सत्र अधिकतम 100 संदेश, प्रति संदेश 4,000 वर्ण। एक सत्र एक VM से संबंधित है; यदि VM डिलीट या ट्रांसफर कर दी जाती है, तो पुराना सत्र रीड-ऑलरेडी हो जाता है। - **लॉक या बंद VM, या Windows:** VM को *Locked*, *Stopped*, *Windows* या *No address* के रूप में दिखाया जाता है और इसे चुना नहीं जा सकता। - **इम्पोर्नेशन:** ग्राहक का रूप धारण करने वाला एडमिनिस्ट्रेटर Agent की क्रेडेंशियल सुविधाओं का उपयोग नहीं कर सकता है (देखें [Log in as a customer](https://nexcmp.com/hi/docs/customers/login-as/))। - **जिम्मेदारी:** Agent गलतियाँ कर सकता है। पोर्टल ग्राहकों को कमांड चलाने से पहले उनकी समीक्षा करने के लिए कहता है। अपने नियमों (terms) में ग्राहकों को बताएं कि वे अपने द्वारा स्वीकृत कमांड के लिए स्वयं जिम्मेदार हैं। - AI मॉड्यूल को बंद करने से Agent प्रविष्टियाँ हट जाती हैं और रूट 404 `module_disabled` उत्तर देते हैं। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | "पैनल सर्वर पर ssh क्लाइंट स्थापित नहीं है (apt install openssh-client)" | कोई `ssh` बाइनरी नहीं | `sudo apt-get install -y openssh-client`. | | "Agent लॉगिन नहीं कर सका" / `ssh: no saved credentials for this VM` | कोई संग्रहीत पासवर्ड और कोई ऑपरेशंस की नहीं | पोर्टल में VM पासवर्ड रीसेट करें ताकि यह फिर से सहेज जाए, या ऑपरेशंस की इंस्टॉल करें। | | "सर्वर ने समय पर उत्तर नहीं दिया" | फ़ायरवॉल, SSH सुस्त नहीं है, VM व्यस्त है | पैनल सर्वर से `nc -vz 22` का परीक्षण करें; VM में `sshd` शुरू करें। | | "इस सर्वर पर SSH तक नहीं पहुँचा जा सका" | राउटिंग या सुरक्षा समूह | पैनल सर्वर को पोर्ट 22 पर VM तक पहुँचने की अनुमति दें। | | "VM नहीं चल रहा है" / "निषिद्ध (Forbidden)" | VM रुका हुआ, लॉक, हटाया गया या ग्राहक का नहीं है | इसे शुरू करें, अनलॉक करें या दूसरा चुनें। | | "उपलब्ध नहीं: N (रुका हुआ, लॉक या Windows)" | ऊपर दिए गए कारण | VM Linux और चालू स्थिति में होना चाहिए। | | "SSH गेटवे अस्थायी रूप से अनुपलब्ध है" | Web SSH सुविधा सक्षम है लेकिन `ssh-proxy` बंद है | बिल्ट-इन SSH का उपयोग करने के लिए `ssh-proxy` को शुरू करें, या Web SSH सुविधा बंद करें। | | "AI बहुत धीमी प्रतिक्रिया दे रहा है (90 सेकंड से अधिक)" | प्रदाता धीमा है | तेज़ मॉडल या कम **Reasoning effort** का उपयोग करें। | | "दैनिक AI कोटा समाप्त हो गया" | 300 कॉल उपयोग किए गए | 00:00 UTC तक प्रतीक्षा करें। | | "यह सत्र अभी भी चल रहा है" | एक अन्य टर्न प्रगति पर है | प्रतीक्षा करें या **Stop** दबाएँ। | --- # REST API > **पोर्टल में कहाँ:** `https:///apidoc` पर API संदर्भ (सार्वजनिक) और `/api-keys` पर API कुंजियाँ। **एडमिन में कहाँ:** Customers › API keys (`/customers/apikeys`) ग्राहकों द्वारा बनाई गई कुंजियों की सूची दिखाता है। ## यह क्या करता है {#what-it-does} पोर्टल में ग्राहक जो भी कार्रवाई कर सकता है — VM की सूची देखना और नियंत्रित करना, चालान पढ़ना, SSH कुंजियाँ, Kubernetes, स्टोरेज, सपोर्ट टिकट प्रबंधित करना — वह `https:///v1/` के अंतर्गत एक वर्شन्ड REST API के माध्यम से उपलब्ध है। ग्राहक इसे स्कोप किए गए **API key** के साथ स्क्रिप्ट और CI से कॉल करते हैं। यही API [`cmp` command-line tool](https://nexcmp.com/hi/docs/developers/cmp-cli/) और [MCP server](https://nexcmp.com/hi/docs/developers/mcp/) को फीड करता है, और संदर्भ चल रहे इंस्टॉलेशन से जनरेट होता है, इसलिए यह हमेशा उन सुविधाओं की सटीक सूची दिखाता है जिन्हें आपने चालू किया है। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | सार्वजनिक HTTPS पता | API आपके मुख्य डोमेन (और प्रत्येक रीसेलर के अपने डोमेन) पर परोसा जाता है। | | एक API कुंजी | पोर्टल में ग्राहक द्वारा बनाई गई; [API keys](https://nexcmp.com/hi/docs/developers/api-keys/) देखें। | | डिपेंडेंसी | कोई नहीं। किसी ऐसे मॉड्यूल के एंडपॉइंट जिसे आपने सक्षम नहीं किया है (उदाहरण के लिए Kubernetes या Object Storage) संदर्भ से छिपाए जाते हैं और अस्वीकार कर दिए जाते हैं। | ## बुनियादी ढांचा तैयार करें {#prepare-the-infrastructure} इंस्टॉल करने के लिए कुछ नहीं। यदि NexCMP के सामने कोई रिवर्स प्रॉक्सी है, तो `/v1/`, `/mcp`, `/cli/` और `/apidoc` को पैनल पर अग्रेषित करें (इंस्टॉलर का nginx कॉन्फ़िगरेशन पहले से ही ऐसा करता है)। ## NexCMP में कनेक्ट करें {#connect-in-nexcmp} ### इंटरैक्टिव संदर्भ {#the-interactive-reference} `https://cloud.example.com/apidoc` खोलें (होस्ट को अपने डोमेन से बदलें; रीसेलर के ग्राहकों को रीसेलर के नाम के साथ रीसेलर के डोमेन पर संदर्भ दिखाई देता है)। इसमें curl, `cmp` CLI, JavaScript, Python और Go में अनुरोध और प्रतिक्रिया उदाहरणों के साथ एंडपॉइंट दस्तावेज़ीकरण, एक खोज बॉक्स (Ctrl या Cmd + K), और एक **Try it** पैनल है। Try it केवल उसी साइट पर अनुरोध भेजता है, आगंतुकों द्वारा चिपकाई गई कुंजी के साथ (ब्राउज़र सत्र में रखी जाती है); यह डिफ़ॉल्ट रूप से केवल पढ़ने के लिए (read-only) है, और लिखने या सशुल्क कॉलों के लिए अतिरिक्त स्विच और पुष्टि की आवश्यकता होती है। ### डाउनलोड और मशीन-पठनीय दस्तावेज़ {#downloads-and-machine-readable-documents} सभी सार्वजनिक हैं, किसी कुंजी की आवश्यकता नहीं है और प्रति साइट जनरेट होते हैं: | URL | सामग्री | |---|---| | `/apidoc` | इंटरैक्टिव संदर्भ। | | `/v1/public/openapi.json` | OpenAPI 3.1 दस्तावेज़। | | `/v1/public/openapi.yaml` | वही, YAML। | | `/v1/public/postman.json` | पोस्टमैन कलेक्शन। | | `/v1/public/insomnia.json` | Insomnia निर्यात। | | `/v1/public/api.md` | एक Markdown फ़ाइल के रूप में संदर्भ। | | `/v1/public/api-catalog` | लाइट JSON: ब्रांड, बेस URL, की प्रीफिक्स, हर स्कोप और हर एंडपॉइंट मेथड, पाथ, स्कोप और इसके साथ कि क्या इसके लिए `Idempotency-Key` की आवश्यकता है। | ```bash curl -s https://cloud.example.com/v1/public/api-catalog | python3 -m json.tool | head -40 curl -sO https://cloud.example.com/v1/public/openapi.yaml ``` Postman में **Import › Link** चुनें और `https://cloud.example.com/v1/public/postman.json` पेस्ट करें। संदर्भ पृष्ठ JavaScript और Python के लिए वन-फाइल API क्लाइंट भी प्रदान करता है। ### Authentication {#authentication} की को `Authorization` हेडर में भेजें: ```bash curl -s https://cloud.example.com/v1/billing/wallet \ -H "Authorization: Bearer vk_XXXX" ``` - ग्राहक की `vk_` से शुरू होती हैं। की **साइट-बाउंड** हैं: `cloud.example.com` पर बनाई गई की रीसेलर डोमेन पर काम नहीं करती है। - ब्राउज़र सेशन टोकन (`pt_...`) केवल पोर्टल के लिए हैं; ऑटोमेशन के लिए की का उपयोग करें। - की के **स्कोप** तय करते हैं कि वह क्या कॉल कर सकती है; एक छूटा हुआ स्कोप HTTP 403 `scope_required` उत्तर देता है। [API keys](https://nexcmp.com/hi/docs/developers/api-keys/) देखें। - `GET /v1/apikeys/self` के साथ की की जाँच करें: यह कॉलिंग की का नाम, स्कोप, समाप्ति और शेष रेट-लिमिट अनुमति (हर की इसे कॉल कर सकती है) लौटाता है। ### Examples {#examples} ```bash # List virtual machines curl -s "https://cloud.example.com/v1/vm?page=1" -H "Authorization: Bearer vk_XXXX" # Start one (needs vm:write) curl -s -X POST https://cloud.example.com/v1/vm/3f2a1c9e-0000-4000-8000-000000000000/start \ -H "Authorization: Bearer vk_XXXX" # Create a VM (paid: needs vm:create and an Idempotency-Key) curl -s -X POST https://cloud.example.com/v1/vm \ -H "Authorization: Bearer vk_XXXX" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json" \ -d @vm.json ``` `/apidoc` से प्रत्येक ऑपरेशन के सटीक अनुरोध फ़ील्ड लें। ### Errors {#errors} हर त्रुटि एक स्थिर `code` और एक पठनीय `message` के साथ JSON होती है: ```json {"error": {"code": "scope_required", "message": "Key lacks scope vm:write"}} ``` | HTTP | Typical `code` | अर्थ | |---|---|---| | 401 | `unauthenticated`, `key_invalid`, `key_revoked`, `key_expired`, `key_ip_denied`, `site_mismatch`, `api_keys_disabled` | गायब या अज्ञात की, निरस्त, समाप्त, की की अनुमति सूची के बाहर कॉलर IP, किसी अन्य साइट की की, या API की बंद। | | 403 | `scope_required`, `endpoint_not_public`, `account_blocked`, `quota_exceeded`, `impersonate_forbidden` | की में स्कोप नहीं है; एंडपॉइंट की के लिए उपलब्ध नहीं है; खाता लॉक है; [quota](https://nexcmp.com/hi/docs/billing/quotas/) तक पहुँच गया है; प्ररूपित सत्र में कार्रवाई की अनुमति नहीं है। | | 404 | `not_found` | नहीं मिला — किसी अन्य के स्वामित्व वाले संसाधनों के लिए भी लौटाया जाता है। | | 422 | `invalid_argument` | सत्यापन त्रुटि (प्रतिक्रिया में नामित फ़ील्ड)। | | 429 | `rate_limited` | बहुत सारे अनुरोध; `Retry-After` की प्रतीक्षा करें। | | 503 | `maintenance` | रखरखाव मोड चालू है: रीड काम करते हैं, राइट अस्वीकार कर दिए जाते हैं। | ### Rate limits {#rate-limits} | Limit | डिफ़ॉल्ट | |---|---| | Per key | प्रति मिनट 120 अनुरोध | | प्रति खाता (सभी की एक साथ) | प्रति मिनट 300 अनुरोध | प्रत्येक प्रतिक्रिया में `X-RateLimit-Limit`, `X-RateLimit-Remaining` और `X-RateLimit-Reset` होते हैं; 429 में `Retry-After` जुड़ जाता है। ### Idempotency {#idempotency} ऐसे कमांड जिनकी कीमत चुकानी पड़ती है या जिन्हें दोहराया नहीं जा सकता (बनाना, प्लान बदलना, खरीदना, हटाना...) के लिए एक `Idempotency-Key` हेडर **आवश्यक** है (200 वर्णों तक की कोई भी स्ट्रिंग; UUID अच्छा काम करता है)। टाइमआउट के बाद वही की दोबारा भेजें और सर्वर ऑपरेशन को दोहराने के बजाय **मूल** परिणाम (`Idempotency-Replayed: 1` के साथ) लौटाता है। किसी भिन्न कमांड के लिए की का पुन: उपयोग करने पर 422 उत्तर मिलता है; अभी भी प्रगति पर अनुरोध 409/`Retry-After` का उत्तर देता है। हेडर के बिना भुगतान कॉल अस्वीकार कर दी जाती है। ## सत्यापित करें {#verify} 1. पोर्टल में स्कोप `vm:read` के साथ एक की बनाएँ (**API keys › Create key**)। 2. Run: ```bash curl -i https://cloud.example.com/v1/apikeys/self -H "Authorization: Bearer vk_XXXX" ``` आपको HTTP 200 और रेट-लिमिट हेडर मिलते हैं। 3. `curl -s https://cloud.example.com/v1/vm -H "Authorization: Bearer vk_XXXX"` खाते के VM की सूची देता है। पोर्टल में की का **Last used** कॉलम और **Key usage log** कॉल दिखाते हैं। ## Limits & notes {#limits-notes} - **की के लिए कभी भी उपलब्ध नहीं:** टॉप-अप, निकासी, कार्ड बदलना या ऑटो टॉप-अप, पासवर्ड, ईमेल या 2FA बदलना, खाता हटाना, अन्य की बनाना, संपादित करना या निरस्त करना। इनके लिए साइन-इन ब्राउज़र सेशन की आवश्यकता होती है। - **छिपे हुए मॉड्यूल:** संदर्भ और OpenAPI दस्तावेज़ केवल उस साइट पर सक्षम सुविधाओं को सूचीबद्ध करते हैं। - **प्रतिक्रिया आकार और पेजिंग:** सूची एंडपॉइंट पेजेड होते हैं (`page`, `per_page`); प्रत्येक एंडपॉइंट के लिए OpenAPI दस्तावेज़ पढ़ें। - **समय और पैसा:** जब तक फ़ील्ड का नाम अन्यथा न कहे, राशि USD सेंट में है। - **Admin API:** एडमिन कंसोल का अपना **System › Admin › API** पृष्ठ और प्रशासन के लिए एडमिनिस्ट्रेटर की (`ofw_...`) हैं; वे यहाँ वर्णित ग्राहक API से अलग हैं। - **संस्करण:** पथ उपসর্গ `/v1` स्थिर है; प्रतिक्रियाओं में नए फ़ील्ड जोड़े जा सकते हैं। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | नई कुंजी पर 401 | অন্য डोमेन की कुंजी, समाप्त हो चुकी है, या स्पेस के साथ टाइप की गई है | उस डोमेन पर कुंजी बनाएँ जिसे आप कॉल करते हैं; `Authorization: Bearer vk_...` हेडर जाँचें। | | 403 `scope_required` | गायब स्कोप | पोर्टल में कुंजी संपादित करें और स्कोप जोड़ें। | | 401 `key_ip_denied` या `site_mismatch` | अन्य IP तक सीमित कुंजी ("allowed IPs") या अन्य डोमेन पर बनाई गई | कुंजी के स्वीकृत IP में अपने सर्वर का IP जोड़ें, या उस डोमेन पर कॉल करें जहाँ कुंजी बनाई गई थी। | | मौजूदा VM पर 404 | VM किसी अन्य खाते की है | मालिक की कुंजी का उपयोग करें। | | `Idempotency-Key` माँगने वाला 400/422 | हेडर के बिना भुगतान वाली कार्रवाई | `Idempotency-Key: ` जोड़ें। | | 429 | सीमा से अधिक | पीछे हटें; `Retry-After` का उपयोग करें। | | `/apidoc` अपेक्षा से कम दिखाता है | मॉड्यूल बंद है | License & updates में मॉड्यूल सक्षम करें। | --- # API keys और scopes {#api-keys-and-scopes} > **पोर्टल में कहाँ:** API keys (`/api-keys`)। **एडमिन में कहाँ:** Customers › Customers › API keys (`/customers/apikeys`)। ## यह क्या करता है {#what-it-does} एक **API key** किसी स्क्रिप्ट, CI जॉब, [`cmp` CLI](https://nexcmp.com/hi/docs/developers/cmp-cli/) या AI सहायक ([MCP](https://nexcmp.com/hi/docs/developers/mcp/)) को केवल दी गई अनुमतियों (**scopes**) के साथ, किसी ग्राहक की ओर से [REST API](https://nexcmp.com/hi/docs/developers/api/) कॉल करने की अनुमति देती है। ग्राहक कुंजियाँ `vk_` से शुरू होती हैं। वे सेवाएँ पढ़ और प्रबंधित कर सकती हैं लेकिन **कभी भी** पैसे या खाते को नहीं छू सकतीं। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | ग्राहक | एक साइन-इन किया गया पोर्टल सत्र (कोई कुंजी अन्य कुंजियाँ बना या संपादित नहीं कर सकती, और ग्राहक का प्रतिरूपण करने वाला प्रशासक भी नहीं कर सकता)। | | स्विच | API कुंजियाँ डिफ़ॉल्ट रूप से चालू होती हैं। यदि वे बंद हैं, तो कॉल्स 401 `api_keys_disabled` उत्तर देती हैं। | | डिपेंडेंसी | किसी उत्पाद के स्कोप केवल तभी दिखाई देते हैं जब वह उत्पाद साइट पर सक्षम हो। | ## कुंजी बनाएँ (ग्राहक) {#create-a-key-customer} 1. पोर्टल में साइन इन करें और **API keys** खोलें। 2. **Create key** पर क्लिक करें। 3. फॉर्म भरें: | फ़ील्ड | Rule | |---|---| | **Key name** | आवश्यक, 60 वर्णों तक ("deploy server", "backup script")। | | **यह key क्या कर सकती है** | अपनी ज़रूरत के स्कोप पर टिक करें — कम से कम एक। केवल-पढ़ने वाली (read-only) कुंजी को कोई लिखने का स्कोप नहीं मिलना चाहिए। उन स्कोप के प्रति सावधान रहें जिन पर पैसे खर्च होते हैं या जो डेटा हटाते हैं। | | **Expiry** | कभी नहीं, 30 दिन, 90 दिन या 1 वर्ष (API 1 से 3650 दिनों को स्वीकार करता है)। | | **केवल इन IP से calls की अनुमति दें** | प्रति पंक्ति एक IP या CIDR रेंज, 20 तक (IPv4 या IPv6)। खाली का अर्थ है कोई भी IP। जब भी संभव हो अपने सर्वर के IP को पिन करें। | 4. फ़ॉर्म की पुष्टि करें। कुंजी एक विंडो में **एक बार** दिखाई जाती है "Key created — shown ONCE"। इसे कॉपी करें और **I saved the key** पर क्लिक करें। केवल एक SHA-256 हैश संग्रहीत किया जाता है, इसलिए एक प्रशासक भी इसे दोबारा नहीं पढ़ सकता; यदि आप इसे खो देते हैं, तो इसे निरस्त करें और एक नई बनाएँ। 5. पोर्टल कुंजी का परीक्षण करने के लिए एक तैयार `curl` कमांड भी दिखाता है। एक कुंजी `vk_` जैसी दिखती है जिसके बाद एक लंबा रैंडम स्ट्रिंग होता है। सूची केवल पहले वर्ण (उदाहरण के लिए `vk_a1b2c3d4`), स्कोप, समाप्ति, अंतिम उपयोग, अनुरोध संख्या और स्थिति (*Active*, *Expired*, *Revoked*) दिखाती है। ### संपादित करें, निरस्त करें, ऑडिट करें {#edit-revoke-audit} - **Edit** से नाम, स्कोप्स, अनुमति प्राप्त IP और समाप्ति तिथि बदली जा सकती है। यह इंपरसोनेटेड सेशन के दौरान अनुमति नहीं है। - **Revoke** की तुरंत बंद हो जाती है और इसे पूर्ववत नहीं किया जा सकता। इसका उपयोग लॉग उपलब्ध रखने के लिए पंक्ति को सुरक्षित रखा जाता है। - **Key usage log** पिछले 60 दिनों के राइट कमांड और हर त्रुटि को दिखाता है: समय, अनुरोध, की, परिणाम और स्रोत IP। - डिफ़ॉल्ट रूप से एक खाते में अधिकतम **10 सक्रिय की** हो सकती हैं। - CLI या MCP लॉगिन के माध्यम से बनाई गई की **Connected apps & devices** के अंतर्गत दिखाई देती हैं और उन्हें वहीं रद्द (revoked) किया जा सकता है। ## Scopes {#scopes} स्कोप के नाम `area:action` फ़ॉर्म में होते हैं। कौन से विकल्प उपलब्ध हैं, यह आपके द्वारा सक्षम किए गए उत्पादों पर निर्भर करता है। | Scope | Allows | |---|---| | `catalog:read` | प्लान और कैटलॉग पढ़ें। | | `vm:read` | VM, मेट्रिक्स और VM चालान पढ़ें। | | `vm:write` | पावर एक्शन, मामूली बदलाव, फ़ायरवॉल, त्वरित स्नैपशॉट। | | `vm:create` | **VM बनाएँ (पैसा खर्च होता है)।** | | `vm:plan` | **प्लान बदलें या साइज़ बदलें (पैसा खर्च होता है)।** | | `vm:destroy` | **VM हटाएँ।** | | `vm:restore` | **स्नैपशॉट से VM रीस्टोर करें (डिस्क ओवरराइट हो जाती है)।** | | `vm:console` | VNC कंसोल टिकट खोलें। | | `sshkey:read`, `sshkey:write` | SSH की पढ़ें, जोड़ें और हटाएँ। | | `volume:read`, `volume:write`, `volume:create`, `volume:destroy` | डेटा वॉल्यूम (बनाने और बड़ा करने में पैसे लगते हैं; नष्ट करने पर डेटा खो जाता है)। | | `backup:read`, `backup:write`, `backup:restore` | Backups (रीस्टोर करने पर डिस्क ओवरराइट हो जाती है)। | | `billing:read` | वॉलेट, चालान, भुगतान इतिहास — **केवल पढ़ने के लिए**। | | `bandwidth:buy` | **बैंडविड्थ ऐड-ऑन खरीदें (पैसा खर्च होता है)।** | | `account:read`, `account:write` | प्रोफाइल, ओवरव्यू, गतिविधि, सूचनाएं; `account:write` केवल सूचनाओं को पढ़े के रूप में चिह्नित करता है। | | `apikey:read` | खाते की की और उपयोग लॉग की सूची दिखाएं (बना, संपादित या रद्द नहीं कर सकते)। | | `apikey:self` | प्रत्येक की पर निहित: कॉलिंग की (`GET /v1/apikeys/self`) का निरीक्षण करें। | | `ticket:read`, `ticket:write` | सहायता टिकट। | | `aff:read`, `transfer:read` | एफ़िलिएट प्रोग्राम और सर्विस ट्रांसफर — केवल पढ़ने के लिए। | | `k8s:read`, `k8s:write`, `k8s:create`, `k8s:scale`, `k8s:destroy`, `k8s:kubeconfig` | Kubernetes (बनाने और स्केल करने में पैसे लगते हैं; kubeconfig क्लस्टर-एडमिन है)। | | `vpc:read`, `vpc:write`, `vpc:create`, `vpc:destroy` | Private Cloud. | | `image:read`, `image:write` | OS और ISO इमेज (स्टोर करने पर प्रति घंटे बिल बनता है)। | | `s3:read`, `s3:write`, `s3:create`, `s3:destroy`, `s3:keys` | Object Storage (S3 सीक्रेट एक बार दिखाया जाता है)। | | `vpn:read`, `vpn:detail`, `vpn:write`, `vpn:create`, `vpn:destroy` | VPN और IPv6 प्रॉक्सी (कनेक्शन विवरण में प्रॉक्सी पासवर्ड शामिल हैं)। | | `dedicated:read`, `dedicated:write`, `dedicated:console`, `dedicated:create`, `dedicated:destroy` | Dedicated servers (वॉलेट से ऑर्डर बनाएं; नष्ट करने पर OS रीइंस्टॉल हो जाता है)। | | `shield:read`, `shield:write`, `shield:agent` | DDoS Shield, केवल तभी जब वह मॉड्यूल सक्षम हो। | की के स्कोप के बाहर की कॉल **403 `scope_required`** उत्तर देती है; ऐसा पथ जिसे कोई की कॉल नहीं कर सकती, **403 `endpoint_not_public`** उत्तर देती है। ### एक कुंजी कभी क्या नहीं कर सकती {#what-a-key-can-never-do} कोई भी स्कोप ये काम नहीं खोल सकता: पैसे जोड़ना या निकालना, कार्ड या ऑटो टॉप-अप बदलना, पासवर्ड, ई-मेल या 2FA बदलना, खाता हटाना, अन्य की बनाना, संपादित करना या रद्द करना। इनके लिए हमेशा साइन-इन किए गए ब्राउज़र की आवश्यकता होती है। यहाँ तक कि लीक हुई की भी ग्राहक के पैसे या खाते को नहीं छू सकती। ## वे नियम जिन पर आप भरोसा कर सकते हैं {#rules-you-can-rely-on} | Rule | Detail | |---|---| | Site-bound | एक की केवल उसी साइट (डोमेन) पर काम करती है जहाँ इसे बनाया गया था। | | Rate limits | प्रति की और प्रति खाता: डिफ़ॉल्ट रूप से 120 और 300 अनुरोध प्रति मिनट। | | Idempotency | वे ऑपरेशन जिनमें पैसे खर्च होते हैं या जिन्हें दोहराया नहीं जा सकता, उनके लिए `Idempotency-Key` हेडर की आवश्यकता होती है। | | कोटा | एक की ग्राहक के समान [quotas](https://nexcmp.com/hi/docs/billing/quotas/) के अधीन है। | | Locked account | लॉक किए गए ग्राहक की कुंजियाँ काम करना बंद कर देती हैं (403 `account_blocked`)। | | Audit | प्रशासक द्वारा निरस्तीकरण को एडमिन ऑडिट लॉग में लिखा जाता है। | ## प्रशासक दृश्य {#administrator-view} 1. **Customers › API keys** खोलें (`/customers/apikeys`)। तालिका में कुंजी का नाम और शुरुआती अक्षर, स्वामी, स्कोप, स्थिति, अंतिम उपयोग (समय, अनुरोध संख्या, IP), और समाप्ति तिथि दिखाई देती है। 2. यदि आपके पास रीसेलर्स हैं तो साइट के अनुसार फ़िल्टर करें। नाम, ID या कुंजी की शुरुआत से खोजें। 3. सक्रिय कुंजी को रोकने के लिए **Revoke** पर क्लिक करें, या उसके उपयोग के लिए **Log** पर क्लिक करें। 4. प्रशासक कुंजियों को **देख और निरस्त कर** सकते हैं लेकिन ग्राहकों के लिए उन्हें पढ़ या बना नहीं सकते। ![स्कोप, स्थिति, अंतिम उपयोग और Revoke बटन के साथ ग्राहक API कुंजियों की प्रशासक सूची](https://nexcmp.com/hi/docs/images/developers/api-keys-02-admin.webp) ## सत्यापित करें {#verify} 1. केवल `vm:read` स्कोप के साथ एक कुंजी बनाएँ। 2. `curl -s https://cloud.example.com/v1/vm -H "Authorization: Bearer vk_XXXX"` VM सूची लौटाता है। 3. `curl -s -X POST .../v1/vm//start -H "Authorization: Bearer vk_XXXX"` 403 `scope_required` उत्तर देता है। 4. कुंजी को निरस्त करें; पहली कॉल अब 401 `key_revoked` उत्तर देती है। ## Limits & notes {#limits-notes} - कुंजी को फिर कभी नहीं दिखाया जाता है। इसे पासवर्ड की तरह मानें और सीक्रेट मैनेजर या CI सीक्रेट में सहेजें। - प्रति स्क्रिप्ट एक कुंजी, न्यूनतम स्कोप, कम समाप्ति अवधि और एक IP अनुमति सूची को प्राथमिकता दें; नई कुंजी बनाकर और पुरानी को निरस्त करके रोटेट करें। - डिवाइस लॉगिन (CLI, MCP) से मिलने वाली कुंजियाँ डिफ़ॉल्ट रूप से 90 दिनों की होती हैं। - हटाई गई या स्थानांतरित की गई संसाधन कुंजियाँ निरस्त होने से प्रभावित नहीं होती हैं। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | त्रुटि `too_many_keys` (422) | सक्रिय कुंजियों की सीमा (डिफ़ॉल्ट रूप से 10) पूरी हो गई है | पुरानी कुंजी को निरस्त करें। | | त्रुटि `invalid_argument`: कोई स्कोप नहीं चुना गया | कोई स्कोप टिक नहीं किया गया है | कम से कम एक स्कोप पर टिक करें। | | अनुमत IP पर त्रुटि `invalid_argument` | कोई प्रविष्टि IP या रेंज नहीं है, गलत उपसर्ग लंबाई है, या 20 से अधिक प्रविष्टियाँ हैं | प्रति पंक्ति एक IP या CIDR, उदाहरण के लिए `203.0.113.0/24`। | | इम्पर्सनेशन के दौरान निर्माण अस्वीकार कर दिया जाता है | `impersonate_forbidden` | ग्राहक से कुंजी बनाने के लिए कहें। | | 401 `key_expired` | समाप्ति तिथि बीत चुकी है | एक नई कुंजी बनाएँ। | | 401 `key_ip_denied` | कॉल करने वाले का IP अनुमति सूची में नहीं है | IP जोड़ें या सूची साफ़ करें। | | 401 `api_keys_disabled` | सुविधा बंद है | अपने प्रशासक से पूछें (`api_keys_enabled` सेटिंग)। | --- # `cmp` कमांड-लाइन टूल {#cmp-command-line-tool} > **पोर्टल में कहाँ:** इंस्टॉल कमांड API संदर्भ पर हैं (`https:///apidoc`, कमांड-लाइन इंटरफ़ेस अनुभाग)। लॉगिन स्वीकृत करना: `https:///link`। कनेक्टेड डिवाइस: API keys (`/api-keys`) › Connected apps & devices। ## यह क्या करता है {#what-it-does} `cmp` आपके ग्राहकों (और आपके) के लिए एक छोटा कमांड-लाइन प्रोग्राम है जो **हर API ऑपरेशन को एक कमांड** में बदल देता है: `cmp vm list`, `cmp vm start `, `cmp billing invoice list`। यह रिलीज़ के समय **आपके** इंस्टॉलेशन के OpenAPI दस्तावेज़ से बनाया जाता है, इसलिए कमांड आपके द्वारा सक्षम की गई सुविधाओं से मेल खाते हैं। यह Linux, macOS और Windows (amd64 और arm64) के लिए एक स्थिर बाइनरी है जिसमें इंस्टॉल करने के लिए और कुछ नहीं चाहिए। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | सर्वर | कुछ भी अतिरिक्त नहीं। रिलीज़ पैकेज NexCMP रिलीज़ के भीतर हैं और `https:///cli/` पर पैनल द्वारा परोसे जाते हैं। | | ग्राहक मशीन | Linux, macOS या Windows (PowerShell 5.1+)। हस्ताक्षर सत्यापित करने के लिए केवल `ssh-keygen` (OpenSSH 8.0+) की आवश्यकता है। | | क्रेडेंशियल्स | वन-टाइम कोड के साथ ब्राउज़र लॉगिन, या [API key](https://nexcmp.com/hi/docs/developers/api-keys/)। | | नेटवर्क | आपके पैनल के लिए HTTPS। CLI सादे `http://` पर कुंजियाँ भेजने से इनकार करता है, सिवाय `localhost` के। | ## बुनियादी ढांचा तैयार करें {#prepare-the-infrastructure} कुछ नहीं। पैनल इन फ़ाइलों को `/cli/` से सर्व करता है (किसी बिल्ड या अपलोड की आवश्यकता नहीं है): | फ़ाइल | उद्देश्य | |---|---| | `install.sh`, `install.ps1` | Linux/macOS और Windows के लिए इंस्टॉलर्स; इनमें आपके पैनल का पता होता है। | | `latest.json` | वर्तमान संस्करण, फ़ाइल सूची, आकार, sha256। | | `v/cmp___.tar.gz` या `.zip` | प्रोग्राम्स: linux amd64/arm64, darwin amd64/arm64/universal, windows amd64/arm64। | | `v/SHA256SUMS`, `SHA256SUMS.sig` | चेकसम और उनके ed25519 हस्ताक्षर। | | `cmp-cli.pub` | रिलीज़ सार्वजनिक कुंजी। | ## इंस्टॉल (ग्राहक) {#install-customer} macOS और Linux: ```bash curl -fsSL https://cloud.example.com/cli/install.sh | sh ``` Windows PowerShell: ```powershell irm https://cloud.example.com/cli/install.ps1 | iex ``` इंस्टॉलर OS और CPU के लिए पैकेज चुनता है, `SHA256SUMS` और उसके हस्ताक्षर को डाउनलोड करता है, स्क्रिप्ट में एम्बेड की गई कुंजी से हस्ताक्षर को सत्यापित करता है, पैकेज हैश को सत्यापित करता है, और `cmp` को `/usr/local/bin` (root के रूप में) या `~/.local/bin` में इंस्टॉल करता है; Windows पर `%LOCALAPPDATA%\cmp\bin` में (उपयोगकर्ता `PATH` में जोड़ा गया)। यदि कोई जाँच विफल हो जाती है तो कुछ भी इंस्टॉल नहीं होता है। | वेरिएबल | अर्थ | |---|---| | `CMP_VERSION` | नवीनतम के बजाय यह संस्करण इंस्टॉल करें। | | `CMP_INSTALL_DIR` | इंस्टॉलेशन फ़ोल्डर। | | `CMP_REQUIRE_SIGNATURE` | `1` = जब हस्ताक्षर सत्यापित न हो सके तो रद्द करें। | | `CMP_BASE_URL` | डाउनलोड बेस (मिरर्स के लिए)। | मैनुअल डाउनलोड और सत्यापन: ```bash curl -fsSLO https://cloud.example.com/cli/latest.json sha256sum --check --ignore-missing SHA256SUMS ``` ![macOS और Linux के लिए cmp install कमांड के साथ API reference section](https://nexcmp.com/hi/docs/images/developers/cmp-cli-01-install.webp) ## लॉग इन करें {#log-in} ```bash cmp login ``` 1. CLI एक वन-टाइम **कोड** और एक लिंक (`https://cloud.example.com/link?code=WDJB-MJHT`) प्रिंट करता है, ब्राउज़र खोलता है और प्रतीक्षा करता है। 2. ब्राउज़र में पोर्टल पर साइन इन करें, क्लाइंट नाम, डिवाइस, IP और देश की जाँच करें, अनुमतियों (scopes) पर टिक करें और चुनें कि कुंजी कितने समय तक जीवित रहेगी (डिफ़ॉल्ट 90 दिन)। जो अनुमतियाँ पैसे खर्च करती हैं या डेटा हटाती हैं, वे बिना टिक के शुरू होती हैं। approve पर क्लिक करें। 3. CLI **अपनी खुद की कुंजी** प्राप्त करता है, जो ग्राहक द्वारा हाथ से बनाई गई कुंजियों से अलग होती है, और इसे `~/.config/cmp/config.json` में संग्रहीत करता है (मोड `0600`; Windows पर `%APPDATA%\cmp`)। यह **API keys › Connected apps & devices** के तहत दिखाई देता है और वहाँ इसे निरस्त किया जा सकता है। कोड 10 मिनट के बाद समाप्त हो जाता है। अनुमोदन के लिए एक सत्यापित ई-मेल के साथ एक वास्तविक साइन-इन पोर्टल सत्र की आवश्यकता होती है — न कि किसी अन्य कुंजी और न ही किसी छद्म सत्र (impersonated session) की। उपयोगी फ़्लैग: `--scopes vm:read,billing:read`, `--name "build server"`, `--no-browser`, `--profile`, `--api-url`। CI या बिना ब्राउज़र वाले सर्वर के लिए, पोर्टल से किसी कुंजी का उपयोग करें: ```bash printf %s "$KEY" | cmp login --with-token export CMP_TOKEN=vk_XXXX # nothing is written to disk cmp whoami ``` ## कमांड का उपयोग करना {#using-commands} ```text cmp [subgroup] [ ...] [flags] ``` - पाथ पैरामीटर पोजीशनल आर्ग्यूमेंट हैं; क्वेरी पैरामीटर और बॉडी फ़ील्ड kebab-case फ़्लैग बन जाते हैं (`--start-port 443`)। - `--data '{"a":1}'`, `--data @file.json` या `--data -` एक संपूर्ण JSON बॉडी भेजता है; फ़्लैग इसके फ़ील्ड्स को ओवरराइड करते हैं। - `cmp help vm firewall add` (या `--help`) किसी भी कमांड का विवरण दिखाता है। ```bash cmp catalog plans cmp vm list --state active --per-page 50 cmp vm get 3f2a1c9e-0000-4000-8000-000000000000 cmp vm start 3f2a1c9e-0000-4000-8000-000000000000 cmp vm firewall add 3f2a1c9e-... --protocol tcp --start-port 22 --cidr-list 203.0.113.0/24 cmp billing wallet cmp api GET /v1/vm --query page=2 # raw call to any endpoint ``` अंतर्निहित कमांड: `login`, `logout`, `whoami`, `config`, `api`, `completion`, `version`, `update`, `help`। बाकी सब कुछ API डॉक्यूमेंट से आता है। वैश्विक फ़्लैग: | फ़्लैग | अर्थ | |---|---| | `-o, --output json\|table\|yaml` | प्रारूप। टर्मिनल पर डिफ़ॉल्ट `table` और पाइप करने पर `json`। | | `--profile`, `--api-url` | कौन सा संग्रहीत लॉगिन और कौन सी साइट। | | `-y, --yes` | विनाशकारी या सशुल्क कमांड के लिए पुष्टि छोड़ें। | | `--idempotency-key ` | सशुल्क कमांड की कुंजी चुनें। | | `--retry ` | HTTP 429 पर `Retry-After` की प्रतीक्षा करें और n बार तक पुनः प्रयास करें। | | `--timeout ` | प्रतिक्रिया हेडर की प्रतीक्षा करने के लिए सेकंड (डिफ़ॉल्ट 60)। | | `--debug` | कुंजियों को मास्क करके, stderr पर HTTP एक्सचेंज दिखाएं। | जो कमांड **वॉलेट से शुल्क लेती हैं या डेटा हटाती हैं**, वे पुष्टि मांगती हैं और यदि भुगतान किया गया है, तो एक स्वतः जनरेटेड `Idempotency-Key` भेजती हैं (जिसे stderr पर प्रिंट किया जाता है, ताकि आप `--idempotency-key` के साथ सुरक्षित रूप से पुनः प्रयास कर सकें)। टर्मिनल के बिना वे मना कर देती हैं जब तक कि `--yes` न दिया गया हो। ### निकास कोड {#exit-codes} | कोड | अर्थ | |---|---| | 0 | सफलता | | 1 | अन्य त्रुटि (नेटवर्क, HTTP 4xx/5xx सूचीबद्ध नहीं) | | 2 | उपयोग त्रुटि | | 3 | अधिकृत नहीं (401/403) | | 4 | नहीं मिला (404) | | 5 | दर सीमित (429) | | 6 | पुष्टि आवश्यक है या अस्वीकार कर दी गई | | 130 | बाधित | ### प्रोफ़ाइल और पर्यावरण {#profiles-and-environment} `cmp config` प्रोफ़ाइल की सूची देता है; `cmp config use ` स्विच करता है; एक पुनर्विक्रेता के ग्राहक अपने स्वयं के डोमेन का उपयोग करते हैं: `cmp login --api-url https://shop.example.net --profile shop`। प्राथमिकता: फ़्लैग, पर्यावरण, कॉन्फ़िगरेशन फ़ाइल। चर: `CMP_TOKEN`, `CMP_PROFILE`, `CMP_API_URL`, `CMP_OUTPUT`, `CMP_CONFIG_DIR`, `CMP_ALLOW_HTTP`, `CMP_UPDATE_URL`। GitHub Actions: ```yaml - name: Install cmp run: | curl -fsSL https://cloud.example.com/cli/install.sh | CMP_INSTALL_DIR="$RUNNER_TEMP/bin" sh echo "$RUNNER_TEMP/bin" >> "$GITHUB_PATH" - name: List running VMs env: CMP_TOKEN: ${{ secrets.CMP_TOKEN }} # a read-only key run: cmp vm list -o json | jq -r '.items[] | select(.cs_state=="Running") | .hostname' ``` शेल पूर्णता: `cmp completion bash|zsh|fish|powershell`। ## अद्यतन और अनइंस्टॉल {#update-and-uninstall} ```bash cmp version cmp update --check cmp update ``` `cmp update` `latest.json`, `SHA256SUMS` और हस्ताक्षर को डाउनलोड करता है, **रनिंग बाइनरी में अंतर्निहित** सार्वजनिक कुंजी के साथ हस्ताक्षर को सत्यापित करता है, पैकेज हैश को सत्यापित करता है और उसके बाद ही खुद को बदलता है। डाउनग्रेड के लिए `--force` की आवश्यकता होती है। जब आप NexCMP को अपडेट करते हैं, तो पैनल नए संस्करण के साथ आने वाले CLI रिलीज़ को सर्व करता है। अनइंस्टॉल करने के लिए `cmp` बाइनरी और कॉन्फ़िगरेशन निर्देशिका (`cmp config path` इसे दिखाता है) को हटा दें। यदि मशीन खो जाती है तो **API keys** के तहत कुंजी को निरस्त करें। ## सत्यापित करें {#verify} 1. `cmp version` संस्करण और API दस्तावेज़ संस्करण प्रिंट करता है। 2. `cmp login`, ब्राउज़र में स्वीकृत करें, फिर `cmp whoami` प्रोफ़ाइल और आपके पैनल का URL दिखाता है। 3. `cmp vm list` आपके VM लौटाता है; `cmp vm list -o json | jq .` कच्चा JSON दिखाता है। ## Limits & notes {#limits-notes} - कमांड सूची आपके बिल्ड पर निर्भर करती है: रिलीज़ बनने पर पैकेज आपके इंस्टॉलेशन के OpenAPI दस्तावेज़ से जनरेट होते हैं, इसलिए आपके रिलीज़ में अक्षम उत्पाद की कोई कमांड नहीं होती है। ऐसे पथ के लिए `cmp api` का उपयोग करें जिसे CLI नहीं जानता है। - CLI MIT लाइसेंस के अंतर्गत है। - प्रत्येक पैकेज एक ed25519 कुंजी के साथ हस्ताक्षरित होता है; हस्ताक्षर कुंजी इंस्टॉलर और बाइनरी के अंदर पिन की जाती है, न कि अपडेट के समय लाई जाती है। - कुंजियाँ प्रति कुंजी और प्रति खाता सीमित हैं (देखें [REST API](https://nexcmp.com/hi/docs/developers/api/#rate-limits))। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | `curl .../cli/install.sh` 404 लौटाता है | सर्वर पर रिलीज़ में कोई CLI फ़ोल्डर नहीं है, या होस्ट लाइसेंस पर नहीं है | `https:///cli/latest.json` और डोमेन की जाँच करें; NexCMP को अपडेट करें। | | "हस्ताक्षर सत्यापित नहीं किया जा सका" | `ssh-keygen` गायब है या बहुत पुराना है | OpenSSH 8.0+ स्थापित करें, या जोखिम स्वीकार करने पर ही `CMP_REQUIRE_SIGNATURE=0` सेट करें। | | `cmp login` कहता है कि कोड समाप्त हो गया है | 10 मिनट बीत गए | `cmp login` को फिर से चलाएँ। | | निकास कोड 3 | कुंजी में कोई दायरा नहीं है, समाप्त हो गई है या निरस्त कर दी गई है | `cmp whoami`; अधिक दायरों के साथ बनाएँ या पुनः स्वीकृत करें। | | स्क्रिप्ट में निकास कोड 6 | टर्मिनल के बिना भुगतान किया गया या विनाशकारी कमांड | `--yes` (और अपना स्वयं का `--idempotency-key`) जोड़ें। | | "http पर कुंजी भेजने से मना करता है" | सादा http API URL | `https://` का उपयोग करें, या किसी लैब के लिए ही `CMP_ALLOW_HTTP=1` का उपयोग करें। | | ब्राउज़र गलत साइट खोलता है | पुनर्विक्रेता के लिए `--api-url` सेट नहीं है | `cmp login --api-url https://`. | --- # MCP सर्वर {#mcp-server} > **पोर्टल में कहाँ:** API reference › Tools (`https:///apidoc`) एंडपॉइंट और क्लाइंट स्निपेट दिखाता है; API keys (`/api-keys`) पर कुंजियाँ बनाई जाती हैं। एडमिन में कोई सेटिंग नहीं है: एंडपॉइंट पैनल का हिस्सा है। ## यह क्या करता है {#what-it-does} **Model Context Protocol (MCP)** AI सहायक को टूल्स कॉल करने की अनुमति देता है। NexCMP `https:///mcp` पर एक MCP एंडपॉइंट प्रदान करता है। हर सार्वजनिक API ऑपरेशन एक **टूल** (`vm_list`, `vm_start`, `billing_wallet`, ...) बन जाता है, जिससे कोई ग्राहक अपने सहायक से पूछ सकता है "मेरी कौन सी VMs चल रही हैं?" या "स्टेजिंग VM बंद करो"। सहायक केवल ग्राहक की अपनी API कुंजी और अनुमतियों के साथ काम करता है। ::: tip AI के साथ खुद NexCMP को कॉन्फ़िगर कर रहे हैं? यह पेज **ग्राहक** MCP एंडपॉइंट (`/mcp`) है। एक एडमिनिस्ट्रेटर के रूप में अपने खुद के पैनल को AI सहायक से कॉन्फ़िगर करने के लिए, [Configure with AI](https://nexcmp.com/hi/docs/configure-with-ai/mcp-admin/) (एंडपॉइंट `/mcp/admin`, एडमिन कुंजियाँ `ak_`) देखें। ::: ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | सर्वर | इंस्टॉल करने के लिए कुछ नहीं: एंडपॉइंट पैनल द्वारा सर्व किया जाता है और पैनल जहाँ भी हो वहाँ से पहुँचा जा सकता है। आपके रिवर्स प्रॉक्सी को `/mcp` को पैनल पर अग्रेषित (forward) करना होगा। | | ग्राहक | एक [API key](https://nexcmp.com/hi/docs/developers/api-keys/) (`vk_...`) जिसमें सहायक को आवश्यक स्कोप हों। | | क्लाइंट | एक MCP क्लाइंट जो **Streamable HTTP** ट्रांसपोर्ट और एक कस्टम `Authorization` हेडर का समर्थन करता है: Claude Code, Claude Desktop (`mcp-remote` ब्रिज के माध्यम से), Cursor, Copilot एजेंट मोड के साथ VS Code और इसी तरह के अन्य। | | प्रोटोकॉल संस्करण | 2025-11-25, 2025-06-18 और 2025-03-26। | ## बुनियादी ढांचा तैयार करें {#prepare-the-infrastructure} यह सुनिश्चित करने के अलावा कि `https:///mcp` किसी फ़ायरवॉल या प्रॉक्सी नियम द्वारा अवरुद्ध (block) नहीं है, कुछ नहीं। किसी अन्य ऑरिजिन का ब्राउज़र-आधारित MCP क्लाइंट अस्वीकार कर दिया जाता है जब तक कि वह ऑरिजिन अनुमति प्राप्त न हो; कमांड-लाइन और डेस्कटॉप क्लाइंट कोई `Origin` हेडर नहीं भेजते हैं और वैसे ही काम करते हैं जैसे वे हैं। ## कनेक्ट करें (ग्राहक पक्ष) {#connect-customer-side} 1. पोर्टल में एक API कुंजी बनाएँ (**API keys › Create key**) केवल उन स्कोप्स के साथ जिनका उपयोग आप सहायक से करवाना चाहते हैं, एक छोटी समाप्ति और, यदि संभव हो, तो एक IP प्रतिबंध। 2. अपने क्लाइंट में सर्वर जोड़ें। `cloud.example.com` और कुंजी को बदलें। **Claude Code** ```bash claude mcp add --transport http cloud https://cloud.example.com/mcp \ --header "Authorization: Bearer vk_XXXX" ``` **Cursor** (`~/.cursor/mcp.json` या `.cursor/mcp.json`; उस वातावरण में `CLOUD_API_KEY` सेट करें जहाँ से Cursor शुरू होता है): ```json { "mcpServers": { "cloud": { "url": "https://cloud.example.com/mcp", "headers": { "Authorization": "Bearer ${env:CLOUD_API_KEY}" } } } } ``` **Claude Desktop** (Node.js 18+ की आवश्यकता है; `claude_desktop_config.json`), `mcp-remote` ब्रिज के माध्यम से: ```json { "mcpServers": { "cloud": { "command": "npx", "args": ["-y", "mcp-remote", "https://cloud.example.com/mcp", "--header", "Authorization:${CLOUD_AUTH_HEADER}"], "env": { "CLOUD_AUTH_HEADER": "Bearer vk_XXXX" } } } } ``` कॉलन के बाद बिना स्पेस के हेडर लिखें और पूरे मान को पर्यावरण चर (environment variable) में रखें, जैसा कि ऊपर बताया गया है। 3. क्लाइंट को पुनः आरंभ करें और इससे अपने टूल्स की सूची दिखाने के लिए कहें। बिना क्लाइंट के कनेक्शन की जाँच करें: ```bash curl -s https://cloud.example.com/mcp \ -H "Authorization: Bearer vk_XXXX" \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' ``` ## यह कैसे काम करता है {#how-it-works} | आइटम | Detail | |---|---| | Endpoint | `POST /mcp` एक JSON-RPC 2.0 संदेश के साथ; उत्तर `application/json` है। `GET /mcp` 405 उत्तर देता है (कोई सर्वर-से-क्लाइंट स्ट्रीम नहीं); `DELETE /mcp` सत्र समाप्त करता है। | | Authentication | केवल `Authorization: Bearer vk_...` (सत्र टोकन, कुकीज़ और एडमिन कुंजियाँ 401 और `WWW-Authenticate: Bearer` हेडर के साथ अस्वीकार कर दी जाती हैं)। | | सत्र | `Mcp-Session-Id` को `initialize` द्वारा जारी किया जाता है, उस कुंजी से बंधा होता है, 24 घंटे के लिए वैध होता है; प्रति कुंजी अधिकतम 16 सत्र। | | टूल्स | कुंजी को दिखाई देने वाले प्रत्येक सार्वजनिक API ऑपरेशन के लिए एक। टूल का नाम स्पेस और डैश के बजाय `_` वाला CLI कमांड है (`vm firewall add`, `vm_firewall_add` बन जाता है) और OpenAPI `operationId` के बराबर होता है। एक टूल तभी सूचीबद्ध होता है जब कुंजी के पास उसका स्कोप हो और मॉड्यूल सक्षम हो। | | क्षमताएं | केवल टूल्स (कोई संसाधन या प्रॉम्प्ट नहीं)। | | आकार | अनुरोध बॉडी 1 MB तक; टूल परिणाम पाठ लगभग 100 KB तक (बाकी एक नोट के साथ काट दिया जाता है); एक कॉल में अधिकतम 55 सेकंड लगते हैं। | ### सुरक्षा नियम {#safety-rules} - **REST जैसा ही गेट।** प्रत्येक `tools/call` पैनल के अपने अनुरोध पाइपलाइन से गुजरता है: स्कोप, साइट, IP प्रतिबंध, रेट लिमिट, आइडपोटेंसी, स्वामित्व जांच (अन्य लोगों के संसाधनों के लिए 404) और कोटा सभी लागू होते हैं। MCP ऐसी कोई अनुमति नहीं दे सकता जो कुंजी के पास नहीं है। - **पुष्टिकरण।** जो टूल पैसे खर्च करते हैं, हटाते हैं, या क्रेडेंशियल लौटाते हैं (कंसोल टिकट, kubeconfig, S3 या SSH सीक्रेट, पासवर्ड रीसेट, नई कुंजियाँ) उनके लिए `confirm: true` तर्क आवश्यक होता है। टूल विवरण सहायक को निर्देश देता है कि इसे केवल उपयोगकर्ता की स्वीकृति के बाद ही पास करे, ताकि वेब पेज या लॉग में छुपा निर्देश इसे अपने आप ट्रिगर न कर सके। - **आइडपोटेंसी (Idempotency)।** भुगतान वाले टूल `idempotency_key` स्वीकार करते हैं; यदि छोड़ा जाता है तो टूल नाम और तर्कों से एक स्थिर कुंजी प्राप्त की जाती है, ताकि एक समान रीट्राय पर दो बार शुल्क न लगे। - **टूल के रूप में उपलब्ध नहीं:** स्ट्रीमिंग एंडपॉइंट्स (AI Agent चैट), वन-टाइम SSH या कंसोल WebSocket टिकट, बाइनरी डाउनलोड, और VPN ऐप एंडपॉइंट्स (`/v1/ext/*`)। - **कभी भी संभव नहीं:** API कभी भी टॉप-अप, पासवर्ड बदलने, खाता हटाने या कुंजियाँ बनाने की अनुमति नहीं देता, इसलिए कोई भी सहायक इन्हें नहीं कर सकता। ### सीमाएं {#limits} | Limit | डिफ़ॉल्ट | |---|---| | प्रति कुंजी टूल कॉल | 60 प्रति मिनट | | प्रति कुंजी MCP अनुरोध | 240 प्रति मिनट | | साथ ही सामान्य कुंजी और खाता सीमाएं | देखें [REST API](https://nexcmp.com/hi/docs/developers/api/#rate-limits) | सीमा से अधिक होने पर एंडपॉइंट JSON-RPC त्रुटि और `Retry-After` के साथ HTTP 429 उत्तर देता है। ## सत्यापित करें {#verify} 1. उपरोक्त `curl` कमांड एक `tools` सूची के साथ JSON-RPC परिणाम लौटाता है। केवल कुंजी के स्कोप से मेल खाने वाले टूल दिखाई देते हैं। 2. अपने क्लाइंट में "list my VMs" पूछें: सहायक `vm_list` को कॉल करता है और परिणाम दिखाता है। 3. पोर्टल में कुंजी का **Last used** समय बदल जाता है, और **Key usage log** में राइट कॉल दिखाई देते हैं। ## Limits & notes {#limits-notes} - **ब्राउज़र साइन-इन (OAuth)।** संदर्भ पृष्ठ उन क्लाइंट्स के लिए ब्राउज़र के माध्यम से साइन इन करने का भी वर्णन करता है जो MCP OAuth का समर्थन करते हैं। स्थापित NexCMP में समर्थित, परीक्षण किया गया तरीका API कुंजी (या CLI के लिए `cmp login`) है। - **रीसेलर साइटें** MCP अनुभाग नहीं दिखाती हैं; उनके ग्राहक API के लिए रीसेलर के डोमेन का उपयोग करते हैं। - **न्यूनतम विशेषाधिकार (Least privilege)।** पहले रीड स्कोप के साथ प्रत्येक सहायक के लिए एक समर्पित कुंजी बनाएं; आवश्यकता पड़ने पर ही राइट स्कोप जोड़ें। - सहायक की पहुँच को तुरंत समाप्त करने के लिए **API keys** में कुंजी को रद्द करें। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | `WWW-Authenticate: Bearer` के साथ 401 | कोई कुंजी नहीं, गलत कुंजी, या सत्र टोकन | `Authorization: Bearer vk_...` भेजें। | | `Origin` के बारे में 403 | किसी अन्य मूल (origin) पर एक ब्राउज़र पेज | डेस्कटॉप या CLI क्लाइंट का उपयोग करें; या अपने व्यवस्थापक से मूल (`mcp_allowed_origins`) की अनुमति देने के लिए कहें। | | `Mcp-Session-Id` के साथ अनुरोध पर 404 | सत्र किसी अन्य कुंजी का है या समाप्त हो गया है | `initialize` को फिर से चलाएँ। | | `GET /mcp` पर 405 | अपेक्षित: सर्वर में कोई इवेंट स्ट्रीम नहीं है | केवल POST का उपयोग करें (क्लाइंट यह स्वतः करते हैं)। | | टूल सूची छोटी है | कुंजी स्कोप या मॉड्यूल | कुंजी में स्कोप जोड़ें; मॉड्यूल सक्षम करें। | | टूल उत्तर देता है कि उसे `confirm: true` चाहिए | भुगतान वाला, हटाने वाला या संवेदनशील टूल | आपके अनुमोदन के बाद सहायक को `confirm` सेट करना होगा। | | 429 | MCP या कुंजी दर सीमा | `Retry-After` की प्रतीक्षा करें। | | क्लाइंट किसी हेडर के साथ कनेक्ट नहीं हो सकता | कस्टम-हेडर समर्थन के बिना क्लाइंट | `mcp-remote` ब्रिज का उपयोग करें। | --- # Configure with AI {#configure-with-ai} > **एडमिन में कहाँ:** AI Chat (`/agent`) और System › Settings › API & AI agents (`/agent/keys`)। इन पृष्ठों पर सब कुछ केवल प्रशासकों के लिए है। ## यह क्या करता है {#what-it-does} NexCMP 1.4.0 से आप किसी AI सहायक से आपके लिए पैनल कॉन्फ़िगर करने के लिए कह सकते हैं: Proxmox VE या CloudStack कनेक्ट करें, एक ज़ोन बनाएं, अपनी लागतों से एक प्लान तालिका बनाएं, ईमेल, भुगतान और ब्रांडिंग सेट अप करें, किसी ग्राहक को ढूंढें, या संपूर्ण कॉन्फ़िगरेशन निर्यात करें। सहायक **admin tools** के एक निश्चित सेट के माध्यम से काम करता है। इसे कभी भी शेल नहीं मिलता, यह सर्वर पर फ़ाइलें नहीं पढ़ता और न ही कभी सहेजा गया पासवर्ड या API कुंजी देखता है। जब आप एक दर्जन पृष्ठों पर क्लिक करने के बजाय मिनटों में पहला सेटअप चाहते हैं, या जब आप कई इंस्टॉलेशन प्रबंधित करते हैं और उनका कॉन्फ़िगरेशन एक फ़ाइल में रखना चाहते हैं, तब इसका उपयोग करें। ## इसे उपयोग करने के तीन तरीके {#three-ways-to-use-it} | तरीका | AI से कौन बात करता है | यह कहाँ चलता है | यहाँ से शुरू करें | |---|---|---|---| | **एडमिन में AI Chat** | आप, NexCMP एडमिन में | आपके द्वारा चुना गया AI स्रोत: OpenAI, Anthropic, Gemini या OpenRouter से एक API कुंजी, आपके पैनल का अपना AI प्रदाता, या एक आधिकारिक AI CLI जिसमें आपने साइन इन किया है | [एडमिन में AI Chat](https://nexcmp.com/hi/docs/configure-with-ai/ai-chat-in-admin/) | | **MCP पर आपका अपना AI क्लाइंट** | आप, Claude Code, Codex CLI, Gemini CLI, Cursor, Claude Desktop, claude.ai या ChatGPT में | आपकी मशीन पर या वेंडर के ऐप में, `https://cloud.example.com/mcp/admin` पर आपके पैनल से कनेक्टेड | [Connect an AI client](https://nexcmp.com/hi/docs/configure-with-ai/mcp-admin/) | | **कोड के रूप में कॉन्फ़िगरेशन** | आप या एक स्क्रिप्ट | सर्वर पर एक YAML फ़ाइल और `nexcmp config` कमांड (या Import/Export पृष्ठ) | [Configuration as code](https://nexcmp.com/hi/docs/configure-with-ai/config-as-code/) | तीनों एक ही टूल को कॉल करते हैं और एक ही सुरक्षा लेयर से गुजरते हैं, इसलिए आप उन्हें मिला सकते हैं: किसी सहायक के साथ कॉन्फ़िगरेशन का मसौदा तैयार करें, इसे YAML के रूप में निर्यात करें, अपने संपादक में इसकी समीक्षा करें और बाद में इसे लागू करें। ## सुरक्षा मॉडल {#safety-model} | Rule | इसका आपके लिए क्या अर्थ है | |---|---| | **स्कोप** | एक कुंजी या कनेक्शन आपके द्वारा चुने गए स्कोप (`admin:read`, `catalog:write`, `infra:write`, `billing:write`, `customers:write`, `settings:write`, `ai:write`, `secrets:write`) तक सीमित है। स्कोप के बिना कॉल अस्वीकार कर दी जाती है। [Admin API keys](https://nexcmp.com/hi/docs/configure-with-ai/admin-api-keys/#scopes) देखें। | | **Expiry** | प्रत्येक कुंजी और कनेक्शन की समय सीमा समाप्त होती है: आपके द्वारा बनाई गई कुंजियों के लिए 1 से 90 दिन, डिफ़ॉल्ट रूप से 30 दिन। OAuth एक्सेस टोकन एक घंटे तक चलते हैं। | | **IP प्रतिबंध और दर सीमा** | एक कुंजी को IP श्रेणियों और प्रति मिनट कॉल की संख्या (डिफ़ॉल्ट रूप से 120) तक सीमित किया जा सकता है। | | **दो-चरणीय पुष्टि** | जो कार्रवाइयाँ पैसे ट्रांसफर करती हैं, डेटा हटाती हैं, भुगतान क्रेडेंशियल बदलती हैं या साइन-इन सुरक्षा बदलती हैं, वे पहले एक पूर्वावलोकन लौटाती हैं और आपके अनुमोदन तक कुछ नहीं करती हैं। AI Chat के भीतर हर बदलाव एक पुष्टिकरण कार्ड है जिसे आप खुद दबाते हैं। | | **ऐसी चीजें जो कुंजियाँ कभी नहीं कर सकतीं** | प्रशासक बनाएं, 2FA बदलें, कुंजियाँ बनाएं या रद्द करें, ग्राहक के रूप में लॉगिन करें, पैनल का बैकअप लें, पुनर्स्थापित करें या अपडेट करें, और इसी तरह के कार्य। इनके लिए एडमिन में आपकी आवश्यकता होती है। | | **Activity log** | प्रत्येक कॉल, चाहे स्वीकृत हो या अस्वीकृत, की (key), क्लाइंट, टूल, IP और परिणाम के साथ रिकॉर्ड की जाती है। System › Settings › API & AI agents › Activity देखें। | | **रहस्य कभी भी वापस नहीं लौटाए जाते** | पासवर्ड, API keys और टोकन सेट किए जा सकते हैं लेकिन कभी पढ़े नहीं जा सकते। AI को दिखने वाले जवाबों में वे छिपे हुए (masked) दिखते हैं। | | **डेमो इंस्टॉलेशन रीड-ओनली होते हैं** | डेमो पैनल पर हर राइट (write) अनुरोध को `demo_read_only` के साथ अस्वीकार कर दिया जाता है। | ::: important AI क्या पढ़ सकता है `admin:read` के साथ एक असिस्टेंट ग्राहक के नाम, ई-मेल पते, बैलेंस और बिलिंग रिकॉर्ड पढ़ सकता है। जब आप किसी वेंडर (OpenAI, Anthropic, Google, OpenRouter) पर चलने वाले AI source का उपयोग करते हैं, तो आपके सवाल का जवाब देने के लिए वह डेटा उस वेंडर को भेजा जाता है। असिस्टेंट को उसकी ज़रूरत के सबसे कम स्कोप (scopes) दें, और ऐसा source चुनें जिस पर आप उस डेटा के लिए भरोसा करते हों। ::: ## त्वरित शुरुआत {#quick-start} 1. एडमिन में साइन इन करें और **AI Chat** खोलें। यदि अभी तक कोई AI source कनेक्ट नहीं है, तो **System › Settings › AI accounts** खोलें और एक कनेक्ट करें (देखें [AI accounts and subscriptions](https://nexcmp.com/hi/docs/configure-with-ai/ai-accounts-and-subscriptions/))। 2. टाइप करें "Check my setup progress" और Enter दबाएं। असिस्टेंट [Setup progress checklist](https://nexcmp.com/hi/docs/configure-with-ai/setup-checklist/) पढ़ता है और आपको बताता है कि क्या बाकी है। 3. इसे अगला चरण करने के लिए कहें। प्रत्येक कन्फर्मेशन कार्ड की समीक्षा करें और इसे लागू करने के लिए **Confirm** दबाएं। क्या पूछना है, इसकी पहली झलक के लिए, [Example prompts](https://nexcmp.com/hi/docs/configure-with-ai/example-prompts/) देखें। ![एक बातचीत, टूल परिणाम और कन्फर्मेशन कार्ड के साथ AI Chat पेज](https://nexcmp.com/hi/docs/images/configure-with-ai/overview-01-ai-chat.webp) ## Limits & notes {#limits-notes} - **Demo and read-only.** पेज डेमो पैनल पर दिखाई देते हैं, लेकिन वहाँ कुछ भी सेव नहीं किया जा सकता। - **No shell.** असिस्टेंट केवल [Connect an AI client](https://nexcmp.com/hi/docs/configure-with-ai/mcp-admin/#tools) में सूचीबद्ध एडमिन टूल को कॉल कर सकता है। यह सर्वर पर कमांड नहीं चला सकता। - **Network and routing modules** (BGP, XDP, इंटरफेस, NAT और इसी तरह के) AI के लिए केवल-पढ़ने के लिए (read-only) हैं, और एडमिनिस्ट्रेटर खाते, बैकअप और अपडेट जैसे संवेदनशील क्षेत्र पूरी तरह से की (keys) के लिए बंद हैं। - **Prices** USD में हैं: प्रति घंटे डॉलर में प्लान की कीमतें, सेंट में बैलेंस। - **Cost.** AI के जवाबों का भुगतान आपके द्वारा कनेक्ट किए गए AI source को किया जाता है (API उपयोग, या आपकी अपनी सब्सक्रिप्शन)। AI Chat में आप दैनिक खर्च की सीमा (spending cap) सेट कर सकते हैं। NexCMP लाइसेंस मॉडल के लिए https://nexcmp.com/pricing देखें। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | AI Chat कहता है कि कोई AI source कनेक्ट नहीं है | आपके एडमिन खाते के लिए कोई source सेट नहीं है | System › Settings › AI accounts खोलें और एक कनेक्ट करें। | | एक असिस्टेंट जवाब देता है `insufficient_scope` | की (key) या कनेक्शन में उस टूल के लिए आवश्यक स्कोप नहीं है | आवश्यक स्कोप के साथ एक की बनाएं, या फिर से कनेक्ट करें और सहमति स्क्रीन (consent screen) पर इसे टिक करें। देखें [Admin API keys](https://nexcmp.com/hi/docs/configure-with-ai/admin-api-keys/#errors)। | | हर बदलाव एक कन्फर्मेशन कार्ड दिखाता है | AI Chat में अपेक्षित | लागू करने के लिए **Confirm** या रद्द करने के लिए **Reject** दबाएं। | | राइट (writes) `demo_read_only` के साथ विफल होते हैं | पैनल डेमो मोड में है | गैर-डेमो इंस्टॉलेशन का उपयोग करें। | --- # एडमिन में AI Chat {#ai-chat-in-the-admin} > **Where in the admin:** AI Chat (`/agent`, इसका अपना मेनू प्रविष्टि) और हर एडमिन पेज पर फ्लोटिंग **Ask AI** बटन। जवाब के sources System › Settings › AI accounts (`/agent/accounts`) में सेट किए जाते हैं। ## यह क्या करता है {#what-it-does} AI Chat एडमिन में बना एक असिस्टेंट है। आप जो चाहते हैं उसका वर्णन करते हैं ("connect my Proxmox cluster", "set up email"), असिस्टेंट एडमिन टूल के साथ वर्तमान स्थिति को पढ़ता है, बदलावों का प्रस्ताव देता है और प्रत्येक को **कन्फर्मेशन कार्ड** के रूप में दिखाता है। जब तक आप **Confirm** नहीं दबाते, तब तक कुछ भी लागू नहीं होता है। **Ask AI** पैनल एक संकीर्ण साइड पैनल में वही चैट है, ताकि जब आप किसी पेज को देख रहे हों तो पूछ सकें। **Do it for me** जैसे बटन ([Setup progress checklist](https://nexcmp.com/hi/docs/configure-with-ai/setup-checklist/) में और खाली सूचियों में) इसे तैयार सवाल के साथ खोलते हैं। यह ग्राहकों की सेवा करने वाले ग्राहक-सामने वाले [AI Chat](https://nexcmp.com/hi/docs/ai/ai-chat/) और [AI Agent](https://nexcmp.com/hi/docs/ai/ai-agent/) नहीं है। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | Role | लॉग-इन किया हुआ एडमिनिस्ट्रेटर। चैट, कुंजियाँ और प्राथमिकताएं आपके एडमिन खाते की होती हैं; अन्य एडमिनिस्ट्रेटर इन्हें नहीं देख सकते। | | एक उत्तर स्रोत | कम से कम एक जुड़ा हुआ: एक API कुंजी, साइन-इन, पैनल का अपना AI प्रदाता, या कोई AI CLI जिसमें आपने साइन इन किया हो। [AI accounts and subscriptions](https://nexcmp.com/hi/docs/configure-with-ai/ai-accounts-and-subscriptions/) देखें। | | डेमो | डेमो पैनल पर आप पुरानी चैट पढ़ सकते हैं लेकिन संदेश नहीं भेज सकते। | ## चुनें कि उत्तर कहाँ से आते हैं {#choose-where-answers-come-from} इनपुट के नीचे दिए गए चयनकर्ता में स्रोत चुनें (यह आपके द्वारा जोड़े गए स्रोतों को सूचीबद्ध करता है)। **System › Settings › AI accounts** आपको एक डिफ़ॉल्ट स्रोत, एक डिफ़ॉल्ट मॉडल और दैनिक कैप सेट करने की भी अनुमति देता है। | Source | आप इसे कैसे जोड़ते हैं | नोट्स | |---|---|---| | OpenAI (ChatGPT मॉडल) | platform.openai.com से एक API कुंजी पेस्ट करें | OpenAI द्वारा उपयोग के आधार पर बिल किया जाता है। | | Anthropic (Claude) | console.anthropic.com से एक API कुंजी पेस्ट करें | Anthropic द्वारा उपयोग के आधार पर बिल किया जाता है। | | Google Gemini | aistudio.google.com से एक API कुंजी पेस्ट करें, या **Sign in with Google** | Google के साथ साइन इन करने के लिए एक OAuth क्लाइंट की आवश्यकता होती है जिसे **आप** अपने स्वयं के Google Cloud प्रोजेक्ट में बनाते हैं। | | OpenRouter | एक कुंजी पेस्ट करें, या **Sign in with OpenRouter** | कई मॉडलों के लिए एक खाता। | | पैनल AI प्रदाता | System › Settings › AI provider में पहले से सेट है | वही प्रदाता जिसका उपयोग आपके ग्राहकों का AI Chat करता है। [AI provider](https://nexcmp.com/hi/docs/ai/ai-providers/)। | | Claude, ChatGPT या Gemini सब्सक्रिप्शन | पैनल सर्वर पर आधिकारिक CLI स्थापित और साइन इन है | [AI accounts and subscriptions](https://nexcmp.com/hi/docs/configure-with-ai/ai-accounts-and-subscriptions/) देखें। | आपके द्वारा पेस्ट की गई कुंजियाँ केवल आपके एडमिन खाते के लिए एन्क्रिप्ट करके संग्रहीत की जाती हैं। उन्हें कभी भी दोबारा नहीं दिखाया जाता और दूसरा एडमिनिस्ट्रेटर उन्हें डिक्रिप्ट नहीं कर सकता। ## चैट का उपयोग करें {#use-the-chat} 1. **AI Chat** खोलें (या **Ask AI** पर क्लिक करें)। 2. **New chat** पर क्लिक करें, या बाईं ओर की सूची से कोई पुरानी चैट खोलें। 3. अपना अनुरोध टाइप करें और Enter दबाएं (Shift+Enter से नई लाइन शुरू होती है)। त्रुटि दिखाने या दस्तावेज़ पेस्ट करने के लिए आप इमेज या टेक्स्ट फ़ाइलें जोड़ सकते हैं (प्रति संदेश अधिकतम 4, प्रत्येक 3 MB)। 4. उत्तर को स्ट्रीम होते हुए देखें। सहायक द्वारा कॉल किया जाने वाला प्रत्येक टूल टूल के नाम, उसके तर्कों और एक छोटे परिणाम के साथ एक संक्षिप्त कार्ड के रूप में दिखाई देता है। 5. चल रहे उत्तर को रद्द करने के लिए **Stop** दबाएं। प्रति एडमिनिस्ट्रेटर एक समय में केवल एक ही उत्तर चलता है। ![कन्वर्सेशन सूची के साथ AI Chat, टूल कार्ड वाला एक उत्तर और स्रोत चयनकर्ता तथा Secret फ़ील्ड के साथ इनपुट](https://nexcmp.com/hi/docs/images/configure-with-ai/ai-chat-in-admin-01-chat.webp) प्रति संदेश अधिकतम 10 टूल राउंड होते हैं। सहायक चैट के अंतिम 30 संदेशों को याद रखता है। टूल के परिणामों को निर्देशों के रूप में नहीं, बल्कि डेटा के रूप में मॉडल को पास किया जाता है। ## पुष्टि कार्ड {#confirmation-cards} AI Chat में **हर बदलाव एक कार्ड होता है**, न कि केवल पैसों से जुड़े कार्य। सहायक प्रस्ताव देता है; आप तय करते हैं। एक कार्ड दिखाता है: - एक शीर्षक जो बताता है कि इस पर ध्यान देने की आवश्यकता क्यों है, उदाहरण के लिए "changes a customer balance"। - कॉल: विधि और पथ। - बदलने वाले फ़ील्ड्स की एक तालिका: वर्तमान मान और नया मान। गुप्त मान `••••` के रूप में दिखाई देते हैं। - एक उलटी गिनती (कार्ड 5 मिनट के बाद समाप्त हो जाते हैं)। - **Confirm** और **Reject**। **Confirm** करने पर पैनल स्वयं बदलाव लागू करता है, फिर सहायक को बताता है कि क्या हुआ। सहायक बटन नहीं दबा सकता, API के माध्यम से स्वीकृत नहीं कर सकता, और उसे यह कभी न कहने के लिए कहा जाता है कि पुष्टि होने से पहले कोई बदलाव लागू किया गया था। यदि आप पेज को रीलोड करते हैं, तो जो कार्ड अभी भी वैध हैं वे वापस आ जाते हैं। वे **System › Settings › API & AI agents** के शीर्ष पर "Waiting for your confirmation" के अंतर्गत भी दिखाई देते हैं। ![बैलेंस परिवर्तन, उलटी गिनती और Confirm तथा Reject बटन दिखाने वाला Confirmation card](https://nexcmp.com/hi/docs/images/configure-with-ai/ai-chat-in-admin-02-confirm.webp) ## Secrets {#secrets} पासवर्ड और API कुंजी चैट टेक्स्ट से होकर नहीं जानी चाहिए। इनपुट के बगल में **Secret** फ़ील्ड (लॉक आइकन) का उपयोग करें: 1. लॉक आइकन पर क्लिक करें और एक **नाम** (अक्षर, अंक और अंडरस्कोर, उदाहरण के लिए `smtp_password`) तथा **मान** दर्ज करें। 2. अपने संदेश में नाम का संदर्भ दें: "SMTP पासवर्ड के रूप में गुप्त smtp_password का उपयोग करें"। 3. सहायक को हमेशा केवल एक प्लेसहोल्डर दिखाई देता है जो गुप्त के लिए होता है, जिसे इस प्रकार लिखा जाता है: ```text {{secret:smtp_password}} ``` टूल चलाते समय पैनल इसे वास्तविक मान से बदल देता है। मान को चैट इतिहास में सहेजा नहीं जाता है और AI स्रोत को नहीं भेजा जाता है। यदि आप गलती से संदेश में कुंजी जैसा दिखने वाला कुछ पेस्ट कर देते हैं, तो पैनल इसे उसी सुरक्षित स्टोर में ले जाता है और इतिहास में इसे मास्क कर देता है, लेकिन इसे एक सुरक्षा जाल के रूप में मानें, न कि किसी पद्धति के रूप में। Secrets केवल पैनल की मेमोरी में रहते हैं, उस बातचीत के लिए जिसमें वे दर्ज किए गए थे और उसके अंतिम संदेश के बाद अधिकतम एक घंटे तक; पैनल को रीस्टार्ट करने से भी वे साफ़ हो जाते हैं। यदि सहायक पूछता है तो उन्हें फिर से दर्ज करें। कोई secret सेट करने के लिए चैट सत्र के लिए `secrets:write` अनुमति की भी आवश्यकता होती है (नीचे देखें)। ## चैट की अनुमतियाँ {#permissions-of-the-chat} प्रत्येक संदेश एक अस्थायी कुंजी के साथ चलता है जो उत्तर की अवधि (अधिकतम 15 मिनट) के लिए मौजूद रहती है, केवल पैनल सर्वर से काम करती है और केवल confirmation cards के माध्यम से उपयोग की जा सकती है। इसके दायरे वे हैं जो **System › Settings › AI accounts › Chat session permissions** में टिक किए गए हैं। `admin:read` हमेशा चालू रहता है। `secrets:write` को छोड़कर सभी दायरे डिफ़ॉल्ट रूप से चालू हैं; यदि आप चाहते हैं कि सहायक पासवर्ड और कुंजियाँ सेट करने में सक्षम हो (Secret फ़ील्ड के माध्यम से) तो `secrets:write` पर टिक करें। डेमो पैनल पर चैट केवल पढ़ने के लिए होती है। ## दैनिक खर्च सीमा {#daily-spending-cap} AI Chat API स्रोतों से मिलने वाले उत्तरों की अनुमानित लागत को जोड़ता है। डिफ़ॉल्ट सीमा **5 USD प्रति администратор प्रति दिन** है। **AI accounts › Defaults for AI Chat** के अंतर्गत कोई अन्य राशि सेट करें (0 का अर्थ है कोई सीमा नहीं)। पेज "used today" दिखाता है। जब सीमा पहुँच जाती है तो चैट अगले दिन तक या आपके द्वारा सीमा बढ़ाने तक नए संदेशों से मना कर देती है (`daily_cap`)। जो स्रोत AI CLI सब्सक्रिप्शन हैं, उनकी गिनती नहीं की जाती है, क्योंकि उनका बिल आपके सब्सक्रिप्शन द्वारा भेजा जाता है। ## सत्यापित करें {#verify} 1. **AI accounts** में स्रोत पर **Test** पर क्लिक करें। यह मॉडल के नाम और मिलीसेकंड में समय के साथ उत्तर देता है। 2. AI Chat में "Check my setup progress" पूछें। उत्तर [checklist](https://nexcmp.com/hi/docs/configure-with-ai/setup-checklist/) के चरणों को सूचीबद्ध करता है और एक `setup_checklist` tool card दिखाई देता है। 3. एक छोटे बदलाव के लिए कहें, उदाहरण के लिए "Set the brand name to Example Cloud"। एक confirmation card दिखाई देता है; **Confirm** दबाएं और Branding पेज की जाँच करें। 4. **API & AI agents › Activity** चैनल `chat` के साथ कॉल को सूचीबद्ध करता है। ## Limits & notes {#limits-notes} - सहायक के पास कोई शेल नहीं है और वह सर्वर पर फ़ाइलें नहीं पढ़ सकता है। यह केवल [admin tools](https://nexcmp.com/hi/docs/configure-with-ai/mcp-admin/#tools) को कॉल करता है। - वे परिवर्तन जो कुंजियाँ कभी नहीं कर सकती हैं ([list](https://nexcmp.com/hi/docs/configure-with-ai/admin-api-keys/#what-a-key-can-never-do)) वे AI Chat से भी नहीं किए जा सकते। - मॉडल के काम की जाँच करें। एक confirmation card ठीक वही दिखाता है जो भेजा जाएगा; इसे पढ़ें, विशेष रूप से कीमतों और मात्राओं को। - API उत्तरों का बिल AI विक्रेता द्वारा भेजा जाता है। सीमा एक अनुमान है; विक्रेता के यहाँ भी खर्च की सीमा सेट करें। - CLI उत्तर 5 मिनट के बाद रुक जाता है। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | "आज की AI खर्च सीमा समाप्त हो गई है" (`daily_cap`) | आपने दैनिक सीमा समाप्त कर ली है | AI खातों में इसे बढ़ाएँ, या कल तक प्रतीक्षा करें। | | "एक और उत्तर अभी भी चल रहा है - प्रतीक्षा करें या Stop दबाएं" (`busy`) | प्रति प्रशासक एक समय में एक उत्तर | **Stop** दबाएं या प्रतीक्षा करें। | | चयनकर्ता में स्रोत दिखाई नहीं देता है | यह कनेक्ट नहीं है, या (Claude CLI) "I understand" स्विच बंद है | इसे AI खातों में कनेक्ट करें। | | "वह API key जैसा नहीं दिखता" | पेस्ट की गई कुंजी में रिक्त स्थान हैं या यह बहुत लंबी है | केवल कुंजी पेस्ट करें। | | परीक्षण विफल रहता है | गलत कुंजी, कोई क्रेडिट नहीं, या वेंडर डाउन है | वेंडर पर कुंजी और बिलिंग की जाँच करें। | | सहायक का कहना है कि वह कुछ नहीं कर सकता | चैट सत्र में दायरा (scope) नहीं है, या क्रिया AI के लिए बंद है | AI खातों में दायरे पर टिक करें या इसे admin में करें। | | एक कार्ड कहता है कि इसकी समय-सीमा समाप्त हो गई है | 5 मिनट से अधिक समय बीत गया है | सहायक से परिवर्तन का पुनः प्रस्ताव देने के लिए कहें। | | CLI स्रोत "usage limit" या "not logged in" रिपोर्ट करता है | आपकी सदस्यता सीमा या सत्र | फिर से साइन इन करें या प्रतीक्षा करें; [AI accounts and subscriptions](https://nexcmp.com/hi/docs/configure-with-ai/ai-accounts-and-subscriptions/) देखें। | --- # AI खाते और सब्सक्रिप्शन {#ai-accounts-and-subscriptions} > **प्रशासन में कहाँ:** System › Settings › AI accounts (`/agent/accounts`), टैब **Accounts** और **Use your own AI subscription**। वैकल्पिक टर्मिनल AI Console (`/agent/console`) है, जो चालू होने पर ही AI Chat के अंतर्गत दिखाई देता है। ## यह क्या करता है {#what-it-does} AI Chat को उत्तर देने के लिए किसी चीज़ की आवश्यकता होती है। यह पृष्ठ आपको अपने स्वयं के admin खाते के लिए उस स्रोत को कनेक्ट करने देता है: - **API स्रोत**: OpenAI, Anthropic (Claude), Google Gemini और OpenRouter, API key या sign-in के साथ। - **पैनल AI प्रदाता**, यदि आपने पहले ही System › Settings › AI provider के अंतर्गत एक सेट कर लिया है। - वेंडर के **आधिकारिक कमांड-लाइन टूल** के माध्यम से **आपकी अपनी AI सदस्यता** (Claude, ChatGPT, Gemini), पैनल सर्वर पर या आपके अपने कंप्यूटर पर। आपके द्वारा कनेक्ट की जाने वाली हर चीज़ आपके admin खाते से संबंधित होती है। कुंजियाँ और टोकन आपके अकेले के लिए एन्क्रिप्ट करके संग्रहीत किए जाते हैं; दूसरा प्रशासक उनका उपयोग नहीं कर सकता है। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | Role | एक साइन-इन प्रशासक। डेमो पैनल पर कुछ भी कनेक्ट या हटाया नहीं जा सकता है। | | API स्रोत | वेंडर पर एक खाता और एक API key (कार्ड में **Get API key** लिंक है जो वेंडर पृष्ठ खोलता है)। | | पैनल सर्वर पर CLI | AI Console चालू है (नीचे देखें), सर्वर से वेंडर और `nodejs.org` और npm रजिस्ट्री तक आउटबाउंड HTTPS, और **2 GB RAM या अधिक** (चलते समय CLI को लगभग 1 GB खाली की आवश्यकता होती है; इंस्टॉलर 2 GB से नीचे चेतावनी देता है)। यदि मौजूद हो तो Node.js 20 या नए का उपयोग किया जाता है, अन्यथा इंस्टॉलर चेकसम जाँच के साथ Node.js 22 डाउनलोड करता है। | | आपके कंप्यूटर पर CLI | CLI स्थापित करने के लिए Node.js 20 या नया, और आपकी अपनी सदस्यता। | ## एक API स्रोत कनेक्ट करें {#connect-an-api-source} 1. **System › Settings › AI accounts** खोलें और **Accounts** पर रहें। 2. source के कार्ड पर **Connect** पर क्लिक करें। वेंडर का की पेज एक नए टैब में खुलता है; वहाँ एक की बनाएँ। 3. की को फ़ील्ड में पेस्ट करें और सेव करें। कार्ड पिछले चार वर्णों के साथ कनेक्टेड स्थिति दिखाता है। 4. यदि आप कोई दूसरा मॉडल चाहते हैं तो **default model** चुनें, फिर **Test** पर क्लिक करें। एक अच्छा परिणाम "Connected - example-model, 850 ms" जैसा दिखाई देता है। ![API सोर्स कार्ड, कनेक्टेड OpenAI कार्ड और पैनल AI प्रदाता कार्ड के साथ AI अकाउंट पेज](https://nexcmp.com/hi/docs/images/configure-with-ai/ai-accounts-and-subscriptions-01-accounts.webp) | Source | Sign-in alternative | |---|---| | OpenRouter | **Sign in with OpenRouter** पॉपअप या टैब में OpenRouter खोलता है; अनुमति दें और आप इस पेज पर कनेक्टेड स्थिति में लौट आएंगे। | | Google Gemini | **Sign in with Google** आपके सेव करने के बाद, कार्ड पर **Set up Google sign-in (optional)** के अंतर्गत दिखाई देता है, जो **आपके अपने** Google Cloud प्रोजेक्ट में बनाया गया एक OAuth क्लाइंट है (क्लाइंट ID `.apps.googleusercontent.com` पर समाप्त होती है, साथ ही इसका सिगरेट भी)। NexCMP कोई साझा Google क्लाइंट प्रदान नहीं करता है। | | पैनल AI प्रदाता | System › Settings › AI provider ([AI provider](https://nexcmp.com/hi/docs/ai/ai-providers/)) के अंतर्गत पहले से कॉन्फ़िगर किए गए प्रदाता का उपयोग करता है। पेस्ट करने के लिए कुछ नहीं है। | किसी सोर्स को डिस्कनेक्ट करने के लिए उसके कार्ड पर **Remove** पर क्लिक करें। यह आपके खाते के लिए संग्रहीत की को हटा देता है। ### डिफ़ॉल्ट, दैनिक कैप और अनुमतियाँ {#defaults-daily-cap-and-permissions} **Accounts** टैब के नीचे, **Defaults for AI Chat** में तीन सेटिंग हैं: | सेटिंग | अर्थ | |---|---| | डिफ़ॉल्ट सोर्स और मॉडल | नए चैट किस चीज़ का उपयोग करते हैं। आप अभी भी प्रति संदेश सोर्स बदल सकते हैं। | | दैनिक खर्च कैप (USD, 0 = कोई सीमा नहीं) | डिफ़ॉल्ट 5। पेज "used today" दिखाता है। [AI Chat in the admin](https://nexcmp.com/hi/docs/configure-with-ai/ai-chat-in-admin/#daily-spending-cap) देखें। | | Chat session permissions | वे स्कोप जिनका सहायक उपयोग कर सकता है। `admin:read` हमेशा चालू रहता है; `secrets:write` डिफ़ॉल्ट रूप से बंद होता है। [Admin API keys](https://nexcmp.com/hi/docs/configure-with-ai/admin-api-keys/#scopes) देखें। | **Save defaults** पर क्लिक करें। ## अपनी खुद की AI सब्सक्रिप्शन का उपयोग करें {#use-your-own-ai-subscription} आप अलग API की के बिना, Claude, ChatGPT या Gemini प्लान का उपयोग करके NexCMP चला सकते हैं जिसके लिए आप पहले से भुगतान करते हैं। इसके दो तरीके हैं। ### तरीका 1 (अनुशंसित): आपके अपने कंप्यूटर पर CLI {#way-1-recommended-the-cli-on-your-own-computer} आप अपने कंप्यूटर पर वेंडर के अपने टूल का उपयोग करते हैं और वेंडर के सामान्य तरीके से अपने खाते में साइन इन करते हैं। NexCMP को केवल अल्पकालिक की से हस्ताक्षरित MCP कॉल प्राप्त होते हैं। **AI accounts › Use your own AI subscription** खोलें; यह प्रत्येक टूल के लिए तीन चरण दिखाता है। 1. **Create a 7-day key** पर क्लिक करें और स्तर चुनें: **Read only** (`admin:read`) या **Read + configuration** (`admin:read`, `catalog:write`, `infra:write`, `settings:write`)। नीचे दिए गए कमांड में तब वास्तविक की शामिल होती है। 2. CLI इंस्टॉल करें और साइन इन करें। की केवल इस पेज पर और केवल एक बार दिखाई जाती है। | Tool | इंस्टॉल करें | साइन इन करें | |---|---|---| | Claude Code | `npm install -g @anthropic-ai/claude-code` | `claude` चलाएं, फिर `/login` | | Codex CLI | `npm install -g @openai/codex` | `codex login` | | Gemini CLI | `npm install -g @google/gemini-cli` | `gemini` चलाएं, "Login with Google" चुनें | 3. पेज से कॉपी किए गए एक कमांड या एक ब्लॉक के साथ इसे अपने पैनल से कनेक्ट करें: ```bash # Claude Code claude mcp add --transport http nexcmp https://cloud.example.com/mcp/admin \ --header "Authorization: Bearer ak_XXXX" ``` ```toml # Codex CLI: ~/.codex/config.toml, then: export NEXCMP_KEY=ak_XXXX [mcp_servers.nexcmp] url = "https://cloud.example.com/mcp/admin" bearer_token_env_var = "NEXCMP_KEY" ``` ```json // Gemini CLI: ~/.gemini/settings.json { "mcpServers": { "nexcmp": { "httpUrl": "https://cloud.example.com/mcp/admin", "headers": { "Authorization": "Bearer ak_XXXX" } } } } ``` 4. टूल शुरू करें और पूछें, उदाहरण के लिए, "what is left to set up in nexcmp?"। MCP कनेक्शन का सभी विवरण [Connect an AI client](https://nexcmp.com/hi/docs/configure-with-ai/mcp-admin/) में है। वही टैब **claude.ai** और **ChatGPT** कनेक्टर्स के लिए URL दिखाता है, जो OAuth के साथ साइन इन करते हैं और किसी की की आवश्यकता नहीं होती है: [OAuth connectors](https://nexcmp.com/hi/docs/configure-with-ai/oauth-connectors/)। ![7-दिन की कुंजी बटन और तीन CLI के लिए इंस्टॉल, साइन इन और कनेक्ट कमांड के साथ अपनी खुद की AI सब्सक्रिप्शन टैब का उपयोग करें](https://nexcmp.com/hi/docs/images/configure-with-ai/ai-accounts-and-subscriptions-02-subscription.webp) ### तरीका 2: पैनल सर्वर पर CLI (इंस्टॉल / लॉगिन बटन) {#way-2-the-cli-on-the-panel-server-install-login-buttons} "Subscription through a CLI (Claude, ChatGPT, Gemini)" के अंतर्गत कार्ड NexCMP को पैनल सर्वर पर आधिकारिक CLI इंस्टॉल करने और अपना खुद का साइन-इन फ़्लो खोलने की अनुमति देते हैं, ताकि **AI Chat** आपकी सब्सक्रिप्शन के साथ उत्तर दे सके। **इसे कैसे आइसोलेट किया जाता है।** CLI एक अलग प्रक्रिया (`nexcmp-ai.service`) में अपने स्वयं के सिस्टम उपयोगकर्ता `nexcmp-ai` के रूप में चलते हैं, sudo के बिना, NexCMP के डेटा और कॉन्फ़िगरेशन फ़ोल्डर तक कोई पहुँच नहीं और एक मेमोरी सीमा के साथ। हर AI Chat संदेश के लिए CLI केवल अनुमति प्राप्त NexCMP MCP टूल (शेल और फ़ाइल टूल बंद हैं) और एक ऐसी कुंजी के साथ शुरू होता है जो केवल सर्वर से काम करती है। NexCMP CLI के साइन-इन को पढ़ता या कॉपी नहीं करता है: CLI इसे आपके एडमिन अकाउंट के लिए एक निजी फ़ोल्डर में रखता है। चालू करने के लिए कुछ भी नहीं है: जब पैनल 1.4.0 पर इंस्टॉल या अपडेट किया जाता है, तो यह `nexcmp-ai` उपयोगकर्ता और सेवा को सेट अप कर देता है, ताकि कार्ड उपयोग के लिए तैयार हों। **इंस्टॉल करें और साइन इन करें (प्रति प्रशासक):** 1. CLI के कार्ड पर **Login** पर क्लिक करें। यदि CLI अभी तक इंस्टॉल नहीं हुआ है, तो पैनल इसे पहले इंस्टॉल करता है: एक प्रगति बार और एक छोटा लॉग डाउनलोड (यदि आवश्यक हो तो Node.js, फिर CLI) दिखाता है। जब सर्वर में 2 GB से कम RAM होती है तो एक चेतावनी दिखाई देती है। 2. कार्ड दिखाता है कि CLI क्या मांगता है: - **Codex CLI**: **Open the sign-in page** पर क्लिक करें और वन-टाइम कोड टाइप करें जो कार्ड पर दिखाई देता है। (ChatGPT सुरक्षा सेटिंग्स में OpenAI का डिवाइस साइन-इन सक्षम होना चाहिए।) - **Claude Code और Gemini CLI**: **Open the sign-in page** पर क्लिक करें, साइन इन करें, फिर वेंडर के पेज द्वारा दिखाए गए सत्यापन कोड को **Paste the verification code here** में पेस्ट करें और **Send code** पर क्लिक करें। 3. कार्ड अकाउंट और वर्शन के साथ "Signed in" हो जाता है। 10 मिनट के भीतर पूरा न होने वाला साइन-इन रद्द कर दिया जाता है; दोबारा **Login** पर क्लिक करें। 4. **AI Chat** में अब चयनकर्ता में सोर्स दिखाई देता है (उदाहरण के लिए "ChatGPT (via Codex CLI)")। 5. **Sign out** आपके अकाउंट के लिए CLI का साइन-इन हटा देता है। Claude के लिए कार्ड में एक अतिरिक्त स्विच होता है, **I understand and accept the vendor's terms for using a subscription this way**, जो डिफ़ॉल्ट रूप से बंद होता है। AI Chat में तब तक सोर्स की पेशकश नहीं की जाती जब तक यह चालू न हो। ![इंस्टॉल और लॉगिन के साथ CLI सब्सक्रिप्शन कार्ड, कोडेक्स कार्ड पर वन-टाइम कोड और क्लाउड कार्ड पर I understand स्विच](https://nexcmp.com/hi/docs/images/configure-with-ai/ai-accounts-and-subscriptions-03-cli.webp) ### AI वेंडर की शर्तें {#terms-of-the-ai-vendors} उपभोक्ता सब्सक्रिप्शन के साथ साइन इन करना प्रत्येक वेंडर की शर्तों द्वारा शासित होता है, जो बदलती रहती हैं। नीचे दिए गए नोट्स अक्टूबर 2026 तक वेंडर द्वारा प्रकाशित किए गए विवरण का सारांश हैं, कोई कानूनी सलाह नहीं और न ही वेंडर की ओर से कोई बयान। इसे चालू करने से पहले वर्तमान पृष्ठों को पढ़ें। | Vendor | वेंडर के पृष्ठ में क्या शामिल है | Source | |---|---|---| | Anthropic (Claude) | अपनी खुद की योजना के साथ अपरिचित Claude Code में साइन इन करना शामिल है। अन्य उत्पादों के माध्यम से सब्सक्रिप्शन का उपयोग करना, या किसी उत्पाद द्वारा साइन इन को एकत्र करना या पास करना अलग तरह से माना जाता है, और योजना की सीमाएं सामान्य व्यक्तिगत उपयोग मानती हैं। यही कारण है कि Claude कार्ड पर एक नोट और **I understand** स्विच है, और Way 1 अधिक स्पष्ट विकल्प क्यों है। | https://code.claude.com/docs/en/legal-and-compliance | | OpenAI (Codex) | Codex ChatGPT खाते या API कुंजी के साथ साइन इन करने का समर्थन करता है। OpenAI स्वचालन के लिए API कुंजियों की अनुशंसा करता है और कहता है कि अप्रमाणित या सार्वजनिक वातावरण में Codex को उजागर न करें। कार्ड का उपयोग केवल अपने लिए करें। | https://developers.openai.com/codex/auth | | Google (Gemini CLI) | Sign in with Google, एक API कुंजी और Vertex AI का समर्थन करता है; शर्तें इस बात पर निर्भर करती हैं कि आप कैसे साइन इन करते हैं, और आपकी योजना का कोटा लागू होता है। | https://geminicli.com/docs/get-started/authentication | यदि आप इस प्रश्न से पूरी तरह बचना चाहते हैं, तो **API key** स्रोत या अपने स्वयं के कंप्यूटर पर Way 1 का उपयोग करें। ## AI Console {#ai-console} AI Console पैनल सर्वर पर साइन इन किए गए CLI में से किसी एक को चलाने के लिए एक वैकल्पिक टर्मिनल पेज है। यह **डिफ़ॉल्ट रूप से बंद** होता है। - इसे सर्वर पर चालू या बंद करें और CLI प्रबंधित करें: ```bash sudo nexcmp ai-console enable # turn on (also creates the nexcmp-ai user and service) sudo nexcmp ai-console disable # turn off sudo nexcmp ai-console status # runner, console state and installed CLIs sudo nexcmp ai-console install claude # or codex, or gemini ``` `status` यह प्रिंट करता है कि AI runner सॉकेट तैयार है या नहीं, AI Console सक्षम है या अक्षम, और प्रत्येक CLI के लिए "installed" या "not installed" दिखाता है। `sudo nexcmp status` "AI runner: active" भी दिखाता है। - एक बार सक्षम होने पर, AI Chat के अंतर्गत एक **AI Console** टैब दिखाई देता है। साइन इन किया गया एक CLI चुनें, अपना एडमिन पासवर्ड (और यदि आप इसका उपयोग करते हैं तो अपना 2FA कोड) दोबारा दर्ज करें और एक सत्र खोलें। एक बैनर आपको याद दिलाता है कि यहाँ की कमांड केवल इसके MCP टूल के माध्यम से NexCMP को प्रबंधित कर सकती हैं; शेल और फ़ाइल टूल अक्षम हैं। - डेमो इंस्टॉलेशन कभी भी `nexcmp-ai` यूज़र नहीं बनाते हैं। ![CLI चयनकर्ता, पासवर्ड फ़ील्ड और MCP-केवल चेतावनी बैनर के साथ AI Console स्टार्ट स्क्रीन](https://nexcmp.com/hi/docs/images/configure-with-ai/ai-accounts-and-subscriptions-04-console.webp) ## सत्यापित करें {#verify} 1. API स्रोत पर **Test** मॉडल का नाम लौटाता है। 2. CLI कार्ड पर स्थिति अकाउंट के साथ "Signed in" दर्शाती है। 3. सर्वर पर: `sudo nexcmp ai-console status` CLI को इंस्टॉल के रूप में सूचीबद्ध करता है, और `systemctl is-active nexcmp-ai` `active` प्रिंट करता है। 4. AI Chat में स्रोत चुनें, "Check my setup progress" पूछें, और एक टूल कार्ड दिखाई देता है। ## Limits & notes {#limits-notes} - प्रत्येक प्रशासक के लिए एक समय में एक CLI उत्तर की सीमा 5 मिनट है। दैनिक सीमा में CLI उत्तर शामिल नहीं होते हैं। - CLI स्रोत से होने वाला प्रत्येक परिवर्तन अभी भी AI Chat में एक कन्फ़र्मेशन कार्ड होता है; CLI अपने आप परिवर्तन लागू नहीं कर सकता है। - सब्सक्रिप्शन प्लान की अपनी उपयोग सीमाएँ होती हैं। जब वेंडर "usage limit" या "not logged in" कहता है, तो चैट वह संदेश दिखाती है। - किसी स्रोत को हटाने से बातचीत हटती नहीं है। - सर्वर को पैच किया हुआ रखें: इंस्टॉल पर क्लिक करने के समय वेंडर के सार्वजनिक पैकेजों से CLI इंस्टॉल किए जाते हैं। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | लॉगिन अक्षम है और कार्ड पर लिखा है "AI tools are not ready on the server yet" | `nexcmp-ai` सेवा चल नहीं रही है | पैनल को नवीनतम संस्करण में अपडेट करें, फिर `sudo nexcmp status` जाँचें। रीड-ऑनलाइन डेमो पर यह अपेक्षित है। | | „इस सर्वर पर AI टूल अभी तक इंस्टॉल नहीं किए गए हैं“ | `nexcmp-ai` सेवा चल नहीं रही है (पुराना पैनल या डेमो पैनल) | पैनल को अपडेट करें, फिर `sudo nexcmp ai-console install claude` (या `codex`, `gemini`)। | | 2 GB से कम RAM के बारे में चेतावनी | सर्वर छोटा है | इंस्टॉल धीमा हो सकता है या विफल हो सकता है; मेमोरी जोड़ें या Way 1 का उपयोग करें। | | "Node.js download checksum mismatch" या "download failed" | सर्वर nodejs.org तक नहीं पहुँच सकता है, या किसी प्रॉक्सी ने डाउनलोड में फेरबदल किया है | आउटबाउंड HTTPS की अनुमति दें और पुनः प्रयास करें। | | इंस्टॉल त्रुटि में समाप्त होता है | npm पैकेज इंस्टॉल नहीं कर सका | कार्ड पर लॉग पढ़ें, npm रजिस्ट्री तक आउटबाउंड एक्सेस की जाँच करें, पुनः प्रयास करें। | | लॉगिन त्रुटि में समाप्त होता है या समय समाप्त (timeout) हो जाता है | 10 मिनट की विंडो बीत गई, या कोड गलत था | **Login** पर दोबारा क्लिक करें और इसे जल्दी पूरा करें। | | AI Chat में Claude स्रोत गायब है | **I understand** स्विच बंद है, या CLI में साइन इन नहीं किया गया है | वेंडर का पेज पढ़ने के बाद स्विच चालू करें, फिर साइन इन करें। | | Gemini पर "Sign in with Google" गायब है | अभी तक कोई Google OAuth क्लाइंट सहेजा नहीं गया है | अपने स्वयं के Google Cloud प्रोजेक्ट में क्लाइंट बनाएं और इसे कार्ड पर **Set up Google sign-in (optional)** के तहत सहेजें, या इसके बजाय एक API कुंजी पेस्ट करें। | | "Sign in with OpenRouter" त्रुटि लौटाता है | आपने रद्द कर दिया, या पॉपअप अवरुद्ध था | पॉपअप की अनुमति दें और पुनः प्रयास करें। | | CLI उत्तर में "usage limit" कहता है | योजना का कोटा समाप्त हो गया है | प्रतीक्षा करें, या स्रोत बदलें। | --- # Admin API keys {#admin-api-keys} > **व्यवस्थापक में कहाँ:** System › Settings › API & AI agents (`/agent/keys`), टैब **API keys**। उसी पृष्ठ पर **Connect an AI**, **Connected apps** और **Activity** टैब हैं। ## यह क्या करता है {#what-it-does} एक व्यवस्थापक API कुंजी (उपसर्ग `ak_`) एक AI क्लाइंट या स्क्रिप्ट को आपके पैनल को बिल्कुल उन अनुमतियों के साथ प्रबंधित करने देती है जो आप इसे देते हैं। यह `/v1/admin/` के अंतर्गत व्यवस्थापक API पर और व्यवस्थापक MCP समापन बिंदु `/mcp/admin` पर काम करती है। यह अन्य कहीं काम नहीं करती। ::: info ग्राहक कुंजियों के समान नहीं ग्राहक कस्टमर पोर्टल में `vk_` से शुरू होने वाली की (keys) बनाते हैं ([API keys and scopes](https://nexcmp.com/hi/docs/developers/api-keys/))। वे केवल कस्टमर API और `/mcp` तक ही पहुँचती हैं। कस्टमर API पर `ak_` की अस्वीकार कर दी जाती है, और एडमिन API पर `vk_` की अस्वीकार कर दी जाती है। ::: ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | Role | आपको व्यवस्थापक के रूप में साइन इन होना चाहिए। कुंजियाँ अन्य कुंजियाँ नहीं बना सकतीं। | | डेमो | डेमो पैनल पर पृष्ठ केवल पढ़ने के लिए है: कोई कुंजी बनाई या निरस्त नहीं की जा सकती। | | पहुँच योग्यता | क्लाइंट को आपके पैनल पर `https://cloud.example.com/mcp/admin` या `/v1/admin/...` तक पहुँचना होगा (यदि आप IP प्रतिबंधों का उपयोग करते हैं तो अपने फ़ायरवॉल की जाँच करें)। | ## एक की (key) बनाएं {#create-a-key} 1. **System › Settings › API & AI agents** खोलें और **API keys** टैब पर रहें। 2. **Create new key** पर क्लिक करें। 3. फॉर्म भरें: | फ़ील्ड | नियम | |---|---| | Name | अधिकतम 60 वर्ण, उदाहरण के लिए "Claude Code on my laptop"। | | Scopes | कम से कम एक चुनें। [Scopes](#scopes) देखें। केवल `admin:read` से शुरू करें। | | समाप्ति (Expiry) | 1, 7, 30, 60 या 90 दिन। डिफ़ॉल्ट 30। अधिकतम 90। बिना समाप्ति वाली की नहीं बनाई जा सकती। | | IP रेंज (वैकल्पिक) | प्रति पंक्ति एक IPv4 या IPv6 पता या CIDR, उदाहरण के लिए `203.0.113.0/24` या `2001:db8::/48`। अधिकतम 32। किसी भी IP की अनुमति देने के लिए खाली छोड़ें। | | प्रति मिनट कॉल | 1 से 6000। डिफ़ॉल्ट 120। | 4. **Create key** पर क्लिक करें। एक बॉक्स में की एक बार दिखाई देती है, उदाहरण के लिए `ak_XXXX`। **इसे अभी कॉपी करें**: NexCMP केवल एक हैश (hash) संग्रहीत करता है और इसे दोबारा कभी नहीं दिखा सकता। 5. **I have saved the key** पर क्लिक करें। **Connect an AI** टैब खोलें ताकि ऐसे तैयार-से-तैयार कमांड मिल सकें जिनमें आपकी अभी बनाई गई कुंजी पहले से मौजूद हो (केवल इसी पेज पर, इसे रीलोड करने तक)। ![नाम, स्कोप चेकबॉक्स, समाप्ति और आईपी रेंज के साथ नई कुंजी का डायलॉग](https://nexcmp.com/hi/docs/images/configure-with-ai/admin-api-keys-01-create.webp) ![कॉपी बटन और चेतावनी के साथ नई कुंजी को एक बार दिखाने वाला डायलॉग](https://nexcmp.com/hi/docs/images/configure-with-ai/admin-api-keys-02-shown-once.webp) ## Scopes {#scopes} एक कुंजी केवल उन्हीं टूल्स और एंडपॉइंट्स का उपयोग कर सकती है जिनकी उसके स्कोप अनुमति देते हैं। राइट स्कोप में रीड एक्सेस शामिल नहीं होता है: जिस कुंजी को पढ़ना और लिखना दोनों करना हो, उसे `admin:read` की भी आवश्यकता होती है। | Scope | यह क्या अनुमति देता है | |---|---| | `admin:read` | सेटिंग्स, कैटलॉग, ग्राहक, बिलिंग और लॉग पढ़ें। गुप्त डेटा (Secrets) कभी नहीं लौटाए जाते। | | `catalog:write` | प्लान, ओएस टेम्पलेट्स, कोटा, डिस्काउंट कोड। | | `infra:write` | इन्फ्रास्ट्रक्चर सोर्स (CloudStack, Proxmox), ज़ोन, सर्वर। | | `billing:write` | पेमेंट गेटवे, मुद्रा, चालान (invoices), बैलेंस। धन संबंधी कार्रवाइयों के लिए पुष्टि आवश्यक है। | | `customers:write` | ग्राहक और रीeller। | | `settings:write` | सामान्य सेटिंग्स, ब्रांडिंग, ईमेल, कानूनी पृष्ठ, मॉड्यूल, सूचनाएं। | | `ai:write` | AI प्रदाता और AI विशेषताएं। | | `secrets:write` | पासवर्ड और API कुंजी लिखें। इन्हें सेट किया जा सकता है लेकिन कभी पढ़ा नहीं जा सकता। | ::: tip गोपनीय कुंजी सेट करने के लिए दो स्कोप चाहिए कोई भी कॉल जिसमें पासवर्ड, API कुंजी या टोकन मान (SMTP पासवर्ड, भुगतान कुंजी, टेलीग्राम बॉट टोकन, AI प्रदाता कुंजी, CloudStack या Proxmox क्रेडेंशियल्स) शामिल है, के लिए `secrets:write` **और** उस क्षेत्र के स्कोप (उदाहरण के लिए SMTP के लिए `settings:write`) की आवश्यकता होती है। यदि आप गुप्त कुंजियाँ स्वयं टाइप करना चाहते हैं, तो `secrets:write` को छोड़ दें और उन्हें एडमिन में दर्ज करें। ::: ## कुंजी रद्द करना {#revoke-a-key} 1. तालिका में कुंजी खोजें (स्थिति **Active**, **Expired** या **Revoked**; **Last used** समय और क्लाइंट दिखाता है)। 2. **Revoke** पर क्लिक करें और पुष्टि करें। कुंजी तुरंत काम करना बंद कर देती है। रद्द करना स्थायी है; यदि आपको दोबारा आवश्यकता हो तो एक नई कुंजी बनाएं। ## एक कुंजी कभी क्या नहीं कर सकती {#what-a-key-can-never-do} कोई भी कुंजी इन क्षेत्रों तक कभी नहीं पहुँच सकती, चाहे इसके स्कोप कुछ भी हों। इनके लिए आपको एडमिन में लॉग इन होना आवश्यक है। - प्रशासक उपयोगकर्ता, 2FA और साइन-इन सुरक्षा, एडमिन सत्र, और एडमिन API टोकन बनाएं या बदलें। - एडमिन कुंजियाँ, OAuth कनेक्शन और AI खाते बनाएँ, सूचीबद्ध करें या रद्द करें, या AI Console का उपयोग करें। - पैनल का बैकअप लें या पुनर्स्थापित करें, इसे अपडेट करें, या इसका लाइसेंस बदलें। - ग्राहक या रीeller के रूप में लॉग इन करें, किसी ग्राहक का कंसोल खोलें, VM क्रेडेंशियल्स या kubeconfig पढ़ें, SSH कुंजी सेट करें, या पासवर्ड भेजें या रीसेट करें। - नेटवर्क और रूटिंग मॉड्यूल (BGP, FRR, RTBH, XDP, इंटरफेस, स्टैटिक और पॉलिसी रूट, NAT) या बाहरी एजेंटों और पोर्टल इंटीग्रेशन को बदलें। ये केवल पढ़ने के लिए (read-only) हैं। - `demo_*`, `admin_*`, होस्ट सूचियों, पासकी, री-ऑथेंटिकेशन और कैप्चा रहस्यों जैसी सेटिंग्स बदलें। किसी नियम के अंतर्गत न आने वाली कोई भी चीज़ लिखने के लिए डिफ़ॉल्ट रूप से बंद होती है, और पढ़ने के लिए `admin:read` के साथ पढ़ने योग्य होती है। ### ऐसी कार्रवाइयां जिन्हें आपकी पुष्टि की आवश्यकता होती है {#actions-that-need-your-confirmation} ये केवल पूर्वावलोकन (preview) स्वीकृत करने के बाद सफल होती हैं (देखें [Two-step confirmation](#two-step-confirmation)): - ग्राहक का बैलेंस या रीeller का वॉलेट बदलना, पैसे का भुगतान करना, बिलिंग रिकॉर्ड, विनिमय दर (exchange rate)। - कीमतें बदलना (प्लान की कीमतें, बल्क प्लान निर्माण, इमेज और स्टोरेज प्राइसिंग) और डिस्काउंट या मनी कोड बनाना। - पेमेंट गेटवे क्रेडेंशियल्स या CloudStack कनेक्शन सहेजना। - कुछ भी हटाना, किसी ग्राहक को ब्लॉक करना या हटाना, ग्राहक की सीमाएं बदलना, किसी रीeller को निलंबित करना या बंद करना। - ग्राहक सर्वर पर कार्रवाई करना, या किसी ग्राहक के लिए भुगतान वाला सर्वर बनाना। - सामान्य सेटिंग्स के माध्यम से साइट-व्यापी स्विच, साइन-इन सुरक्षा सेटिंग्स या भुगतान सेटिंग्स बदलना। ## Two-step confirmation {#two-step-confirmation} जब किसी कॉल को पुष्टि की आवश्यकता होती है, तो अभी कुछ नहीं बदलता। प्रतिक्रिया HTTP **428** होती है जिसमें `confirm_required`, एक `confirm_token`, एक `preview` (विधि, पथ, कारण, नए मान और, जब उपलब्ध हो, वर्तमान मान) और `expires_in: 300` होता है। 1. क्लाइंट आपको पूर्वावलोकन (preview) दिखाता है। 2. आपके द्वारा स्वीकृत करने के बाद, यह `X-Confirm-Token: ` हेडर के साथ **वही** अनुरोध (वही विधि, पथ और बॉडी) दोहराता है। MCP टूल इसके बजाय `confirm_token` तर्क लेते हैं। 3. टोकन एक बार काम करता है और 5 मिनट के बाद समाप्त हो जाता है। AI Chat के लिए एडमिन के अंदर बनाई गई कुंजियों की पुष्टि केवल स्क्रीन पर की जा सकती है: उत्तर में `confirm_in: "ui"` कहा जाता है और एडमिन में एक पुष्टिकरण कार्ड दिखाई देता है। AI इसे स्वीकृत नहीं कर सकता। ## रेट लिमिट और IP नियम {#rate-limit-and-ip-rules} - प्रति-मिनट सीमा पार होने पर कॉल `rate_limited` (HTTP 429) लौटाता है जिसके साथ `Retry-After: 60` होता है। - IP रेंज सेट होने पर, किसी अन्य पते से आने वाली कॉल `ip_not_allowed` (HTTP 403) लौटाती हैं। ## Activity log {#activity-log} **Activity** टैब किसी कुंजी के साथ किए गए प्रत्येक कॉल को सबसे नए से शुरू करके सूचीबद्ध करता है: समय, कुंजी, क्लाइंट, यह कैसे आया (`http`, `mcp`, `chat`, `cli`, `confirm`, `preview`), मेथड और पाथ, टूल, HTTP स्टेटस, आईपी और (मास्क किए गए) विवरण। आप पाथ, टूल या कुंजी के नाम से खोज सकते हैं, केवल त्रुटियां (HTTP 400 और उससे ऊपर) या केवल पुष्टि की प्रतीक्षा कर रहे कॉल (428 और उससे ऊपर) दिखा सकते हैं, और अवधि को पिछले एक घंटे, 24 घंटे या 7 दिनों तक सीमित कर सकते हैं। NexCMP नवीनतम 200,000 प्रविष्टियों को रखता है। किसी कुंजी के माध्यम से किए गए परिवर्तन `ak:/` नाम के तहत Logs › Admin actions में भी दिखाई देते हैं। ![स्थिति, क्लाइंट, टूल और आईपी के साथ कॉल्स को सूचीबद्ध करने वाला एक्टिविटी टैब](https://nexcmp.com/hi/docs/images/configure-with-ai/admin-api-keys-03-activity.webp) ## सत्यापित करें {#verify} IP रेंज के भीतर किसी भी मशीन से रीड-ऑनली (read-only) की का परीक्षण करें: ```bash curl -s https://cloud.example.com/v1/admin/agent/tools \ -H "Authorization: Bearer ak_XXXX" ``` आपको अपने स्कोप द्वारा अनुमति प्राप्त टूल्स की एक JSON सूची मिलती है। एक चलाएँ: ```bash curl -s -X POST https://cloud.example.com/v1/admin/agent/tools/system_health \ -H "Authorization: Bearer ak_XXXX" \ -H "Content-Type: application/json" -d '{}' ``` कुंजी का **Last used** समय बदल जाता है और कॉल **Activity** में दिखाई देता है। संपूर्ण टूल सूची और OpenAPI विवरण (`/v1/admin/openapi.json`) का वर्णन [Connect an AI client](https://nexcmp.com/hi/docs/configure-with-ai/mcp-admin/) में किया गया है। ## Errors {#errors} त्रुटियाँ JSON हैं: `{"error": {"code": "...", "message": "..."}}`। | HTTP | `code` | अर्थ | सुधार | |---|---|---|---| | 401 | `invalid_key` | की गायब है, विकृत है या अज्ञात है। जब किसी गैर-एडमिन पथ पर `ak_` की का उपयोग किया जाता है तब भी यह लौटता है। | की की जाँच करें; इसका उपयोग केवल `/v1/admin/` और `/mcp/admin` पर करें। | | 401 | `key_expired` | की की समाप्ति अवधि बीत चुकी है। | एक नई कुंजी बनाएँ। | | 401 | `key_revoked` | की को रद्द कर दिया गया था। | एक नई कुंजी बनाएँ। | | 403 | `ip_not_allowed` | कॉलर का IP की की IP रेंज से बाहर है। | अनुमत IP से कॉल करें, या सही रेंज वाली की बनाएँ। | | 403 | `local_only_key` | AI Chat या सर्वर CLI के लिए बनाई गई की का उपयोग किसी अन्य मशीन से किया गया था। | ये की केवल पैनल सर्वर पर ही काम करती हैं। | | 403 | `insufficient_scope` | की में स्कोप नहीं है; उत्तर में `required_scope` शामिल है। | उस स्कोप के साथ एक की बनाएँ। | | 403 | `forbidden_for_keys` | एंडपॉइंट, या आपके द्वारा बदलने का प्रयास किया गया सेटिंग, की के लिए बंद है। | इसे एडमिन में करें। | | 403 | `demo_read_only` | पैनल डेमो मोड में है और कॉल राइट करती है। | गैर-डेमो पैनल का उपयोग करें। | | 403 | `confirm_in_ui` | इस कार्रवाई की पुष्टि एडमिन में स्क्रीन पर की जानी चाहिए। | पुष्टि कार्ड को स्वीकृत करें। | | 428 | `confirm_required` | पूर्वावलोकन तैयार है; कुछ भी बदला नहीं है। इसमें `confirm_token` शामिल है। | पूर्वावलोकन दिखाएँ, फिर `X-Confirm-Token` के साथ दोहराएँ। | | 409 | `confirm_expired` | टोकन 5 मिनट से अधिक पुराना है। | नए पूर्वावलोकन के लिए अनुरोध पुनः भेजें। | | 409 | `confirm_mismatch` | टोकन एक अलग अनुरोध का है (विधि, पथ या बॉडी भिन्न है)। | समान अनुरोध को दोहराएँ। | | 409 | `confirm_invalid` | अज्ञात या पहले से उपयोग किया गया टोकन। | नए पूर्वावलोकन के लिए अनुरोध पुनः भेजें। | | 429 | `rate_limited` | इस मिनट बहुत अधिक कॉल हो गईं। | `Retry-After` की प्रतीक्षा करें। | | 400 | `invalid_path` | पथ में वर्जित अनुक्रम शामिल हैं। | एक सादे पथ का उपयोग करें। | | 413 | `too_large` | बॉडी 10 MB से अधिक है। | कम डेटा भेजें। | | 400 | `invalid_argument` | टूल का तर्क गायब है, अज्ञात है या उसका प्रकार गलत है; संदेश इसका नाम बताता है। | तर्क को ठीक करें। | ## Limits & notes {#limits-notes} - की को कम समय तक चलने वाली और सीमित रखें। प्रति क्लाइंट एक की को प्राथमिकता दें ताकि आप एक अकेली की को रद्द कर सकें। - एक कुंजी उतनी ही शक्तिशाली होती है जितने उसके स्कोप होते हैं। `secrets:write` के साथ `billing:write` सबसे संवेदनशील संयोजन है; धन संबंधी कार्रवाइयां अभी भी पूर्वावलोकन (preview) पर रुक जाती हैं। - स्वचालित रूप से बनाई गई की (AI Chat, सर्वर CLI के लिए) केवल कुछ मिनटों के लिए जीवित रहती हैं और केवल पैनल सर्वर से काम करती हैं। - किसी AI क्लाइंट को तुरंत बंद करने के लिए, उसकी कुंजी रद्द कर दें। OAuth कनेक्शन **Connected apps** टैब ([OAuth connectors](https://nexcmp.com/hi/docs/configure-with-ai/oauth-connectors/)) पर रद्द किए जाते हैं। --- # एक AI क्लाइंट (MCP) कनेक्ट करें {#connect-an-ai-client-mcp} > **एडमिन में कहाँ:** System › Settings › API & AI agents (`/agent/keys`), टैब **Connect an AI** एंडपॉइंट URL और प्रत्येक क्लाइंट के लिए कॉपी करने के लिए तैयार एक स्निपेट दिखाता है, जिसमें आपके द्वारा अभी बनाई गई कुंजी भरी होती है। ## यह क्या करता है {#what-it-does} **Model Context Protocol (MCP)** एक AI क्लाइंट को टूल कॉल करने देता है। आपका पैनल `https://cloud.example.com/mcp/admin` पर एक एडमिन MCP सर्वर होस्ट करता है। इससे अपना खुद का AI टूल कनेक्ट करें और सादे शब्दों में पूछें: "what is left to set up?", "add my Proxmox cluster", "create plans with a 40% margin"। क्लाइंट नीचे दिए गए एडमिन टूल को कॉल करता है; पैनल स्कोप की जाँच करता है, किसी भी जोखिम भरे काम से पहले आपसे पूछता है और हर कॉल को रिकॉर्ड करता है। ::: info दो MCP एंडपॉइंट `/mcp` **कस्टमर** एंडपॉइंट है (कस्टमर API कुंजियाँ, `vk_`; [MCP server](https://nexcmp.com/hi/docs/developers/mcp/) देखें)। `/mcp/admin` यहाँ वर्णित **एडमिन** एंडपॉइंट है (एडमिन कुंजियाँ `ak_` या OAuth)। दोनों कभी नहीं मिलते: एडमिन टूल `/mcp` पर दिखाई नहीं देते, और `/mcp/admin` केवल एडमिन कुंजियाँ स्वीकार करता है। ::: ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | Endpoint | आपके पैनल के अपने डोमेन पर `https://cloud.example.com/mcp/admin`। **Connect an AI** टैब से सटीक URL कॉपी करें। वही पेज सर्वर पर चलने वाले टूल के लिए एक लोकल URL (`http://127.0.0.1:/mcp/admin`) सूचीबद्ध करता है। | | क्रेडेंशियल्स | अपनी पसंद के स्कोप के साथ एक [admin API key](https://nexcmp.com/hi/docs/configure-with-ai/admin-api-keys/) (`ak_...`), **या** वेब कनेक्टर के लिए OAuth साइन-इन ([OAuth connectors](https://nexcmp.com/hi/docs/configure-with-ai/oauth-connectors/))। | | क्लाइंट | कोई भी MCP क्लाइंट जो **Streamable HTTP** ट्रांसपोर्ट और कस्टम `Authorization` हेडर का समर्थन करता है। प्रोटोकॉल संस्करण 2025-11-25, 2025-06-18 और 2025-03-26। | | नेटवर्क | यदि आप पैनल के सामने अपना खुद का रिवर्स प्रॉक्सी रखते हैं, तो उसे `/mcp/admin` को आगे बढ़ाना होगा। वेब कनेक्टर (claude.ai, ChatGPT) वेंडर के सर्वर से कनेक्ट होते हैं, इसलिए URL इंटरनेट से पहुंच योग्य होना चाहिए। | ## बुनियादी ढांचा तैयार करें {#prepare-the-infrastructure} सर्वर पर कुछ भी इंस्टॉल नहीं करना है। यदि आप IP द्वारा कुंजी को प्रतिबंधित करते हैं, तो सुनिश्चित करें कि जिस पते से आपका क्लाइंट कनेक्ट होता है वह उस रेंज में है। पहले पहुँच की जाँच करें: ```bash curl -i -X POST https://cloud.example.com/mcp/admin ``` `401` का उत्तर `WWW-Authenticate: Bearer ... resource_metadata=...` हेडर के साथ यह दर्शाता है कि एंडपॉइंट चालू है और क्रेडेंशियल चाहता है। ## NexCMP में कनेक्ट करें {#connect-in-nexcmp} 1. एक कुंजी बनाएँ: **System › Settings › API & AI agents › API keys › New key**। पहली बार प्रयास के लिए केवल `admin:read` का उपयोग करें; जब आपको आवश्यकता हो तो राइट स्कोप जोड़ें। [Admin API keys](https://nexcmp.com/hi/docs/configure-with-ai/admin-api-keys/) देखें। 2. टैब **Connect an AI** खोलें। जब तक "key created" संवाद ताज़ा है, नीचे दिया गया हर स्निपेट पहले से ही आपकी असली कुंजी contiene है। अन्यथा यह प्लेसहोल्डर `ak_YOUR_KEY` दिखाता है। 3. अपने क्लाइंट के लिए स्निपेट कॉपी करें और इसे आगे बताए गए अनुसार चलाएँ या पेस्ट करें। ![MCP URL के साथ Connect an AI टैब और प्रति क्लाइंट कॉपी बटन वाला एक कार्ड](https://nexcmp.com/hi/docs/images/configure-with-ai/mcp-admin-01-connect.webp) ### Claude Code {#claude-code} ```bash claude mcp add --transport http nexcmp https://cloud.example.com/mcp/admin \ --header "Authorization: Bearer ak_XXXX" ``` फिर `claude` शुरू करें और पूछें "list the tools from nexcmp" या "what is left to set up?"। Claude Code 2.1 के साथ 30/10/2026 को जाँचा गया: `claude mcp add --transport http …` सर्वर लिखता है (`-s project` जोड़ें ताकि इसे प्रोजेक्ट के `.mcp.json` में रखा जा सके — Claude Code पहली बार प्रोजेक्ट सर्वर को मंज़ूरी देने के लिए आपसे पूछता है)। स्क्रिप्ट्स के लिए, `claude -p "…" --mcp-config .mcp.json --strict-mcp-config --allowedTools "mcp__nexcmp__*"` बिना मंज़ूरी प्रॉम्प्ट के चलता है और Claude को केवल पैनल के टूल्स का उपयोग करने देता है। ### Claude Desktop {#claude-desktop} Node.js 18 या नया संस्करण चाहिए। इसे `claude_desktop_config.json` में जोड़ें (यह `mcp-remote` ब्रिज का उपयोग करता है) और Claude Desktop को पुनः आरंभ करें: ```json { "mcpServers": { "nexcmp": { "command": "npx", "args": ["-y", "mcp-remote", "https://cloud.example.com/mcp/admin", "--header", "Authorization:Bearer ak_XXXX"] } } } ``` यदि आपका सिस्टम हेडर आर्ग्यूमेंट में स्पेस को खराब कर देता है, तो इसके बजाय पूरे मान को एक पर्यावरण चर में रखें, बिल्कुल कस्टमर एंडपॉइंट के लिए: `"args": [..., "--header", "Authorization:${NEXCMP_AUTH_HEADER}"]` साथ `"env": { "NEXCMP_AUTH_HEADER": "Bearer ak_XXXX" }`। ### claude.ai (कस्टम कनेक्टर) {#claude-ai-custom-connector} कोई कुंजी की आवश्यकता नहीं: यह OAuth के साथ साइन इन करता है। claude.ai में कनेक्टर सेटिंग खोलें, एक कस्टम कनेक्टर जोड़ें, `https://cloud.example.com/mcp/admin` पेस्ट करें, फिर अपने NexCMP एडमिन खाते से साइन इन करें और सहमति स्क्रीन पर अनुमतियाँ चुनें। विवरण: [OAuth connectors](https://nexcmp.com/hi/docs/configure-with-ai/oauth-connectors/)। ### ChatGPT (डेवलपर मोड) {#chatgpt-developer-mode} कुंजी की कोई आवश्यकता नहीं है। ChatGPT में डेवलपर मोड चालू करें, URL `https://cloud.example.com/mcp/admin` के साथ एक MCP कनेक्टर जोड़ें, OAuth चुनें और अपने NexCMP एडमिन खाते से साइन इन करें। विवरण: [OAuth connectors](https://nexcmp.com/hi/docs/configure-with-ai/oauth-connectors/)। ### Codex CLI {#codex-cli} `~/.codex/config.toml` में जोड़ें: ```toml [mcp_servers.nexcmp] url = "https://cloud.example.com/mcp/admin" bearer_token_env_var = "NEXCMP_KEY" ``` फिर उस शेल में कुंजी को निर्यात करें जो Codex शुरू करता है: ```bash export NEXCMP_KEY=ak_XXXX codex codex mcp list # shows nexcmp with "Bearer token" auth ``` ::: tip गैर-इंटरैक्टिव `codex exec` `codex exec` (स्क्रिप्ट्स, CI) में Codex टूल्स को कॉल करने से पहले नहीं पूछता है, और यह डेटा बदलने वाले टूल्स को छोड़ देता है। इसे उन्हें कॉल करने की अनुमति देने के लिए `default_tools_approval_mode = "approve"` को `[mcp_servers.nexcmp]` के अंतर्गत जोड़ें; पैनल अभी भी पूर्वावलोकन दिखाता है और पैसे, सुरक्षा तथा हटाने की कार्रवाइयों के लिए पुष्टि मांगता है। Codex CLI 0.166 के साथ 30/10/2026 को जाँचा गया। ::: ### Gemini CLI {#gemini-cli} `~/.gemini/settings.json` में जोड़ें: ```json { "mcpServers": { "nexcmp": { "httpUrl": "https://cloud.example.com/mcp/admin", "headers": { "Authorization": "Bearer ak_XXXX" } } } } ``` Gemini CLI उन फ़ोल्डरों में MCP सर्वर बंद कर देता है जिन पर वह भरोसा नहीं करता। इसे किसी भरोसेमंद फ़ोल्डर में शुरू करें (या पूछने पर फ़ोल्डर पर भरोसा करें), फिर `gemini mcp list` से जांच करें — यह `nexcmp … Connected` दिखाता है। आप `"Authorization": "Bearer $NEXCMP_KEY"` के साथ कुंजी को फ़ाइल से बाहर रख सकते हैं। 30/10/2026 को Gemini CLI 0.66 के साथ सत्यापित। ### Cursor {#cursor} `~/.cursor/mcp.json` में (या किसी प्रोजेक्ट में `.cursor/mcp.json`) जोड़ें: ```json { "mcpServers": { "nexcmp": { "url": "https://cloud.example.com/mcp/admin", "headers": { "Authorization": "Bearer ak_XXXX" } } } } ``` ::: tip कुंजी को कॉन्फ़िगरेशन फ़ाइलों से बाहर रखें जहां क्लाइंट इसका समर्थन करता है, फ़ाइल में लिखने के बजाय पर्यावरण चर से कुंजी पढ़ें: Codex डिफ़ॉल्ट रूप से ऐसा करता है (`bearer_token_env_var`), और Cursor `"Bearer ${env:NEXCMP_KEY}"` स्वीकार करता है। ऐसी फ़ाइल को कभी भी कमिट न करें जिसमें कुंजी हो। ::: ### OpenAI Agents SDK (Python) {#openai-agents-sdk-python} ```python from agents.mcp import MCPServerStreamableHttp nexcmp = MCPServerStreamableHttp( params={"url": "https://cloud.example.com/mcp/admin", "headers": {"Authorization": "Bearer ak_XXXX"}}, name="nexcmp", ) ``` एक पूर्ण रन (30/10/2026 को `openai-agents` 0.24 के साथ सत्यापित — एक रीड टूल, फिर एक बैलेंस परिवर्तन जिसने पुष्टिकरण पूर्वावलोकन लौटाया और `confirm_token` के साथ दूसरे कॉल पर लागू किया गया): ```python import asyncio from agents import Agent, Runner from agents.mcp import MCPServerStreamableHttp async def main(): async with MCPServerStreamableHttp(params={"url": "https://cloud.example.com/mcp/admin", "headers": {"Authorization": "Bearer ak_XXXX"}}, name="nexcmp") as nexcmp: agent = Agent(name="admin", model="gpt-5", mcp_servers=[nexcmp], instructions="You operate a hosting panel through the nexcmp tools. Ask me before confirming money actions.") result = await Runner.run(agent, "Run system_health and summarise it in one line.") print(result.final_output) asyncio.run(main()) ``` ### OpenAI Responses API {#openai-responses-api} सर्वर को `mcp` प्रकार के टूल के रूप में पास करें। `require_approval` को `always` पर रखें ताकि आपका प्रोग्राम प्रत्येक कॉल से पहले आपसे पूछे: ```json { "type": "mcp", "server_label": "nexcmp", "server_url": "https://cloud.example.com/mcp/admin", "headers": { "Authorization": "Bearer ak_XXXX" }, "require_approval": "always" } ``` ### कुछ और (सादा HTTP) {#anything-else-plain-http} MCP के बिना एक क्लाइंट HTTP पर उन्हीं टूल को कॉल कर सकता है। `GET /v1/admin/agent/tools` उन्हें सूचीबद्ध करता है, `POST /v1/admin/agent/tools/` तर्कों के JSON बॉडी के साथ एक को चलाता है, और `GET /v1/admin/openapi.json` एक OpenAPI 3.1 विवरण लौटाता है (प्रत्येक टूल एक ऑपरेशन है)। सभी को `Authorization: Bearer ak_...` की आवश्यकता होती है। ## सत्यापित करें {#verify} 1. क्लाइंट के बिना, टूल सूचीबद्ध करें: ```bash curl -s https://cloud.example.com/mcp/admin \ -H "Authorization: Bearer ak_XXXX" \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' ``` उत्तर उन टूल के साथ एक JSON-RPC परिणाम है जो आपके स्कोप अनुमति देते हैं। 2. अपने क्लाइंट में "run system_health" पूछें। यह अलर्ट, कनेक्टेड बुनियादी ढांचे के स्वास्थ्य, भुगतान, ईमेल, AI और लाइसेंस स्थिति लौटाता है। 3. **API & AI agents › Activity** खोलें: कॉल्स क्लाइंट नाम और `mcp` के साथ सूचीबद्ध हैं। 4. सर्वर पर, `sudo nexcmp status` "MCP admin" लाइन प्रिंट करता है जो एंडपॉइंट उत्तर देने पर `ready` कहता है (कुंजी के बिना HTTP 401 स्वस्थ स्थिति है)। ## टूल्स {#tools} सर्वर 58 टूल प्रदान करता है। क्लाइंट केवल उन टूल को देखता है जिन्हें उसकी कुंजी के स्कोप अनुमति देते हैं: रीड टूल को `admin:read` की आवश्यकता होती है, राइट टूल को अपने स्वयं के स्कोप की आवश्यकता होती है। राइट टूल को एक वैकल्पिक `confirm_token` तर्क भी मिलता है ([Confirmation](#confirmation-confirm-token) देखें)। तर्कों की जांच प्रत्येक टूल के स्कीमा के विरुद्ध की जाती है: अज्ञात या गलत टाइप किए गए तर्कों को एक संदेश के साथ अस्वीकार कर दिया जाता है जो उनका नाम बताता है। कीमतें USD में हैं: प्रति घंटे डॉलर में प्लान की कीमतें (`hourly_usd`), सेंट में बैलेंस। गुप्त सेट किए जा सकते हैं लेकिन कभी वापस नहीं किए जाते। ### अवलोकन और लॉग {#overview-and-logs} | Tool | यह क्या करता है | Scope | डेटा बदलता है | आपसे पूछता है | |---|---|---|---|---| | `system_health` | ध्यान देने योग्य अलर्ट, बुनियादी ढांचे का स्वास्थ्य, भुगतान, ईमेल, AI, लाइसेंस और अपडेट स्थिति। | `admin:read` | नहीं | नहीं | | `setup_checklist` | क्या कॉन्फ़िगर किया गया है और क्या बचा है: लाइसेंस, बुनियादी ढांचा, ज़ोन, OS टेम्पलेट, प्लान, भुगतान, ईमेल, ब्रांडिंग, कानूनी, परीक्षण आदेश। | `admin:read` | नहीं | नहीं | | `license_status` | लाइसेंस स्थिति और क्या NexCMP का नया संस्करण मौजूद है। | `admin:read` | नहीं | नहीं | | `audit_search` | व्यवस्थापक ऑडिट लॉग और API-कुंजी लॉग खोजें। | `admin:read` | नहीं | नहीं | ### सेटिंग्स, ब्रांडिंग, कानूनी, मॉड्यूल {#settings-branding-legal-modules} | Tool | यह क्या करता है | Scope | डेटा बदलता है | आपसे पूछता है | |---|---|---|---|---| | `settings_get` | सामान्य सेटिंग्स पढ़ें (`keys` फ़िल्टर; एक ट्रेलिंग `*` एक उपसर्ग से मेल खाता है)। | `admin:read` | नहीं | नहीं | | `settings_update` | एक फ्लैट `values` ऑब्जेक्ट से सामान्य सेटिंग्स बदलें। केवल `settings_get` द्वारा सूचीबद्ध कुंजियाँ स्वीकार की जाती हैं। | `settings:write` | हाँ | जब कोई कुंजी भुगतानों, साइन-इन सुरक्षा, साइट-व्यापी स्विच या कीमतों को छूती है | | `branding_get` | ब्रांड नाम, रंग, प्रदर्शन मुद्रा, विक्रेता नाम, लोगो और फ़ेविकॉन URL। | `admin:read` | नहीं | नहीं | | `branding_update` | ब्रांड नाम (60 वर्णों तक), रंग (`#rrggbb`), प्रदर्शन मुद्रा (`usd` या `vnd`) और विक्रेता नाम सेट करें। | `settings:write` | हाँ | नहीं | | `branding_logo_set` | https URL या base64 से लाइट या डार्क लोगो या फ़ेविकॉन अपलोड करें (PNG, JPEG, WEBP, ICO या SVG, अधिकतम 512 KB)। | `settings:write` | हाँ | नहीं | | `legal_get` | सेवा की शर्तें और गोपनीयता नीति (अंग्रेज़ी और वियतनामी) और तटस्थ डिफ़ॉल्ट। | `admin:read` | नहीं | नहीं | | `legal_update` | शर्तें और गोपनीयता पाठ सेट करें (सरल मार्कडाउन, कोई HTML नहीं, प्रत्येक अधिकतम 50 KB)। एक खाली स्ट्रिंग डिफ़ॉल्ट को पुनर्स्थापित करती है। | `settings:write` | हाँ | नहीं | | `modules_get` | कौन से वैकल्पिक मॉड्यूल चालू हैं और किसे बदला जा सकता है। | `admin:read` | नहीं | नहीं | | `module_set` | किसी वैकल्पिक मॉड्यूल को चालू या बंद करें (`key`, `settable` में से एक होना चाहिए)। | `settings:write` | हाँ | नहीं | ### ईमेल और अलर्ट {#email-and-alerts} | Tool | यह क्या करता है | Scope | डेटा बदलता है | आपसे पूछता है | |---|---|---|---|---| | `smtp_get` | आउटगोइंग ईमेल सेटिंग्स (पासवर्ड मास्क किया हुआ) और कतार की स्थिति। | `admin:read` | नहीं | नहीं | | `smtp_configure` | SMTP सर्वर सेट करें। होस्ट, पोर्ट या सुरक्षा बदलने पर पासवर्ड की दोबारा आवश्यकता होती है। | `settings:write` (पासवर्ड के लिए + `secrets:write`) | हाँ | नहीं | | `smtp_test` | सहेजी गई सेटिंग्स के साथ एक वास्तविक परीक्षण ईमेल भेजें। | `settings:write` | एक ईमेल भेजता है | नहीं | | `telegram_get` | एडमिन सूचना चैनल (चैट आईडी; बॉट टोकन कभी नहीं लौटाए जाते)। | `admin:read` | नहीं | नहीं | | `telegram_configure` | Telegram अलर्ट चैनल (बॉट टोकन और चैट आईडी) जोड़ें या अपडेट करें और एडमिन अलर्ट चालू या बंद करें। | `settings:write` (टोकन के लिए + `secrets:write`) | हाँ | नहीं | | `telegram_test` | Telegram चैनल पर एक परीक्षण संदेश भेजें। | `settings:write` | एक संदेश भेजता है | नहीं | ### भुगतान और मुद्रा {#payments-and-currency} | Tool | यह क्या करता है | Scope | डेटा बदलता है | आपसे पूछता है | |---|---|---|---|---| | `payments_get` | Stripe, PayPal, क्रिप्टो (USDT) और बैंक ट्रांसफर की स्थिति, साथ ही सक्षम चैनल और शुल्क। | `admin:read` | नहीं | नहीं | | `payment_configure` | एक गेटवे की क्रेडेंशियल्स सेट करें (`stripe`, `paypal`, `crypto` या `bank`)। | `billing:write` (+ `secrets:write`) | हाँ | हमेशा | | `payment_test` | प्रदाता के साथ गेटवे की सहेजी गई क्रेडेंशियल्स की जाँच करें। | `billing:write` | नहीं | नहीं | | `currency_get` | प्रदर्शन मुद्रा और USD से VND दर (स्वचालित या मैन्युअल)। | `admin:read` | नहीं | नहीं | | `currency_set` | प्रदर्शन मुद्रा और/या मैन्युअल दर सेट करें (0 का अर्थ है स्वचालित, अन्यथा 15000 से 50000)। | `billing:write` | हाँ | जब आप मैन्युअल दर बदलते हैं | ### बुनियादी ढांचा और ज़ोन {#infrastructure-and-zones} | Tool | यह क्या करता है | Scope | डेटा बदलता है | आपसे पूछता है | |---|---|---|---|---| | `cloudstack_get` | सहेजा गया CloudStack एंडपॉइंट और ज़ोन तथा नेटवर्क आईडी (कुंजियाँ मास्क की गई हैं)। | `admin:read` | नहीं | नहीं | | `cloudstack_test` | सहेजे बिना API कुंजी और गुप्त के साथ किसी एंडपॉइंट का परीक्षण करें; ज़ोन सूचीबद्ध करता है। | `infra:write` (+ `secrets:write`, क्योंकि आप कुंजियाँ पास करते हैं) | नहीं | नहीं | | `cloudstack_connect` | CloudStack कनेक्शन सहेजें। | `infra:write` (+ `secrets:write`) | हाँ | हमेशा | | `proxmox_list` | Proxmox VE क्लस्टर जो स्रोतों के रूप में जोड़े गए हैं, स्वास्थ्य स्थिति के साथ। | `admin:read` | नहीं | नहीं | | `proxmox_add` | API टोकन (`user@realm!tokenid`) और इसके गुप्त के साथ Proxmox VE क्लस्टर जोड़ें। | `infra:write` (+ `secrets:write`) | हाँ | नहीं | | `proxmox_test` | आईडी द्वारा क्लस्टर से कनेक्ट करें; पहली सफलता इसके TLS प्रमाणपत्र को पिन करती है। | `infra:write` | हाँ | नहीं | | `proxmox_attach_zone` | मौजूदा ज़ोन में Proxmox क्लस्टर बेचें, वैकल्पिक रूप से एक नोड को क्षेत्र के रूप में चुनकर। | `infra:write` | हाँ | नहीं | | `zones_list` | ज़ोन (स्थान) जिन्हें ग्राहक चुन सकते हैं। | `admin:read` | नहीं | नहीं | | `zone_create` | एक ज़ोन बनाएँ। | `infra:write` | हाँ | नहीं | ### कैटलॉग और प्लान {#catalog-and-plans} | Tool | यह क्या करता है | Scope | डेटा बदलता है | आपसे पूछता है | |---|---|---|---|---| | `templates_list` | OS टेम्पलेट जिन्हें ग्राहक इंस्टॉल कर सकते हैं। | `admin:read` | नहीं | नहीं | | `templates_sync` | CloudStack से OS टेम्पलेट आयात करें। | `catalog:write` | हाँ | नहीं | | `template_update` | टेम्पलेट को सक्षम या छिपाएँ, उसका नाम बदलें, लॉगिन उपयोगकर्ता या क्रम सेट करें। | `catalog:write` | हाँ | नहीं | | `offerings_list` | CloudStack सेवा पेशकशें (CPU, मेमोरी, रूट डिस्क) जिनसे प्लान बनाए जाते हैं। | `admin:read` | नहीं | नहीं | | `plans_list` | प्रति घंटा और प्रति माह मूल्य, आकार, ज़ोन और कितने सर्वर उनका उपयोग करते हैं, इसके साथ प्लान। | `admin:read` | नहीं | नहीं | | `plan_create` | एक प्लान बनाएँ। मूल्य `hourly_usd` के रूप में। CloudStack प्लान के लिए `cs_offering_id` आवश्यक है; Proxmox प्लान के लिए `backend_id` आवश्यक है। | `catalog:write` | हाँ | नहीं | | `plan_update` | प्लान का नाम बदलें, दिखाएँ या छिपाएँ, सक्षम या अक्षम करें, या मूल्य बदलें। उपयोग में मौजूद प्लान पर आकार बदलने के लिए एक प्रति की आवश्यकता होती है। | `catalog:write` | हाँ | जब मूल्य बदलता है | | `plans_from_offerings` | अपनी लागत और मार्जिन प्रतिशत का उपयोग करके ऑफरिंग्स (या Proxmox आकारों) से एक स्टार्टर प्लान टेबल बनाएं। पूर्वावलोकन लौटाता है; प्लान बनाने के लिए `apply=true` के साथ फिर से कॉल करें। | `catalog:write` | `apply=true` के साथ | अप्लाई करने पर हमेशा चालू | | `quota_defaults_get` | डिफ़ॉल्ट ग्राहक सीमाएं। | `admin:read` | नहीं | नहीं | | `quota_defaults_set` | `quota_*` सेटिंग्स बदलें। | `catalog:write` | हाँ | नहीं | | `coupons_list` | डिस्काउंट और गिफ्ट कोड बैच। | `admin:read` | नहीं | नहीं | | `coupon_create` | कोड का एक बैच बनाएं: टाइप `money` (USD सेंट में अंकित मूल्य) या `percent` (1 से 100, अधिकतम डिस्काउंट के साथ)। | `catalog:write` | हाँ | हमेशा | ### ग्राहक और रीसेलर {#customers-and-resellers} | Tool | यह क्या करता है | Scope | डेटा बदलता है | आपसे पूछता है | |---|---|---|---|---| | `customers_search` | ईमेल, नाम या आईपी द्वारा ग्राहकों को खोजें। | `admin:read` | नहीं | नहीं | | `customer_get` | एक ग्राहक का खाता, बैलेंस, सर्वर और हालिया बिलिंग। | `admin:read` | नहीं | नहीं | | `customer_adjust_balance` | USD सेंट में क्रेडिट जोड़ें (सकारात्मक) या हटाएं (नकारात्मक)। एक कारण आवश्यक है। | `billing:write` | हाँ | हमेशा | | `customer_block` | किसी ग्राहक को ब्लॉक करें, वैकल्पिक रूप से उनके सर्वर रोकें। एक कारण आवश्यक है। | `customers:write` | हाँ | हमेशा | | `customer_unblock` | ग्राहक को अनब्लॉक करें। | `customers:write` | हाँ | नहीं | | `resellers_list` | वॉलेट और स्थिति के साथ रीसेलर। | `admin:read` | नहीं | नहीं | | `reseller_get` | एक रीसेलर की साइट, वॉलेट, उपयोगकर्ता और गेटवे। | `admin:read` | नहीं | नहीं | ### AI provider {#ai-provider} | Tool | यह क्या करता है | Scope | डेटा बदलता है | आपसे पूछता है | |---|---|---|---|---| | `ai_provider_get` | ग्राहक AI Chat और AI Agent द्वारा उपयोग किया जाने वाला OpenAI-संगत प्रदाता (कुंजी मास्क की गई)। | `admin:read` | नहीं | नहीं | | `ai_provider_set` | प्रvider सेट करें: बेस URL, मॉडल, API कुंजी, फ़ॉलबैक मॉडल, रीज़निंग एफ़र्ट, सक्षम। | `ai:write` (+ कुंजी के लिए `secrets:write`) | हाँ | नहीं | | `ai_provider_test` | यह काम करता है या नहीं यह जाँचने के लिए सहेजे गए प्रvider से एक प्रश्न पूछें। | `ai:write` | नहीं | नहीं | ### कॉफ़ीग्‍रेशन फ़ाइलें {#configuration-files} | Tool | यह क्या करता है | Scope | डेटा बदलता है | आपसे पूछता है | |---|---|---|---|---| | `config_export` | कॉफ़ीग्‍रेशन को YAML के रूप में एक्सपोर्ट करें (सीक्रेट्स `secret://` रेफ़रंस बन जाते हैं)। | `admin:read` | नहीं | नहीं | | `config_plan` | YAML कॉफ़ीग्‍रेशन की लाइव पैनल से तुलना करें और सूची बनाएँ कि क्या बदलेगा। | `admin:read` | नहीं | नहीं | | `config_apply` | YAML कॉफ़ीग्‍रेशन को खंड-दर-खंड लागू करें। प्रत्येक परिवर्तन सामान्य स्कोप और पुष्टि नियमों का पालन करता है। | `admin:read` + प्रत्येक परिवर्तन का स्कोप | हाँ | प्रति परिवर्तन | फ़ाइल स्वरूप के लिए [Configuration as code](https://nexcmp.com/hi/docs/configure-with-ai/config-as-code/) देखें। ## प्रॉम्प्ट्स {#prompts} सर्वर तीन तैयार प्रॉम्प्ट भी प्रदान करता है जिन्हें क्लाइंट शॉर्टकट के रूप में दिखा सकते हैं: | प्रॉम्प्ट | आर्गुमेंट | यह AI से क्या करने को कहता है | |---|---|---| | `initial-setup` | कोई नहीं | `setup_checklist` को कॉल करें, प्रत्येक खुले चरण को एक वाक्य में समझाएँ, आपसे आवश्यक जानकारी मांगें, मिलान करने वाले टूल के साथ चरण करें, पैसे या सुरक्षा परिवर्तनों का पूर्वावलोकन करें, और `system_health` के साथ समाप्त करें। | | `add-proxmox` | `endpoint` (वैकल्पिक, `https://host:8006`) | API टोकन मांगें, फिर `proxmox_add`, `proxmox_test`, ज़ोन टूल और `proxmox_attach_zone`; फिर `plans_from_offerings` के साथ प्लान का प्रस्ताव दें और आपकी स्वीकृति की प्रतीक्षा करें। | | `launch-pricing` | `margin_pct` (वैकल्पिक, डिफ़ॉल्ट 40) | प्रति vCPU, प्रति GB RAM और प्रति GB डिस्क की अपनी मासिक लागत मांगें, लागत, प्रति माह मूल्य और प्रति घंटे मूल्य के साथ एक पूर्वावलोकन तालिका दिखाएँ, और आपके अनुमोदन के बाद प्लान बनाएँ। | ## पुष्टि (`confirm_token`) {#confirmation-confirm-token} जो कार्रवाइयाँ पैसे स्थानांतरित करती हैं, डेटा हटाती हैं, भुगतान क्रेडेंशियल बदलती हैं या साइन-इन सुरक्षा बदलती हैं, वे दो-चरण की होती हैं: 1. पहली कॉल कुछ नहीं बदलती। टूल का परिणाम "CONFIRMATION REQUIRED" से शुरू होता है और इसमें एक **पूर्वावलोकन** (क्या कॉल किया जाएगा, यह संवेदनशील क्यों है, नए मान और वर्तमान मान) तथा `confirm_token` शामिल होता है। 2. क्लाइंट को आपको पूर्वावलोकन दिखाना चाहिए। आपके स्वीकृत करने के बाद ही यह उसी टूल को उन्हीं तर्कों और `confirm_token` के साथ दोबारा कॉल करता है। 3. टोकन एक बार काम करता है, केवल उसी सटीक अनुरोध के लिए, और 5 मिनट के बाद समाप्त हो जाता है। सर्वर निर्देश एआई को टूल परिणामों को डेटा के रूप में मानने के लिए कहते हैं, न कि निर्देशों के रूप में, और उस टोकन के साथ कॉल को कभी भी दोहराने के लिए नहीं जिसे आपने अनुमोदित नहीं किया है। आप रक्षक हैं: पूर्वावलोकन पढ़ें। ::: warning स्वयं-अनुमोदन न करें कुछ क्लाइंट हर टूल कॉल को अपने आप अनुमोदित कर सकते हैं। राइट टूल्स के लिए, प्रति-कॉल अनुमोदन चालू रखें, या रीड-ऑनरी कुंजी का उपयोग करें, ताकि एआई की कोई गलत योजना आपके पैनल तक बिना देखे न पहुँच सके. ::: ## यह कैसे काम करता है {#how-it-works} | आइटम | Detail | |---|---| | ट्रांसपोर्ट | `POST /mcp/admin` JSON-RPC 2.0 संदेश के साथ; उत्तर `application/json` है। एक बैच में अधिकतम 20 संदेश। `GET /mcp/admin` 405 (कोई सर्वर स्ट्रीम नहीं) उत्तर देता है; `DELETE /mcp/admin` एक सत्र समाप्त करता है। | | Authentication | `Authorization: Bearer ak_...` (एक मैन्युअल कुंजी या एक OAuth एक्सेस टोकन)। गुम या गलत क्रेडेंशियल्स `WWW-Authenticate: Bearer ... resource_metadata=...` के साथ 401 देते हैं, जो OAuth क्लाइंट्स को अपने आप साइन-इन शुरू करने देता है। | | सत्र | `Mcp-Session-Id` को `initialize` द्वारा जारी किया जाता है, उस कुंजी से बाध्य किया जाता है और 24 घंटे के लिए वैध होता है। | | क्षमताएं | टूल्स और प्रॉम्प्ट्स। कोई संसाधन नहीं। | | आकार | अनुरोध बॉडी 1 MB तक; एक टूल परिणाम लगभग 100 KB के बाद काट दिया जाता है। | | मूल | किसी अन्य साइट से `Origin` हेडर ले जाने वाले अनुरोध को अस्वीकार कर दिया जाता है (`origin_not_allowed`)। कमांड-लाइन और डेस्कटॉप क्लाइंट कोई भी नहीं भेजते हैं। | | REST के समान गेट | प्रत्येक टूल कॉल को आपकी कुंजी के साथ पैनल के अपने अनुरोध पाइपलाइन के माध्यम से दोबारा भेजा जाता है, इसलिए स्कोप, आईपी रेंज, दर सीमा, पुष्टि और गतिविधि लॉग सीधे API कॉल की तरह ही लागू होते हैं। | ## Limits & notes {#limits-notes} - जो टूल आपको दिखाई नहीं देता वह एक ऐसा स्कोप है जिसे आपने प्रदान नहीं किया है। नई कुंजी में स्कोप जोड़ें। - एआई क्लाइंट के माध्यम से पासवर्ड या API कुंजी सेट करने का अर्थ है कि गुप्त डेटा उस एआई से होकर गुजरता है। यदि आप चाहें, तो `secrets:write` को बंद रखें और एडमिन में खुद गुप्त दर्ज करें, या एआई चैट **Secret** फ़ील्ड ([AI Chat in the admin](https://nexcmp.com/hi/docs/configure-with-ai/ai-chat-in-admin/#secrets)) या `secret://` संदर्भों ([Configuration as code](https://nexcmp.com/hi/docs/configure-with-ai/config-as-code/#secrets)) का उपयोग करें। - क्लाइंट सत्र साझा नहीं करते हैं: प्रत्येक कनेक्शन `initialize` से शुरू होता है। - एआई क्लाइंट को तुरंत काटने के लिए **API & AI agents** में कुंजी को निरस्त करें। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | 401 `invalid_key` | गलत, छोटा किया गया या गैर-एडमिन कुंजी (उदाहरण के लिए एक `vk_` कुंजी) | एक `ak_` कुंजी का उपयोग करें। | | 401 `key_expired` या `key_revoked` | कुंजी समाप्त हो गई या निरस्त कर दी गई | एक नई कुंजी बनाएँ। | | 403 `ip_not_allowed` | आपका आईपी कुंजी की आईपी रेंज के बाहर है | अनुमत आईपी से कनेक्ट करें। | | 403 `origin_not_allowed` | किसी अन्य मूल के ब्राउज़र पृष्ठ ने एंडपॉइंट को कॉल किया | डेस्कटॉप या CLI क्लाइंट का उपयोग करें। | | `Mcp-Session-Id` के साथ अनुरोध पर 404 | सत्र किसी अन्य कुंजी का है या समाप्त हो गया है | `initialize` दोबारा भेजें। | | 400 असमर्थित `MCP-Protocol-Version` | क्लाइंट ऐसे संस्करण का उपयोग करता है जिसे सर्वर नहीं जानता है | क्लाइंट को अपडेट करें; समर्थित: 2025-11-25, 2025-06-18, 2025-03-26. | | टूल सूची छोटी है | कुंजी स्कोप | अधिक स्कोप वाली कुंजी बनाएँ। | | कॉल पर `insufficient_scope` | एक टूल को दूसरे स्कोप की आवश्यकता है, उदाहरण के लिए `secrets:write` | नई कुंजी में स्कोप जोड़ें। | | 429 `rate_limited` | कुंजी की अनुमति से अधिक प्रति मिनट कॉल | `Retry-After` की प्रतीक्षा करें या नई कुंजी पर सीमा बढ़ाएँ। | | claude.ai या ChatGPT कनेक्ट नहीं हो सकता है | URL इंटरनेट से पहुंच योग्य नहीं है, या कोई प्रॉक्सी `/mcp/admin` या `/oauth-admin/` को ब्लॉक करती है | DNS, TLS और रिवर्स प्रॉक्सी की जाँच करें। | सभी त्रुटि कोड के लिए [Admin API keys](https://nexcmp.com/hi/docs/configure-with-ai/admin-api-keys/#errors) देखें। --- # claude.ai और ChatGPT कनेक्टर {#claude-ai-and-chatgpt-connectors} > **व्यवस्थापक में कहाँ:** System › Settings › API & AI agents (`/agent/keys`), टैब **Connected apps**। जब कोई कनेक्टर एक्सेस मांगता है तो सहमति स्क्रीन `/agent/consent` पर खुलती है (यह मेनू में नहीं है)। ## यह क्या करता है {#what-it-does} वेब AI ऐप आपकी डिस्क से कोई कुंजी नहीं पढ़ सकते। वे **OAuth** से कनेक्ट होते हैं: आप पैनल का MCP URL जोड़ते हैं, ऐप आपको साइन इन करने के लिए आपके अपने एडमिन पर भेजता है, आप चुनते हैं कि ऐप क्या कर सकता है और कितने समय के लिए, और ऐप को अल्पकालिक टोकन मिलते हैं। कोई कुंजी कॉपी या पेस्ट नहीं की जाती है। आप किसी भी समय ऐप को काट सकते हैं। claude.ai कस्टम कनेक्टर्स, ChatGPT डेवलपर-मोड कनेक्टर्स और गतिशील क्लाइंट पंजीकरण वाले किसी अन्य MCP क्लाइंट के लिए इसका उपयोग करें। कमांड-लाइन टूल समान फ़्लो का उपयोग कर सकते हैं, लेकिन उनके लिए [admin API key](https://nexcmp.com/hi/docs/configure-with-ai/admin-api-keys/) अधिक सरल है। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | URL | `https://cloud.example.com/mcp/admin`, इंटरनेट से पहुँचने योग्य (विक्रेता के सर्वर इससे कनेक्ट होते हैं)। | | रिवर्स प्रॉक्सी | यदि आप पैनल के सामने अपना स्वयं का प्रॉक्सी रखते हैं, तो उसे `/mcp/admin`, `/oauth-admin/` और `/.well-known/` पथों को पैनल पर अग्रेषित करना होगा। | | आप | सहमति स्क्रीन के लिए उपयोग किए जाने वाले **समान ब्राउज़र में** NexCMP एडमिन में साइन इन हैं। | | क्लाइंट | Streamable HTTP पर MCP, PKCE (S256) के साथ OAuth 2.1 और गतिशील क्लाइंट पंजीकरण का समर्थन करता है। | ## कनेक्ट करें {#connect} 1. AI ऐप में, एक कस्टम MCP कनेक्टर जोड़ें और `https://cloud.example.com/mcp/admin` पेस्ट करें। claude.ai में यह कनेक्टर सेटिंग्स के तहत है (कस्टम कनेक्टर जोड़ें); ChatGPT में यह डेवलपर मोड के तहत है (एक MCP कनेक्टर जोड़ें, प्रमाणीकरण OAuth)। 2. ऐप में **Sign in** (या "Connect") चुनें। आपका ब्राउज़र NexCMP एडमिन सहमति स्क्रीन खोलता है। यदि आप साइन इन नहीं हैं, तो पहले साइन इन करें; स्क्रीन उसके बाद आगे बढ़ती है। 3. कार्ड पढ़ें: "**Example AI app** wants to manage this NexCMP admin" (उस ऐप का नाम जो पूछ रहा है), उस पते के साथ जहाँ आपको वापस भेजा जाएगा। 4. प्रदान किए जाने वाले स्कोप्स पर टिक करें। ऐप द्वारा मांगे गए स्कोप्स पहले से टिक होते हैं; यदि उसने किसी की मांग नहीं की है, तो केवल `admin:read` टिक किया गया है। [Scopes](https://nexcmp.com/hi/docs/configure-with-ai/admin-api-keys/#scopes) देखें। 5. चुनें कि कनेक्शन कितने समय तक रहता है: **7**, **30** या **90** दिन (डिफ़ॉल्ट 30)। 6. **Allow** पर क्लिक करें। ब्राउज़र वापस ऐप पर लौटता है, जो अब कनेक्ट हो चुका है। मना करने के लिए **Deny** पर क्लिक करें। ![सहमति स्क्रीन जो किसी AI ऐप को अनुमति देने के लिए कहती है, जिसमें स्कोप चेकबॉक्स, अवधि का विकल्प और Allow और Deny बटन हैं](https://nexcmp.com/hi/docs/images/configure-with-ai/oauth-connectors-01-consent.webp) ::: important किसी कुंजी की तरह स्कोप चुनें सबसे छोटा सेट प्रदान करें जो काम पूरा कर दे। पैसे, विलोपन और सुरक्षा क्रियाएँ अभी भी पूर्वावलोकन पर रुक जाती हैं और आपकी स्वीकृति की आवश्यकता होती है, लेकिन `settings:write` वाला कनेक्शन अभी भी आपकी ब्रांडिंग और ईमेल बदल सकता है। ::: ## प्रबंधित करें और निरस्त करें {#manage-and-revoke} **System › Settings › API & AI agents › Connected apps** खोलें। तालिका आपके द्वारा कनेक्ट किए गए प्रत्येक ऐप को सूचीबद्ध करती है: एप्लिकेशन, स्कोप, यह कब कनेक्ट हुआ, यह कब समाप्त होता है और इसका अंतिम बार उपयोग कब किया गया था। किसी ऐप को काटने के लिए, **Revoke** पर क्लिक करें और पुष्टि करें। इसके टोकन तुरंत काम करना बंद कर देते हैं; ऐप को फिर से कनेक्ट करने के लिए सहमति स्क्रीन से गुजरना होगा। ![कनेक्टेड ऐप्स टैब जो इसके स्कोप, समाप्ति और Revoke बटन के साथ एक AI ऐप को सूचीबद्ध करता है](https://nexcmp.com/hi/docs/images/configure-with-ai/oauth-connectors-02-connected-apps.webp) ## फ्लो कैसे काम करता है {#how-the-flow-works} | Step | Detail | |---|---| | डस्कवरी | ऐप `/.well-known/oauth-protected-resource/mcp/admin` और फिर `/.well-known/oauth-authorization-server/oauth-admin` पढ़ता है। जारीकर्ता `https://cloud.example.com/oauth-admin` है। | | पंजीकरण | ऐप खुद को रजिस्टर करता है (`POST /oauth-admin/register`, RFC 7591)। केवल सार्वजनिक क्लाइंट समर्थित हैं (कोई क्लाइंट सीक्रेट नहीं)। पुनर्निर्देशन पता `https` होना चाहिए, या एक ही कंप्यूटर पर `http` (लूपबैक)। | | प्राधिकरण | `GET /oauth-admin/authorize` (PKCE विधि `S256` के साथ)। एक `resource` पैरामीटर, जब भेजा जाता है, तो इस पैनल का `/mcp/admin` URL होना चाहिए। अनुरोध 10 मिनट के लिए मान्य है और इसे शुरू करने वाले ब्राउज़र से जुड़ा है। | | सहमति | आप (ऊपर) स्कोप और अवधि चुनते हैं। ऑथराइज़ेशन कोड 60 सेकंड के लिए वैध होता है और एक बार काम करता है। | | टोकन | `POST /oauth-admin/token` एक **एक्सेस टोकन** (एक `ak_o...` कुंजी, 1 घंटे के लिए या कनेक्शन समाप्त होने तक, जो भी पहले हो) और एक **रिफ्रेश टोकन** (`akr_...`) लौटाता है। हर रिफ्रेश एक नया रिफ्रेश टोकन लौटाता है; पुराना काम करना बंद कर देता है। आपके द्वारा चुने गए दिनों के बाद कनेक्शन समाप्त हो जाता है। | | रद्द करना | Connected apps में **Revoke**, या ऐप `POST /oauth-admin/revoke` (RFC 7009) को कॉल करता है। | एक्सेस टोकन आपके द्वारा दिए गए स्कोप वाली एडमिन कुंजी की तरह काम करता है: समान स्कोप नियम, पुष्टि, रेट लिमिट और गतिविधि लॉग। इसकी कॉल **Activity** टैब पर दिखाई देती हैं। ## सत्यापित करें {#verify} 1. ऐप में, "run system_health" (या "what tools do you have?") पूछें। ऐप उन टूल की सूची देता है जिनकी आपके स्कोप अनुमति देते हैं ([the tool list](https://nexcmp.com/hi/docs/configure-with-ai/mcp-admin/#tools))। 2. **Connected apps** खोलें: **Last used** बदल जाता है। 3. **Activity** खोलें: कॉल ऐप के नाम और `mcp` के साथ सूचीबद्ध होती हैं। ## Limits & notes {#limits-notes} - यदि ऐप एक घंटे के बाद साइन इन करने के लिए फिर से पूछता है, तो यह सामान्य है जब कोई क्लाइंट रिफ्रेश नहीं करता; फिर से कनेक्ट करें। - दो बार उपयोग किए जाने والے रिफ्रेश टोकन को चोरी हुआ माना जाता है: पूरा कनेक्शन रद्द कर दिया जाता है। ऐप से फिर से कनेक्ट करें। - दो बार उपयोग किए गए ऑथराइज़ेशन कोड को अस्वीकार कर दिया जाता है (`invalid_grant`) और उससे पहले ही जारी किए गए टोकन रद्द कर दिए जाते हैं। - OAuth एक्सेस कभी भी स्कोप नियमों की अनुमति से अधिक नहीं देता है: [what a key can never do](https://nexcmp.com/hi/docs/configure-with-ai/admin-api-keys/#what-a-key-can-never-do) कनेक्टेड ऐप्स पर भी लागू होता है। - वेंडर अपने मेनू और समर्थित चीज़ों बदलते रहते हैं। यदि किसी वेंडर का ऐप आपकी योजना पर कस्टम कनेक्टर प्रदान नहीं करता है, तो इसके बजाय डेस्कटॉप या कमांड-लाइन क्लाइंट के साथ [admin API key](https://nexcmp.com/hi/docs/configure-with-ai/admin-api-keys/) का उपयोग करें। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | सहमति स्क्रीन पर "Wrong browser" दिखाई देता है | अनुरोध उस ब्राउज़र के अलावा किसी अन्य ब्राउज़र में शुरू किया गया था जिसमें आपने साइन इन किया है | उसी ब्राउज़र में AI ऐप से कनेक्शन फिर से शुरू करें। | | सहमति स्क्रीन कहती है कि अनुरोध समाप्त हो गया है या गायब है | 10 मिनट से अधिक समय बीत गया है, या लिंक दो बार खोला गया था | AI ऐप से कनेक्शन फिर से शुरू करें। | | "Unknown client" या "redirect address does not match" पृष्ठ | ऐप पंजीकरण पुराना है, या यह ऐसे रीडायरेक्ट पते का उपयोग करता है जिसे उसने पंजीकृत नहीं किया था | ऐप में कनेक्टर को हटाएं और इसे फिर से जोड़ें। | | `invalid_target` | भेजा गया `resource` इस पैनल का `/mcp/admin` URL नहीं है | **Connect an AI** टैब पर दिखाए गए सटीक URL का उपयोग करें। | | PKCE के बारे में `invalid_request` | क्लाइंट `code_challenge_method=S256` नहीं भेजता है | PKCE के साथ OAuth 2.1 का समर्थन करने वाले क्लाइंट का उपयोग करें। | | ऐप कनेक्ट हो जाता है लेकिन कोई कॉल `insufficient_scope` लौटाती है | आपने उस स्कोप को टिक नहीं किया था | कनेक्शन रद्द करें और स्कोप को टिक करके फिर से कनेक्ट करें। | | ऐप URL तक नहीं पहुँच सकता | DNS, TLS या रिवर्स प्रॉक्सी `/mcp/admin`, `/oauth-admin/` या `/.well-known/` को ब्लॉक करती है | प्रॉक्सी नियमों की जाँच करें। | --- # Configuration as code {#configuration-as-code} > **Where in the admin:** System › Settings › Import/Export (`/agent/config`)। सर्वर पर: कमांड `nexcmp config export`, `plan` और `apply`, और `nexcmp admin `। ## यह क्या करता है {#what-it-does} आपकी पैनल कॉन्फ़िगरेशन (ब्रैंडिंग, सामान्य सेटिंग्स, ईमेल, टेलीग्राम अलर्ट, मॉड्यूल, मुद्रा, पेमेंट गेटवे, सीमाएं, ज़ोन, प्लान, AI प्रोवाइडर और कानूनी पेज) को एक YAML फ़ाइल के रूप में सहेजा जा सकता है। आप फ़ाइल को खुद संपादित कर सकते हैं, किसी AI सहायक से इसे संपादित करने के लिए कह सकते हैं, इसे वर्शन कंट्रोल में रख सकते हैं, और इसे उसी या किसी अन्य पैनल पर लागू कर सकते हैं। कुछ भी बदलने से पहले आपको हमेशा अंतरों की एक सूची दिखाई देती है। सीक्रेट्स को कभी भी फ़ाइल में नहीं लिखा जाता है। इसका उपयोग किसी सेटअप को दूसरे इंस्टॉलेशन पर क्लोन करने, लाइव होने से पहले बदलावों की समीक्षा करने, गलती के बाद सेटिंग्स को रीस्टोर करने, या किसी AI को एक पूरा कॉन्फ़िगरेशन प्रस्तावित करने देने के लिए करें जिसे आप एक दस्तावेज़ के रूप में पढ़ते हैं। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | NexCMP | 1.4.0 या नया। | | कमांड लाइन | आप पैनल सर्वर पर `root` हैं (`sudo` का उपयोग करें)। कमांड अपने आप पैनल से एक अस्थायी की (15 मिनट, सभी स्कोप) मांगती है। इसके बजाय एक संकीर्ण की का उपयोग करने के लिए, `NEXCMP_KEY` को [admin API key](https://nexcmp.com/hi/docs/configure-with-ai/admin-api-keys/) पर सेट करें और इसे sudo के माध्यम से बनाए रखें, उदाहरण के लिए `sudo --preserve-env=NEXCMP_KEY nexcmp config plan -f nexcmp.yaml`। | | एडमिन पेज | एडमिन में साइन इन किया हुआ है। डेमो पैनल पर पेज रीड-ऑनलाइन है। | | Secrets | लागू करते समय आपूर्ति किए गए मान ([Secrets](#secrets) देखें); कभी भी फ़ाइल के अंदर नहीं। | ## एक्सपोर्ट, एडिट, प्रीव्यू, अप्लाई {#export-edit-preview-apply} 1. वर्तमान कॉन्फ़िगरेशन एक्सपोर्ट करें: ```bash sudo nexcmp config export -o nexcmp.yaml ``` `-o` के बिना YAML को स्क्रीन पर प्रिंट किया जाता है। 2. `nexcmp.yaml` संपादित करें (नीचे दिया गया [उदाहरण](#example-file) देखें)। शीर्ष पर `version: 1` रखें। 3. पूर्वावलोकन करें कि क्या बदलेगा। इससे कुछ नहीं बदलता: ```bash sudo nexcmp config plan -f nexcmp.yaml ``` प्रत्येक लाइन अनुभाग, आइटम, फ़ील्ड और `old → new` दिखाती है। `$` के रूप में चिह्नित लाइनें बिलिंग अनुभागों से संबंधित हैं ([Billing sections](#billing-sections) देखें)। यदि पैनल पहले से ही फ़ाइल से मेल खाता है तो आपको "No changes" दिखाई देता है। 4. लागू करें। `--yes` के बिना कमांड एक **ड्राय रन** है और केवल वही सूची प्रिंट करती है: ```bash sudo nexcmp config apply -f nexcmp.yaml --yes ``` 5. परिणाम पढ़ें: `applied`, `pending` (आपकी पुष्टि की प्रतीक्षा कर रहा है), `skipped` और `errors`। | विकल्प | अर्थ | |---|---| | `-f ` | YAML फ़ाइल (`plan` और `apply` के लिए आवश्यक)। | | `--yes` | वाकई लागू करें। इसके बिना `apply` एक ड्राय रन है। | | `--confirm-billing` | बिलिंग अनुभाग (`payments`, `currency`, `plans`) भी लागू करें। इसके बिना उन्हें छोड़ दिया जाता है। | | `--section ` | केवल इस अनुभाग को लागू करें। कई के लिए विकल्प को दोहराएं। | | `-o ` | `export` के साथ: YAML को किसी फ़ाइल में लिखें। | जब सब कुछ लागू हो जाता है या कुछ नहीं बदलता है तो निकास कोड 0 होता है, त्रुटि लौटने पर 1, उपयोग या की त्रुटि के लिए 2 होता है। ### Secrets {#secrets} फ़ाइल में सीक्रेट्स के बजाय संदर्भ होते हैं, जैसे `password: secret://smtp_password`। लागू करने के समय मान `NEXCMP_SECRET_` नामक पर्यावरण चर और बड़े अक्षरों में संदर्भ नाम से आता है: ```bash sudo -i read -rs NEXCMP_SECRET_SMTP_PASSWORD && export NEXCMP_SECRET_SMTP_PASSWORD read -rs NEXCMP_SECRET_STRIPE_SECRET_KEY && export NEXCMP_SECRET_STRIPE_SECRET_KEY nexcmp config apply -f nexcmp.yaml --yes --confirm-billing ``` यदि किसी संदर्भ का कोई मान नहीं है, तो पैनल में पहले से सहेजा गया सीक्रेट **सुरक्षित रखा जाता है**। एक सीक्रेट जिसे कभी नहीं सहेजा गया और आपूर्ति नहीं की गई है, वह खाली रहता है। | संदर्भ का नाम | यह कहाँ जाता है | |---|---| | `smtp_password` | `email.smtp.password` | | `telegram_bot_token` | `telegram.bot_token` | | `stripe_secret_key`, `stripe_webhook_secret` | `payments.stripe` | | `paypal_client_secret` | `payments.paypal.client_secret` | | `binance_api_key`, `binance_api_secret` | `payments.crypto` | | `sepay_api_token`, `sepay_webhook_secret` | `payments.bank` | | `ai_provider_key` | `ai_provider.api_key` | ## उदाहरण फ़ाइल {#example-file} ```yaml # NexCMP configuration. Preview: nexcmp config plan -f nexcmp.yaml version: 1 branding: name: Example Cloud primary: "#1677ff" currency: usd seller_name: Example Cloud LLC settings: brand_name: Example Cloud support_email: support@example.com default_lang: en invoice_prefix: EX company_name: Example Cloud LLC company_address: "1 Example Street, New York, NY" min_topup_cents: 500 email: smtp: host: smtp.example.com port: 587 security: starttls username: mailer@example.com password: secret://smtp_password from_email: no-reply@example.com from_name: Example Cloud reply_to: support@example.com telegram: enabled: true chat_id: "123456789" bot_token: secret://telegram_bot_token modules: s3: true k8s: false currency: site_currency: usd manual_rate_vnd: 0 # 0 = automatic payments: stripe: mode: test publishable_key: pk_test_XXXX secret_key: secret://stripe_secret_key webhook_secret: secret://stripe_webhook_secret bank: bank_code: BANK account_number: "0000000000" account_name: EXAMPLE CLOUD LLC prefix: EX api_token: secret://sepay_api_token channels: pay_card_enabled: true quotas: quota_enabled: true quota_max_vms_24h: 5 quota_max_vms_30d: 30 zones: - slug: new-york name: New York country: US city: New York enabled: true is_default: true plans: - slug: vps-1c-1g name: 1 vCPU, 1 GB RAM, 25 GB cpu: 1 ram_mb: 1024 disk_gb: 25 hourly_usd: 0.0112 cs_offering_id: OFFERING_ID enabled: true visible: true ai_provider: enabled: true name: Example AI base_url: https://api.example.com/v1 model: example-model fallback_models: [example-model-mini] reasoning_effort: low api_key: secret://ai_provider_key legal: terms: en: | # Terms of service Your terms in simple markdown (no HTML). privacy: en: | # Privacy policy Your policy in simple markdown (no HTML). ``` एक फ़ाइल में अनुभागों का कोई भी सबसेट हो सकता है। जिस अनुभाग को आप छोड़ देते हैं उसे छुआ नहीं जाता है। 1 MB से बड़ी फ़ाइल, एक गुम `version: 1`, एक अलग वर्शन नंबर या एक अज्ञात अनुभाग को कुछ भी चलने से पहले अस्वीकार कर दिया जाता है। ## Sections {#sections} | सेक्शन | यह क्या नियंत्रित करता है | नोट्स | |---|---|---| | `branding` | ब्रैंड नाम (60 वर्णों तक), प्राथमिक रंग, प्रदर्शन मुद्रा (`usd` या `vnd`), विक्रेता का नाम। | लोगो फ़ाइल का हिस्सा नहीं हैं; [branding page](https://nexcmp.com/hi/docs/customers/branding/) का उपयोग करें। | | `settings` | सामान्य सेटिंग्स की एक निश्चित सूची: `brand_name`, `support_email`, `support_telegram_url`, `default_lang`, `require_email_verified`, `min_topup_cents`, `max_topup_cents`, `invoice_prefix`, `company_name`, `company_address`, `company_tax_id`, `auto_destroy_days`, `low_balance_cents`। | अन्य कीज़ को अनदेखा कर दिया जाता है। | | `email.smtp` | SMTP होस्ट, पोर्ट, सुरक्षा (`starttls`, `tls`, `none`), उपयोगकर्ता, पासवर्ड, प्रेषक का नाम और पता, रिप्लाई-टू। | [SMTP और ई-मेल टेम्प्लेट](https://nexcmp.com/hi/docs/administration/smtp-and-emails/)। होस्ट, पोर्ट या सुरक्षा बदलने के लिए फिर से पासवर्ड की आवश्यकता होती है। | | `telegram` | अलर्ट चैनल चालू या बंद, चैट आईडी, बॉट टोकन। | [Telegram notifications](https://nexcmp.com/hi/docs/administration/telegram-notifications/)। | | `modules` | वैकल्पिक मॉड्यूल चालू या बंद (`key: true/false`)। | केवल वे कुंजियाँ जिन्हें पैनल आपको स्विच करने देता है। [Modules](https://nexcmp.com/hi/docs/infrastructure/modules/) देखें। | | `currency` | प्रदर्शन मुद्रा और मैन्युअल USD से VND दर (`0` स्वचालित, अन्यथा 15000 से 50000)। | बिलिंग अनुभाग। [Currency and exchange rates](https://nexcmp.com/hi/docs/catalog/currency-and-exchange-rates/) देखें। | | `payments` | `stripe`, `paypal`, `crypto`, `bank` क्रेडेंशियल्स और `channels` स्विच (`pay_card_enabled`, `pay_wallets_enabled`, `pay_alipay_enabled`, `pay_paypal_enabled`, `pay_usdt_enabled`, `pay_sepay_enabled`)। | बिलिंग अनुभाग। [Payment channels](https://nexcmp.com/hi/docs/billing/payment-channels/) देखें। | | `quotas` | `quota_*` सीमाएँ। | [Quotas](https://nexcmp.com/hi/docs/billing/quotas/) देखें। | | `zones` | `slug` द्वारा ज़ोन (आवश्यक: `slug`, `name`, `country`; वैकल्पिक `city`, `enabled`, `is_default`)। | नए ज़ोन बनाए जाते हैं। पहले से मौजूद ज़ोन फ़ाइल द्वारा **बदला नहीं जाता** है। [Zones](https://nexcmp.com/hi/docs/infrastructure/zones/) देखें। | | `plans` | `slug` द्वारा योजनाएँ (आवश्यक: `slug`, `name`, `cpu`, `ram_mb`, `disk_gb`, `hourly_usd`; वैकल्पिक `cs_offering_id`, `backend_id`, `zone_id`, `enabled`, `visible`, `sort`, `description`)। | बिलिंग अनुभाग। नई योजनाएँ बनाई जाती हैं, मौजूदा योजनाओं को स्लग द्वारा अपडेट किया जाता है। कीमतें प्रति घंटे USD में हैं। [Plans](https://nexcmp.com/hi/docs/catalog/plans/) देखें। | | `ai_provider` | पैनल AI प्रदाता जिसका उपयोग ग्राहक AI Chat और AI Agent द्वारा करते हैं। | [AI provider](https://nexcmp.com/hi/docs/ai/ai-providers/)। | | `legal` | प्रति भाषा नियम और गोपनीयता पाठ (`en`, `vi`)। | [Legal pages](https://nexcmp.com/hi/docs/customers/legal/)। | लागू करने का क्रम ऊपर दिया गया क्रम है: योजनाओं से पहले बुनियादी ढाँचे जैसी वस्तुएँ। ## याद रखने योग्य नियम {#rules-to-remember} - **आइडेम्पोटेंट (Idempotent)।** एक ही फ़ाइल को दो बार लागू करने से दूसरी बार कुछ नहीं बदलता। `plan` "No changes" दिखाता है। - **कोई विलोपन नहीं।** फ़ाइल कभी भी ज़ोन, योजना या सेटिंग को नहीं हटाती है। फ़ाइल से प्रविष्टि हटाने से पैनल जैसा है वैसा ही रहता है। - **सामान्य सुरक्षा नियम अभी भी लागू होते हैं।** कमांड लाइन से प्रत्येक परिवर्तन को API परिवर्तन के समान जाँच से भेजा जाता है: स्कोप और IP नियम। जिस परिवर्तन के लिए पुष्टिकरण की आवश्यकता होती है (उदाहरण के लिए साइट-व्यापी स्विच), उसे लागू किए जाने के बजाय पूर्वावलोकन के साथ `pending` के तहत रिपोर्ट किया जाता है, जब तक कि आप `--confirm-billing` पास न करें, जो उन सभी की पुष्टि करता है। - **AI क्लाइंट बिलिंग को अनलॉक नहीं कर सकते।** जब किसी MCP क्लाइंट द्वारा `config_apply` को कॉल किया जाता है, तो `confirm_billing` को अनदेखा कर दिया जाता है; धन परिवर्तन आपकी प्रतीक्षा करते हैं। - **लागू करने से पहले जाँच करें।** JSON Schema प्रत्येक फ़ील्ड का वर्णन करता है। अपने एडिटर को इसकी ओर इंगित करें, या इसे किसी AI को दें ताकि वह वैध YAML लिख सके: `https://cloud.example.com/v1/admin/agent/config/schema.json` (सार्वजनिक रूप से पठनीय)। ### बिलिंग अनुभाग {#billing-sections} `payments`, `currency` और `plans` कीमतों या धन पथों को बदलते हैं। `nexcmp config apply --yes` उन्हें **छोड़ देता है** जब तक कि आप `--confirm-billing` न जोड़ें; फिर उन्हें `skipped` ("billing section - pass confirm_billing") के तहत सूचीबद्ध किया जाता है। फ़्लैग आपकी पुष्टिकरण है: इसके साथ, फ़ाइल में हर बिलिंग परिवर्तन (और कोई अन्य परिवर्तन जिसके लिए पुष्टिकरण की आवश्यकता होगी) दूसरे संकेत के बिना लागू किया जाता है। पहले `plan` चलाएँ और `$` के रूप में चिह्नित प्रत्येक पंक्ति को पढ़ें। जब किसी AI (MCP क्लाइंट या AI Chat में `config_apply` टूल) द्वारा समान फ़ाइल लागू की जाती है, तो फ़्लैग को अनदेखा कर दिया जाता है, और इसके बजाय धन परिवर्तन आपकी स्वीकृति की प्रतीक्षा करते हैं। ## Import/Export पेज का उपयोग करें {#use-the-import-export-page} 1. **System › Settings › Import/Export** खोलें। 2. **Export** के तहत **Get current configuration** पर क्लिक करें, फिर `nexcmp.yaml` को सहेजने के लिए **Download .yaml** पर क्लिक करें। गुप्त कुंजियाँ प्लेसहोल्डर के रूप में दिखाई देती हैं। 3. **Import** के तहत कोई फ़ाइल चुनें, उसे बॉक्स में खींचें, या YAML पेस्ट करें। 4. वैकल्पिक: **Secrets that come with it (not in the file)** खोलें और प्रत्येक संदर्भ के लिए एक नाम और मान जोड़ें, उदाहरण के लिए `smtp_password`। 5. **Preview changes** पर क्लिक करें। तालिका परिवर्तनों को अनुभागों द्वारा समूहीकृत करती है; धन-संबंधी अनुभागों में "Money-related" टैग होता है। जिन अनुभागों को आप नहीं चाहते हैं, उन्हें अनटिक करें। 6. यदि धन-संबंधी अनुभाग सूचीबद्ध हैं, तो **Also apply money-related changes (prices, payment gateways, balances)** पर टिक करें। टिक के बिना उन्हें छोड़ दिया जाता है। 7. **Apply selected** पर क्लिक करें। परिणाम दिखाता है कि क्या लागू किया गया, छोड़ा गया या विफल रहा। एक परिवर्तन जिसे पुष्टि की प्रतीक्षा के रूप में लौटाया जाता है, एक पुष्टिकरण कार्ड के रूप में दिखाई देता है; उस पर **Confirm** दबाएँ। शीर्ष दाईं ओर **JSON Schema** बटन स्कीमा खोलता है। ![निर्यात किए गए YAML को रखने वाले Export कार्ड और Import कार्ड के साथ Import/Export पेज](https://nexcmp.com/hi/docs/images/configure-with-ai/config-as-code-01-import-export.webp) ![बिंग टैग और Apply selected बटन के साथ अनुभागों द्वारा समूहीकृत परिवर्तनों की पूर्वावलोकन तालिका](https://nexcmp.com/hi/docs/images/configure-with-ai/config-as-code-02-preview.webp) ## कमांड लाइन से कोई भी टूल चलाएँ {#run-any-tool-from-the-command-line} `nexcmp admin` वही टूल चलाता है जो AI सहायक हैं ([टूल सूची](https://nexcmp.com/hi/docs/configure-with-ai/mcp-admin/#tools)) और JSON प्रिंट करता है: ```bash sudo nexcmp admin tools # name, scope and title of every tool sudo nexcmp admin system_health sudo nexcmp admin customers_search q=customer@example.com sudo nexcmp admin settings_update --json '{"values":{"support_email":"support@example.com"}}' ``` तर्क `key=value` युग्म हैं (मानों को JSON के रूप में पढ़ा जाता है जब वे पार्स होते हैं, अन्यथा पाठ के रूप में) या एक `--json '{...}'` ऑब्जेक्ट। यदि कार्रवाई को पुष्टि की आवश्यकता है, तो कमांड पूर्वावलोकन प्रिंट करता है और निकास कोड 3 और "Nothing changed" के साथ रुक जाता है। पूर्वावलोकन पढ़ें, फिर इसे लागू करने के लिए `--yes` के साथ वही कमांड फिर से चलाएँ। रूट के रूप में चलाने पर कमांड को सभी स्कोप के साथ 15 मिनट की कुंजी मिलती है, इसलिए पुष्टिकरण चरण आपका सुरक्षा उपाय है; `NEXCMP_KEY` के साथ कुंजी के अपने स्कोप लागू होते हैं। ## सत्यापित करें {#verify} 1. `sudo nexcmp config plan -f nexcmp.yaml` के ठीक बाद `apply --yes` "No changes" प्रिंट करता है। 2. एडमिन में, आपके द्वारा बदले गए पेज नए मान दिखाते हैं, और **Logs › Admin actions** परिवर्तनों को सूचीबद्ध करता है। 3. उसी फ़ाइल को दोबारा लागू करने से कुछ नहीं बदलता। ## Limits & notes {#limits-notes} - यह फ़ाइल ऊपर दी गई सेटिंग्ज़ को कवर करती है, ग्राहकों, सर्वर, इनवॉइस या बुनियादी ढांचे के स्रोतों (CloudStack और Proxmox कनेक्शन) को नहीं। इन्हें [AI Chat](https://nexcmp.com/hi/docs/configure-with-ai/ai-chat-in-admin/) या व्यवस्थापक पृष्ठों के माध्यम से कनेक्ट करें। - ज़ोन और प्लान `slug` द्वारा मिलाए जाते हैं। फ़ाइल में किसी स्लग का नाम न बदलें: ऐसा करने पर वह एक नई प्रविष्टि के रूप में बन जाएगा। - जिस प्लान का उपयोग ग्राहक पहले से कर रहे हैं, उसका आकार नहीं बदला जा सकता; इसके बजाय एक नया प्लान बनाएं। - निर्यात की गई फ़ाइलों को निजी रखें, भले ही उनमें कोई गोपनीय जानकारी न हो: उनमें आपके मूल्य, पते और खाते के नाम सूचीबद्ध होते हैं। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | `missing version: 1` | फ़ाइल इससे शुरू नहीं होती: `version: 1` | इसे जोड़ें। | | `unsupported version 2` | फ़ाइल में कोई अन्य वर्ज़न नंबर है | यह पैनल केवल वर्ज़न 1 को पढ़ता है। | | `unknown section 'x' (known: ...)` | वर्तनी की अशुद्धि वाला या असमर्थित टॉप-लेवल की (key) | ऊपर दिए गए अनुभागों का उपयोग करें। | | `YAML error: ...` | अमान्य YAML (इंडेंटेशन, टैब) | संदेश में बताई गई लाइन को ठीक करें। | | `config is larger than 1 MB` | फ़ाइल बहुत बड़ी है | इसे विभाजित करें और `--section` का उपयोग करें। | | `no API key: set NEXCMP_KEY=ak_... or run as root on the server` | कमांड को कोई की (key) नहीं मिली | `sudo` के साथ चलाएं, या `NEXCMP_KEY` का निर्यात करें और sudo के माध्यम से रखें। | | `panel not reachable` | पैनल सेवा डिफ़ॉल्ट पोर्ट पर नहीं चल रही है | `sudo nexcmp status` की जाँच करें। | | इसके अंतर्गत बिलिंग लाइनें: `skipped` | बिलिंग अनुभागों के लिए इसकी आवश्यकता है: `--confirm-billing` | फ्लैग जोड़ें और पहले `$` लाइनों की समीक्षा करें। | | इसके अंतर्गत आइटम: `pending` | बदलाव के लिए पुष्टि की आवश्यकता है | **API & AI agents**, या आयात/निर्यात परिणाम खोलें, और कार्ड पर **Confirm** दबाएं। | | कोई गुप्त जानकारी (secret) अपडेट नहीं की गई | कोई `NEXCMP_SECRET_` मान सेट नहीं किया गया था, इसलिए सहेजी गई गुप्त जानकारी को बनाए रखा गया | चर (variable) का निर्यात करें और दोबारा लागू करें। | | `errors` के अंतर्गत प्रविष्टि HTTP 403 `insufficient_scope` के साथ | की (key) में उस अनुभाग का दायरा (scope) नहीं है | दायरे वाली की (key) का उपयोग करें, या root के रूप में चलाएं। | | `errors` के अंतर्गत प्रविष्टि HTTP 403 `demo_read_only` के साथ | डेमो पैनल | वास्तविक इंस्टॉलेशन पर लागू करें। | --- # उदाहरण प्रॉम्प्ट {#example-prompts} > **एडमिन में कहाँ:** AI Chat (`/agent`) या किसी भी एडमिन पेज पर फ्लोटिंग **Ask AI** बटन। [MCP](https://nexcmp.com/hi/docs/configure-with-ai/mcp-admin/) से जुड़े किसी भी AI क्लाइंट में यही प्रॉम्प्ट काम करते हैं। ## यह क्या करता है {#what-it-does} ये प्रॉम्प्ट पूछते हैं कि कैसे पूछना है। प्रत्येक में वह सूचीबद्ध होता है जो असिस्टेंट बैकग्राउंड में करता है, इसके लिए आवश्यक स्कोप (बाहरी क्लाइंट या कुंजी के लिए) और जहाँ आपको अनुमति देने के लिए कहा जाता है। उदाहरण मानों को अपने मानों से बदलें। ::: tip चैट टेक्स्ट में कभी भी कोई गुप्त जानकारी (सीक्रेट) न टाइप करें पासवर्ड, API की और टोकन के लिए AI Chat इनपुट के पास वाले **Secret** फ़ील्ड का उपयोग करें ([details](https://nexcmp.com/hi/docs/configure-with-ai/ai-chat-in-admin/#secrets))। AI को केवल सीक्रेट का प्रतिनिधित्व करने वाला एक प्लेसहोलडर दिखाई देता है, न कि मान। बाहरी AI क्लाइंट के साथ सीक्रेट उस क्लाइंट से होकर गुजरता है, इसलिए इसे एडमिन में दर्ज करना पसंद करें। ::: ## देखें कि आप कहाँ हैं {#check-where-you-are} ```text Check my setup progress and tell me the next three things to do, in order. ``` असिस्टेंट `setup_checklist` और `system_health` (स्कोप `admin:read`) को कॉल करता है और वास्तविक स्थिति से उत्तर देता है। [Setup progress checklist](https://nexcmp.com/hi/docs/configure-with-ai/setup-checklist/) देखें। ## पहला सेटअप {#first-setup} ```text Help me finish the initial setup. Go through the checklist, explain each open step in one sentence, ask me for what you need, and show me every change before it is applied. ``` यह MCP प्रॉम्प्ट `initial-setup` जैसा ही है। इसके लिए `admin:read` और आपके द्वारा स्वीकृत चरणों के स्कोप की आवश्यकता होती है। AI Chat में प्रत्येक परिवर्तन के लिए पुष्टिकरण कार्ड की अपेक्षा करें। ## Proxmox VE क्लस्टर जोड़ें {#add-a-proxmox-ve-cluster} ```text I want to sell servers from my Proxmox VE cluster at https://pve.example.com:8006. Add it, test the connection, create a zone called "New York" in the US, attach the cluster to it, and then propose starter plans. ``` क्या होता है: 1. असिस्टेंट API टोकन आईडी (`user@realm!tokenid`) और इसके सीक्रेट के लिए पूछता है। सीक्रेट को **Secret** फ़ील्ड में रखें। पहले एक सीमित टोकन बनाएँ: [Proxmox VE](https://nexcmp.com/hi/docs/infrastructure/proxmox/)। 2. यह `proxmox_add`, `proxmox_test`, `zone_create` और `proxmox_attach_zone` को कॉल करता है। 3. यह `plans_from_offerings` के साथ प्लान प्रस्तावित करता है और आपकी स्वीकृति की प्रतीक्षा करता है (अगला उदाहरण देखें)। स्कोप: `infra:write`, `secrets:write`, `catalog:write`, `admin:read`। ## 40% मार्जिन के साथ प्लान टेबल बनाएँ {#create-a-plan-table-with-a-40-margin} ```text Suggest a starter plan table from my CloudStack offerings. My costs are $4 per vCPU per month, $2 per GB of RAM per month and $0.08 per GB of disk per month. Use a 40% margin, show me the table with cost, price per month and price per hour, and create the plans only after I approve. ``` सहायक `plans_from_offerings` को `margin_pct` 40 और आपकी लागत के साथ कॉल करता है। मार्जिन विक्रय मूल्य का वह हिस्सा है जो लाभ है: 40% पर, $60 की लागत वाली प्लान $100 में बिकती है। पहली कॉल केवल एक पूर्वावलोकन लौटाती है। जब आप अनुमोदन करते हैं, तो यह टूल को `apply=true` के साथ फिर से कॉल करता है, जो एक चरण में प्लान बनाता है और एक पुष्टिकरण मांगता है क्योंकि इसमें कीमतें शामिल हैं। Proxmox के लिए यह `backend_id` और डिफ़ॉल्ट आकार सूची (1, 2, 2 और 4 vCPU) का उपयोग करता है। स्कोप्स: `catalog:write`, `admin:read`। [Plans](https://nexcmp.com/hi/docs/catalog/plans/) देखें। ![लागत, मासिक कीमत और प्रति घंटे की कीमत के साथ प्लान की पूर्वावलोकन तालिका दिखाने वाला AI Chat उत्तर](https://nexcmp.com/hi/docs/images/configure-with-ai/example-prompts-01-plan-preview.webp) ## ईमेल कॉन्फ़िगर करें और एक टेस्ट संदेश भेजें {#configure-email-and-send-a-test-message} ```text Configure outgoing email with smtp.example.com, port 587, STARTTLS, user "mailer@example.com", sender name "Example Cloud", sender address "no-reply@example.com". Use my Secret field for the password "smtp_password". Then send a test email to admin@example.com. ``` असिस्टेंट `smtp_get`, `smtp_configure` और `smtp_test` को कॉल करता है और आपको बताता है कि संदेश स्वीकार किया गया था या नहीं। स्कोप: `settings:write`, `secrets:write`। [SMTP and e-mail templates](https://nexcmp.com/hi/docs/administration/smtp-and-emails/) देखें। ## Stripe सेट अप करें {#set-up-stripe} ```text Set up Stripe in test mode. My publishable key is pk_test_XXXX. Use the secret key and the webhook secret from my Secret field (names stripe_secret_key and stripe_webhook_secret). Then test the credentials and tell me which webhook URL I must add in Stripe. ``` `payment_configure` हमेशा दो चरणों वाली कार्रवाई होती है: आपको छिपे हुए सीक्रेट मानों के साथ एक पूर्वावलोकन दिखाई देता है और आप इसे स्वीकृत करते हैं। फिर `payment_test` Stripe के साथ क्रेडेंशियल की जाँच करता है। स्कोप: `billing:write`, `secrets:write`। केवल एक टेस्ट भुगतान के बाद लाइव मोड पर स्विच करें। [Stripe](https://nexcmp.com/hi/docs/billing/stripe/) देखें। ## Telegram अलर्ट चालू करें {#turn-on-telegram-alerts} ```text Add my Telegram chat 123456789 for admin alerts. The bot token is in my Secret field as telegram_bot_token. Send a test message. ``` असिस्टेंट `telegram_configure` और `telegram_test` को कॉल करता है। स्कोप: `settings:write`, `secrets:write`। [Telegram notifications](https://nexcmp.com/hi/docs/administration/telegram-notifications/) देखें। ## कोई कस्टमर ढूँढें और क्रेडिट जोड़ें {#find-a-customer-and-add-credit} ```text Find the customer with e-mail customer@example.com, show me their balance and servers, and add $10.00 of credit because of the outage on Monday. ``` असिस्टेंट `customers_search` और `customer_get` (केवल पढ़ने के लिए) को कॉल करता है, फिर `customer_adjust_balance` 1000 और एक कारण के साथ `delta_cents` को कॉल करता है। इसके लिए **हमेशा** आपकी स्वीकृति की आवश्यकता होती है: पुष्टिकरण कार्ड कहता है "changes a customer balance" और राशि तथा वह कारण दिखाता है जो ऑडिट लॉग में जाएगा। स्कोप: `admin:read`, `billing:write`। ## मेरा कॉन्फ़िगरेशन एक्सपोर्ट करें {#export-my-configuration} ```text Export my whole configuration as YAML. Do not include secrets. Then tell me which settings differ from a typical new installation. ``` असिस्टेंट `config_export` को कॉल करता है। सीक्रेट को `secret://` संदर्भों द्वारा प्रतिस्थापित किया जाता है। परिणाम को `nexcmp.yaml` के रूप में सहेजें और इसे संस्करण नियंत्रण में रखें। [Configuration as code](https://nexcmp.com/hi/docs/configure-with-ai/config-as-code/) देखें। स्कोप: `admin:read`। ## अच्छे प्रॉम्प्ट लिखें {#write-good-prompts} - लक्ष्य और तथ्य दें: नाम, मूल्य, ईमेल पते। गुप्त जानकारी पेस्ट न करें। - पैसा खर्च करने वाले या डेटा हटाने वाले किसी भी काम के लिए पहले पूर्वावलोकन मांगें। - सहायक से "बदलाव करने से पहले मौजूदा मान पढ़ें" कहें। अंतर्निहित निर्देश पहले से ही ऐसा कहते हैं। - यदि कोई उत्तर गलत लगे, तो पूछें "आपने कौन सा टूल और किन तर्कों के साथ कॉल किया था?"। AI Chat में टूल कार्ड दोनों दिखाते हैं। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | सहायक कहता है कि उसके पास किसी चीज़ के लिए कोई टूल नहीं है | उस टूल का दायरा नहीं दिया गया है, या वह कार्रवाई AI के लिए बंद है | [Admin API keys](https://nexcmp.com/hi/docs/configure-with-ai/admin-api-keys/#what-a-key-can-never-do) की जाँच करें, या इसे एडमिन में करें। | | यह आपसे पासवर्ड पेस्ट करने को कहता है | मॉडल ने निर्देशों की अनदेखी की | अस्वीकार करें; Secret फ़ील्ड का उपयोग करें या एडमिन में मान दर्ज करें। | | "do it" के बाद कुछ नहीं बदलता | बदलाव आपकी पुष्टि का इंतज़ार कर रहे हैं | पुष्टि कार्ड पर स्क्रॉल करें और **Confirm** दबाएँ। | | योजनाएँ ऐसी कीमत पर बनाई गईं जिसकी आपको उम्मीद नहीं थी | प्रॉम्प्ट में लागत या मार्जिन गलत थे | Plans पेज पर योजनाओं को संपादित करें या सहायक से उनका मूल्य फिर से तय करने के लिए कहें; मूल्य बदलावों के लिए पुष्टि की आवश्यकता होती है। | --- # सेटअप प्रगति चेकलिस्ट {#setup-progress-checklist} > **एडमिन में कहाँ:** Overview › Dashboard (`/`), शीर्ष पर **Setup progress** कार्ड। Plans, Customers, Zones, Payments और Infrastructure पर खाली सूचियाँ समान सहायता दिखाती हैं। ## यह क्या करता है {#what-it-does} पहले ग्राहक द्वारा ऑर्डर करने और भुगतान करने से पहले एक नए इंस्टॉलेशन को दस चीज़ों की आवश्यकता होती है। **Setup progress** कार्ड वास्तविक कॉन्फ़िगरेशन से उनकी जाँच करता है, दिखाता है कि कितने पूरे हो गए हैं, **अगला चरण** बताता है और उस पृष्ठ का लिंक देता है जहाँ आप इसे करते हैं। यदि आपके पास कोई AI स्रोत जुड़ा हुआ है, तो **Do it for me** उस चरण के लिए एक तैयार प्रश्न के साथ [AI assistant](https://nexcmp.com/hi/docs/configure-with-ai/ai-chat-in-admin/) खोलता है। सहायक (और [MCP](https://nexcmp.com/hi/docs/configure-with-ai/mcp-admin/) पर कोई भी AI क्लाइंट) `setup_checklist` टूल के साथ समान सूची को पढ़ सकता है। ## दस चरण {#the-ten-steps} | # | Step | यह पूर्ण माना जाता है जब | आप इसे कहाँ करते हैं | |---|---|---|---| | 1 | लाइसेंस सक्रिय | आपके डोमेन के लिए लाइसेंस सक्रिय कर दिया गया है | System › Admin › License & updates (`/license`)। [License and purchase](https://nexcmp.com/hi/docs/getting-started/license-and-purchase/) देखें। | | 2 | एक बुनियादी ढांचा स्रोत कनेक्ट करें | CloudStack कनेक्ट है, या कम से कम एक Proxmox VE क्लस्टर जोड़ा गया है | Infrastructure › Cloud provider › Providers (`/infra/providers`)। [CloudStack](https://nexcmp.com/hi/docs/infrastructure/cloudstack/) और [Proxmox VE](https://nexcmp.com/hi/docs/infrastructure/proxmox/) देखें। | | 3 | Zone बनाएँ | कम से कम एक ज़ोन मौजूद है | Infrastructure › Datacenter › Zone (`/infra/zones`)। [Zones](https://nexcmp.com/hi/docs/infrastructure/zones/) देखें। | | 4 | OS templates | कम से कम एक टेम्पलेट सक्षम है | Services › Virtual Machines › Plans & pricing, टैब Templates (`/vm/catalog?tab=templates`)। [OS templates](https://nexcmp.com/hi/docs/infrastructure/templates/) देखें। | | 5 | योजनाएँ बनाएँ | कम से कम एक योजना सक्षम है | Services › Virtual Machines › Plans & pricing (`/vm/catalog`)। [Plans and pricing](https://nexcmp.com/hi/docs/catalog/plans/) देखें। | | 6 | भुगतान सेट अप करें | Stripe, PayPal, क्रिप्टो या बैंक ट्रांसफर कॉन्फ़िगर किया गया है | Finance › Payment channels (`/payments`)। [Payment channels](https://nexcmp.com/hi/docs/billing/payment-channels/) देखें। | | 7 | ईमेल (SMTP) | आउटगोइंग ईमेल कॉन्फ़िगर किया गया है | System › Settings › Email (`/settings/email`)। [SMTP and e-mail templates](https://nexcmp.com/hi/docs/administration/smtp-and-emails/) देखें। | | 8 | ब्रेनडिंग | एक लोगो अपलोड किया गया है, या ब्रांड का नाम डिफ़ॉल्ट से बदल दिया गया है | System › Settings › Brand (`/settings/branding`)। [Branding](https://nexcmp.com/hi/docs/customers/branding/) देखें। | | 9 | नियम और गोपनीयता (Terms & privacy) | कम से कम एक कानूनी पाठ भरा गया है | System › Settings › Legal (`/settings/legal`)। [Legal pages](https://nexcmp.com/hi/docs/customers/legal/) देखें। | | 10 | एक टेस्ट ऑर्डर दें | कम से कम एक ऑर्डर मौजूद है | यह जाँचने के लिए कि सब कुछ ठीक से काम करता है, ग्राहक पोर्टल में एक ग्राहक के रूप में ऑर्डर दें; यह कार्ड Billing पृष्ठ (`/billing`) से लिंक करता है। | कार्ड पर `done/total` (उदाहरण के लिए 6/10), एक प्रगति बार, **Open** के साथ अगला चरण और, जब कोई AI स्रोत कनेक्ट होता है, **Do it for me** दिखाई देता है। इसके पृष्ठ पर जाने के लिए किसी चरण पर क्लिक करें। किसी चरण के बगल में एक छोटा लिंक संबंधित दस्तावेज़ीकरण पृष्ठ खोलता है; कुछ चरणों में "2 zone(s)" जैसा विवरण भी दिखाई देता है। ![दसों में से तीन चरणों के पूरे होने तथा Open और Do it for me बटनों के साथ Overview पर सेटअप प्रगति कार्ड](https://nexcmp.com/hi/docs/images/configure-with-ai/setup-checklist-01-card.webp) ## इसका उपयोग करें {#use-it} 1. Overview खोलें। कार्ड सबसे ऊपर रहता है। इसे सिकोड़ने के लिए तीर का उपयोग करें; पैनल आपके ब्राउज़र में आपकी पसंद को याद रखता है। 2. अगले चरण के पृष्ठ पर जाने के लिए **Open** पर क्लिक करें, या **Do it for me** पर क्लिक करें। 3. **Do it for me** के साथ, सहायक "40% मार्जिन के साथ मेरे प्रस्तावों से एक शुरुआती योजना तालिका सुझाएं, इसे बनाने से पहले मुझे पूर्वावलोकन दिखाएं" जैसे अनुरोध के साथ खुलता है। इसके प्रश्नों के उत्तर दें, फिर प्रत्येक कार्ड की समीक्षा करें और **Confirm** करें। [AI Chat in the admin](https://nexcmp.com/hi/docs/configure-with-ai/ai-chat-in-admin/) देखें। 4. जब सभी दस चरण पूरे हो जाते हैं तो कार्ड गायब हो जाता है। ### रिक्त सूचियाँ {#empty-lists} जब Plans, Customers, Zones, Payments या Infrastructure खाली होते हैं, तो पेज एक **Next step** ब्लॉक दिखाता है जिसमें एक विवरण, कार्रवाई के लिए एक बटन, **Do it for me** और दस्तावेज़ीकरण का लिंक होता है, ताकि आपको कभी खाली टेबल न मिले। ![अगले चरण के स्पष्टीकरण और Do it for me बटन के साथ रिक्त Plans पृष्ठ](https://nexcmp.com/hi/docs/images/configure-with-ai/setup-checklist-02-empty.webp) ## इसे अपने शब्दों में पूछें {#ask-for-it-in-your-own-words} आपको कार्ड की आवश्यकता नहीं है। AI Chat या किसी भी कनेक्टेड AI क्लाइंट में आप पूछ सकते हैं: ```text Check my setup progress and take me through the open steps, one at a time. ``` यह MCP प्रॉम्प्ट `initial-setup` भी है। सहायक `setup_checklist` को कॉल करता है, बताता है कि प्रत्येक खुला चरण क्यों महत्वपूर्ण है, आवश्यक जानकारी मांगता है और मिलान करने वाले टूल का उपयोग करता है। आवश्यक स्कोप: सूची पढ़ने के लिए `admin:read`, और उस चरण का स्कोप जिसे आप पूरा करना चाहते हैं। [Example prompts](https://nexcmp.com/hi/docs/configure-with-ai/example-prompts/) देखें। ## सत्यापित करें {#verify} 1. आपके द्वारा कोई चरण समाप्त करने के बाद, अगली बार Overview लोड होने पर कार्ड की गिनती बढ़ जाती है। 2. सहायक में, `setup_checklist` समाप्त चरण पर `done: true` के साथ, वही संख्याएँ लौटाता है। ## Limits & notes {#limits-notes} - जाँच इस बात पर देखती है कि क्या सहेजा गया है, यह नहीं कि यह काम करता है या नहीं। एक कॉन्फ़िगर किया गया गेटवे पूर्ण गिना जाता है भले ही उसका परीक्षण विफल हो जाए। प्रत्येक पृष्ठ पर **Test** बटन और समस्याओं के लिए `system_health` टूल का उपयोग करें। - यह कार्ड केवल प्रशासकों के लिए है। - **Do it for me** को System › Settings › AI accounts के अंतर्गत कनेक्टेड AI स्रोत की आवश्यकता है; इसके बिना केवल **Open** दिखाया जाता है। - दस चरण प्रत्येक स्थापना के लिए समान हैं; कोई चरण जिसे आप उपयोग करने की योजना नहीं बनाते हैं (उदाहरण के लिए प्राइवेट क्लाउड पर भुगतान) फिर भी खुला गिना जाता है। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | कार्ड गायब है | सभी दस चरण पूर्ण हो गए हैं, या कार्ड लोड नहीं किया जा सका | Overview को पुनः लोड करें। स्थिति देखने के लिए AI Chat में `setup_checklist` पूछें। | | आपके द्वारा करने के बाद भी एक चरण खुला रहता है | सेव पूरा नहीं हुआ, या शर्त अभी पूरी नहीं हुई है (उदाहरण के लिए टेम्पलेट मौजूद है लेकिन अक्षम है) | चरण का पेज खोलें और ऊपर दी गई तालिका की जाँच करें। | | लोगो बदलने के बाद ब्रांडिंग खुली रहती है | ब्रांडिंग तब गिनती है जब लोगो मौजूद हो या ब्रांड का नाम डिफ़ॉल्ट "NexCMP" से अलग हो | कोई लोगो अपलोड करें या अपना खुद का नाम सेट करें। | | **Do it for me** कुछ नहीं करता | कोई AI सोर्स कनेक्ट नहीं है, या डेमो पैनल है | AI खातों में कोई सोर्स कनेक्ट करें। | --- # SMTP और ई-मेल टेम्पलेट {#smtp-and-e-mail-templates} > **एडमिन में कहाँ:** System › Settings › Email (`/settings/email`) — टैब **SMTP** और **Email templates**। डिलीवरी लॉग: Overview › Support › Sent emails (`/support/emails`)। ## यह क्या करता है {#what-it-does} NexCMP साइन-अप सत्यापन, पासवर्ड रीसेट, "VM ready" (शुरुआती पासवर्ड के साथ), इनवॉइस, कम बैलेंस, नवीनीकरण, टॉप-अप, सपोर्ट रिप्लाई और बहुत कुछ के लिए ई-मेल भेजਦਾ है। ये सभी आपके द्वारा प्रदान किए गए **एक SMTP खाते** के माध्यम से जाते हैं। संदेश और टेम्पलेट 16 भाषाओं में मौजूद हैं; ग्राहक की भाषा का उपयोग किया जाता है। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | SMTP सर्वर | किसी भी प्रोवाइडर के होस्ट, पोर्ट और क्रेडेंशियल्स (आपका अपना सर्वर, Brevo, Amazon SES, Mailgun, Google Workspace …) | | नेटवर्क | NexCMP सर्वर से SMTP होस्ट और पोर्ट (587 STARTTLS, 465 TLS या 25) पर आउटबाउंड TCP | | प्रेषक डोमेन | एक डोमेन जिसे आप नियंत्रित करते हैं, जिसमें प्रोवाइडर के लिए **SPF और DKIM** पब्लिश किए गए हों और DMARC रिकॉर्ड हो | | अनुमति | SMTP खाते को **From** पते के रूप में भेजने की अनुमति होनी चाहिए | ::: warning डिलीवरी की क्षमता "VM ready" जैसे ई-मेल में पासवर्ड होते हैं। यदि प्रेषक डोमेन का SPF/DKIM/DMARC, SMTP प्रोवाइडर से मेल नहीं खाता है, तो वे स्पैम में चले जाते हैं। पेज आपको इसकी याद दिलाता है। ::: ## ई-मेल प्रोवाइडर तैयार करें {#prepare-the-e-mail-provider} 1. अपने प्रोवाइडर के पैनल में अपना भेजने वाला डोमेन जोड़ें और सत्यापित करें (उदाहरण के लिए `example.com`)। 2. प्रोपाइडर द्वारा दिखाए गए SPF, DKIM और DMARC DNS रिकॉर्ड पब्लिश करें। 3. एक SMTP उपयोगकर्ता (या API-SMTP कुंजी) बनाएं और होस्ट, पोर्ट, उपयोगकर्ता नाम और पासवर्ड नोट करें। ## NexCMP में कनेक्ट करें {#connect-in-nexcmp} 1. **System › Settings › Email** खोलें, टैब **SMTP**। 2. फ़ॉर्म भरें: | फ़ील्ड | Example | नोट्स | |---|---|---| | होस्ट | `smtp.example.net` | SMTP सर्वर | | पोर्ट | `587` | | | सुरक्षा | STARTTLS (587) | वह मोड चुनें जिसकी आपके प्रोवाइडर को आवश्यकता है | | उपयोगकर्ता नाम | `smtp-user` | | | पासवर्ड | (छिपा हुआ) | केवल लिखने योग्य: पेज केवल यह दिखाता है कि क्या कोई सेट है | | प्रेषक ई-मेल | `no-reply@example.com` | प्रोवाइडर पर अधिकृत होना चाहिए | | प्रेषक का नाम | `Example Cloud` | डिफ़ॉल्ट रूप से आपके ब्रांड के नाम पर सेट होता है | | रिप्लाई-टू (वैकल्पिक) | `support@example.com` | जहाँ ग्राहक के उत्तर जाते हैं | ![होस्ट, पोर्ट, सुरक्षा, उपयोगकर्ता नाम, प्रेषक फ़ील्ड और Send test बटन के साथ Settings, Email का SMTP टैब](https://nexcmp.com/hi/docs/images/administration/smtp-and-emails-01-smtp.webp) 3. **Save** पर क्लिक करें, फिर **Send test** पर क्लिक करें और अपना खुद का पता दर्ज करें। सेटिंग्स एक एक्सेस-प्रतिबंधित फ़ाइल (`smtp.json`, मोड 0600) में संग्रहीत होती हैं और केवल बैकग्राउंड वर्कर `nexcmp-vmd` मेल भेजता है; वेब सेवा इसे केवल कतार में रखती है। ## सत्यापित करें {#verify} - टेस्ट संदेश इनबॉक्स में आता है (स्पैम भी जांचें)। संदेश स्रोत में, `dkim=pass` और `spf=pass` की पुष्टि करें। - **Support › Sent emails** खोलें: प्रत्येक संदेश की एक स्थिति (queued, sent, failed) और डिलीवरी परिणाम होता है। विफल संदेशों को अधिकतम 3 बार पुनः प्रयास किया जाता है। - पोर्टल में एक टेस्ट ग्राहक पंजीकृत करें और पुष्टि करें कि सत्यापन ई-मेल आ गया है। ## ई-मेल टेम्पलेट संपादित करें {#edit-e-mail-templates} टैब **Email templates** प्रत्येक टेम्पलेट को कुंजी द्वारा सूचीबद्ध करता है, उन भाषाओं के साथ जिनमें यह मौजूद है (उदाहरण के लिए `verify_email`, `reset_password`, `vm_ready`, `invoice_paid`, `low_balance`, `topup_received`, `ticket_reply`, `scale_up` …)। 1. किसी टेम्पलेट पर क्लिक करें और भाषा चुनें। 2. विषय और मुख्य भाग संपादित करें। संदेश कतार में रखे जाने पर प्लेसहोल्डर भर दिए जाते हैं। 3. सहेजें। परिवर्तन इसके बाद कतार में रखे गए संदेशों पर **तुरंत** लागू होता है। ![टेम्पलेट कुंजियों और उनकी भाषाओं को सूचीबद्ध करने वाला Email templates टैब](https://nexcmp.com/hi/docs/images/administration/smtp-and-emails-02-templates.webp) ## सीमाएँ और नोट्स {#limits-and-notes} - प्रति इंस्टॉलेशन एक SMTP खाता। पुनर्विक्रेताओं के ग्राहकों को उसी खाते के माध्यम से ई-मेल प्राप्त होता है जब तक कि पुनर्विक्रेता को अन्यथा कॉन्फ़िगर न किया गया हो। - प्रदाता भेजने की सीमाएं लागू होती हैं; NexCMP पुनः प्रयास करने से आगे थ्रॉटल नहीं करता है। - SMTP के बिना पैनल काम करता है, लेकिन ग्राहकों द्वारा साइन-अप सत्यापन और पासवर्ड रीसेट पूरा नहीं किया जा सकता है। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | टेस्ट ई-मेल कभी नहीं पहुंचता | गलत क्रेडेंशियल, पोर्ट अवरुद्ध, प्रदाता द्वारा प्रेषक अधिकृत नहीं | SMTP त्रुटि के लिए `journalctl -u nexcmp-vmd` जांचें; STARTTLS के साथ पोर्ट 587 आज़माएं; प्रदाता के यहाँ From पते की पुष्टि करें। | | संदेश स्पैम में जाते हैं | SPF/DKIM/DMARC अनुपस्थित या गलत संरेखित | प्रदाता के रिकॉर्ड प्रकाशित करें और उस डोमेन से भेजें। | | Sent emails में "failed" | प्रदाता ने संदेश अस्वीकार कर दिया | प्रदाता की प्रतिक्रिया के लिए पंक्ति खोलें। | | सहेजने के बाद पासवर्ड फ़ील्ड खाली दिखाई देती है | डिज़ाइन के अनुसार (केवल-लिखने योग्य) | पासवर्ड संग्रहीत होने के बाद लेबेल "current: set" दिखाता है। | --- # Telegram और एडमिन अलर्ट {#telegram-and-admin-alerts} > **एडमिन में कहाँ:** System › Settings › Admin alerts (`/settings/alerts`)। सपोर्ट शॉर्टकट: Customers › Support › Tickets (`/support/tickets`), टैब **Settings**। ## यह क्या करता है {#what-it-does} जब किसी चीज़ पर ध्यान देने की आवश्यकता होती है, और जब कोई ग्राहक साइन अप करता है या डिपॉजिट क्रेडिट होता है, तो NexCMP **आपको** — ऑपरेटर को — सूचित करता है। अलर्ट एक या अधिक **चैनलों** पर जाते हैं: Telegram, वेबहुक, या ई-मेल। एडमिन चैनलों पर भेजे जाने वाले इवेंट्स में शामिल हैं: डिप्लॉयमेंट विफलता, VM गायब, नेटवर्क डाउन, खाली IP 30 से कम, समाप्त होने वाली वस्तु (1-घंटे की चेतावनी), Stripe विवाद, मृत वर्कर, क्लस्टर RAM इसकी सीमा से अधिक, नया ग्राहक साइन-अप, और क्रेडिट किए गए डिपॉजिट। ग्राहक इवेंट्स को स्थायी रूप से कतार में रखा जाता है और Telegram द्वारा स्वीकार किए जाने तक बढ़ते विलंब (30 सेकंड से लेकर 1 घंटे तक) के साथ पुनः प्रयास किया जाता है। ## आवश्यकताएं {#requirements} | आइटम | आवश्यकता | |---|---| | Telegram | **@BotFather** के साथ बनाया गया एक बॉट (टोकन) और उस ग्रुप या उपयोगकर्ता की **चैट ID** जिसे संदेश प्राप्त होने चाहिए | | नेटवर्क | `api.telegram.org` पर आउटबाउंड HTTPS | | वेबहुक (विकल्प) | एक HTTPS एंडपॉइंट जो अलर्ट पेलोड स्वीकार करता है | ## Telegram तैयार करें {#prepare-telegram} 1. Telegram में **@BotFather** खोलें, `/newbot` भेजें, कोई नाम चुनें; **bot token** कॉपी करें (`123456789:AA...`)। 2. एक ग्रुप बनाएं, उसमें बॉट को जोड़ें और कोई भी संदेश भेजें। 3. **chat ID** खोजें: ब्राउज़र में `https://api.telegram.org/bot/getUpdates` खोलें और `chat.id` पढ़ें (ग्रुप ID `-` से शुरू होते हैं)। ## NexCMP में कनेक्ट करें {#connect-in-nexcmp} 1. **System › Settings › Admin alerts** खोलें। 2. **Add channel** में **Type: Telegram** चुनें, **Destination** को चैट ID पर सेट करें और **Secret (bot token)** में टोकन दर्ज करें। **Add** पर क्लिक करें। 3. सुनिश्चित करें कि टॉगल **Send admin Telegram (VM module)** चालू है; *VM module status (read-only)* लाइन "on" दिखाती है। ![Telegram पर सेट Add channel फ़ॉर्म के साथ Admin alerts पेज](https://nexcmp.com/hi/docs/images/administration/telegram-notifications-01-channel.webp) ## सत्यापित करें {#verify} चैनल **Configured channels** के अंतर्गत दिखाई देता है। कोई इवेंट ट्रिगर करें (उदाहरण के लिए किसी टेस्ट ग्राहक को रजिस्टर करें) और संदेश ग्रुप में आ जाता है। यदि कोई चैनल कॉन्फ़िगर नहीं किया गया है तो पेज चेतावनी देता है "Without a channel, attacks will go unnoticed" और लॉग में Telegram इवेंट्स केवल स्थानीय रूप से दर्ज होते हैं। ## ग्राहकों के लिए सपोर्ट शॉर्टकट {#support-shortcuts-for-customers} ग्राहक सपोर्ट विजेट **Telegram** और **Zalo** बटन दिखा सकता है। सपोर्ट सेटिंग में कॉन्फ़िगर होने तक वे छिपे रहते हैं: Telegram के लिए `https://t.me/...` लिंक और Zalo लिंक या QR दर्ज करें। केवल `https://` लिंक स्वीकार किए जाते हैं। सपोर्ट चैट आपके Telegram ग्रुप को प्रश्न और ड्राफ्ट उत्तर के साथ सूचित भी कर सकता है — [AI Chat](https://nexcmp.com/hi/docs/ai/ai-chat/) देखें। ## सीमाएँ और नोट्स {#limits-and-notes} - बॉट टोकन चैनल के साथ सहेजा जाता है और फिर कभी नहीं दिखाया जाता है। - Telegram इवेंट्स पहले सक्षम Telegram चैनल का उपयोग करते हैं जिसमें गंतव्य और टोकन दोनों हों। ## ट्रबलशूटिंग {#troubleshooting} | लक्षण | कारण | सुधार | |---|---|---| | कोई संदेश नहीं आता | गलत chat ID, ग्रुप में बॉट का न होना, या बॉट को कभी संदेश न भेजा जाना | `getUpdates` के साथ ID की पुनः जांच करें; पहले बॉट या ग्रुप को एक संदेश भेजें। | | कुछ समय के लिए काम करता है फिर बंद हो जाता है | BotFather में टोकन रद्द कर दिया गया है | एक नया टोकन बनाएं और चैनल को अपडेट करें। | | लॉग में `Telegram: no channel` | कोई सक्षम Telegram चैनल नहीं है | उपर्युक्त अनुसार एक जोड़ें। | --- # ऑडिट लॉग और गतिविधि {#audit-log-and-activity} > **एडमिन में कहाँ:** System › Logs › Activity (`/logs`), Admin actions (`/logs/admin`), Console (`/logs/console`), Login (`/logs/logins`), VM events (`/logs/vm-events`); Overview › Support › Sent emails. NexCMP प्रत्येक महत्वपूर्ण गतिविधि को दर्ज करता है। एकल टाइमलाइन के रूप में **Activity** पेज का उपयोग करें, और सीमित करने के लिए अन्य टैब का उपयोग करें। ## टैब {#tabs} | टैब | सामग्री | |---|---| | **Activity** | सभी स्रोतों पर एकीकृत टाइमलाइन: एडमिन गतिविधियां, VM इवेंट्स, लॉगिन, सहबद्ध (affiliate) और सिस्टम त्रुटियां | | **Admin actions** | एडमिनिस्ट्रेटर ने क्या बदला (उदाहरण के लिए `customer.block`, `customer.delete`), एडमिनिस्ट्रेटर के IP के साथ | | **Console** | व्यवस्थापक कंसोल साइन-इन और सिस्टम अनुरोध जैसे कि कोई अपडेट अनुरोध | | **Login** | ग्राहक साइन-इन और विफलताएं | | **VM events** | प्रति वर्चुअल मशीन डिप्लॉय चरण, निर्माण, पासवर्ड, नष्ट करना और अन्य लाइफसाइकिल इवेंट्स | ## एक पंक्ति पढ़ना {#reading-a-row} स्तंभ: **Time**, **Source**, **Level**, **Actor** (कौन), **Target**, **Services**, **Action** (इवेंट कोड जैसे `customer.delete`) और **Details**। पूर्ण रिकॉर्ड के लिए **Open** पर क्लिक करें। ![समयरेखा के ऊपर स्रोत, साइट और सेवा फ़िल्टर वाला Activity पृष्ठ](https://nexcmp.com/hi/docs/images/administration/audit-log-01-activity.webp) ## फ़िल्टर और खोज {#filter-and-search} 1. ड्रॉप-डाउन से एक **source**, **site** और **service** चुनें। 2. एक **From date** / **To date** रेंज सेट करें। 3. खोज बॉक्स में कोई इवेंट कोड (उदाहरण के लिए `customer.block` या `destroy`) टाइप करें — गतिविधि खोज इवेंट कोड से मेल खाती है। ## रिटेंशन और एक्सपोर्ट {#retention-and-exports} रिकॉर्ड `/var/lib/nexcmp` में NexCMP डेटाबेस में रहते हैं और [Backups](https://nexcmp.com/hi/docs/getting-started/backup-and-restore/) में शामिल होते हैं। अवधारण (retention) लॉग पर निर्भर करता है: 180 दिनों से पुराने ग्राहक साइन-इन प्रयास और 60 दिनों से पुराने ग्राहक API-की अनुरोध लॉग साफ़ कर दिए जाते हैं। व्यवस्थापक API-की ऑडिट लगभग 200,000 हालिया रिकॉर्ड तक रखता है। इन सीमाओं का अर्थ एकीकृत गतिविधि समयरेखा के लिए समान अवधारण नहीं है। ## सामान्य उपयोग {#common-uses} | प्रश्न | कहाँ देखना है | |---|---| | इस ग्राहक को किसने निलंबित किया? | Admin actions, खोजें `customer.block` | | कोई VM क्यों गायब हो गया? | VM events, VM की ID से फ़िल्टर करें; Activity भी | | क्या ग्राहक को ईमेल प्राप्त हुआ? | Overview › Support › Sent emails | | अंतिम अपडेट का अनुरोध कब किया गया था? | Console टैब | --- # सुरक्षा {#security} > **Where in the admin:** System › Admin › Console security (`/account`), Admin users (`/users`); System › Settings › Customer logins (`/settings/login`)। ## एडमिन कंसोल {#admin-console} ### टू-फैक्टर ऑथेंटिकेशन (TOTP) {#two-factor-authentication-totp} कंसोल इंटरनेट से पहुंच योग्य है, इसलिए TOTP चालू करें। 1. **System › Admin › Console security** खोलें। 2. **Two-factor authentication (TOTP)** के अंतर्गत **Start setup** पर क्लिक करें। 3. Google Authenticator, Authy, 1Password या Bitwarden से QR कोड स्कैन करें, फिर 6-अंकों का कोड दर्ज करें। ### अनुमत कंसोल IP रेंज {#allowed-console-ip-ranges} **Allowed console IP ranges** के अंतर्गत प्रति लाइन एक IP या CIDR (IPv4 या IPv6) दर्ज करें। **खाली छोड़ने का अर्थ है कहीं से भी।** रेंज के बाहर साइन-इन और एडमिन API दोनों ब्लॉक हो जाते हैं। ::: warning खुद को लॉक आउट न करें यह पृष्ठ आपका वर्तमान IP दिखाता है और मांगता है कि नई सूची में वह शामिल हो। **+ Add my IP** का उपयोग करें। यदि आप फिर भी लॉक आउट हो जाते हैं, तो सर्वर से [emergency access](https://nexcmp.com/hi/docs/getting-started/cli-reference/#emergency-access) का उपयोग करें। ::: ### पासवर्ड बदलें {#change-password} **Current password**, **New password** और **Confirm new password** भरें। एक लंबा, अद्वितीय पासवर्ड उपयोग करें (12 वर्ण या अधिक; सेटअप विज़ार्ड पहले एडमिनिस्ट्रेटर के लिए 12 लागू करता है)। ### एडमिनिस्ट्रेटर खाते और भूमिकाएं {#administrator-accounts-and-roles} **System › Admin › Admin users** खोलें और **+ Create account** का उपयोग करें। | Role | एक्सेस | |---|---| | `admin` | एडमिन API तक पूर्ण एक्सेस | | `staff` | पूरे सिस्टम में केवल-पढ़ने के लिए (Read-only) | | `user` | एक ग्राहक के संसाधनों का केवल-पढ़ने के लिए दृश्य | रूट खाता वह है जो [setup wizard](https://nexcmp.com/hi/docs/getting-started/setup-wizard/) में बनाया गया था। पंक्ति क्रियाएं: **Edit**, **Reset PW**, **Key**, **Delete**। पासवर्ड साल्टेड हैश के रूप में संग्रहीत होते हैं; खाता बदलना या लॉक करना उसके सत्रों को तुरंत समाप्त कर देता है। ## ग्राहक साइन-इन {#customer-sign-in} **System › Settings › Customer logins** खोलें। | सेटिंग | यह क्या करता है | |---|---| | **Google sign-in** | सक्षम करें, फिर OAuth क्लाइंट ID और सीक्रेट दर्ज करें। पेज पर दिखाई देने वाले **Callback URL** को *Google Cloud Console › APIs & Services › Credentials › OAuth client ID › Authorized redirect URIs* में कॉपी करें। **Test configuration** का उपयोग करें। | | **GitHub login** | इसी तरह, *GitHub › Settings › Developer settings › OAuth Apps › Authorization callback URL* के साथ | | **Passkey** | फिंगरप्रिंट, पिन या हार्डवेयर की लॉगिन; डिफ़ॉल्ट रूप से चालू। पासकी डोमेन से बंधे होते हैं; प्रत्येक रीeller डोमेन अपने दम पर काम करता है। रीब्रैंड के बाद ग्राहकों को उपयोगी संकेत मिलने के लिए *Legacy passkey Domain* में पुराना डोमेन दर्ज करें | | **साइन-इन विधियाँ जोड़ते समय दोबारा प्रमाणीकरण करें** | पासकी जोड़ने या Google/GitHub लिंक करने से पहले पासवर्ड दोबारा मांगें (डिफ़ॉल्ट रूप से बंद) | | **Captcha** | साइन-अप पर Cloudflare Turnstile या Google reCAPTCHA: सक्षम करें, प्रदाता चुनें, साइट की और सीक्रेट की दर्ज करें | | **Block e-mail domains** | प्रति लाइन एक डोमेन (अधिकतम 2000)। मेल खाने वाले पते साइन-अप पर अस्वीकार कर दिए जाते हैं `email_domain_blocked` | ![Google साइन-इन और उसके कॉलबैक यूआरएल को दिखाने वाला ग्राहक लॉगिन पेज](https://nexcmp.com/hi/docs/images/administration/security-01-customer-logins.webp) ### अंतर्निहित नीतियां {#built-in-policies} | पॉलिसी | मान | |---|---| | ग्राहक पासवर्ड | कम से कम 10 वर्ण, अक्षर और अंक | | ग्राहक सत्र | 30 दिन; "ग्राहक के रूप में लॉगिन करें" सत्र 1 घंटे तक चलते हैं | | ईमेल सत्यापन | बिक्री सेटिंग्स में *require e-mail verified* चालू होने पर VM बनाने से पहले आवश्यक | | एंटी-कार्डिंग | न्यूनतम टॉप-अप से कम राशि वाले खाते केवल सीमित संख्या में VM बना सकते हैं | ## सर्वर हार्डनिंग {#server-hardening} - सेटअप और TLS के बाद पोर्ट 3000 बंद कर दिया जाता है; [Installation](https://nexcmp.com/hi/docs/getting-started/installation/#the-panel-port-3000) देखें। - सेवा एक अप्रिविलेज्ड `nexcmp` उपयोगकर्ता के रूप में प्रतिबंधित systemd सैंडबॉक्स के साथ चलती है। - API की, भुगतान क्रेडेंशियल और SMTP पासवर्ड एन्क्रिप्टेड रूप में संग्रहीत होते हैं; मास्टर की `/var/lib/nexcmp/secrets` में है — [backups](https://nexcmp.com/hi/docs/getting-started/backup-and-restore/) की सुरक्षा करें। - इंस्टॉल करने से पहले रिलीज़ को SHA-256 और Ed25519 हस्ताक्षर से सत्यापित किया जाता है। --- # सामान्य सेटिंग्स {#general-settings} > **व्यवस्थापक में कहाँ:** System › Settings › General (`/settings`)। परिवर्तन तुरंत लागू होते हैं (30-सेकंड कैशे)। इस पेज के तीन भाग हैं। ## ब्रैंडिंग और यूआरएल {#branding-urls} | फ़ील्ड | उद्देश्य | |---|---| | ब्रांड नाम (ईमेल, चालान) | ईमेल और चालान में दिखाया जाता है। लोगो और रंग [Branding](https://nexcmp.com/hi/docs/customers/branding/) में हैं | | डिफ़ॉल्ट भाषा | नए आगंतुकों के लिए भाषा | | ग्राहक ऐप यूआरएल | पोर्टल का सार्वजनिक पता, उदाहरण के लिए `https://cloud.example.com` | | कंसोल यूआरएल | VM कंसोल सेवा का पता | | एडमिन यूआरएल | जब आप किसी रीसेलर के ग्राहक के रूप में "लॉग इन करते हैं" तो उपयोग किया जाने वाला लिंक | | पार्टनर कंसोल यूआरएल | आमंत्रण लिंक, रीसेलर ईमेल और टॉप-अप के बाद रीडायरेक्ट में उपयोग किया जाता है | विज़ार्ड आपके डोमेन से इन्हें भर देता है; यदि आप पोर्टल को स्थानांतरित करते हैं तभी इन्हें बदलें। ## विक्रेता और चालान {#seller-invoicing} प्रत्येक चालान पर मुद्रित: | फ़ील्ड | Example | |---|---| | कानूनी इकाई का नाम | Example Cloud Ltd | | टैक्स आईडी | `TAX-000000` | | पता | 1 Example Street, New York | | संपर्क ई-मेल | `billing@example.com` | | चालान संख्या उपसर्ग | `INV` (1–8 वर्ण, A–Z और 0–9) | मौजूदा चालान अपने विक्रेता विवरण और जारी होने की संख्या को बनाए रखते हैं; परिवर्तन केवल **नए** चालान को प्रभावित करते हैं। ## रखरखाव और क्षेत्र {#maintenance-region} बैनर दिखाने और **सभी ग्राहक राइट क्रियाओं को ब्लॉक करने** के लिए **Customer app MAINTENANCE** चालू करें, जबकि एडमिन कंसोल काम करना जारी रखता है। **Maintenance message** दर्ज करें जो ग्राहकों को दिखाई देगा। अपने बुनियादी ढांचे के अपग्रेड के दौरान इसका उपयोग करें। ![ब्रांड नाम, डिफ़ॉल्ट भाषा और URL फ़ील्ड के साथ General settings पेज](https://nexcmp.com/hi/docs/images/administration/general-settings-01-general.webp) ## अन्य सेटिंग्स पेज {#other-settings-pages} | पेज | गाइड | |---|---| | Brand | [Branding](https://nexcmp.com/hi/docs/customers/branding/) | | Legal | [Legal](https://nexcmp.com/hi/docs/customers/legal/) | | Customer logins | [Security](https://nexcmp.com/hi/docs/administration/security/) | | Email | [SMTP और ई-मेल टेम्पलेट्स](https://nexcmp.com/hi/docs/administration/smtp-and-emails/) | | Admin alerts | [Telegram और एडमिन अलर्ट](https://nexcmp.com/hi/docs/administration/telegram-notifications/) | | AI provider | [AI providers](https://nexcmp.com/hi/docs/ai/ai-providers/) | --- # बग रिपोर्ट करें {#report-a-bug} > **एडमिन में कहाँ:** Top bar › **Report a bug** (Docs के पास; केवल मुख्य एडमिनिस्ट्रेटर को दिखाई देता है)। NexCMP में कोई गड़बड़ी मिली? **Report a bug** दबाएं, समस्या का विवरण दें और भेजें। रिपोर्ट एक ही चरण में आपके लाइसेंस खाते पर टिकट के रूप में NexCMP टीम तक पहुंच जाती है — आपको कहीं और साइन इन नहीं करना पड़ता, और न ही लॉग फ़ाइलें हाथ से कॉपी करनी पड़ती हैं। इसका उपयोग हर प्लान कर सकता है: NexCMP Free में बग फिक्स शामिल हैं, और NexCMP Source में भी। ::: info बग रिपोर्ट सपोर्ट रिक्वेस्ट नहीं हैं NexCMP Free में कोई तकनीकी सहायता नहीं है, इसलिए सॉफ़्टवेयर की कमियों के लिए इस फ़ॉर्म का उपयोग करें। सेटअप सहायता और माइग्रेशन [NexCMP Source](https://nexcmp.com/pricing) का हिस्सा हैं। ::: ## आवश्यकताएं {#requirements} | आइटम | आवश्यक शर्तें | |---|---| | संस्करण | NexCMP 1.5.2 या बाद का संस्करण | | कौन भेज सकता है | मुख्य एडमिनिस्ट्रेटर खाता। स्टाफ खाते (रीड-ओनली), रीसेलर कंसोल, ग्राहक और रीड-ओनली डेमो नहीं भेज सकते | | License | एक सक्रिय लाइसेंस (Free या Source) जो निलंबित न हो | | नेटवर्क | सर्वर को HTTPS पर `https://nexcmp.com` तक पहुंचना आवश्यक है (वही पता जो यह लाइसेंस जांच और अपडेट के लिए उपयोग करता है) | ## रिपोर्ट भेजें {#send-a-report} 1. टॉप बार में **Report a bug** पर क्लिक करें। फ़ोन पर, मेनू खोलें और **Report a bug** चुनें। 2. एक संक्षिप्त **Subject** दर्ज करें। 3. **What happened** के अंतर्गत, बताएं कि आपने क्या किया, आपने क्या देखा और आप क्या अपेक्षा कर रहे थे। 4. वैकल्पिक रूप से **Steps to reproduce** की सूची बनाएं। 5. **Impact** चुनें: **Blocking** (आप काम नहीं कर सकते), **Major** (एक मुख्य फ़ीचर काम नहीं कर रहा) या **Minor** (एक छोटी या कॉस्मेटिक समस्या)। 6. **Attach diagnostics** चालू रहने दें (अनुशंसित) और **What will be sent** बॉक्स पढ़ें। 7. **Send report** पर क्लिक करें। 1.6.1 में फ़ोन पर भी एक्शन बटन दिखाई देते रहते हैं जबकि फ़ॉर्म का मुख्य भाग स्क्रॉल होता है। `password:` या `password=` के बाद आने वाले पासवर्ड मान शेष रिपोर्ट को हटाए बिना मास्क कर दिए जाते हैं। भेजने से पहले अपने टेक्स्ट की समीक्षा करें और ग्राहक डेटा व क्रेडेंशियल हटा दें। ![शीर्षक, विवरण, प्रभाव और क्या भेजा जाएगा की सूची के साथ Report a bug संवाद](https://nexcmp.com/hi/docs/images/administration/report-a-bug-01-dialog.webp) जब रिपोर्ट स्वीकार कर ली जाती है, तो संवाद टिकट संख्या और एक लिंक दिखाता है। यदि टीम कोई उत्तर भेजती है, तो वह nexcmp.com पर आपके लाइसेंस खाते के ईमेल पते पर जाता है, और जब आप वहां लाइसेंस स्वामी के रूप में साइन इन करते हैं तो टिकट **Support** के अंतर्गत भी सूचीबद्ध होता है। ## क्या भेजा जाता है {#what-is-sent} Send पर क्लिक करने से पहले **What will be sent** बॉक्स ठीक यही दिखाता है: | भेजा गया | विवरण | |---|---| | आपका टेक्स्ट | शीर्षक, विवरण, स्टेप्स और प्रभाव | | संस्करण, प्लान, डोमेन | आपका NexCMP संस्करण, Free या Source, और इंस्टॉलेशन का डोमेन | | वर्तमान पृष्ठ | एडमिन में वह पृष्ठ जिस पर आप हैं, `?` या `#` के बाद के किसी भी भाग के बिना | | ब्राउज़र | आपके ब्राउज़र का user-agent टेक्स्ट (नाम, संस्करण और ऑपरेटिंग सिस्टम), 200 वर्णों तक सीमित | | हाल की त्रुटियाँ | इस ब्राउज़र टैब में अंतिम 5 त्रुटियों तक। स्क्रिप्ट त्रुटि केवल संदेश है; विफल अनुरोध के लिए केवल method, path और status code | आप **Attach diagnostics** बंद कर सकते हैं; फिर केवल आपका अपना टेक्स्ट और संस्करण, प्लान और डोमेन भेजे जाते हैं। ## क्या कभी नहीं भेजा जाता {#what-is-never-sent} - पासवर्ड, टोकन, कुकीज़ और API keys। आपके टेक्स्ट या किसी त्रुटि संदेश में ऐसा दिखने वाला कुछ भी, कुछ भी भेजे जाने से पहले आपके सर्वर पर मास्क (`***` या `[redacted]` के रूप में दिखाया गया) कर दिया जाता है। - अनुरोधों और प्रतिक्रियाओं की सामग्री — विफल अनुरोध केवल method, path और status के रूप में रिकॉर्ड किए जाते हैं। - आपके ग्राहकों का डेटा (नाम, ईमेल, ऑर्डर, इनवॉइस) और उनके IP पते। - आपके ब्राउज़र का IP पता और आपके सर्वर की कोई भी फ़ाइल। हर लाइसेंस जांच की तरह, लाइसेंस सर्वर वह IP पता देखता है जिससे आपका सर्वर कनेक्ट होता है। टिकट आपके इंस्टॉलेशन से उस लाइसेंस टोकन द्वारा संबद्ध होता है जो सर्वर के पास पहले से मौजूद है, इसलिए version, domain और installation सर्वर द्वारा निर्धारित किए जाते हैं और उन्हें ब्राउज़र से बदला नहीं जा सकता है। ## सीमाएं {#limits} | Limit | मान | |---|---| | विषय | 150 वर्ण | | विवरण और चरण | दोनों मिलाकर 8 KB | | रिपोर्ट | पूरे इंस्टॉलेशन के लिए 5 प्रति घंटा और 20 प्रति दिन | एक ही रिपोर्ट को दो बार भेजने से (उदाहरण के लिए नेटवर्क त्रुटि के बाद) दूसरा टिकट नहीं बनता है। ## ट्रबलशूटिंग {#troubleshooting} | संदेश | कारण | सुधार | |---|---|---| | पहले अपना लाइसेंस सक्रिय करें | इस इंस्टॉलेशन में कोई सक्रिय लाइसेंस नहीं है | **License & updates** खोलें और सक्रिय करें, फिर दोबारा भेजें | | लाइसेंस सर्वर तक नहीं पहुँचा जा सका | सर्वर `nexcmp.com` तक नहीं पहुँच पा रहा है | सर्वर से आउटबाउंड HTTPS और DNS की जाँच करें, फिर दोबारा **Send report** दबाएं — आपका टेक्स्ट सुरक्षित रहेगा | | इस इंस्टॉलेशन से बहुत अधिक बग रिपोर्ट भेजी गई हैं | आप प्रति घंटे 5 या प्रति दिन 20 की सीमा तक पहुँच गए हैं | प्रतीक्षा करें और पुनः प्रयास करें; इसके बजाय खुले हुए टिकट में नए निष्कर्ष जोड़ें | | यह लाइसेंस निलंबित है | लाइसेंस निलंबित या रीफ़ंड कर दिया गया है | [License and purchase](https://nexcmp.com/hi/docs/getting-started/license-and-purchase/) देखें | | यह इंस्टॉलेशन निरस्त कर दिया गया था | लाइसेंस पोर्टल में इंस्टॉलेशन को निरस्त कर दिया गया था | इसे **License & updates** से दोबारा सक्रिय करें | | लाइसेंस टोकन को रीफ़्रेश नहीं किया जा सका | सर्वर अपने लाइसेंस टोकन को नवीनीकृत नहीं कर सका | **License & updates** खोलें, **Refresh** दबाएं, फिर दोबारा भेजें | | Report a bug बटन नहीं दिख रहा है | आप staff, reseller या customer खाते से, या केवल-पठन डेमो पर साइन इन हैं | मुख्य व्यवस्थापक के रूप में साइन इन करें | ::: tip AI असिस्टेंट और API keys के लिए Admin में मौजूद असिस्टेंट और admin API keys आपकी ओर से बग रिपोर्ट नहीं भेज सकते: इस बटन के लिए मुख्य व्यवस्थापक के रूप में किसी व्यक्ति का साइन इन होना आवश्यक है। ::: --- # इंस्टॉलेशन त्रुटियां {#installation-errors} इंस्टॉलर पहली गंभीर समस्या पर रुक जाता है और `✗` से शुरू होने वाली एक लाल लाइन प्रिंट करता है। कारण को ठीक करें और **वही कमांड दोबारा चलाएं** — इंस्टॉलर को दोहराना सुरक्षित है। सूचनात्मक लाइनें `•` से शुरू होती हैं, सफल चरण `✓` से। ## मशीन जाँच {#machine-checks} | संदेश | कारण | सुधार | |---|---|---| | `must be run as root (sudo)` | रूट के रूप में नहीं चल रहा है | कमांड से पहले `sudo` जोड़ें, या रूट के रूप में चलाएं। | | `only Ubuntu 22.04/24.04 is supported (this host: …)` | कोई अन्य वितरण या संस्करण | Ubuntu 22.04 या 24.04 सर्वर का उपयोग करें। | | `only x86_64 is supported` | ARM या अन्य CPU | x86_64 सर्वर का उपयोग करें। | | `requires ≥ 2 GB RAM (host has … MB)` | बहुत कम मेमोरी | RAM जोड़ें। | | `requires ≥ 8 GB free disk space on / (… GB available)` | रूट फ़ाइल सिस्टम लगभग भरा हुआ है | जगह खाली करें या `/` को बड़ा करें। | | `missing --license` / `missing --domain` | उन पैरामीटर के बिना पहली बार इंस्टॉल करना | दोनों पास करें — [Installation](https://nexcmp.com/hi/docs/getting-started/installation/#parameters) देखें। | | `unknown argument: …` | पैरामीटर में टाइपो | वर्तनी जांचें; `--help` के साथ चलाएं। | | `apt-get failed (another apt/dpkg process, e.g. unattended-upgrades, may still be running)` | पैकेज मैनेजर लॉक है | कुछ मिनट प्रतीक्षा करें (नया Ubuntu बूट होने के बाद स्वचालित अपडेट चलाता है) और दोबारा चलाएं। | | `… is a symlink — aborting` | `/opt/nexcmp` या `/etc/nexcmp` एक प्रतीकात्मक लिंक (symbolic link) है | इसे एक वास्तविक निर्देशिका से बदलें — सुरक्षा कारणों से इंस्टॉलर symlinks को अस्वीकार करता है। | ## लाइसेंस सक्रियण {#license-activation} | संदेश | कारण | सुधार | |---|---|---| | `cannot connect to https://nexcmp.com` | लाइसेंस सर्वर के लिए कोई आउटबाउंड HTTPS नहीं है | सर्वर पर DNS, फ़ायरवॉल और प्रॉक्सी की जाँच करें: `curl -I https://nexcmp.com`। | | `license activation failed (HTTP …): ` | लाइसेंस सर्वर ने कुंजी को अस्वीकार कर दिया | संदेश पढ़ें: गलत कुंजी, डोमेन लाइसेंस से मेल नहीं खाता, लाइसेंस निलंबित या रद्द कर दिया गया है। [nexcmp.com/licenses](https://nexcmp.com/licenses) पर लाइसेंस पेज देखें। | | `no release available for this license yet` | लाइसेंस के लिए कोई डाउनलोड करने योग्य रिलीज़ उपलब्ध नहीं है | सेल्स से संपर्क करें; [Support](https://nexcmp.com/hi/docs/troubleshooting/support/) देखें। | ## डाउनलोड और सत्यापन {#download-and-verification} | संदेश | कारण | सुधार | |---|---|---| | `failed to download release X` | डाउनलोड के दौरान नेटवर्क समस्या | दोबारा चलाएं। | | `sha256 mismatch (… ≠ …)` | फ़ाइल क्षतिग्रस्त स्थिति में पहुँची या उसमें बदलाव किया गया था | दोबारा चलाएं; यदि यह दोबारा हो, तो कोई प्रॉक्सी डाउनलोड में बदलाव कर रही होगी — किसी अन्य नेटवर्क से प्रयास करें। | | `release X is unsigned — refusing to install` | सर्वर ने कोई हस्ताक्षर (signature) नहीं दिया | कभी भी बाईपास न करें; सहायता (support) से संपर्क करें। | | `INVALID SIGNATURE for version X — aborting` | Ed25519 हस्ताक्षर सत्यापित नहीं होता है | इंस्टॉल **न** करें। सहायता से संपर्क करें — इसका अर्थ है कि फ़ाइल आधिकारिक रिलीज़ नहीं है। | | `openssl failed to read public key` | बहुत पुराना या खराब OpenSSL | `openssl` पैकेज को अपडेट करें। | | `invalid version: …` | सर्वर से अप्रत्याशित डेटा प्राप्त हुआ | दोबारा चलाएं; यदि समस्या बनी रहे तो सहायता से संपर्क करें। | ## सेवा प्रारंभ {#service-start} | संदेश | कारण | सुधार | |---|---|---| | `service failed to start — check: journalctl -u nexcmp -n 50` | पैनल ने 3 मिनट के भीतर `/healthz` का उत्तर नहीं दिया | जर्नल पढ़ें। सामान्य कारण: पोर्ट (डिफ़ॉल्ट 3000) पहले से उपयोग में है (`ss -ltnp | grep 3000`) — `--port` के साथ पुनः इंस्टॉल करें; `/var/lib/nexcmp` में फ़ाइलें root के स्वामित्व में हैं — `sudo nexcmp fix-owner` चलाएं। | ## nginx और TLS {#nginx-and-tls} | संदेश | कारण | सुधार | |---|---|---| | `DNS does not point to (nor to Cloudflare) — skipping nginx/TLS` | A/AAAA रिकॉर्ड गायब है या गलत है | [DNS and Cloudflare](https://nexcmp.com/hi/docs/getting-started/dns-and-cloudflare/) देखें, फिर दोबारा चलाएं। | | `certbot could not get a certificate yet — re-run the installer once DNS has settled` | Let's Encrypt सत्यापन विफल रहा (पोर्ट 80 अवरुद्ध है, DNS प्रचारित नहीं हुआ है, दर सीमा) | पोर्ट 80 खोलें, DNS की प्रतीक्षा करें, दोबारा चलाएं। `/var/log/letsencrypt/letsencrypt.log` की जाँच करें। | | `certbot could not renew now — keeping the existing certificate` | अस्थायी नवीनीकरण विफलता | हानिरहित; बाद में पुनः चलाएं। | | `nginx rejected the HTTPS configuration — kept the previous one (check: nginx -t)` | एक अन्य nginx साइट संघर्ष करती है (समान `server_name`, डुप्लिकेट सेटिंग्स) | `sudo nginx -t` चलाएं और संघर्ष को ठीक करें, फिर दोबारा चलाएं। | | `apt-get could not install nginx` / `certbot`, या `E: Failed to fetch … 404 Not Found` | पैकेज मैनेजर लॉक है, या सर्वर का पैकेज इंडेक्स पुराना है (ऐसी टेम्पलेट इमेज पर आम है जिसे कुछ समय से अपडेट नहीं किया गया है) | `sudo apt-get update` चलाएं, किसी अन्य apt प्रक्रिया के समाप्त होने की प्रतीक्षा करें, फिर इंस्टॉलर को दोबारा चलाएं। | | `openssl could not create the self-signed certificate` | OpenSSL समस्या | `openssl` अपडेट करें; दोबारा चलाएं। | ## इंस्टॉलेशन के बाद {#after-installation} | लक्षण | कारण | सुधार | |---|---|---| | ब्राउज़र `https://` नहीं खोल सकता | DNS या TLS तैयार नहीं है | `sudo nexcmp status`; [emergency access](https://nexcmp.com/hi/docs/getting-started/cli-reference/#emergency-access) का उपयोग करें। | | `ERR_TOO_MANY_REDIRECTS` | Cloudflare SSL मोड **Flexible** | **Full (strict)** सेट करें — [details](https://nexcmp.com/hi/docs/getting-started/dns-and-cloudflare/)। | | विज़ार्ड कहता है कि "setup code" गलत है | टाइपोग्राफिकल त्रुटि या किसी पुराने इंस्टॉलेशन का कोड | `sudo nexcmp status` चलाएँ और वर्तमान कोड कॉपी करें। | | लाइसेंस HTTP 421 दिखाता है | `/var/lib/nexcmp` में मौजूद फ़ाइलें root के स्वामित्व में हैं | `sudo nexcmp fix-owner`, फिर `sudo systemctl restart nexcmp`। | --- # अपडेट त्रुटियाँ {#update-errors} > **एडमिन में कहाँ:** System › Admin › License & updates (`/license`) अपडेट के बारे में [Updating NexCMP](https://nexcmp.com/hi/docs/getting-started/updating/) में बताया गया है। जब अपडेट कार्ड या `sudo nexcmp update` कोई त्रुटि रिपोर्ट करता है: | संदेश | कारण | सुधार | |---|---|---| | `update plan expired — renew on the license page to receive this feature release` | आपकी "updates until" तिथि रिलीज़ की तारीख से पहले की है। सुरक्षा सुधार मिलते रहते हैं; फीचर रिलीज़ नहीं मिलते | [nexcmp.com/licenses](https://nexcmp.com/licenses) (NexCMP Free के लिए $99 प्रति वर्ष) पर नवीनीकरण करें, फिर से जाँच करें। इस बीच सॉफ्टवेयर चलता रहता है। | | `sha256 mismatch (downloaded …, expected …)` | क्षतिग्रस्त या बदला हुआ डाउनलोड | पुनः प्रयास करें। यदि यह दोबारा हो, तो रास्ते के प्रॉक्सी की जाँच करें। | | `downgrade/same version rejected: X is not newer than Y` | चयनित संस्करण चल रहे संस्करण से नया नहीं है | करने के लिए कुछ नहीं — आप अप-टू-डेट हैं। | | `extraction failed / main binary missing` | क्षतिग्रस्त आर्काइव या डिस्क भर जाना | `df -h` की जाँच करें; पुनः प्रयास करें। | | `systemctl restart failed` | बाइनरी बदलने के बाद सेवा रीस्टार्ट नहीं हो सकी | `journalctl -u nexcmp -n 80`; पिछली बाइनरी `/opt/nexcmp/bin/nexcmp.bak` के रूप में सुरक्षित रखी जाती है — नीचे रोल बैक देखें। | | अपडेट सर्वर से संपर्क करने में सर्वर त्रुटि | `nexcmp.com` के लिए कोई रूट नहीं या लाइसेंस टोकन समाप्त हो गया है | आउटबाउंड HTTPS की जाँच करें; लाइसेंस कार्ड पर **Check now** पर क्लिक करें। | ## रोल बैक {#roll-back} यदि कोई नया संस्करण ठीक से काम न करे: ```bash sudo systemctl stop nexcmp-vmd nexcmp sudo cp /opt/nexcmp/bin/nexcmp.bak /opt/nexcmp/bin/nexcmp echo | sudo tee /opt/nexcmp/VERSION sudo systemctl start nexcmp nexcmp-vmd ``` यदि डेटाबेस माइग्रेशन पहले ही चल चुका है, तो अपडेट से पहले लिया गया अपना [backup](https://nexcmp.com/hi/docs/getting-started/backup-and-restore/) भी रिस्टोर करें। ## `sudo nexcmp update` कहता है कि उसे इंस्टॉलर नहीं मिल रहा है {#sudo-nexcmp-update-says-it-cannot-find-the-installer} `nexcmp update` उस इंस्टॉलर को चलाता है जो इंस्टॉल किए गए रिलीज़ के भीतर होता है (`/opt/nexcmp/releases//share/install.sh`)। यदि वह फ़ाइल गायब है, तो अपने लाइसेंस पेज से इंस्टॉल कमांड को फिर से चलाएँ। --- # FAQ {#faq} ## Licensing {#licensing} **यदि मेरा लाइसेंस समाप्त हो जाए या सर्वर का इंटरनेट कनेक्शन टूट जाए तो क्या होगा?** टोकन 14 दिनों तक वैध रहता है और प्रतिदिन स्वतः नवीनीकृत होता है। उसके बाद, ग्राहक **नए** सेवाएँ नहीं बना सकते; चल रही सेवाएँ, बिलिंग और लॉगिन काम करते रहते हैं। [License and purchase](https://nexcmp.com/hi/docs/getting-started/license-and-purchase/) देखें। **क्या मेरे अपडेट एनटाइटल्डमेंट समाप्त होने के बाद भी मुझे सुरक्षा सुधार मिलते रहेंगे?** हाँ — सुरक्षा रिलीज़ हमेशा दिए जाते हैं; फीचर रिलीज़ के लिए सक्रिय एनटाइटल्डमेंट की आवश्यकता होती है। **क्या मैं दूसरे सर्वर या डोमेन पर NexCMP चला सकता हूँ?** इसे लाइसेंस पर रजिस्टर्ड कुंजी और डोमेन के साथ सक्रिय करें — [License and purchase](https://nexcmp.com/hi/docs/getting-started/license-and-purchase/#moving-to-a-new-server-or-domain) देखें। ## Installation {#installation} **क्या NexCMP को Docker, PostgreSQL या Redis की आवश्यकता है?** नहीं। यह SQLite डेटाबेस वाला एक एकल प्रोग्राम है, जिसे systemd द्वारा एक अप्रिविलेज्ड यूजर के रूप में चलाया जाता है। [Requirements](https://nexcmp.com/hi/docs/getting-started/requirements/) देखें। **क्या मैं बिना पब्लिक डोमेन के इंस्टॉल कर सकता हूँ?** हाँ, `--no-nginx` और एक SSH टनल का उपयोग करें — [Installation](https://nexcmp.com/hi/docs/getting-started/installation/#installing-without-a-public-domain-lab-or-test) देखें। **सेटअप के बाद पोर्ट 3000 बंद क्यों है?** सुरक्षा कारणों से विज़ार्ड पूरा होने और TLS सक्रिय होने के बाद पैनल `127.0.0.1` पर सुनता है। आपातकालीन स्थिति के लिए `sudo nexcmp open-port` का उपयोग करें। ## Infrastructure {#infrastructure} **क्या मैं CloudStack और Proxmox VE का एक साथ उपयोग कर सकता हूँ?** हाँ। एक ज़ोन में दोनों हो सकते हैं; प्रत्येक प्लान अपना सोर्स चुनता है। [Proxmox VE](https://nexcmp.com/hi/docs/infrastructure/proxmox/) और [Zones](https://nexcmp.com/hi/docs/infrastructure/zones/) देखें। **क्या मुझे CloudStack की ROOT API key की आवश्यकता है?** नहीं — और आपको इसका उपयोग नहीं करना चाहिए। एक समर्पित खाता बनाएं — [CloudStack](https://nexcmp.com/hi/docs/infrastructure/cloudstack/)। **वर्चुअल मशीन पर कुछ टैब या बटन क्यों दिखाई नहीं देते?** पृष्ठ केवल वही दिखाते हैं जो VM का स्रोत समर्थन करता है (उदाहरण के लिए, Proxmox VE में कोई पोर्ट फ़ॉरवर्डिंग नहीं है)। [Proxmox VE](https://nexcmp.com/hi/docs/infrastructure/proxmox/) में क्षमता तालिका देखें। ## संचालन {#operations} **मैं NexCMP को दूसरे सर्वर पर कैसे ले जाऊं?** बैकअप लें, उसी लाइसेंस के साथ नए सर्वर पर समान संस्करण स्थापित करें, पुनर्स्थापित करें — [Backup and restore](https://nexcmp.com/hi/docs/getting-started/backup-and-restore/) देखें। **लॉग कहाँ हैं?** `journalctl -u nexcmp -u nexcmp-vmd`, `/var/log/nexcmp`, और System › Logs के तहत एडमिन कंसोल। [Audit log](https://nexcmp.com/hi/docs/administration/audit-log/) देखें। **क्या मैं इंस्टॉल करने से पहले customer portal देख सकता हूँ?** हाँ। [nexcmp.com](https://nexcmp.com/platform/) पर सर्विस पेज customer portal को सैंपल डेटा के साथ टैब-दर-टैब दिखाते हैं; फ़ुल-स्क्रीन व्यूअर के लिए *View demo* खोलें। वास्तविक इंस्टॉलेशन देखने के लिए sales को लिखें। --- # सपोर्ट {#support} ## संपर्क करें {#contact} कोई संपर्क फ़ॉर्म नहीं है। **sales@nexcmp.com** पर एक ई-मेल भेजें — इसमें लाइसेंसिंग, नवीनीकरण, डोमेन और तकनीकी प्रश्न शामिल हैं। [nexcmp.com/licenses](https://nexcmp.com/licenses) पर आपका लाइसेंस पृष्ठ भी उसी पते से लिंक करता है। ## लिखने से पहले {#before-you-write} 1. इन दस्तावेज़ों को खोजें (`/` दबाएं) और [Installation errors](https://nexcmp.com/hi/docs/troubleshooting/installation-errors/) तथा [Update errors](https://nexcmp.com/hi/docs/troubleshooting/update-errors/) की जाँच करें। 2. नीचे दिए गए तथ्य एकत्र करें — वे समर्थन को एक ही उत्तर में उत्तर देने देते हैं। ## क्या शामिल करें {#what-to-include} | आइटम | इसे कैसे प्राप्त करें | |---|---| | NexCMP version | `sudo nexcmp status` या System › Admin › License & updates | | मुख्य डोमेन और लाइसेंस कुंजी के अंतिम 4 वर्ण | License & updates (पूरा कुंजी कभी न भेजें) | | आपने क्या किया और आप क्या अपेक्षा करते थे | सटीक चरण | | त्रुटि पाठ या स्क्रीनशॉट | भेजने से पहले गुप्त जानकारी छिपाएँ | | सेवा स्थिति | `sudo nexcmp status` | | हाल की लॉग पंक्तियाँ | `sudo journalctl -u nexcmp -u nexcmp-vmd -n 100 --no-pager` | | Infrastructure | CloudStack या Proxmox VE संस्करण, एक ज़ोन या कई | ::: warning गुप्त जानकारी कभी न भेजें लाइसेंस कुंजियाँ, API कुंजियाँ, पासवर्ड, सेटअप कोड, भुगतान क्रेडेंशियल या बैकअप संग्रह न भेजें। उन्हें लॉग और स्क्रीनशॉट में छिपाएँ। ::: ## सुरक्षा रिपोर्ट {#security-reports} यदि आपको लगता है कि आपको कोई कमज़ोरी मिली है, तो विषय में "Security" लिखकर उसी पते पर ईमेल करें और ठीक होने से पहले सार्वजनिक रूप से विवरण पोस्ट करने से बचें।