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 में साइन इन करें

    bash
    az loginaz extension add -n ssh

    Azure Bastion की नेटिव SSH टनलिंग के लिए ssh एक्सटेंशन आवश्यक है।

  • आवश्यक संसाधन प्रदाता पंजीकृत करें (एक बार)

    bash
    az provider register --namespace Microsoft.Computeaz provider register --namespace Microsoft.Network

    पंजीकरण सत्यापित करें; दोनों में Registered दिखाई देने तक प्रतीक्षा करें।

    bash
    az provider show --namespace Microsoft.Compute --query registrationState -o tsvaz provider show --namespace Microsoft.Network --query registrationState -o tsv
  • डिप्लॉयमेंट वेरिएबल सेट करें

    bash
    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 कुंजी चुनें

    यदि आपके पास मौजूदा सार्वजनिक कुंजी है, तो उसका उपयोग करें:

    bash
    SSH_PUB_KEY="$(cat ~/.ssh/id_ed25519.pub)"

    अन्यथा, एक कुंजी जनरेट करें:

    bash
    ssh-keygen -t ed25519 -a 100 -f ~/.ssh/id_ed25519 -C "you@example.com"SSH_PUB_KEY="$(cat ~/.ssh/id_ed25519.pub)"
  • VM आकार और OS डिस्क आकार चुनें

    bash
    VM_SIZE="Standard_B2as_v2"OS_DISK_SIZE_GB=64
    • हल्के उपयोग के लिए छोटे आकार से शुरू करें और बाद में इसे बढ़ाएँ।
    • अधिक जटिल स्वचालन, अधिक चैनलों या बड़े मॉडल/टूल वर्कलोड के लिए अधिक vCPU/RAM/डिस्क का उपयोग करें।
    • यदि कोई आकार आपके क्षेत्र या सदस्यता कोटा में उपलब्ध नहीं है, तो उपलब्ध निकटतम SKU चुनें।

    अपने लक्षित क्षेत्र में उपलब्ध VM आकारों की सूची देखें:

    bash
    az vm list-skus --location "${LOCATION}" --resource-type virtualMachines -o table

    अपना वर्तमान vCPU और डिस्क उपयोग/कोटा जाँचें:

    bash
    az vm list-usage --location "${LOCATION}" -o table
  • Azure संसाधन डिप्लॉय करें

  • संसाधन समूह बनाएँ

    bash
    az group create -n "${RG}" -l "${LOCATION}"
  • नेटवर्क सुरक्षा समूह बनाएँ

    NSG बनाएँ और ऐसे नियम जोड़ें कि केवल Bastion सबनेट ही VM में SSH कर सके।

    bash
    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 सबनेट जोड़ें।

    bash
    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 के माध्यम से होती है।

    bash
    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 इमेज संस्करण को पिन करने के लिए, पहले उपलब्ध संस्करणों की सूची देखें:

    bash
    az vm image list \  --publisher Canonical --offer ubuntu-24_04-lts \  --sku server --all -o table
  • Azure Bastion बनाएँ

    Azure Bastion, VM पर सार्वजनिक IP उजागर किए बिना प्रबंधित SSH पहुँच प्रदान करता है। CLI-आधारित az network bastion ssh के लिए टनलिंग सक्षम वाला Standard SKU आवश्यक है।

    bash
    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 true

    Bastion का प्रावधान करने में सामान्यतः 5-10 मिनट लगते हैं, लेकिन कुछ क्षेत्रों में 15-30 मिनट तक लग सकते हैं।

  • OpenClaw इंस्टॉल करें

  • Azure Bastion के माध्यम से VM में SSH करें

    bash
    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_ed25519
  • OpenClaw इंस्टॉल करें (VM शेल में)

    bash
    curl -fsSL https://openclaw.ai/install.sh -o /tmp/install.shbash /tmp/install.shrm -f /tmp/install.sh

    यदि Node और निर्भरताएँ पहले से मौजूद नहीं हैं, तो इंस्टॉलर उन्हें इंस्टॉल करता है, OpenClaw इंस्टॉल करता है और ऑनबोर्डिंग शुरू करता है। विवरण के लिए इंस्टॉल करें देखें।

  • Gateway सत्यापित करें

    ऑनबोर्डिंग पूरी होने के बाद:

    bash
    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/माह) का उपयोग करें।

    क्लीनअप

    इस गाइड द्वारा बनाए गए सभी संसाधन हटाएँ:

    bash
    az group delete -n "${RG}" --yes --no-wait

    इससे संसाधन समूह और उसके अंदर मौजूद सभी चीज़ें (VM, VNet, NSG, Bastion, सार्वजनिक IP) हट जाती हैं।

    अगले चरण

    संबंधित

    Was this useful?
    On this page

    On this page