Azure
OpenClaw en máquina virtual Linux de Azure
Sección titulada «OpenClaw en máquina virtual Linux de Azure»Esta guía configura una VM Linux de Azure con la CLI de Azure, aplica el endurecimiento del Grupo de Seguridad de Red (NSG), configura Azure Bastion para el acceso SSH e instala OpenClaw.
Lo que harás
Sección titulada «Lo que harás»- Crear recursos de red (VNet, subredes, NSG) y proceso de Azure con la CLI de Azure
- Aplicar reglas del Grupo de Seguridad de Red para que el SSH de la VM solo se permita desde Azure Bastion
- Usar Azure Bastion para el acceso SSH (sin IP pública en la VM)
- Instalar OpenClaw con el script de instalador
- Verificar la puerta de enlace
Lo que necesitas
Sección titulada «Lo que necesitas»- Una suscripción de Azure con permiso para crear recursos de proceso y red
- CLI de Azure instalada (consulte los pasos de instalación de la CLI de Azure si es necesario)
- Un par de claves SSH (la guía cubre cómo generar una si es necesario)
- ~20-30 minutos
Configurar implementación
Sección titulada «Configurar implementación»Iniciar sesión en la CLI de Azure
Ventana de terminal az loginaz extension add -n sshLa extensión
sshes necesaria para el túnel SSH nativo de Azure Bastion.Registrar proveedores de recursos necesarios (una vez)
Ventana de terminal az provider register --namespace Microsoft.Computeaz provider register --namespace Microsoft.NetworkVerifique el registro. Espere hasta que ambos muestren
Registered.Ventana de terminal az provider show --namespace Microsoft.Compute --query registrationState -o tsvaz provider show --namespace Microsoft.Network --query registrationState -o tsvEstablecer variables de implementación
Ventana de terminal 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"Ajuste los nombres y los rangos CIDR para que se adapten a su entorno. La subred de Bastion debe tener al menos
/26.Seleccionar clave SSH
Use su clave pública existente si tiene una:
Ventana de terminal SSH_PUB_KEY="$(cat ~/.ssh/id_ed25519.pub)"Si aún no tiene una clave SSH, genere una:
Ventana de terminal SSH_PUB_KEY="$(cat ~/.ssh/id_ed25519.pub)"Seleccionar el tamaño de la máquina virtual y el tamaño del disco del SO
Ventana de terminal VM_SIZE="Standard_B2as_v2"OS_DISK_SIZE_GB=64Elija un tamaño de máquina virtual y un tamaño de disco del sistema operativo disponibles en su suscripción y región:
- Comience con un tamaño más pequeño para un uso ligero y escale más tarde
- Use más vCPU/RAM/disco para una automatización más pesada, más canales o cargas de trabajo de modelo/herramienta más grandes
- Si un tamaño de máquina virtual no está disponible en su región o cuota de suscripción, elija la SKU disponible más cercana
Enumere los tamaños de máquina virtual disponibles en su región de destino:
Ventana de terminal az vm list-skus --location "${LOCATION}" --resource-type virtualMachines -o tableCompruebe su uso y cuota actuales de vCPU y disco:
Ventana de terminal az vm list-usage --location "${LOCATION}" -o table
Implementar recursos de Azure
Sección titulada «Implementar recursos de Azure»Create the resource group
Ventana de terminal az group create -n "${RG}" -l "${LOCATION}"Crear el grupo de seguridad de red
Cree el NSG y agregue reglas para que solo la subred de Bastion pueda acceder mediante SSH a la máquina virtual.
Ventana de terminal 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 22Las reglas se evalúan por prioridad (primero el número más bajo): el tráfico de Bastion se permite en 100, luego todo el otro SSH se bloquea en 110 y 120.
Crear la red virtual y las subredes
Cree la red virtual con la subred de la máquina virtual (NSG adjunto) y luego agregue la subred de Bastion.
Ventana de terminal 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 — name is required by Azureaz network vnet subnet create \-g "${RG}" --vnet-name "${VNET_NAME}" \-n AzureBastionSubnet \--address-prefixes "${BASTION_SUBNET_PREFIX}"Crear la máquina virtual
La máquina virtual no tiene una IP pública. El acceso SSH es exclusivamente a través de Azure Bastion.
Ventana de terminal 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 ""evita que se asigne una IP pública.--nsg ""omite la creación de un NSG por NIC (el NSG de nivel de subred maneja la seguridad).Reproducibilidad: El comando anterior usa
latestpara la imagen de Ubuntu. Para fijar una versión específica, enumere las versiones disponibles y reemplacelatest:Ventana de terminal az vm image list \--publisher Canonical --offer ubuntu-24_04-lts \--sku server --all -o tableCrear Azure Bastion
Azure Bastion proporciona acceso SSH administrado a la máquina virtual sin exponer una IP pública. Se requiere la SKU Estándar con túnel para
az network bastion sshbasado en CLI.Ventana de terminal az network public-ip create \-g "${RG}" -n "${BASTION_PIP_NAME}" -l "${LOCATION}" \--sku Standard --allocation-method Staticaz network bastion create \-g "${RG}" -n "${BASTION_NAME}" -l "${LOCATION}" \--vnet-name "${VNET_NAME}" \--public-ip-address "${BASTION_PIP_NAME}" \--sku Standard --enable-tunneling trueEl aprovisionamiento de Bastion generalmente toma de 5 a 10 minutos, pero puede tomar hasta 15-30 minutos en algunas regiones.
Instalar OpenClaw
Sección titulada «Instalar OpenClaw»SSH into the VM through Azure Bastion
Ventana de terminal 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_ed25519Instalar OpenClaw (en el shell de la VM)
Ventana de terminal curl -fsSL https://openclaw.ai/install.sh -o /tmp/install.shbash /tmp/install.shrm -f /tmp/install.shEl instalador instala Node LTS y las dependencias si aún no están presentes, instala OpenClaw e inicia el asistente de incorporación. Consulte Install para obtener más detalles.
Verificar la puerta de enlace
Una vez que se complete la incorporación:
Ventana de terminal openclaw gateway statusLa mayoría de los equipos de Azure empresariales ya tienen licencias de GitHub Copilot. Si ese es su caso, recomendamos elegir el proveedor de GitHub Copilot en el asistente de incorporación de OpenClaw. Consulte Proveedor de GitHub Copilot.
Consideraciones sobre costos
Sección titulada «Consideraciones sobre costos»Azure Bastion SKU Estándar cuesta aproximadamente 140 $ / mes y la VM (Standard_B2as_v2) cuesta aproximadamente 55 $ / mes.
Para reducir los costos:
-
Desasigne la VM cuando no esté en uso (detiene la facturación de cómputo; los cargos de disco permanecen). OpenClaw Gateway no será accesible mientras la VM está desasignada: reiníciela cuando necesite que vuelva a estar activa:
Ventana de terminal az vm deallocate -g "${RG}" -n "${VM_NAME}"az vm start -g "${RG}" -n "${VM_NAME}" # restart later -
Elimine Bastion cuando no sea necesario y vuelva a crearlo cuando necesite acceso SSH. Bastion es el componente de costo más alto y tarda solo unos minutos en aprovisionarse.
-
Use la SKU Básica de Bastion (~38 $ / mes) si solo necesita SSH basado en portal y no requiere túnel CLI (
az network bastion ssh).
Limpieza
Sección titulada «Limpieza»Para eliminar todos los recursos creados por esta guía:
az group delete -n "${RG}" --yes --no-waitEsto elimina el grupo de recursos y todo lo que contiene (VM, VNet, NSG, Bastion, IP pública).
Siguientes pasos
Sección titulada «Siguientes pasos»- Configure canales de mensajería: Canales
- Empareje dispositivos locales como nodos: Nodos
- Configure la puerta de enlace: Configuración de la puerta de enlace
- Para obtener más detalles sobre la implementación de OpenClaw en Azure con el proveedor de modelos de GitHub Copilot: OpenClaw en Azure con GitHub Copilot