Apache Dubbo Admin on Ubuntu 24.04 on Azure User Guide
Overview
Apache Dubbo is a high-performance RPC and microservice framework. Dubbo Admin is its web console and control plane: it reads service registrations, routing rules, dynamic configuration and metadata from a registry and presents them in a browser dashboard for governing a Dubbo service mesh. The cloudimg image installs Dubbo Admin 0.6.0 as a Spring Boot application that serves both the Vue web UI and the REST API, backed by a local Apache ZooKeeper 3.9 registry. Dubbo Admin binds to 127.0.0.1:38080 and is fronted by an nginx reverse proxy on TCP 80. A unique administrator password is generated on the first boot of every VM. Backed by 24/7 cloudimg support.
What is included:
- Apache Dubbo Admin 0.6.0 (Spring Boot application serving the Vue web console and the REST API)
- A local Apache ZooKeeper 3.9 registry acting as the registry, config-center and metadata-report
- OpenJDK (JDK 17 to build the image, JDK 11 as the Dubbo Admin runtime)
- A dedicated Azure data disk at
/var/lib/dubboholding the ZooKeeper data and the Dubbo Admin runtime config, separate from the OS disk and re-provisioned with every VM - nginx reverse proxy on
:80plus an unauthenticated/healthendpoint for load-balancer probes - Per-VM
rootadmin password generated at first boot, in a root-only file zookeeper.service,dubbo-admin.serviceandnginx.serviceas systemd units, enabled and active- 24/7 cloudimg support
Prerequisites
An active Azure subscription, an SSH key pair, and a VNet plus subnet in the target region. Standard_B2ms (2 vCPU / 8 GiB RAM) is a good starting point because the ZooKeeper and Dubbo Admin JVMs run together. NSG inbound: allow 22/tcp from your management network and 80/tcp from the operators who reach the console (front port 80 with TLS for public exposure - see Enabling HTTPS).
Step 1 - Deploy from the Azure Marketplace
Sign in to the Azure Portal, choose Create a resource, search the Marketplace for Apache Dubbo Admin by cloudimg, and select Create. On Basics pick your subscription, resource group, region and size; under Administrator account choose SSH public key and paste your key; under Inbound port rules allow SSH (22) and HTTP (80). Review the dedicated data disk on the Disks tab, then Review + create then Create.
Step 2 - Deploy from the Azure CLI
az vm create \
--resource-group your-rg \
--name dubbo-admin \
--image cloudimg:apache-dubbo-ubuntu-24-04:default:latest \
--size Standard_B2ms \
--admin-username azureuser \
--generate-ssh-keys \
--public-ip-sku Standard
Then open port 80 to the networks that need the console:
az vm open-port --resource-group <your-rg> --name dubbo-admin --port 80 --source-ip-prefix <your-mgmt-cidr>
Step 3 - Retrieve the per-VM admin password
A unique root administrator password is generated on the first boot of every VM and written to a root-only file. SSH in and read it:
ssh azureuser@<public-ip>
sudo cat /root/dubbo-credentials.txt
The file lists the console URL, the username (root) and the per-VM password:

Keep this password safe - it is the administrator login for the Dubbo Admin console.
Step 4 - Confirm the services are running
The image ships three systemd units that come up automatically: the ZooKeeper registry, the Dubbo Admin application and the nginx reverse proxy. Confirm they are active and that the health endpoint answers:
systemctl is-active zookeeper.service dubbo-admin.service nginx.service
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1/health
A healthy appliance reports every unit active and returns 200 from /health:

Step 5 - Sign in to the web console
Browse to http://<your-vm-public-ip>/ and sign in with the username root and the per-VM password from Step 3.

The Dubbo Admin login API can also be exercised from the shell. The console authenticates with GET /api/dev/user/login and returns a signed JWT on success; a wrong password is rejected with HTTP 401. To try it yourself, read the password from /root/dubbo-credentials.txt and call the endpoint, for example curl --get --data-urlencode 'userName=root' --data-urlencode 'password=<your-per-VM-password>' http://127.0.0.1/api/dev/user/login (replace the placeholder with the real value). The round-trip looks like this:

Step 6 - Browse registered services
The Search service name screen lists every service registered in the local ZooKeeper registry. Enter * and click Search to list everything, or type a service name to filter. Each row shows the service interface, group, version, owning application and registry source.

Click DETAIL on any service to inspect its providers, consumers and metadata - the bound host and port, configured timeout, serialization, weight and the method signatures the provider exposes.

Step 7 - Manage routing and configuration rules
Under Service Governance the console manages the rules Dubbo enforces at runtime: Condition Rule and Tag Rule routing, Mesh Rule, Black White List access control, Dynamic Config, Weight Adjust and Load Balance. Click CREATE on the Condition Rule page to author a routing rule in the embedded YAML editor, scoped to a service interface, version and group.

Rules you create here are written into the local ZooKeeper config-center and applied to the Dubbo services that read from it.
Persistence - the dedicated data disk
The ZooKeeper transaction log and snapshots, plus the Dubbo Admin runtime configuration, live on a dedicated Azure data disk mounted at /var/lib/dubbo, separate from the OS disk:
df -h /var/lib/dubbo
ls /var/lib/dubbo
Because the registry state lives on its own disk, it survives OS-disk operations and can be resized independently. The disk is captured into the image and re-provisioned on every VM.
Enabling HTTPS
The image serves plain HTTP on port 80. For any non-trivial deployment, terminate TLS in nginx with your own domain and certificate. Install certbot and request a certificate for your domain:
sudo snap install --classic certbot && sudo certbot --nginx -d <your-domain>
certbot edits the nginx site to listen on 443 with your certificate and sets up automatic renewal. After enabling TLS, restrict port 80 in the NSG to the certbot HTTP-01 challenge or redirect it to 443.
Maintenance
Restart the stack or follow the logs with the standard systemd tooling:
sudo systemctl restart dubbo-admin.service
sudo journalctl -u dubbo-admin.service -n 50 --no-pager
The ZooKeeper registry is managed the same way through zookeeper.service. Operating-system security updates are delivered through Ubuntu unattended-upgrades, which remains enabled on the image.
Support
This image is maintained by cloudimg with 24/7 support. Contact support@cloudimg.co.uk for assistance with deployment, configuration or maintenance.