Hosting
Azure
Skonfiguruj maszynę wirtualną z systemem Linux na platformie Azure za pomocą Azure CLI, zastosuj zabezpieczenia grupy zabezpieczeń sieciowych (NSG), skonfiguruj Azure Bastion na potrzeby dostępu przez SSH i zainstaluj OpenClaw.
Co zrobisz
- Utworzysz zasoby sieciowe Azure (VNet, podsieci, NSG) oraz zasoby obliczeniowe za pomocą Azure CLI
- Zastosujesz reguły NSG, aby dostęp SSH do maszyny wirtualnej był dozwolony wyłącznie z Azure Bastion
- Użyjesz Azure Bastion do dostępu przez SSH (bez publicznego adresu IP maszyny wirtualnej)
- Zainstalujesz OpenClaw za pomocą skryptu instalacyjnego
- Zweryfikujesz Gateway
Czego potrzebujesz
- Subskrypcji Azure z uprawnieniami do tworzenia zasobów obliczeniowych i sieciowych
- Zainstalowanego Azure CLI (zobacz instrukcję instalacji Azure CLI)
- Pary kluczy SSH (w tym przewodniku opisano sposób jej wygenerowania w razie potrzeby)
- Około 20–30 minut
Konfigurowanie wdrożenia
Zaloguj się w Azure CLI
az loginaz extension add -n sshRozszerzenie ssh jest wymagane do natywnego tunelowania SSH przez Azure Bastion.
Zarejestruj wymaganych dostawców zasobów (jednorazowo)
az provider register --namespace Microsoft.Computeaz provider register --namespace Microsoft.NetworkZweryfikuj rejestrację; poczekaj, aż dla obu zostanie wyświetlony stan Registered.
az provider show --namespace Microsoft.Compute --query registrationState -o tsvaz provider show --namespace Microsoft.Network --query registrationState -o tsvUstaw zmienne wdrożenia
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"Dostosuj nazwy i zakresy CIDR do swojego środowiska. Podsieć Bastion musi mieć rozmiar co najmniej /26.
Wybierz klucz SSH
Jeśli masz już klucz publiczny, użyj go:
SSH_PUB_KEY="$(cat ~/.ssh/id_ed25519.pub)"W przeciwnym razie wygeneruj klucz:
ssh-keygen -t ed25519 -a 100 -f ~/.ssh/id_ed25519 -C "you@example.com"SSH_PUB_KEY="$(cat ~/.ssh/id_ed25519.pub)"Wybierz rozmiar maszyny wirtualnej i dysku systemu operacyjnego
VM_SIZE="Standard_B2as_v2"OS_DISK_SIZE_GB=64- W przypadku niewielkiego obciążenia zacznij od mniejszego rozmiaru i zwiększ go później.
- W przypadku bardziej intensywnej automatyzacji, większej liczby kanałów lub większych obciążeń związanych z modelami i narzędziami użyj większej liczby procesorów vCPU, większej ilości pamięci RAM i większego dysku.
- Jeśli dany rozmiar jest niedostępny w Twoim regionie lub w ramach limitu subskrypcji, wybierz najbliższą dostępną jednostkę SKU.
Wyświetl rozmiary maszyn wirtualnych dostępne w regionie docelowym:
az vm list-skus --location "${LOCATION}" --resource-type virtualMachines -o tableSprawdź bieżące wykorzystanie i limity procesorów vCPU oraz dysków:
az vm list-usage --location "${LOCATION}" -o tableWdrażanie zasobów Azure
Utwórz grupę zasobów
az group create -n "${RG}" -l "${LOCATION}"Utwórz grupę zabezpieczeń sieciowych
Utwórz NSG i dodaj reguły, aby tylko podsieć Bastion mogła nawiązywać połączenia SSH z maszyną wirtualną.
az network nsg create \ -g "${RG}" -n "${NSG_NAME}" -l "${LOCATION}" # Zezwól na SSH wyłącznie z podsieci Bastionaz 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 # Odrzuć SSH z publicznego Internetuaz 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 # Odrzuć SSH z innych źródeł w VNetaz 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 22Reguły są oceniane według priorytetu, począwszy od najniższej liczby: ruch z Bastion jest dozwolony z priorytetem 100, a następnie cały pozostały ruch SSH jest blokowany z priorytetami 110 i 120.
Utwórz sieć wirtualną i podsieci
Utwórz VNet z podsiecią maszyny wirtualnej (z dołączoną NSG), a następnie dodaj podsieć 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}" # Dołącz NSG do podsieci maszyny wirtualnejaz network vnet subnet update \ -g "${RG}" --vnet-name "${VNET_NAME}" \ -n "${VM_SUBNET_NAME}" --nsg "${NSG_NAME}" # AzureBastionSubnet: Azure wymaga dokładnie tej nazwyaz network vnet subnet create \ -g "${RG}" --vnet-name "${VNET_NAME}" \ -n AzureBastionSubnet \ --address-prefixes "${BASTION_SUBNET_PREFIX}"Utwórz maszynę wirtualną
Maszyna wirtualna nie otrzymuje publicznego adresu IP. Dostęp przez SSH odbywa się wyłącznie przez 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 ""Opcja --public-ip-address "" zapobiega przypisaniu publicznego adresu IP. Opcja --nsg "" pomija tworzenie NSG dla pojedynczego interfejsu sieciowego, ponieważ zabezpieczeniami zarządza już NSG na poziomie podsieci.
Aby przypiąć konkretną wersję obrazu Ubuntu zamiast latest, najpierw wyświetl dostępne wersje:
az vm image list \ --publisher Canonical --offer ubuntu-24_04-lts \ --sku server --all -o tableUtwórz Azure Bastion
Azure Bastion zapewnia zarządzany dostęp przez SSH bez udostępniania publicznego adresu IP maszyny wirtualnej. Do używania polecenia az network bastion ssh z poziomu CLI wymagane są jednostka SKU Standard oraz włączone tunelowanie.
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 trueAprowizowanie usługi Bastion zwykle zajmuje 5–10 minut, ale w niektórych regionach może potrwać nawet 15–30 minut.
Instalowanie OpenClaw
Połącz się z maszyną wirtualną przez SSH za pośrednictwem Azure Bastion
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_ed25519Zainstaluj OpenClaw (w powłoce maszyny wirtualnej)
curl -fsSL https://openclaw.ai/install.sh -o /tmp/install.shbash /tmp/install.shrm -f /tmp/install.shInstalator instaluje Node i zależności, jeśli nie są jeszcze dostępne, instaluje OpenClaw i uruchamia proces konfiguracji początkowej. Szczegółowe informacje znajdziesz w sekcji Instalacja.
Zweryfikuj Gateway
Po zakończeniu konfiguracji początkowej:
openclaw gateway statusJeśli Twoja organizacja ma już licencje GitHub Copilot, podczas konfiguracji początkowej możesz wybrać dostawcę GitHub Copilot zamiast używać oddzielnego klucza API modelu. Zobacz dostawcę GitHub Copilot.
Kwestie dotyczące kosztów
Przybliżone koszty miesięczne (sprawdź aktualne ceny w kalkulatorze cen Azure, ponieważ stawki różnią się w zależności od regionu i zmieniają się z czasem):
- Azure Bastion w jednostce SKU Standard: około 140 USD miesięcznie
- Maszyna wirtualna (
Standard_B2as_v2): około 55 USD miesięcznie
Aby obniżyć koszty:
-
Cofnij przydział maszyny wirtualnej, gdy nie jest używana. Zatrzymuje to naliczanie opłat za zasoby obliczeniowe (opłaty za dysk nadal obowiązują). Gateway jest niedostępny, gdy przydział maszyny wirtualnej jest cofnięty.
bash az vm deallocate -g "${RG}" -n "${VM_NAME}"az vm start -g "${RG}" -n "${VM_NAME}" # uruchom ponownie później -
Usuń Bastion, gdy nie jest potrzebny, i utwórz go ponownie, gdy znów będziesz potrzebować dostępu przez SSH; jest to największy składnik kosztów, a jego aprowizowanie zajmuje kilka minut.
-
Użyj jednostki SKU Basic usługi Bastion (około 38 USD miesięcznie), jeśli potrzebujesz wyłącznie dostępu SSH za pośrednictwem portalu i nie potrzebujesz tunelowania przez CLI (
az network bastion ssh).
Czyszczenie
Usuń wszystkie zasoby utworzone zgodnie z tym przewodnikiem:
az group delete -n "${RG}" --yes --no-waitSpowoduje to usunięcie grupy zasobów i wszystkiego, co się w niej znajduje (maszyny wirtualnej, VNet, NSG, Bastion i publicznego adresu IP).
Następne kroki
- Skonfiguruj kanały komunikacyjne: Kanały
- Sparuj urządzenia lokalne jako węzły: Węzły
- Skonfiguruj Gateway: Konfiguracja Gateway
- Więcej informacji o wdrażaniu na platformie Azure z dostawcą modelu GitHub Copilot: OpenClaw na platformie Azure z GitHub Copilot