Chuyển đến nội dung chính

OpenClaw trên Azure Linux VM

Hướng dẫn này thiết lập một Azure Linux VM với Azure CLI, áp dụng bảo mật Network Security Group (NSG), cấu hình Azure Bastion để truy cập SSH, và cài đặt OpenClaw.

Bạn sẽ làm gì

  • Tạo mạng Azure (VNet, subnets, NSG) và tài nguyên tính toán với Azure CLI
  • Áp dụng quy tắc Network Security Group để chỉ cho phép SSH từ Azure Bastion
  • Sử dụng Azure Bastion để truy cập SSH (không có IP công cộng trên VM)
  • Cài đặt OpenClaw bằng script cài đặt
  • Xác minh Gateway

Bạn cần gì

  • Một tài khoản Azure có quyền tạo tài nguyên tính toán và mạng
  • Azure CLI đã được cài đặt (xem hướng dẫn cài đặt Azure CLI nếu cần)
  • Một cặp khóa SSH (hướng dẫn sẽ bao gồm cách tạo nếu cần)
  • ~20-30 phút

Cấu hình triển khai

1

Đăng nhập vào Azure CLI

az login
az extension add -n ssh
Phần mở rộng ssh là cần thiết cho việc tạo đường hầm SSH gốc của Azure Bastion.
2

Đăng ký nhà cung cấp tài nguyên cần thiết (một lần)

az provider register --namespace Microsoft.Compute
az provider register --namespace Microsoft.Network
Xác minh đăng ký. Chờ cho đến khi cả hai hiển thị Registered.
az provider show --namespace Microsoft.Compute --query registrationState -o tsv
az provider show --namespace Microsoft.Network --query registrationState -o tsv
3

Thiết lập biến triển khai

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"
Điều chỉnh tên và phạm vi CIDR để phù hợp với môi trường của bạn. Subnet Bastion phải ít nhất là /26.
4

Chọn khóa SSH

Sử dụng khóa công khai hiện có nếu bạn đã có:
SSH_PUB_KEY="$(cat ~/.ssh/id_ed25519.pub)"
Nếu chưa có khóa SSH, tạo một khóa:
ssh-keygen -t ed25519 -a 100 -f ~/.ssh/id_ed25519 -C "you@example.com"
SSH_PUB_KEY="$(cat ~/.ssh/id_ed25519.pub)"
5

Chọn kích thước VM và kích thước đĩa OS

VM_SIZE="Standard_B2as_v2"
OS_DISK_SIZE_GB=64
Chọn kích thước VM và kích thước đĩa OS có sẵn trong tài khoản và khu vực của bạn:
  • Bắt đầu nhỏ cho nhu cầu sử dụng nhẹ và mở rộng sau
  • Sử dụng nhiều vCPU/RAM/đĩa hơn cho tự động hóa nặng, nhiều kênh, hoặc khối lượng công việc mô hình/công cụ lớn hơn
  • Nếu kích thước VM không có sẵn trong khu vực hoặc hạn ngạch tài khoản của bạn, chọn SKU gần nhất có sẵn
Liệt kê các kích thước VM có sẵn trong khu vực mục tiêu của bạn:
az vm list-skus --location "${LOCATION}" --resource-type virtualMachines -o table
Kiểm tra mức sử dụng/hạn ngạch vCPU và đĩa hiện tại của bạn:
az vm list-usage --location "${LOCATION}" -o table

Triển khai tài nguyên Azure

1

Tạo nhóm tài nguyên

az group create -n "${RG}" -l "${LOCATION}"
2

Tạo nhóm bảo mật mạng

Tạo NSG và thêm quy tắc để chỉ subnet Bastion có thể SSH vào VM.
az network nsg create \
  -g "${RG}" -n "${NSG_NAME}" -l "${LOCATION}"

# Cho phép SSH từ chỉ subnet Bastion
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

# Từ chối SSH từ internet công cộng
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

# Từ chối SSH từ các nguồn VNet khác
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
Các quy tắc được đánh giá theo thứ tự ưu tiên (số thấp nhất trước): lưu lượng Bastion được cho phép ở mức 100, sau đó tất cả SSH khác bị chặn ở mức 110 và 120.
3

