Deployment guide

CMDBuild

Overview

CMDBuild is an open source Configuration Management Database (CMDB) for IT and facilities teams. You model configuration items and the relationships between them, track hardware and software inventory, run IT service management and workflow processes, build dashboards and reports, and integrate with other systems through a REST API.

This SecureAnyCloud image runs the AGPL-3.0 CMDBuild READY2USE 2.4 distribution: a complete asset, service and process data model on top of the CMDBuild core. The READY2USE database includes a representative demo data model, so you can explore asset classes, cards and dashboards immediately.

The image is secure by default. The well-known default admin / admin login is disabled in the shipped image. On the first boot of every VM, a one-shot service generates a unique administrator password and a unique database password, writes them to /root/cmdbuild-credentials.txt (mode 0600), and only then starts the public web interface.

What you get:

  • CMDBuild READY2USE 2.4 (core 4.0.4), deployed as an exploded webapp on Apache Tomcat 10 with the OpenJDK 17 JRE
  • nginx reverse proxy on :80 in front of Tomcat (bound to loopback :8080)
  • PostgreSQL 17 with the PostGIS extension as the application database, bound to loopback only
  • A dedicated Azure data disk for the PostgreSQL datadir at /var/lib/postgresql, separate from the OS disk and re-provisioned with every VM
  • A per-VM administrator password and PostgreSQL password, generated on first boot and stored in a root-only file; the shipped default login is rotated so it never works
  • cmdbuild-tomcat.service, postgresql.service and nginx.service as systemd units, enabled and active
  • 24/7 SecureAnyCloud support

Prerequisites

You need an active Azure subscription, an SSH key pair, and a VNet with a subnet in the target region.

Standard_B2ms (2 vCPU / 8 GiB RAM) is a good starting size. CMDBuild runs the Tomcat JVM alongside PostgreSQL and benefits from memory headroom. Scale up for more users or larger data models.

In the network security group (NSG), allow inbound 22/tcp from your management network. Allow 80/tcp from the networks your users will connect from. For public exposure, put TLS in front of port 80 (see Enabling HTTPS).

Step 1 - Deploy from the Azure Marketplace

Sign in to the Azure Portal, choose Create a resource, search the Marketplace for CMDBuild by SecureAnyCloud, and select Create.

On the Basics tab, 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 select Review + create and Create.

First-boot initialisation takes approximately one to three minutes after the VM starts. During that time CMDBuild rotates its secrets, starts Tomcat and brings the web interface online.

Step 2 - Deploy from the Azure CLI

# Accept the Marketplace terms once per subscription (required before the first CLI deploy)
az vm image terms accept --urn sac1647283583153:cmdbuild-ubuntu-24-04:default:latest
az vm create \
  --resource-group <your-rg> \
  --name cmdbuild \
  --image sac1647283583153:cmdbuild-ubuntu-24-04:default:latest \
  --size Standard_B2ms \
  --admin-username azureuser \
  --ssh-key-values ~/.ssh/id_ed25519.pub \
  --vnet-name <your-vnet> --subnet <your-subnet> \
  --public-ip-sku Standard
az vm open-port --resource-group <your-rg> --name cmdbuild --port 80 --priority 1010

Step 3 - Connect to your VM

ssh azureuser@<vm-public-ip>

Step 4 - Confirm the services are running

systemctl is-active postgresql cmdbuild-tomcat nginx cmdbuild-firstboot curl -fsS -o /dev/null -w 'cmdbuild ui: %{http_code}\n' http://127.0.0.1/cmdbuild/ui/

All four units report active and the UI endpoint returns 200. This confirms that the full stack (nginx, Tomcat and PostgreSQL) is serving.

CMDBuild is a JVM application, so allow a short warm-up on the very first boot before the UI responds.

Step 5 - Confirm the network bindings

The application and the database bind to the loopback interface only. nginx is the single public port. Confirm the bindings:

ss -tln | grep -E ':(80|8080|5432)'

Port 80 is nginx (public). Tomcat listens on 127.0.0.1:8080 and PostgreSQL on 127.0.0.1:5432, so neither the application server nor the database is directly reachable from the network.

Step 6 - Retrieve your administrator login

Your VM generates a unique administrator password and database password on first boot and writes them to a root-only file. Read the file with sudo:

sudo cat /root/cmdbuild-credentials.txt

The cmdbuild.admin.login value (which is admin) and the cmdbuild.admin.pass value are your sign-in. The file also records the per-VM PostgreSQL passwords.

