Joget DX Community Edition on Ubuntu 24.04 on Azure User Guide
Overview
Joget DX is an open source no code and low code application platform for building and running business apps with little or no coding. It pairs an App Center and a visual App Composer with a Form Builder, a Datalist Builder, a Userview Builder and a built in workflow and process engine, so a form submission can flow through a process and appear in a list and a user facing view without writing code. The cloudimg image ships Joget DX 9.1.1 Community Edition on Apache Tomcat 11 with the OpenJDK 21 runtime behind nginx, which terminates TLS. MariaDB is the application database. Tomcat listens on 127.0.0.1:8080 and MariaDB on the loopback interface only; both are reached through nginx on port 443 (HTTPS).
The image is secure by default. Joget seeds a well known administrator, admin / admin; the cloudimg image poisons that password so it is dead in the shipped image, and on the first boot of every VM a one shot service generates a unique administrator password and a unique database password, regenerates a per-VM TLS certificate, writes the login to /root/joget-credentials.txt (mode 0600), and only then starts the public web interface. Community Edition is fully functional with no licence key, and the image ships the official Joget sample apps so you have working examples to learn from. Backed by 24/7 cloudimg support.
What is included:
- Joget DX 9.1.1 Community Edition (App Center, App Composer, Form Builder, Datalist Builder, Userview Builder and workflow engine) on Apache Tomcat 11 with the OpenJDK 21 runtime
- nginx terminating TLS on
:443in front of Tomcat (bound to loopback:8080);:80redirects to HTTPS and/redirects to the App Center at/jw/ - MariaDB as the application database, bound to loopback only
- A per-VM administrator password and a per-VM database password generated at first boot, in a root-only file; the shipped default administrator is rotated so it never works
- A per-VM self-signed TLS certificate generated on first boot
joget.service,mariadb.serviceandnginx.serviceas systemd units, enabled and active- 24/7 cloudimg support
Prerequisites
An active Azure subscription, an SSH key pair, and a VNet + subnet in the target region. Standard_B2ms (2 vCPU / 8 GiB RAM) is a good starting point — Joget runs the Tomcat JVM alongside MariaDB and benefits from memory headroom as you build and run more apps; scale up for more apps, data or concurrent users. NSG inbound: allow 22/tcp from your management network and 443/tcp from the networks your users will reach Joget on.
Step 1 — Deploy from the Azure Marketplace
Sign in to the Azure Portal, choose Create a resource, search the Marketplace for Joget DX Community Edition 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 HTTPS (443). Then Review + create → Create.
First boot initialisation takes approximately one to three minutes after the VM starts — Joget rotates its secrets, generates the per-VM TLS certificate, starts Tomcat and brings the App Center online.
Step 2 — Deploy from the Azure CLI
az vm create \
--resource-group <your-rg> \
--name joget \
--image <marketplace-image-urn> \
--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 joget --port 443 --priority 1010
Step 3 — Connect to your VM
ssh azureuser@<vm-public-ip>
Step 4 — Confirm the services are running
systemctl is-active mariadb joget nginx joget-firstboot
curl -fsSk -o /dev/null -w 'app center: %{http_code}\n' https://127.0.0.1/jw/web/login
All four units report active and the App Center login endpoint returns 200, confirming the full stack — nginx, Tomcat and MariaDB — is serving. Joget is a JVM application; on the very first boot allow a short warm-up before the App Center responds.

Step 5 — Confirm the network bindings
The application and the database bind the loopback interface only; nginx is the single public port. Confirm it:
ss -tln | grep -E ':(443|8080|3306) '
Port 443 is nginx (public, TLS); Tomcat listens on 127.0.0.1:8080 and MariaDB on 127.0.0.1:3306, so neither the application server nor the database is directly reachable from the network.

Step 6 — Retrieve your administrator login
The administrator password and the database password are generated uniquely on the first boot of your VM and written to a root-only file:
sudo cat /root/joget-credentials.txt
The joget.admin.login (which is admin) and joget.admin.pass values are your sign-in to the App Center; the file also records the App Center URL and the per-VM database password. First boot rotates the shipped default administrator password so it no longer works.

