Hosting
Azure
Richten Sie mit der Azure CLI eine Azure-Linux-VM ein, härten Sie die Netzwerksicherheitsgruppe (NSG), konfigurieren Sie Azure Bastion für den SSH-Zugriff und installieren Sie OpenClaw.
Was Sie tun werden
- Azure-Netzwerkressourcen (VNet, Subnetze, NSG) und Computeressourcen mit der Azure CLI erstellen
- NSG-Regeln anwenden, sodass SSH-Zugriff auf die VM nur über Azure Bastion zulässig ist
- Azure Bastion für den SSH-Zugriff verwenden (keine öffentliche IP-Adresse für die VM)
- OpenClaw mit dem Installationsskript installieren
- Das Gateway überprüfen
Voraussetzungen
- Ein Azure-Abonnement mit der Berechtigung zum Erstellen von Computer- und Netzwerkressourcen
- Installierte Azure CLI (siehe Installationsschritte für die Azure CLI)
- Ein SSH-Schlüsselpaar (diese Anleitung beschreibt bei Bedarf dessen Erstellung)
- Etwa 20–30 Minuten
Bereitstellung konfigurieren
Bei der Azure CLI anmelden
az loginaz extension add -n sshDie Erweiterung ssh ist für das native SSH-Tunneling von Azure Bastion erforderlich.
Erforderliche Ressourcenanbieter registrieren (einmalig)
az provider register --namespace Microsoft.Computeaz provider register --namespace Microsoft.NetworkÜberprüfen Sie die Registrierung und warten Sie, bis beide Registered anzeigen.
az provider show --namespace Microsoft.Compute --query registrationState -o tsvaz provider show --namespace Microsoft.Network --query registrationState -o tsvBereitstellungsvariablen festlegen
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"Passen Sie Namen und CIDR-Bereiche an Ihre Umgebung an. Das Bastion-Subnetz muss mindestens /26 groß sein.
SSH-Schlüssel auswählen
Verwenden Sie Ihren vorhandenen öffentlichen Schlüssel, falls Sie einen haben:
SSH_PUB_KEY="$(cat ~/.ssh/id_ed25519.pub)"Erstellen Sie andernfalls einen:
ssh-keygen -t ed25519 -a 100 -f ~/.ssh/id_ed25519 -C "you@example.com"SSH_PUB_KEY="$(cat ~/.ssh/id_ed25519.pub)"VM-Größe und Größe des Betriebssystemdatenträgers auswählen
VM_SIZE="Standard_B2as_v2"OS_DISK_SIZE_GB=64- Beginnen Sie bei geringer Nutzung mit einer kleineren Konfiguration und skalieren Sie später hoch.
- Verwenden Sie für umfangreichere Automatisierung, mehr Kanäle oder größere Modell- und Tool-Workloads mehr vCPU, RAM und Speicherplatz.
- Falls eine Größe in Ihrer Region oder im Kontingent Ihres Abonnements nicht verfügbar ist, wählen Sie die ähnlichste verfügbare SKU.
Listen Sie die in Ihrer Zielregion verfügbaren VM-Größen auf:
az vm list-skus --location "${LOCATION}" --resource-type virtualMachines -o tableÜberprüfen Sie Ihre aktuelle vCPU- und Datenträgernutzung sowie die entsprechenden Kontingente:
az vm list-usage --location "${LOCATION}" -o tableAzure-Ressourcen bereitstellen
Ressourcengruppe erstellen
az group create -n "${RG}" -l "${LOCATION}"Netzwerksicherheitsgruppe erstellen
Erstellen Sie die NSG und fügen Sie Regeln hinzu, sodass nur das Bastion-Subnetz per SSH auf die VM zugreifen kann.
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 22Regeln werden nach Priorität ausgewertet, beginnend mit der niedrigsten Zahl: Bastion-Datenverkehr wird mit Priorität 100 zugelassen, anschließend wird jeglicher anderer SSH-Datenverkehr mit 110 und 120 blockiert.
Virtuelles Netzwerk und Subnetze erstellen
Erstellen Sie das VNet mit dem VM-Subnetz (einschließlich zugeordneter NSG) und fügen Sie anschließend das Bastion-Subnetz hinzu.
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}"VM erstellen
Die VM erhält keine öffentliche IP-Adresse. Der SSH-Zugriff erfolgt ausschließlich über 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 "" verhindert die Zuweisung einer öffentlichen IP-Adresse. --nsg "" überspringt eine NSG pro Netzwerkschnittstelle, da die NSG auf Subnetzebene bereits für die Sicherheit zuständig ist.
Um statt latest eine bestimmte Ubuntu-Imageversion festzulegen, listen Sie zunächst die verfügbaren Versionen auf:
az vm image list \ --publisher Canonical --offer ubuntu-24_04-lts \ --sku server --all -o tableAzure Bastion erstellen
Azure Bastion ermöglicht verwalteten SSH-Zugriff, ohne eine öffentliche IP-Adresse auf der VM offenzulegen. Für CLI-basiertes az network bastion ssh ist die Standard-SKU mit aktiviertem Tunneling erforderlich.
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 trueDie Bereitstellung von Bastion dauert üblicherweise 5–10 Minuten, kann in einigen Regionen jedoch bis zu 15–30 Minuten dauern.
OpenClaw installieren
Über Azure Bastion per SSH mit der VM verbinden
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_ed25519OpenClaw installieren (in der VM-Shell)
curl -fsSL https://openclaw.ai/install.sh -o /tmp/install.shbash /tmp/install.shrm -f /tmp/install.shDas Installationsprogramm installiert Node und die Abhängigkeiten, sofern diese noch nicht vorhanden sind, installiert OpenClaw und startet das Onboarding. Weitere Informationen finden Sie unter Installation.
Gateway überprüfen
Nach Abschluss des Onboardings:
openclaw gateway statusWenn Ihre Organisation bereits über GitHub-Copilot-Lizenzen verfügt, können Sie während des Onboardings den GitHub-Copilot-Provider auswählen, anstatt einen separaten Modell-API-Schlüssel zu verwenden. Siehe GitHub-Copilot-Provider.
Kostenüberlegungen
Ungefähre monatliche Kosten (überprüfen Sie die aktuellen Preise im Azure-Preisrechner, da die Tarife je nach Region variieren und sich im Laufe der Zeit ändern):
- Azure Bastion Standard-SKU: ungefähr 140 USD/Monat
- VM (
Standard_B2as_v2): ungefähr 55 USD/Monat
So reduzieren Sie die Kosten:
-
Heben Sie die Zuordnung der VM auf, wenn sie nicht verwendet wird. Dadurch endet die Abrechnung der Rechenleistung (Datenträgerkosten fallen weiterhin an). Das Gateway ist nicht erreichbar, solange die Zuordnung aufgehoben ist.
bash az vm deallocate -g "${RG}" -n "${VM_NAME}"az vm start -g "${RG}" -n "${VM_NAME}" # restart later -
Löschen Sie Bastion, wenn es nicht benötigt wird, und erstellen Sie es erneut, sobald Sie wieder SSH-Zugriff benötigen. Es ist der größte Kostenfaktor und wird innerhalb weniger Minuten bereitgestellt.
-
Verwenden Sie die Bastion Basic-SKU (ungefähr 38 USD/Monat), wenn Sie nur Portal-basierten SSH-Zugriff und kein CLI-Tunneling (
az network bastion ssh) benötigen.
Bereinigung
Löschen Sie alle mit dieser Anleitung erstellten Ressourcen:
az group delete -n "${RG}" --yes --no-waitDadurch werden die Ressourcengruppe und alle darin enthaltenen Ressourcen entfernt (VM, VNet, NSG, Bastion, öffentliche IP-Adresse).
Nächste Schritte
- Messaging-Kanäle einrichten: Kanäle
- Lokale Geräte als Nodes koppeln: Nodes
- Das Gateway konfigurieren: Gateway-Konfiguration
- Weitere Einzelheiten zur Azure-Bereitstellung mit dem GitHub-Copilot-Modell-Provider: OpenClaw auf Azure mit GitHub Copilot