Tạo mạng ảo và subnets

Tạo VNet với subnet VM (đính kèm NSG), sau đó thêm subnet 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}"

# Đính kèm NSG vào subnet VM
az network vnet subnet update \
  -g "${RG}" --vnet-name "${VNET_NAME}" \
  -n "${VM_SUBNET_NAME}" --nsg "${NSG_NAME}"

# AzureBastionSubnet — tên được yêu cầu bởi Azure
az network vnet subnet create \
  -g "${RG}" --vnet-name "${VNET_NAME}" \
  -n AzureBastionSubnet \
  --address-prefixes "${BASTION_SUBNET_PREFIX}"
4

Tạo VM

VM không có IP công cộng. Truy cập SSH chỉ thông qua 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 ""
--public-ip-address "" ngăn không cho IP công cộng được gán. --nsg "" bỏ qua việc tạo NSG cho mỗi NIC (NSG cấp subnet xử lý bảo mật).Tái tạo: Lệnh trên sử dụng latest cho hình ảnh Ubuntu. Để cố định một phiên bản cụ thể, liệt kê các phiên bản có sẵn và thay thế latest:
az vm image list \
  --publisher Canonical --offer ubuntu-24_04-lts \
  --sku server --all -o table
5

Tạo Azure Bastion

Azure Bastion cung cấp truy cập SSH được quản lý đến VM mà không cần lộ IP công cộng. SKU tiêu chuẩn với tạo đường hầm là cần thiết cho az network bastion ssh dựa trên CLI.
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
Việc cung cấp Bastion thường mất 5-10 phút nhưng có thể mất đến 15-30 phút ở một số khu vực.

Cài đặt OpenClaw

1

SSH vào VM thông qua 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_ed25519
2

Cài đặt OpenClaw (trong shell VM)

curl -fsSL https://openclaw.ai/install.sh -o /tmp/install.sh
bash /tmp/install.sh
rm -f /tmp/install.sh
Trình cài đặt sẽ cài đặt Node LTS và các phụ thuộc nếu chưa có, cài đặt OpenClaw và khởi chạy trình hướng dẫn onboarding. Xem Cài đặt để biết chi tiết.
3

Xác minh Gateway

Sau khi hoàn tất onboarding:
openclaw gateway status
Hầu hết các nhóm Azure doanh nghiệp đã có giấy phép GitHub Copilot. Nếu bạn thuộc trường hợp này, chúng tôi khuyên bạn nên chọn nhà cung cấp GitHub Copilot trong trình hướng dẫn onboarding của OpenClaw. Xem nhà cung cấp GitHub Copilot.

Cân nhắc chi phí

Azure Bastion SKU tiêu chuẩn chạy khoảng 140 USD/tháng và VM (Standard_B2as_v2) chạy khoảng 55 USD/tháng. Để giảm chi phí:
  • Giải phóng VM khi không sử dụng (ngừng tính phí tính toán; phí đĩa vẫn còn). OpenClaw Gateway sẽ không thể truy cập khi VM bị giải phóng — khởi động lại khi cần sử dụng:
    az vm deallocate -g "${RG}" -n "${VM_NAME}"
    az vm start -g "${RG}" -n "${VM_NAME}"   # khởi động lại sau
    
  • Xóa Bastion khi không cần thiết và tạo lại khi cần truy cập SSH. Bastion là thành phần chi phí lớn nhất và chỉ mất vài phút để cung cấp.
  • Sử dụng SKU Bastion cơ bản (~38 USD/tháng) nếu bạn chỉ cần SSH dựa trên Portal và không yêu cầu tạo đường hầm CLI (az network bastion ssh).

Dọn dẹp

Để xóa tất cả tài nguyên được tạo bởi hướng dẫn này:
az group delete -n "${RG}" --yes --no-wait
Điều này sẽ xóa nhóm tài nguyên và mọi thứ bên trong nó (VM, VNet, NSG, Bastion, IP công cộng).

Bước tiếp theo

Last modified on March 22, 2026