You can verify the security posture without exposing the password — the shipped default is rejected while the per-VM password authenticates through the real Joget console (an HTTP 200 on success, 401 otherwise). Joget authenticates programmatic requests with HTTP Basic auth:
B=http://127.0.0.1:8080
U=$(sudo grep '^joget.admin.login=' /root/joget-credentials.txt | cut -d= -f2-)
P=$(sudo grep '^joget.admin.pass=' /root/joget-credentials.txt | cut -d= -f2-)
login() { curl -s -o /dev/null -w '%{http_code}\n' -u "$1:$2" "$B/jw/web/console/home"; }
echo -n 'default admin/admin -> '; login admin admin
echo -n 'per-VM administrator -> '; login "$U" "$P"
The first call returns 401 (the shipped default is dead) and the second returns 200 (the per-VM administrator authenticates).

Step 7 — Sign in to the App Center
Open a web browser and navigate to https://<vm-public-ip>/jw/. The certificate is self-signed and unique to your VM, so your browser will warn on the first visit — accept the warning to continue (or install a CA-signed certificate, see Enabling a trusted certificate). At the Joget sign-in page enter admin and the password from /root/joget-credentials.txt.

The Joget DX Community Edition sign-in page, served over HTTPS with the per-VM administrator password.
After signing in, the Joget DX management console opens with the full navigation — Users, Design Apps, Run Apps, Monitor and System Settings.

The Joget DX management console — design and run apps, manage users and monitor the platform.
Step 8 — Build and run apps
Joget is a no code and low code platform, so you build apps visually and run them without writing code. The image ships the official Joget sample apps, including a CRM app, so you have a working example to explore. From Run Apps open the CRM app to use it, or from Design Apps open the App Composer to see how it is built — the Form Builder, Datalist Builder and Userview Builder that make up the app.
Open a form to capture data. Here the CRM app's New Contact form captures a record with no code behind it:

A no-code Joget form in the running CRM app — fill it in and save the record.
When you save the form, Joget writes the record to its database and it appears in the app's datalist. This is the no-code platform working end to end — a form submission read back in a list, with no code written:

The submitted record read back in the CRM Contact List — a form submit, stored and listed, with no code.
To build your own app, from the App Center choose Design New App, give it an App ID and name, then use the Form Builder to design a form, the Datalist Builder to list its records and the Userview Builder to publish a user facing app. Saving a form automatically creates its backing database table, so your data model follows your form.
Step 9 — Confirm the data tier
Joget keeps all of its state — apps, forms, datalists, userviews and every submitted record — in its MariaDB application database (jwdb). Confirm the schema is present:
sudo mysql -N -B -e "SELECT COUNT(*) AS app_tables FROM information_schema.tables WHERE table_schema='jwdb';"
The database reports its full set of application tables.
Enabling a trusted certificate
The image serves HTTPS with a per-VM self-signed certificate out of the box. For production, replace it with a CA-signed certificate so browsers trust it without a warning. The image ships with nginx, which certbot can configure automatically. The following assumes a DNS record pointing 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 joget.your-domain.example \
--non-interactive --agree-tos -m you@your-domain.example \
--redirect
After certbot finishes, reload nginx with sudo systemctl reload nginx, and change the administrator password from the console (Users → edit admin → set password).
Backup and maintenance
Joget keeps all of its state — apps, forms, data and configuration — in its MariaDB jwdb database and its wflow home directory. Back them up regularly:
sudo mysqldump --databases jwdb > /tmp/joget-jwdb-$(date +%F).sql
sudo tar czf /tmp/joget-wflow-$(date +%F).tgz -C /var/lib/joget wflow
Ship the dump and archive to Azure Blob Storage or another object store, or snapshot the disk in Azure for point-in-time backups. Keep the OS patched with sudo apt update && sudo apt upgrade. Joget is served by Apache Tomcat under /opt/joget; restart the application with sudo systemctl restart joget after configuration changes. Always back up first.
Support
This image is backed by 24/7 cloudimg support. Contact us by email and chat for help with deployment, app design, forms and datalists, workflow, TLS certificates and database administration. Contact support@cloudimg.co.uk.
For general Joget questions consult the project at https://www.joget.org/. Joget is a trademark of its respective holder. 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.