Hosting
Azure
Configurez une machine virtuelle Linux Azure avec Azure CLI, appliquez un renforcement du groupe de sécurité réseau (NSG), configurez Azure Bastion pour l’accès SSH et installez OpenClaw.
Ce que vous allez faire
- Créer les ressources réseau Azure (VNet, sous-réseaux, NSG) et de calcul avec Azure CLI
- Appliquer des règles NSG afin que l’accès SSH à la machine virtuelle soit autorisé uniquement depuis Azure Bastion
- Utiliser Azure Bastion pour l’accès SSH (sans adresse IP publique sur la machine virtuelle)
- Installer OpenClaw avec le script d’installation
- Vérifier le Gateway
Prérequis
- Un abonnement Azure autorisé à créer des ressources de calcul et de réseau
- Azure CLI installé (consultez les étapes d’installation d’Azure CLI)
- Une paire de clés SSH (ce guide explique comment en générer une si nécessaire)
- Environ 20 à 30 minutes
Configurer le déploiement
Se connecter à Azure CLI
az loginaz extension add -n sshL’extension ssh est requise pour la création native de tunnels SSH avec Azure Bastion.
Inscrire les fournisseurs de ressources requis (une seule fois)
az provider register --namespace Microsoft.Computeaz provider register --namespace Microsoft.NetworkVérifiez l’inscription ; attendez que les deux affichent Registered.
az provider show --namespace Microsoft.Compute --query registrationState -o tsvaz provider show --namespace Microsoft.Network --query registrationState -o tsvDéfinir les variables de déploiement
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"Adaptez les noms et les plages CIDR à votre environnement. Le sous-réseau Bastion doit être au minimum en /26.
Sélectionner une clé SSH
Utilisez votre clé publique existante si vous en avez une :
SSH_PUB_KEY="$(cat ~/.ssh/id_ed25519.pub)"Sinon, générez-en une :
ssh-keygen -t ed25519 -a 100 -f ~/.ssh/id_ed25519 -C "you@example.com"SSH_PUB_KEY="$(cat ~/.ssh/id_ed25519.pub)"Sélectionner la taille de la machine virtuelle et celle du disque du système d’exploitation
VM_SIZE="Standard_B2as_v2"OS_DISK_SIZE_GB=64- Commencez avec une taille réduite pour une utilisation légère, puis augmentez-la ultérieurement.
- Utilisez davantage de processeurs virtuels, de RAM et d’espace disque pour une automatisation plus intensive, davantage de canaux ou des charges de travail de modèles et d’outils plus importantes.
- Si une taille n’est pas disponible dans votre région ou dans le quota de votre abonnement, choisissez la référence disponible la plus proche.
Répertoriez les tailles de machines virtuelles disponibles dans votre région cible :
az vm list-skus --location "${LOCATION}" --resource-type virtualMachines -o tableVérifiez votre utilisation et votre quota actuels de processeurs virtuels et de disques :
az vm list-usage --location "${LOCATION}" -o tableDéployer les ressources Azure
Créer le groupe de ressources
az group create -n "${RG}" -l "${LOCATION}"Créer le groupe de sécurité réseau
Créez le NSG et ajoutez des règles afin que seul le sous-réseau Bastion puisse établir une connexion SSH avec la machine virtuelle.
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 22Les règles sont évaluées par ordre de priorité, en commençant par le nombre le plus faible : le trafic Bastion est autorisé avec la priorité 100, puis tout autre trafic SSH est bloqué avec les priorités 110 et 120.
Créer le réseau virtuel et les sous-réseaux
Créez le VNet avec le sous-réseau de la machine virtuelle (auquel le NSG est associé), puis ajoutez le sous-réseau 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}" # 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}"Créer la machine virtuelle
Aucune adresse IP publique n’est attribuée à la machine virtuelle. L’accès SSH passe exclusivement par 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 "" empêche l’attribution d’une adresse IP publique. --nsg "" évite de créer un NSG propre à l’interface réseau, puisque le NSG du sous-réseau assure déjà la sécurité.
Pour épingler une version précise de l’image Ubuntu au lieu de latest, commencez par répertorier les versions disponibles :
az vm image list \ --publisher Canonical --offer ubuntu-24_04-lts \ --sku server --all -o tableCréer Azure Bastion
Azure Bastion fournit un accès SSH géré sans exposer d’adresse IP publique sur la machine virtuelle. La référence Standard avec la création de tunnels activée est requise pour utiliser az network bastion ssh depuis la 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 trueLe provisionnement de Bastion prend généralement 5 à 10 minutes, mais peut prendre jusqu’à 15 à 30 minutes dans certaines régions.
Installer OpenClaw
Se connecter à la machine virtuelle par SSH via 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_ed25519Installer OpenClaw (dans l’interpréteur de commandes de la machine virtuelle)
curl -fsSL https://openclaw.ai/install.sh -o /tmp/install.shbash /tmp/install.shrm -f /tmp/install.shLe programme d’installation installe Node et les dépendances s’ils ne sont pas déjà présents, installe OpenClaw et lance la configuration initiale. Consultez Installation pour plus de détails.
Vérifier le Gateway
Une fois la configuration initiale terminée :
openclaw gateway statusSi votre organisation dispose déjà de licences GitHub Copilot, vous pouvez choisir le fournisseur GitHub Copilot pendant la configuration initiale au lieu d’utiliser une clé d’API distincte pour le modèle. Consultez Fournisseur GitHub Copilot.
Considérations relatives aux coûts
Coûts mensuels approximatifs (vérifiez les tarifs actuels dans le calculateur de prix Azure, car ils varient selon la région et évoluent au fil du temps) :
- Référence Standard d’Azure Bastion : environ 140 $/mois
- Machine virtuelle (
Standard_B2as_v2) : environ 55 $/mois
Pour réduire les coûts :
-
Libérez la machine virtuelle lorsqu’elle n’est pas utilisée. Cela interrompt la facturation du calcul (les frais de disque restent applicables). Le Gateway est inaccessible tant que la machine virtuelle est libérée.
bash az vm deallocate -g "${RG}" -n "${VM_NAME}"az vm start -g "${RG}" -n "${VM_NAME}" # restart later -
Supprimez Bastion lorsqu’il n’est pas nécessaire, puis recréez-le lorsque vous avez de nouveau besoin d’un accès SSH ; il représente la plus grande part des coûts et son provisionnement ne prend que quelques minutes.
-
Utilisez la référence Basic de Bastion (environ 38 $/mois) si vous avez uniquement besoin d’un accès SSH depuis le portail et n’avez pas besoin de créer des tunnels avec la CLI (
az network bastion ssh).
Nettoyage
Supprimez toutes les ressources créées par ce guide :
az group delete -n "${RG}" --yes --no-waitCette commande supprime le groupe de ressources et tout ce qu’il contient (machine virtuelle, VNet, NSG, Bastion et adresse IP publique).
Étapes suivantes
- Configurer les canaux de messagerie : Canaux
- Associer des appareils locaux comme des nœuds : Nœuds
- Configurer le Gateway : Configuration du Gateway
- Plus de détails sur le déploiement Azure avec le fournisseur de modèles GitHub Copilot : OpenClaw sur Azure avec GitHub Copilot