На цій сторінці

На цій сторінці

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?