First boot also loads the READY2USE model and rotates the shipped default login so it no longer works. To verify this without exposing the password, run the following check. The default admin / admin login is rejected, while the per-VM password authenticates:

SESS=http://127.0.0.1/cmdbuild/services/rest/v3/sessions
PASS=$(sudo grep '^cmdbuild.admin.pass=' /root/cmdbuild-credentials.txt | cut -d= -f2-)
echo -n 'default admin/admin -> '; curl -s -o /dev/null -w '%{http_code}\n' -H 'Content-Type: application/json' --data '{"username":"admin","password":"admin","scope":"service"}' "$SESS"
echo -n 'per-VM admin -> '; curl -s -o /dev/null -w '%{http_code}\n' -H 'Content-Type: application/json' --data "{\"username\":\"admin\",\"password\":\"$PASS\",\"scope\":\"service\"}" "$SESS"

The first call returns 401 because the shipped default no longer works. The second call returns 200.

Step 7 - Sign in for the first time

Browse to http://<vm-public-ip>/. The bare root redirects to /cmdbuild/ui/, the CMDBuild READY2USE sign-in page. Enter admin and the password from /root/cmdbuild-credentials.txt.

The sign-in page is served on first boot with the per-VM administrator password.

After you sign in, you reach the service desk dashboard. The navigation menu on the left groups the Registry, Asset Inventory, Service desk, Dashboards, Reports and the Service catalogue.

The dashboard shows ticket counters and the full READY2USE navigation.

Step 8 - Explore the asset inventory

Expand Asset Inventory in the left menu and open a class, for example Workplaces and then Mobiles. The configuration items appear in a sortable, filterable grid.

Each row is a configuration item with its code, assignee, serial number, product, lifecycle state, supplier and warranty. Use the search box and column filters to find items, or select Add card to record a new one.

A populated asset inventory class shows configuration items with lifecycle state, assignee and supplier.

Step 9 - Open a configuration item

Double-click a row to open its card. The card records the item's attributes, location and relationships. Side tabs hold the asset history, attachments, notes and related items.

Select Generate QR Code to create a label for physical tracking.

Step 10 - Confirm the data tier

The PostgreSQL datadir lives on its own dedicated Azure data disk, separate from the OS disk and re-provisioned with every VM. Confirm the mount:

findmnt -no SOURCE,SIZE,FSTYPE,TARGET /var/lib/postgresql
sudo -u postgres psql -d cmdbuild -tAc "SELECT count(*) AS public_tables FROM pg_tables WHERE schemaname='public';"

The datadir mounts from the dedicated disk, and the READY2USE model reports its full set of application tables.

Enabling HTTPS

For production, serve CMDBuild over HTTPS so session tokens and data cannot be intercepted. The image ships with nginx, which certbot can configure automatically.

The following commands assume a DNS record that points your fully qualified domain name at the VM's public IP:

sudo apt-get update && sudo apt-get install -y certbot python3-certbot-nginx
sudo certbot --nginx -d cmdbuild.your-domain.example \
  --non-interactive --agree-tos -m you@your-domain.example \
  --redirect

When certbot finishes, reload nginx with sudo systemctl reload nginx. Then sign in and change the administrator password from the CMDBuild user menu.

Backup and maintenance

CMDBuild keeps all of its state in its PostgreSQL application database on the dedicated data disk at /var/lib/postgresql. That includes the data model, configuration items, tickets, users, dashboards and reports. Back it up regularly:

sudo -u postgres pg_dump cmdbuild > /tmp/cmdbuild-appdb-$(date +%F).sql

Ship the dump to Azure Blob Storage or another object store, or snapshot the data disk in Azure for point-in-time backups.

Keep the OS patched with sudo apt update && sudo apt upgrade. CMDBuild is served by Apache Tomcat under /opt/cmdbuild-tomcat. After configuration changes, restart the application with sudo systemctl restart cmdbuild-tomcat. Always back up first.

Support

SecureAnyCloud provides 24/7 support for this image. Contact us by email or chat for help with deployment, data-model configuration, the REST API, workflow and process setup, TLS termination and database administration. Write to sales@secureanycloud.com.

For general CMDBuild questions, see the documentation at https://www.cmdbuild.org/. CMDBuild is a trademark of Tecnoteca srl. All product and company names are trademarks or registered trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.

Deploy on Azure

Launch CMDBuild READY2USE on Ubuntu 24.04 LTS on Azure with 24/7 support from SecureAnyCloud.

View this image

Need Help?

Our support team is available 24/7.

sales@secureanycloud.com

Deploy on Azure