Single-user deployment of OpenClaw on Azure using Bicep + Bash.
Production-minded single-user OpenClaw deployment on Azure using VMSS, Bicep, and Bash with secure defaults: SSH keys only, NSG source restriction, Key Vault with managed identity, and Trusted Launch.
- SSH key authentication only (password auth disabled)
- NSG access restricted to your current public IP by default
- OpenClaw secrets stored in Azure Key Vault
- VMSS uses user-assigned managed identity to read Key Vault secrets
- Trusted Launch enabled (Secure Boot + vTPM)
- Copy
.env.exampleto.envand update values. - Copy
secrets.example.jsontosecrets.jsonand set Azure OpenAI values (AZURE_OPENAI_API_KEY,AZURE_OPENAI_BASE_URL). - Run
./scripts/deploy.sh. - SSH with
./scripts/ssh-to-instance.sh. - Edit
config/openclaw.template.jsonand apply with./scripts/update-config.sh.
- Deploy:
./scripts/deploy.sh(restricts NSG to your detected public IP by default) - Toggle access on/off any time:
./scripts/set-access.sh --ssh on|off --gateway on|off - Connect:
./scripts/ssh-to-instance.sh - Rotate secrets: edit
secrets.json, then redeploy with./scripts/deploy.sh - Update runtime config: edit
config/openclaw.template.json, then run./scripts/update-config.sh - Tear down:
./scripts/teardown.sh
./scripts/deploy.shnow fails closed if your public IP cannot be detected (instead of defaulting to*).- Use
./scripts/set-access.shto explicitly enable/disable SSH and gateway exposure per your discretion.
- See
DEPLOYMENT.mdfor full precheck, deploy, post-deploy validation, and secret update steps.