Hosting
Azure
يعد هذا الدليل جهاز Azure Linux VM باستخدام Azure CLI، ويطبق تقوية Network Security Group (NSG)، ويهيئ Azure Bastion للوصول عبر SSH، ويثبت OpenClaw.
ما ستفعله
- إنشاء موارد الشبكات في Azure (VNet، والشبكات الفرعية، وNSG) وموارد الحوسبة باستخدام Azure CLI
- تطبيق قواعد Network Security Group بحيث يسمح بالوصول إلى VM عبر SSH من Azure Bastion فقط
- استخدام Azure Bastion للوصول عبر SSH (من دون عنوان IP عام على VM)
- تثبيت OpenClaw باستخدام سكربت التثبيت
- التحقق من Gateway
ما تحتاج إليه
- اشتراك Azure مع صلاحية إنشاء موارد الحوسبة والشبكات
- تثبيت Azure CLI (راجع خطوات تثبيت Azure CLI عند الحاجة)
- زوج مفاتيح SSH (يغطي الدليل إنشاء واحد عند الحاجة)
- نحو 20-30 دقيقة
تهيئة النشر
تسجيل الدخول إلى Azure CLI
az loginaz extension add -n sshيلزم ملحق ssh لأنفاق SSH الأصلية عبر Azure Bastion.
تسجيل موفري الموارد المطلوبين (مرة واحدة)
az provider register --namespace Microsoft.Computeaz provider register --namespace Microsoft.Networkتحقق من التسجيل. انتظر حتى يعرض كلاهما Registered.
az provider show --namespace Microsoft.Compute --query registrationState -o tsvaz provider show --namespace Microsoft.Network --query registrationState -o tsvتعيين متغيرات النشر
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"عدل الأسماء ونطاقات CIDR بما يناسب بيئتك. يجب أن تكون شبكة Bastion الفرعية على الأقل /26.
اختيار مفتاح SSH
استخدم مفتاحك العام الحالي إذا كان لديك واحد:
SSH_PUB_KEY="$(cat ~/.ssh/id_ed25519.pub)"إذا لم يكن لديك مفتاح SSH بعد، فأنشئ واحدا:
ssh-keygen -t ed25519 -a 100 -f ~/.ssh/id_ed25519 -C "[email protected]"SSH_PUB_KEY="$(cat ~/.ssh/id_ed25519.pub)"اختيار حجم VM وحجم قرص نظام التشغيل
VM_SIZE="Standard_B2as_v2"OS_DISK_SIZE_GB=64اختر حجم VM وحجم قرص نظام تشغيل متاحين في اشتراكك ومنطقتك:
- ابدأ بحجم أصغر للاستخدام الخفيف، ثم وسع لاحقا
- استخدم مزيدا من vCPU/RAM/القرص للأتمتة الأثقل، أو المزيد من القنوات، أو أحمال عمل النماذج/الأدوات الأكبر
- إذا كان حجم VM غير متاح في منطقتك أو حصة اشتراكك، فاختر أقرب SKU متاح
اعرض أحجام VM المتاحة في منطقتك المستهدفة:
az vm list-skus --location "${LOCATION}" --resource-type virtualMachines -o tableتحقق من استخدامك/حصتك الحالية من vCPU والقرص:
az vm list-usage --location "${LOCATION}" -o tableنشر موارد Azure
إنشاء مجموعة الموارد
az group create -n "${RG}" -l "${LOCATION}"إنشاء مجموعة أمان الشبكة
أنشئ NSG وأضف قواعد بحيث لا تتمكن إلا شبكة Bastion الفرعية من الوصول إلى VM عبر SSH.
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 22تقيم القواعد حسب الأولوية (أقل رقم أولا): يسمح بحركة Bastion عند 100، ثم يحظر كل SSH الآخر عند 110 و120.
إنشاء الشبكة الافتراضية والشبكات الفرعية
أنشئ VNet مع شبكة VM الفرعية (مع ربط NSG)، ثم أضف شبكة 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 — name is required by Azureaz network vnet subnet create \ -g "${RG}" --vnet-name "${VNET_NAME}" \ -n AzureBastionSubnet \ --address-prefixes "${BASTION_SUBNET_PREFIX}"إنشاء VM
لا يحتوي VM على عنوان IP عام. الوصول عبر SSH يتم حصريا من خلال 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 "" تعيين عنوان IP عام. يتخطى --nsg "" إنشاء NSG لكل NIC (يتولى NSG على مستوى الشبكة الفرعية الأمان).
قابلية إعادة الإنتاج: يستخدم الأمر أعلاه latest لصورة Ubuntu. لتثبيت إصدار محدد، اعرض الإصدارات المتاحة واستبدل latest:
az vm image list \ --publisher Canonical --offer ubuntu-24_04-lts \ --sku server --all -o tableإنشاء Azure Bastion
يوفر Azure Bastion وصول SSH مدارا إلى VM من دون تعريض عنوان IP عام. يلزم Standard SKU مع تمكين الأنفاق لاستخدام az network bastion ssh المستند إلى 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يستغرق توفير Bastion عادة 5-10 دقائق، لكنه قد يستغرق حتى 15-30 دقيقة في بعض المناطق.
تثبيت OpenClaw
الوصول إلى VM عبر SSH من خلال 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تثبيت OpenClaw (داخل shell الخاص بـ VM)
curl -fsSL https://openclaw.ai/install.sh -o /tmp/install.shbash /tmp/install.shrm -f /tmp/install.shيثبت المثبت Node LTS والتبعيات إذا لم تكن موجودة بالفعل، ويثبت OpenClaw، ويشغل معالج الإعداد الأولي. راجع التثبيت للحصول على التفاصيل.
التحقق من Gateway
بعد اكتمال الإعداد الأولي:
openclaw gateway statusلدى معظم فرق Azure المؤسسية تراخيص GitHub Copilot بالفعل. إذا كان هذا هو حالك، نوصي باختيار موفر GitHub Copilot في معالج الإعداد الأولي في OpenClaw. راجع موفر GitHub Copilot.
اعتبارات التكلفة
يعمل Azure Bastion Standard SKU بتكلفة تقارب $140/شهريا ويعمل VM (Standard_B2as_v2) بتكلفة تقارب $55/شهريا.
لتقليل التكاليف:
-
إلغاء تخصيص VM عند عدم استخدامه (يوقف فوترة الحوسبة؛ تبقى رسوم القرص). لن يكون OpenClaw Gateway قابلا للوصول أثناء إلغاء تخصيص VM — أعد تشغيله عندما تحتاج إلى تشغيله مباشرة مرة أخرى:
bash az vm deallocate -g "${RG}" -n "${VM_NAME}"az vm start -g "${RG}" -n "${VM_NAME}" # restart later -
احذف Bastion عندما لا تحتاج إليه وأعد إنشاءه عندما تحتاج إلى وصول SSH. Bastion هو أكبر مكون تكلفة ولا يستغرق توفيره إلا بضع دقائق.
-
استخدم Basic Bastion SKU (~$38/شهريا) إذا كنت تحتاج فقط إلى SSH المستند إلى Portal ولا تحتاج إلى أنفاق CLI (
az network bastion ssh).
التنظيف
لحذف جميع الموارد التي أنشأها هذا الدليل:
az group delete -n "${RG}" --yes --no-waitيزيل هذا مجموعة الموارد وكل ما بداخلها (VM، وVNet، وNSG، وBastion، وعنوان IP العام).
الخطوات التالية
- إعداد قنوات المراسلة: القنوات
- إقران الأجهزة المحلية كعقد: العقد
- تهيئة Gateway: تهيئة Gateway
- لمزيد من التفاصيل حول نشر OpenClaw على Azure باستخدام موفر نموذج GitHub Copilot: OpenClaw على Azure مع GitHub Copilot