Hosting

Azure

Налаштуйте віртуальну машину Azure Linux за допомогою Azure CLI, посильте захист групи безпеки мережі (NSG), налаштуйте Azure Bastion для доступу через SSH та встановіть OpenClaw.

Що ви зробите

  • Створите мережеві ресурси Azure (VNet, підмережі, NSG) і обчислювальні ресурси за допомогою Azure CLI
  • Застосуєте правила NSG, щоб доступ до VM через SSH був дозволений лише з Azure Bastion
  • Використаєте Azure Bastion для доступу через SSH (без загальнодоступної IP-адреси на VM)
  • Установите OpenClaw за допомогою сценарію встановлення
  • Перевірите Gateway

Що вам знадобиться

  • Передплата Azure із дозволом на створення обчислювальних і мережевих ресурсів
  • Установлений Azure CLI (див. інструкції зі встановлення Azure CLI)
  • Пара ключів SSH (у цьому посібнику описано, як створити її за потреби)
  • Приблизно 20–30 хвилин

Налаштування розгортання

  • Увійдіть в Azure CLI

    bash
    az loginaz extension add -n ssh

    Розширення ssh потрібне для нативного тунелювання SSH через Azure Bastion.

  • Зареєструйте необхідних постачальників ресурсів (одноразово)

    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 і розмір диска ОС

    bash
    VM_SIZE="Standard_B2as_v2"OS_DISK_SIZE_GB=64
    • Для невеликого навантаження почніть із меншої конфігурації та за потреби збільште її пізніше.
    • Для інтенсивнішої автоматизації, більшої кількості каналів або значніших навантажень від моделей чи інструментів використовуйте більше vCPU, оперативної пам’яті та дискового простору.
    • Якщо певний розмір недоступний у вашому регіоні або в межах квоти передплати, виберіть найближчий доступний 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}" # 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.

  • Створіть віртуальну мережу та підмережі

    Створіть VNet із підмережею VM (із приєднаною NSG), а потім додайте підмережу 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}" # 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: this exact 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.

    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 для окремого мережевого інтерфейсу, оскільки безпеку вже забезпечує NSG на рівні підмережі.

    Щоб закріпити певну версію образу Ubuntu замість latest, спочатку перегляньте доступні версії:

    bash
    az vm image list \  --publisher Canonical --offer ubuntu-24_04-lts \  --sku server --all -o table
  • Створіть Azure Bastion

    Azure Bastion надає керований доступ через SSH без відкриття загальнодоступної IP-адреси на VM. Для використання az network bastion ssh через CLI потрібен SKU Standard з увімкненим тунелюванням.

    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

  • Підключіться до VM через SSH за допомогою Azure Bastion

    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, під час початкового налаштування можна вибрати постачальника GitHub Copilot замість окремого ключа API моделі. Див. постачальник GitHub Copilot.

  • Вартість

    Орієнтовна щомісячна вартість (перевіряйте актуальні ціни в калькуляторі цін Azure, оскільки тарифи різняться залежно від регіону та змінюються з часом):

    • SKU Azure Bastion Standard: приблизно 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}"   # restart later
    • Видаляйте Bastion, коли він не потрібен, і створюйте його знову, коли знову знадобиться доступ через SSH; це найбільша складова вартості, а його підготовка триває лише кілька хвилин.

    • Використовуйте SKU Bastion Basic (приблизно 38 дол. США на місяць), якщо вам потрібен лише доступ через SSH із порталу й не потрібне тунелювання через CLI (az network bastion ssh).

    Очищення

    Видаліть усі ресурси, створені за цим посібником:

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

    Це видалить групу ресурсів і все, що в ній міститься (VM, VNet, NSG, Bastion, загальнодоступну IP-адресу).

    Наступні кроки

    Пов’язані матеріали

    Was this useful?
    On this page

    On this page