Hosting
Azure
Bu kılavuz, Azure CLI ile bir Azure Linux VM kurar, Network Security Group (NSG) sıkılaştırması uygular, SSH erişimi için Azure Bastion yapılandırır ve OpenClaw yükler.
Yapacaklarınız
- Azure CLI ile Azure ağını (VNet, alt ağlar, NSG) ve işlem kaynaklarını oluşturma
- VM SSH erişimine yalnızca Azure Bastion üzerinden izin verilecek şekilde Network Security Group kurallarını uygulama
- SSH erişimi için Azure Bastion kullanma (VM üzerinde genel IP yok)
- Yükleyici betiğiyle OpenClaw yükleme
- Gateway’i doğrulama
Gerekenler
- İşlem ve ağ kaynakları oluşturma iznine sahip bir Azure aboneliği
- Azure CLI yüklü (gerekirse Azure CLI yükleme adımlarına bakın)
- Bir SSH anahtar çifti (gerekirse kılavuz bir tane oluşturmayı kapsar)
- ~20-30 dakika
Dağıtımı yapılandırma
Azure CLI’da oturum açın
az login
az extension add -n ssh
ssh uzantısı, Azure Bastion yerel SSH tünellemesi için gereklidir.
Gerekli kaynak sağlayıcılarını kaydedin (bir kerelik)
az provider register --namespace Microsoft.Compute
az provider register --namespace Microsoft.Network
Kaydı doğrulayın. İkisi de Registered gösterene kadar bekleyin.
az provider show --namespace Microsoft.Compute --query registrationState -o tsv
az provider show --namespace Microsoft.Network --query registrationState -o tsv
Dağıtım değişkenlerini ayarlayın
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"
Adları ve CIDR aralıklarını ortamınıza uyacak şekilde ayarlayın. Bastion alt ağı en az /26 olmalıdır.
SSH anahtarı seçin
Varsa mevcut genel anahtarınızı kullanın:
SSH_PUB_KEY="$(cat ~/.ssh/id_ed25519.pub)"
Henüz bir SSH anahtarınız yoksa bir tane oluşturun:
ssh-keygen -t ed25519 -a 100 -f ~/.ssh/id_ed25519 -C "[email protected]"
SSH_PUB_KEY="$(cat ~/.ssh/id_ed25519.pub)"
VM boyutunu ve OS disk boyutunu seçin
VM_SIZE="Standard_B2as_v2"
OS_DISK_SIZE_GB=64
Aboneliğinizde ve bölgenizde kullanılabilir bir VM boyutu ve OS disk boyutu seçin:
- Hafif kullanım için daha küçük başlayın ve daha sonra ölçek büyütün
- Daha ağır otomasyon, daha fazla kanal veya daha büyük model/araç iş yükleri için daha fazla vCPU/RAM/disk kullanın
- Bir VM boyutu bölgenizde veya abonelik kotanızda kullanılamıyorsa, kullanılabilir en yakın SKU’yu seçin
Hedef bölgenizde kullanılabilir VM boyutlarını listeleyin:
az vm list-skus --location "${LOCATION}" --resource-type virtualMachines -o table
Geçerli vCPU ve disk kullanımınızı/kotanızı kontrol edin:
az vm list-usage --location "${LOCATION}" -o table
Azure kaynaklarını dağıtma
Kaynak grubunu oluşturun
az group create -n "${RG}" -l "${LOCATION}"
Network Security Group oluşturun
NSG’yi oluşturun ve yalnızca Bastion alt ağının VM’ye SSH ile bağlanabilmesi için kurallar ekleyin.
az network nsg create \
-g "${RG}" -n "${NSG_NAME}" -l "${LOCATION}"
# Allow SSH from the Bastion subnet only
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
# Deny SSH from the public internet
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
# Deny SSH from other VNet sources
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
Kurallar önceliğe göre değerlendirilir (en düşük sayı önce): Bastion trafiğine 100’de izin verilir, ardından diğer tüm SSH erişimi 110 ve 120’de engellenir.
Sanal ağı ve alt ağları oluşturun
VM alt ağıyla (NSG bağlı) VNet’i oluşturun, ardından Bastion alt ağını ekleyin.
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 subnet
az network vnet subnet update \
-g "${RG}" --vnet-name "${VNET_NAME}" \
-n "${VM_SUBNET_NAME}" --nsg "${NSG_NAME}"
# AzureBastionSubnet — name is required by Azure
az network vnet subnet create \
-g "${RG}" --vnet-name "${VNET_NAME}" \
-n AzureBastionSubnet \
--address-prefixes "${BASTION_SUBNET_PREFIX}"
VM’yi oluşturun
VM’nin genel IP’si yoktur. SSH erişimi yalnızca Azure Bastion üzerinden yapılır.
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 "" genel IP atanmasını engeller. --nsg "" NIC başına NSG oluşturmayı atlar (güvenliği alt ağ düzeyindeki NSG sağlar).
Yeniden üretilebilirlik: Yukarıdaki komut, Ubuntu imajı için latest kullanır. Belirli bir sürümü sabitlemek için kullanılabilir sürümleri listeleyin ve latest değerini değiştirin:
az vm image list \
--publisher Canonical --offer ubuntu-24_04-lts \
--sku server --all -o table
Azure Bastion oluşturun
Azure Bastion, genel IP açığa çıkarmadan VM’ye yönetilen SSH erişimi sağlar. CLI tabanlı az network bastion ssh için tünelleme özellikli Standard SKU gereklidir.
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 hazırlama genellikle 5-10 dakika sürer, ancak bazı bölgelerde 15-30 dakikaya kadar sürebilir.
OpenClaw yükleme
Azure Bastion üzerinden VM’ye SSH ile bağlanın
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 yükleyin (VM kabuğunda)
curl -fsSL https://openclaw.ai/install.sh -o /tmp/install.sh
bash /tmp/install.sh
rm -f /tmp/install.sh
Yükleyici, henüz mevcut değilse Node LTS ve bağımlılıkları yükler, OpenClaw’u yükler ve ilk kurulum sihirbazını başlatır. Ayrıntılar için Yükleme bölümüne bakın.
Gateway’i doğrulayın
İlk kurulum tamamlandıktan sonra:
openclaw gateway status
Çoğu kurumsal Azure ekibinin zaten GitHub Copilot lisansları vardır. Durumunuz buysa, OpenClaw ilk kurulum sihirbazında GitHub Copilot sağlayıcısını seçmenizi öneririz. GitHub Copilot sağlayıcısı bölümüne bakın.
Maliyet değerlendirmeleri
Azure Bastion Standard SKU yaklaşık $140/ay, VM (Standard_B2as_v2) ise yaklaşık $55/ay maliyetle çalışır.
Maliyetleri azaltmak için:
-
VM’yi ayırın kullanılmadığında (işlem faturalandırmasını durdurur; disk ücretleri devam eder). VM ayrılmış durumdayken OpenClaw Gateway’e erişilemez; tekrar canlı ihtiyacınız olduğunda yeniden başlatın:
az vm deallocate -g "${RG}" -n "${VM_NAME}" az vm start -g "${RG}" -n "${VM_NAME}" # restart later -
Gerekmediğinde Bastion’ı silin ve SSH erişimine ihtiyacınız olduğunda yeniden oluşturun. Bastion en büyük maliyet bileşenidir ve hazırlanması yalnızca birkaç dakika sürer.
-
Yalnızca Portal tabanlı SSH gerekiyorsa ve CLI tünellemesi (
az network bastion ssh) gerekmiyorsa Basic Bastion SKU’yu (~$38/ay) kullanın.
Temizleme
Bu kılavuz tarafından oluşturulan tüm kaynakları silmek için:
az group delete -n "${RG}" --yes --no-wait
Bu işlem kaynak grubunu ve içindeki her şeyi (VM, VNet, NSG, Bastion, genel IP) kaldırır.
Sonraki adımlar
- Mesajlaşma kanallarını ayarlayın: Kanallar
- Yerel cihazları Node olarak eşleyin: Nodes
- Gateway’i yapılandırın: Gateway yapılandırması
- GitHub Copilot model sağlayıcısıyla OpenClaw Azure dağıtımı hakkında daha fazla ayrıntı için: GitHub Copilot ile Azure üzerinde OpenClaw