Hosting
Azure
यह मार्गदर्शिका Azure CLI के साथ Azure Linux VM सेट अप करती है, Network Security Group (NSG) हार्डनिंग लागू करती है, SSH पहुंच के लिए Azure Bastion कॉन्फ़िगर करती है, और OpenClaw इंस्टॉल करती है।
आप क्या करेंगे
- Azure CLI के साथ Azure नेटवर्किंग (VNet, सबनेट, NSG) और कंप्यूट संसाधन बनाना
- Network Security Group नियम लागू करना ताकि 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 कुंजी नहीं है, तो एक जनरेट करें:
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अपनी सदस्यता और क्षेत्र में उपलब्ध VM आकार और OS डिस्क आकार चुनें:
- हल्के उपयोग के लिए छोटे आकार से शुरू करें और बाद में स्केल अप करें
- भारी ऑटोमेशन, अधिक चैनल, या बड़े मॉडल/टूल वर्कलोड के लिए अधिक vCPU/RAM/डिस्क का उपयोग करें
- यदि कोई VM आकार आपके क्षेत्र या सदस्यता कोटा में उपलब्ध नहीं है, तो निकटतम उपलब्ध 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}" # Allow SSH from the Bastion subnet onlyaz 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 # Deny SSH from the public internetaz 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 # Deny SSH from other VNet sourcesaz 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}" # Attach the NSG to the VM subnetaz network vnet subnet update \ -g "${RG}" --vnet-name "${VNET_NAME}" \ -n "${VM_SUBNET_NAME}" --nsg "${NSG_NAME}" # AzureBastionSubnet — name is required by Azureaz 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 "" प्रति-NIC NSG बनाने को छोड़ देता है (सबनेट-स्तर का NSG सुरक्षा संभालता है)।
पुनरुत्पादकता: ऊपर दिया गया कमांड Ubuntu इमेज के लिए latest का उपयोग करता है। किसी विशिष्ट संस्करण को पिन करने के लिए, उपलब्ध संस्करणों की सूची देखें और latest बदलें:
az vm image list \ --publisher Canonical --offer ubuntu-24_04-lts \ --sku server --all -o tableAzure Bastion बनाएं
Azure Bastion सार्वजनिक IP उजागर किए बिना VM तक प्रबंधित 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 LTS और निर्भरताएं इंस्टॉल करता है यदि वे पहले से मौजूद नहीं हैं, OpenClaw इंस्टॉल करता है, और ऑनबोर्डिंग विज़ार्ड लॉन्च करता है। विवरण के लिए इंस्टॉल देखें।
Gateway सत्यापित करें
ऑनबोर्डिंग पूरी होने के बाद:
openclaw gateway statusअधिकांश एंटरप्राइज़ Azure टीमों के पास पहले से GitHub Copilot लाइसेंस होते हैं। यदि आपके मामले में ऐसा है, तो हम OpenClaw ऑनबोर्डिंग विज़ार्ड में GitHub Copilot प्रदाता चुनने की अनुशंसा करते हैं। GitHub Copilot प्रदाता देखें।
लागत संबंधी विचार
Azure Bastion Standard SKU लगभग $140/माह चलता है और VM (Standard_B2as_v2) लगभग $55/माह चलता है।
लागत कम करने के लिए:
-
VM को डिअलोकेट करें जब उपयोग में न हो (कंप्यूट बिलिंग रुकती है; डिस्क शुल्क बने रहते हैं)। VM डिअलोकेट होने पर OpenClaw Gateway पहुंच योग्य नहीं होगा — जब आपको इसे फिर से लाइव चाहिए, तो इसे पुनः प्रारंभ करें:
bash az vm deallocate -g "${RG}" -n "${VM_NAME}"az vm start -g "${RG}" -n "${VM_NAME}" # restart later -
Bastion की आवश्यकता न होने पर उसे हटाएं और SSH पहुंच की आवश्यकता होने पर फिर से बनाएं। Bastion सबसे बड़ा लागत घटक है और इसे प्रोविजन करने में केवल कुछ मिनट लगते हैं।
-
यदि आपको केवल Portal-आधारित SSH चाहिए और CLI टनलिंग (
az network bastion ssh) की आवश्यकता नहीं है, तो Basic Bastion SKU (~$38/माह) का उपयोग करें।
क्लीनअप
इस मार्गदर्शिका द्वारा बनाए गए सभी संसाधन हटाने के लिए:
az group delete -n "${RG}" --yes --no-waitयह संसाधन समूह और उसके अंदर की हर चीज़ (VM, VNet, NSG, Bastion, सार्वजनिक IP) हटा देता है।
अगले चरण
- मैसेजिंग चैनल सेट अप करें: चैनल
- स्थानीय डिवाइसों को नोड के रूप में पेयर करें: नोड
- Gateway कॉन्फ़िगर करें: Gateway कॉन्फ़िगरेशन
- GitHub Copilot मॉडल प्रदाता के साथ OpenClaw Azure डिप्लॉयमेंट पर अधिक जानकारी के लिए: GitHub Copilot के साथ Azure पर OpenClaw