@@ -25,7 +25,6 @@ VM installation.
2525- An Anthropic API key and a GitHub account with permission to create/install a GitHub App.
2626
2727Subscription ` Contributor ` normally covers the infrastructure in this guide.
28- Azure RBAC assignments may require an authorized subscription administrator.
2928
3029## Plan the Azure Resources
3130
@@ -49,6 +48,9 @@ and the [Sizing Guide](/enterprise/sizing-guide) for larger deployments.
4948Use persistent managed storage for installation data. Azure temporary/resource
5049disks can be lost during host maintenance or redeployment. This example keeps
5150installation data on the managed OS disk rather than adding a temporary disk.
51+ This single-disk layout was used for the validation below. For a deployment that
52+ needs to grow, follow the [ Sizing Guide] ( /enterprise/sizing-guide ) recommendation
53+ to use a separate expandable data volume.
5254
5355## Provision Infrastructure
5456
@@ -206,7 +208,12 @@ If you do not already have a certificate, install Certbot using its
206208run a manual DNS-01 challenge on your administrator workstation:
207209
208210``` bash
209- sudo certbot certonly --manual --preferred-challenges dns \
211+ umask 077
212+ mkdir -p " $HOME /letsencrypt"
213+ certbot certonly --manual --preferred-challenges dns \
214+ --config-dir " $HOME /letsencrypt" \
215+ --work-dir " $HOME /letsencrypt/work" \
216+ --logs-dir " $HOME /letsencrypt/logs" \
210217 --cert-name openhands-azure -d " *.${BASE_DOMAIN} "
211218```
212219
@@ -222,7 +229,8 @@ dig +short TXT "_acme-challenge.${BASE_DOMAIN}"
222229```
223230
224231After issuance, Certbot saves the full chain and private key under
225- ` /etc/letsencrypt/live/openhands-azure/ ` . Transfer those files through your
232+ ` $HOME/letsencrypt/live/openhands-azure/ ` , owned by the user who ran Certbot.
233+ Transfer those files through your
226234approved private channel, or substitute existing certificate files below. See
227235[ Certbot's manual challenge guide] ( https://eff-certbot.readthedocs.io/en/stable/using.html#manual ) .
228236Manual challenges need to be repeated for renewal unless you configure an
@@ -352,6 +360,7 @@ If any check fails, stop and resolve before continuing:
352360| ` traefik.github.io ` | Embedded cluster ingress chart repository |
353361| ` ghcr.io ` , ` registry-1.docker.io ` | Container image pulls for platform components |
354362| ` github.com ` | GitHub App setup/auth/webhooks and downloading public agent skills |
363+ | ` api.anthropic.com ` | Anthropic inference for the initial model configuration |
355364
356365## Run the Installer
357366
@@ -374,7 +383,10 @@ Select **"Outbound requests allowed"** for Network Availability, then click **Co
374383
375384The install guide provides commands to run on your VM. SSH into your VM and execute them in order:
376385
377- 1 . ** Select a version** -- the latest version is pre-selected
386+ 1 . ** Select a version** -- select ` 0.74.0 ` to reproduce the validated installation
387+ below. The dashboard pre-selects the latest release; later releases were not
388+ tested for this guide. If ` 0.74.0 ` is unavailable, ask OpenHands Support for a
389+ supported release and repeat the preflight and first-conversation checks.
3783902 . ** Download the installation assets** -- copy and run the ` curl ` command shown
3793913 . ** Extract the installation assets** -- run the ` tar ` command shown (this includes your license file)
3803924 . ** Install** -- run the install command shown
@@ -449,7 +461,7 @@ You should now see the application configuration page.
449461### Domain Configuration
450462
451463- Keep the Hostname Configuration Mode set to ** "Simple (default)"**
452- - Enter your base domain (e.g., ` openhands.example.com ` )
464+ - Enter your base domain (e.g., ` azure. openhands.example.com` )
453465
454466### Certificate Configuration
455467
@@ -474,7 +486,7 @@ from that provider.
474486![ LLM Configuration provider dropdown] ( /enterprise/images/llm-configuration-provider-dropdown.png )
475487
476488For the initial installation, select ` Anthropic (Claude) ` and enter your key in
477- ` Anthropic API Key ` . If your release exposes ` Anthropic Models ` , enter model IDs
489+ ` Anthropic API Key ` . Keep or replace the default ` Anthropic Models ` entries with model IDs
478490that your account can access, one per line. Confirm the model selected in
479491OpenHands can complete a request before changing providers.
480492
@@ -560,8 +572,7 @@ Start a new conversation without a repository. Ask it to run `pwd`, write
560572` OPENHANDS_INSTALL_PASS ` to ` /tmp/openhands-install-smoke.txt ` , and read the file
561573back with ` cat ` . Expand the terminal tool result and verify the actual workspace
562574path and marker output, rather than relying only on the model's summary. The
563- Agent Canvas server status should show ** Running** ; API clients should verify
564- that the sandbox reaches ` READY ` . Then verify repository discovery and a
575+ Agent Canvas server status should show ** Running** . Then verify repository discovery and a
565576repository-backed conversation.
566577
567578Deployment readiness alone does not prove that inference and sandbox startup work.
@@ -573,8 +584,10 @@ to collect evidence before adding optional integrations.
573584<Note >
574585Azure hosting and Azure model inference are separate. The Azure VM installation
575586and Anthropic workflow in this guide were validated on Replicated ` 0.74.0 ` .
576- Azure OpenAI gateway setup is deferred until a release contains the required
577- provider fix and that released package has been validated.
587+ Keep ** Anthropic (Claude)** selected for this installation. Do not select
588+ ** Azure** in ** LLM Configuration** for this validated path. Azure OpenAI gateway
589+ setup is deferred until a release contains the required provider fix and that
590+ released package has been validated.
578591</Note >
579592
580593## Operations and Cleanup
@@ -613,7 +626,8 @@ Preserve shared DNS zones and resources outside the dedicated installation group
613626<Note >
614627Validated with Replicated ` 0.74.0 ` on a dedicated Azure VM using
615628` Standard_D16s_v3 ` , Ubuntu 24.04 LTS and a 1,024 GiB Premium SSD OS disk:
616- host and application preflights without overrides, trusted HTTPS, GitHub login,
629+ host preflight passed on rerun without overrides, application preflights passed,
630+ trusted HTTPS, GitHub login,
617631persistent PostgreSQL storage, an Anthropic-backed conversation and a manually
618632dispatched automation, and a read-only repository conversation. The automation
619633schedule was disabled after testing.
0 commit comments