Hosting
Azure
Azure CLI से Azure Linux VM सेट अप करें, Network Security Group (NSG) की सुरक्षा सुदृढ़ करें, SSH पहुँच के लिए Azure Bastion कॉन्फ़िगर करें और OpenClaw इंस्टॉल करें।
आप क्या करेंगे
- Azure CLI से Azure नेटवर्किंग (VNet, सबनेट, NSG) और कंप्यूट संसाधन बनाएँ
- NSG नियम लागू करें, ताकि VM पर SSH की अनुमति केवल Azure Bastion से हो
- SSH पहुँच के लिए Azure Bastion का उपयोग करें (VM पर कोई सार्वजनिक IP नहीं)
- इंस्टॉलर स्क्रिप्ट से OpenClaw इंस्टॉल करें
- Gateway सत्यापित करें
आपको क्या चाहिए
- कंप्यूट और नेटवर्क संसाधन बनाने की अनुमति वाली Azure सदस्यता
- Azure CLI इंस्टॉल हो (Azure CLI इंस्टॉल करने के चरण देखें)
- एक SSH कुंजी युग्म (यदि आवश्यक हो, तो इस गाइड में इसे जनरेट करने की प्रक्रिया दी गई है)
- लगभग 20-30 मिनट
डिप्लॉयमेंट कॉन्फ़िगर करें
Azure CLI में साइन इन करें
az loginaz extension add -n sshAzure Bastion की नेटिव SSH टनलिंग के लिए ssh एक्सटेंशन आवश्यक है।
आवश्यक संसाधन प्रदाता पंजीकृत करें (एक बार)
az provider register --namespace Microsoft.Computeaz provider register --namespace Microsoft.Networkपंजीकरण सत्यापित करें; दोनों में Registered दिखाई देने तक प्रतीक्षा करें।
az provider show --namespace Microsoft.Compute --query registrationState -o tsvaz provider show --namespace Microsoft.Network --query registrationState -o tsvडिप्लॉयमेंट वेरिएबल सेट करें
RG="rg-openclaw"LOCATION="westus2"VNET_NAME="vnet-openclaw"VNET_PREFIX="10.40.0.0/16"VM_SUBNET_NAME="snet-openclaw-vm"VM_SUBNET_PREFIX="10.40.2.0/24"BASTION_SUBNET_PREFIX="10.40.1.0/26"NSG_NAME="nsg-openclaw-vm"VM_NAME="vm-openclaw"ADMIN_USERNAME="openclaw"BASTION_NAME="bas-openclaw"BASTION_PIP_NAME="pip-openclaw-bastion"अपने परिवेश के अनुसार नाम और CIDR रेंज समायोजित करें। Bastion सबनेट कम-से-कम /26 होना चाहिए।
SSH कुंजी चुनें
यदि आपके पास मौजूदा सार्वजनिक कुंजी है, तो उसका उपयोग करें:
SSH_PUB_KEY="$(cat ~/.ssh/id_ed25519.pub)"अन्यथा, एक कुंजी जनरेट करें:
ssh-keygen -t ed25519 -a 100 -f ~/.ssh/id_ed25519 -C "you@example.com"SSH_PUB_KEY="$(cat ~/.ssh/id_ed25519.pub)"VM आकार और OS डिस्क आकार चुनें
VM_SIZE="Standard_B2as_v2"OS_DISK_SIZE_GB=64- हल्के उपयोग के लिए छोटे आकार से शुरू करें और बाद में इसे बढ़ाएँ।
- अधिक जटिल स्वचालन, अधिक चैनलों या बड़े मॉडल/टूल वर्कलोड के लिए अधिक vCPU/RAM/डिस्क का उपयोग करें।
- यदि कोई आकार आपके क्षेत्र या सदस्यता कोटा में उपलब्ध नहीं है, तो उपलब्ध निकटतम SKU चुनें।
अपने लक्षित क्षेत्र में उपलब्ध VM आकारों की सूची देखें:
az vm list-skus --location "${LOCATION}" --resource-type virtualMachines -o tableअपना वर्तमान vCPU और डिस्क उपयोग/कोटा जाँचें:
az vm list-usage --location "${LOCATION}" -o tableAzure संसाधन डिप्लॉय करें
संसाधन समूह बनाएँ
az group create -n "${RG}" -l "${LOCATION}"नेटवर्क सुरक्षा समूह बनाएँ
NSG बनाएँ और ऐसे नियम जोड़ें कि केवल Bastion सबनेट ही VM में SSH कर सके।
az network nsg create \ -g "${RG}" -n "${NSG_NAME}" -l "${LOCATION}" # केवल Bastion सबनेट से SSH की अनुमति देंaz network nsg rule create \ -g "${RG}" --nsg-name "${NSG_NAME}" \ -n AllowSshFromBastionSubnet --priority 100 \ --access Allow --direction Inbound --protocol Tcp \ --source-address-prefixes "${BASTION_SUBNET_PREFIX}" \ --destination-port-ranges 22 # सार्वजनिक इंटरनेट से SSH अस्वीकार करेंaz network nsg rule create \ -g "${RG}" --nsg-name "${NSG_NAME}" \ -n DenyInternetSsh --priority 110 \ --access Deny --direction Inbound --protocol Tcp \ --source-address-prefixes Internet \ --destination-port-ranges 22 # अन्य VNet स्रोतों से SSH अस्वीकार करेंaz network nsg rule create \ -g "${RG}" --nsg-name "${NSG_NAME}" \ -n DenyVnetSsh --priority 120 \ --access Deny --direction Inbound --protocol Tcp \ --source-address-prefixes VirtualNetwork \ --destination-port-ranges 22नियमों का मूल्यांकन प्राथमिकता के अनुसार किया जाता है, जिसमें सबसे छोटी संख्या पहले आती है: Bastion ट्रैफ़िक को 100 पर अनुमति मिलती है, फिर अन्य सभी SSH को 110 और 120 पर अवरुद्ध कर दिया जाता है।
वर्चुअल नेटवर्क और सबनेट बनाएँ
VM सबनेट (NSG संलग्न) के साथ VNet बनाएँ, फिर Bastion सबनेट जोड़ें।
az network vnet create \ -g "${RG}" -n "${VNET_NAME}" -l "${LOCATION}" \ --address-prefixes "${VNET_PREFIX}" \ --subnet-name "${VM_SUBNET_NAME}" \ --subnet-prefixes "${VM_SUBNET_PREFIX}" # NSG को VM सबनेट से संलग्न करेंaz network vnet subnet update \ -g "${RG}" --vnet-name "${VNET_NAME}" \ -n "${VM_SUBNET_NAME}" --nsg "${NSG_NAME}" # AzureBastionSubnet: Azure के लिए यही सटीक नाम आवश्यक हैaz network vnet subnet create \ -g "${RG}" --vnet-name "${VNET_NAME}" \ -n AzureBastionSubnet \ --address-prefixes "${BASTION_SUBNET_PREFIX}"VM बनाएँ
VM को कोई सार्वजनिक IP नहीं मिलता। SSH पहुँच विशेष रूप से Azure Bastion के माध्यम से होती है।
az vm create \ -g "${RG}" -n "${VM_NAME}" -l "${LOCATION}" \ --image "Canonical:ubuntu-24_04-lts:server:latest" \ --size "${VM_SIZE}" \ --os-disk-size-gb "${OS_DISK_SIZE_GB}" \ --storage-sku StandardSSD_LRS \ --admin-username "${ADMIN_USERNAME}" \ --ssh-key-values "${SSH_PUB_KEY}" \ --vnet-name "${VNET_NAME}" \ --subnet "${VM_SUBNET_NAME}" \ --public-ip-address "" \ --nsg ""--public-ip-address "" सार्वजनिक IP असाइन होने से रोकता है। चूँकि सबनेट-स्तरीय NSG पहले से सुरक्षा संभालता है, इसलिए --nsg "" प्रति-NIC NSG को छोड़ देता है।
latest के बजाय किसी विशिष्ट Ubuntu इमेज संस्करण को पिन करने के लिए, पहले उपलब्ध संस्करणों की सूची देखें:
az vm image list \ --publisher Canonical --offer ubuntu-24_04-lts \ --sku server --all -o tableAzure Bastion बनाएँ
Azure Bastion, VM पर सार्वजनिक IP उजागर किए बिना प्रबंधित SSH पहुँच प्रदान करता है। CLI-आधारित az network bastion ssh के लिए टनलिंग सक्षम वाला Standard SKU आवश्यक है।
az network public-ip create \ -g "${RG}" -n "${BASTION_PIP_NAME}" -l "${LOCATION}" \ --sku Standard --allocation-method Static az network bastion create \ -g "${RG}" -n "${BASTION_NAME}" -l "${LOCATION}" \ --vnet-name "${VNET_NAME}" \ --public-ip-address "${BASTION_PIP_NAME}" \ --sku Standard --enable-tunneling trueBastion का प्रावधान करने में सामान्यतः 5-10 मिनट लगते हैं, लेकिन कुछ क्षेत्रों में 15-30 मिनट तक लग सकते हैं।
OpenClaw इंस्टॉल करें
Azure Bastion के माध्यम से VM में SSH करें
VM_ID="$(az vm show -g "${RG}" -n "${VM_NAME}" --query id -o tsv)" az network bastion ssh \ --name "${BASTION_NAME}" \ --resource-group "${RG}" \ --target-resource-id "${VM_ID}" \ --auth-type ssh-key \ --username "${ADMIN_USERNAME}" \ --ssh-key ~/.ssh/id_ed25519OpenClaw इंस्टॉल करें (VM शेल में)
curl -fsSL https://openclaw.ai/install.sh -o /tmp/install.shbash /tmp/install.shrm -f /tmp/install.shयदि Node और निर्भरताएँ पहले से मौजूद नहीं हैं, तो इंस्टॉलर उन्हें इंस्टॉल करता है, OpenClaw इंस्टॉल करता है और ऑनबोर्डिंग शुरू करता है। विवरण के लिए इंस्टॉल करें देखें।
Gateway सत्यापित करें
ऑनबोर्डिंग पूरी होने के बाद:
openclaw gateway statusयदि आपके संगठन के पास पहले से GitHub Copilot लाइसेंस हैं, तो आप ऑनबोर्डिंग के दौरान अलग मॉडल API कुंजी के बजाय GitHub Copilot प्रदाता चुन सकते हैं। GitHub Copilot प्रदाता देखें।
लागत संबंधी विचार
अनुमानित मासिक लागतें (Azure Pricing Calculator में वर्तमान मूल्य सत्यापित करें, क्योंकि दरें क्षेत्र के अनुसार अलग होती हैं और समय के साथ बदलती हैं):
- Azure Bastion Standard SKU: लगभग $140/माह
- VM (
Standard_B2as_v2): लगभग $55/माह
लागत कम करने के लिए:
-
उपयोग में न होने पर VM को डीएलोकेट करें। इससे कंप्यूट बिलिंग रुक जाती है (डिस्क शुल्क जारी रहता है)। डीएलोकेट रहने के दौरान Gateway तक पहुँचा नहीं जा सकता।
bash az vm deallocate -g "${RG}" -n "${VM_NAME}"az vm start -g "${RG}" -n "${VM_NAME}" # बाद में पुनः चालू करें -
जब Bastion की आवश्यकता न हो, तो उसे हटा दें और दोबारा SSH पहुँच की आवश्यकता होने पर उसे फिर से बनाएँ; यह लागत का सबसे बड़ा घटक है और कुछ मिनटों में प्रावधान हो जाता है।
-
यदि आपको केवल Portal-आधारित SSH चाहिए और CLI टनलिंग (
az network bastion ssh) की आवश्यकता नहीं है, तो Basic Bastion SKU (लगभग $38/माह) का उपयोग करें।
क्लीनअप
इस गाइड द्वारा बनाए गए सभी संसाधन हटाएँ:
az group delete -n "${RG}" --yes --no-waitइससे संसाधन समूह और उसके अंदर मौजूद सभी चीज़ें (VM, VNet, NSG, Bastion, सार्वजनिक IP) हट जाती हैं।
अगले चरण
- मैसेजिंग चैनल सेट अप करें: चैनल
- स्थानीय डिवाइसों को Node के रूप में पेयर करें: Node
- Gateway कॉन्फ़िगर करें: Gateway कॉन्फ़िगरेशन
- GitHub Copilot मॉडल प्रदाता के साथ Azure डिप्लॉयमेंट की अधिक जानकारी: GitHub Copilot के साथ Azure पर OpenClaw