Deployment guide

Joget DX Community

Overview

Joget DX is an open-source, no-code and low-code application platform for building and running business apps. 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. A form submission can flow through a process and appear in a list and a user-facing view without any code.

This SecureAnyCloud 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, and both are reached through nginx on port 443 (HTTPS).

The image is secure by default. Joget seeds a well-known administrator, admin / admin, and this image poisons that password so it is dead 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, and regenerates a per-VM TLS certificate. It 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 as working examples.

What you get:

  • 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 :443 in front of Tomcat (bound to loopback :8080), with :80 redirecting to HTTPS and / redirecting 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 and stored in a root-only file, with the shipped default administrator rotated so it never works
  • A per-VM self-signed TLS certificate generated on first boot
  • joget.service, mariadb.service and nginx.service as enabled, active systemd units
  • The official Joget sample apps
  • 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. Joget runs the Tomcat JVM alongside MariaDB and benefits from memory headroom as you build and run more apps. Scale up for more apps, more data or more concurrent users.

Configure the network security group (NSG) to allow inbound 22/tcp from your management network and 443/tcp from the networks your users reach Joget from.

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 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 HTTPS (443). Then select Review + create and 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

Accept the Marketplace terms once per subscription, then create the VM and open port 443.

# Accept the Marketplace terms once per subscription (required before the first CLI deploy)
az vm image terms accept --urn sac1647283583153:joget-dx-community:default:latest
az vm create \
  --resource-group <your-rg> \
  --name joget \
  --image sac1647283583153:joget-dx-community: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 joget --port 443 --priority 1010

Step 3 - Connect to your VM

Connect to the VM over SSH as azureuser.

ssh azureuser@<vm-public-ip>

Step 4 - Confirm the services are running

Check the service units and the App Center login endpoint.

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. This confirms that the full stack (nginx, Tomcat and MariaDB) is serving. Joget is a JVM application, so allow a short warm-up on the very first boot 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 the bindings:

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

Your VM generates a unique administrator password and a unique database password on first boot. Both are written to a root-only file. Read it with sudo:

sudo cat /root/joget-credentials.txt

The joget.admin.login (which is admin) and joget.admin.pass values are your App Center sign-in. 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 this without exposing the password. The shipped default is rejected, while the per-VM password authenticates through the real Joget console (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, because the shipped default is dead. The second returns 200, because the per-VM administrator authenticates.

Step 7 - Sign in to the App Center

Browse to https://<vm-public-ip>/jw/. The certificate is self-signed and unique to your VM, so your browser warns you on the first visit. Accept the warning to continue, or install a CA-signed certificate as described in Enable a trusted certificate.

On the Joget sign-in page, enter admin and the password from /root/joget-credentials.txt. The sign-in page is served over HTTPS.

After you sign in, the Joget DX management console opens with the full navigation: Users, Design Apps, Run Apps, Monitor and System Settings. From here you 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. From Design Apps, open the App Composer to see how the app is built with the Form Builder, Datalist Builder and Userview Builder.

Open a form to capture data. The CRM app's New Contact form captures a record with no code behind it. Fill it in and save the record.

When you save the form, Joget writes the record to its database and the record appears in the app's datalist. Open the CRM Contact List to see the submitted record read back, with no code written.

To build your own app, choose Design New App in the App Center and give it an App ID and name. 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 in its MariaDB application database (jwdb). This includes apps, forms, datalists, userviews and every submitted record. Confirm that 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.

Enable a trusted certificate

The image serves HTTPS with a per-VM self-signed certificate. For production, replace it with a CA-signed certificate so browsers trust it without a warning. certbot can configure the bundled nginx automatically. These 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 joget.your-domain.example \
  --non-interactive --agree-tos -m you@your-domain.example \
  --redirect

After certbot finishes, reload nginx with sudo systemctl reload nginx. Then change the administrator password in the console (Users, then edit admin, then set the 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 up both 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

Copy 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. After configuration changes, restart the application with sudo systemctl restart joget. Always back up first.

Support

This image is backed by 24/7 SecureAnyCloud support. Contact us by email and chat for help with deployment, app design, forms and datalists, workflow, TLS certificates and database administration. Email sales@secureanycloud.com.

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. Their use does not imply any affiliation with or endorsement by them.

Deploy on Azure

Launch Joget DX Community Edition 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