The CloudSOE OpenMRS image runs the OpenMRS 3 reference application — gateway, frontend, backend and MySQL — as a Docker Compose stack on a hardened Ubuntu base. The database is fully initialized at build time (normally a 30–60 minute import), so your first boot only rotates every baked credential to per-instance values and starts the containers: about five minutes, with a live progress meter when you SSH in.

What you’ll need

  • An Azure subscription
  • An SSH public key (password login is disabled in the image)
  • About fifteen minutes

Step 1 — Create the VM

  1. Find the CloudSOE OpenMRS offer in the Azure Marketplace and click Create.
  2. Choose a resource group, region and VM name.
  3. Pick a size with 8 GB of RAM (for example Standard_D2as_v4) — the four-container stack needs more memory than a typical web app.
  4. Keep the OS disk at 100 GB — the image ships with multi-gigabyte container images and a pre-initialized database.
  5. Under Administrator account, select SSH public key, pick a username (e.g. azureuser) and paste your key. This account is the uid-1000 admin user that owns the credentials file.
  6. Create or attach a public IP so you can reach the system. For production, make it Static so the address survives stop/start.

Step 2 — Open the firewall ports

The stack serves plain HTTP on port 80 (see the note on TLS below). In the VM’s network security group, allow inbound:

PortProtocolPurpose
22TCPSSH administration
80TCPHTTP (OpenMRS gateway)

Restrict port 22 to your own IP range where possible — and for a medical records system, consider restricting port 80 to your clinic’s network or VPN until you’ve put TLS in front.

Step 3 — Watch first boot (about 5 minutes)

On the very first boot the openmrs-firstboot service rotates the MySQL passwords and the OpenMRS admin password to per-instance values, starts the container stack and writes your credentials file. SSH in while it’s working and a live progress meter appears automatically:

ssh <admin-user>@<public-ip>
# OpenMRS is initializing on this instance (takes ~5 minutes on first boot).
#  / [########################                ]  61%  Starting OpenMRS services

Press Ctrl+C to drop to your shell at any time; run openmrs-bootstrap-status to bring the meter back.

Step 4 — Retrieve your credentials

Once the meter reaches 100%, read the credentials file:

sudo cat /opt/openmrs/default-openmrs-credentials.txt

This file (mode 600) holds the rotated admin password. The MySQL passwords (also rotated) are in /opt/openmrs/.env, root-only.

Step 5 — Log in to OpenMRS

From your own machine (note: an Azure VM often cannot reach its own public IP from inside), browse to:

  • Clinical app (O3): http://<public-ip>/ — patients, visits, charts
  • Admin / legacy UI: http://<public-ip>/openmrs — modules, global properties, users, REST/FHIR APIs

The same login works for both: user admin with the password from the credentials file. Change it after first login. The stack has no built-in TLS — see the configuration guide for putting HTTPS in front before real use.

Next steps