Applications Azure

Forma LMS 4.1 on Ubuntu 24.04 on Azure User Guide

| Product: Forma LMS 4.1 on Ubuntu 24.04 LTS on Azure

Overview

Forma LMS is the open source corporate Learning Management System, the community maintained fork of Docebo Community Edition. It delivers and tracks employee and customer training with a course catalogue and enrolments, SCORM, AICC and xAPI e-learning content, classroom and virtual sessions, learning plans, certifications, competency management, gamification and reporting across a multi tenant org chart. The cloudimg image ships Forma LMS 4.1 served by Apache and PHP 8.1 FPM on a hardened, fully patched Ubuntu 24.04 LTS base, together with a bundled local MariaDB server so the appliance is complete and useful on its own. The web installer is pre completed and locked, so the platform is ready the moment the instance boots. The bundled MariaDB listens only on the loopback interface (127.0.0.1:3306). A unique administrator password is generated on the first boot of every VM. Backed by 24/7 cloudimg support.

What is included:

  • Forma LMS 4.1 served by Apache and PHP 8.1 FPM, managed by systemd
  • A bundled MariaDB server holding the Forma database, already installed and ready
  • The web installer pre completed and locked, so no setup wizard is ever exposed
  • A per VM administrator password generated on first boot and recorded in a root only file
  • No shipped default login: the administrator password ships rotated to a discarded random and the real per VM password is set on first boot
  • MariaDB bound to 127.0.0.1 only, never exposed to the network
  • A systemd timer running Forma's scheduled jobs every five minutes
  • apache2.service, php8.1-fpm.service and mariadb.service as enabled systemd units
  • An unauthenticated /healthz endpoint for Azure Load Balancer health probes
  • 24/7 cloudimg support

Prerequisites

An active Azure subscription, an SSH key pair, and a VNet plus subnet in the target region. Standard_B2s (2 vCPU / 4 GiB RAM) is a sensible starting point for a small team; step up to a larger size for heavier concurrent use. NSG inbound: allow 22/tcp from your management network, 80/tcp for the application and 443/tcp if you terminate TLS on the VM. The bundled MariaDB is never exposed: it listens on 127.0.0.1 only, so port 3306 stays off the network.

Step 1 - Deploy from the Azure Marketplace

Sign in to the Azure Portal, choose Create a resource, search the Marketplace for Forma LMS 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), HTTP (80) and HTTPS (443). Then Review + create then Create.

Step 2 - Deploy from the Azure CLI

az vm create \
  --resource-group <your-rg> \
  --name formalms \
  --image <marketplace-image-urn> \
  --size Standard_B2s \
  --admin-username azureuser \
  --generate-ssh-keys \
  --public-ip-sku Standard

Then open ports 80 and 443:

az vm open-port --resource-group <your-rg> --name formalms --port 80,443

Step 3 - Confirm the services are running

SSH in as azureuser and confirm Apache, PHP FPM, MariaDB and the first boot service are all active. Note that MariaDB listens only on 127.0.0.1:3306 while Apache serves Forma on port 80, and the /healthz endpoint answers 200 for load balancer probes.

systemctl is-active apache2 php8.1-fpm mariadb formalms-firstboot
curl -s -o /dev/null -w 'healthz -> %{http_code}\n' http://127.0.0.1/healthz

Expected output:

active
active
active
active
healthz -> 200

The apache2, php8.1-fpm, mariadb and formalms-firstboot services active, with Apache on port 80, the healthz probe returning 200 and MariaDB bound to loopback 127.0.0.1:3306

Step 4 - Retrieve the per VM administrator password

On the first boot of every instance, a one shot service generates a unique administrator password and a unique MariaDB password and writes them to /root/formalms-credentials.txt, readable only by root. There is no shared default login.

sudo cat /root/formalms-credentials.txt

The file lists the admin login (admin), the generated password, the application URL and the loopback MariaDB details. The keys are shown below; the values are unique to your instance.

FORMALMS_ADMIN_USER=admin
FORMALMS_ADMIN_PASSWORD=<FORMALMS_ADMIN_PASSWORD>
FORMALMS_URL=http://<your-instance-ip>/
FORMALMS_DB_NAME=forma
FORMALMS_DB_USER=formauser
FORMALMS_DB_PASSWORD=...

The per VM Forma LMS credentials file, showing the admin login user, the generated password masked, the application URL and the loopback MariaDB details, mode 0600 owned by root

Step 5 - Sign in to Forma LMS

Browse to http://<your-instance-ip>/ and sign in with the username admin and the password from the credentials file. The login form posts your credentials over Forma's own authentication and lands you in the platform.

The Forma LMS sign in page showing the username and password fields and the login button

After signing in, switch to the Admin area to reach the administration dashboard. It summarises registered users, super administrators, online users, the installed version and course and access statistics.

The Forma LMS administration dashboard after signing in, with quick links for users, courses, contents, certificates and reports, the registered users and super admin counts, the installed version 4.1.43 and the accesses chart

Step 6 - Manage courses

From the E-learning menu open the course management list. Here you create course categories and courses, import SCORM, AICC and xAPI content, enrol learners, and run classroom and virtual sessions. A fresh appliance starts with an empty course list ready for your content.

The Forma LMS course management list showing the category section, the new course and new category actions, and the course table with code, name, type, students and action columns

Step 7 - Manage users

From the Users menu open user management to create users and groups, assign administrator and instructor roles, import users in bulk, and organise your learners across the org chart.

The Forma LMS user management list showing the user directory with the admin super administrator account and the create, import and role assignment actions

Security model - no default credentials

This image never ships a usable default login. During the build the administrator password is rotated to a discarded random value, and on the first boot of every VM a unique administrator password is generated and written to the root only credentials file. You can prove the model on the instance: the per VM administrator authenticates through the real Forma login form, while a blank password and common weak guesses are rejected.

sudo bash /usr/local/sbin/formalms-cred-roundtrip.sh

Expected output:

OK admin authenticates; blank+weak rejected

The credential round trip confirming the per VM admin authenticates via the Forma login form while blank and weak guesses are rejected, and the god admin as the only super administrator account

Versions and the first boot service

Confirm the installed component versions, the completed and locked install, and the first boot service.

php8.1 -v | head -1
mariadb --version
systemctl is-active formalms-firstboot

The installed Forma LMS version 4.1.43, PHP 8.1, MariaDB and Apache versions, the first boot service and the present install lock forma.lock

Where your data lives

The Forma LMS application code lives at /var/www/formalms/html, its configuration at /var/www/formalms/html/config.php (denied to the web by Forma's own rules), and uploaded and generated content under /var/www/formalms/html/files. The MariaDB database forma is stored under /var/lib/mysql and is reachable only on the loopback interface. The formalms-cron.timer systemd timer runs Forma's scheduled jobs every five minutes.

Support

This image is backed by 24/7 cloudimg support. Contact support@cloudimg.co.uk for deployment guidance, course and SCORM configuration, learning plan and certification setup, version upgrades, performance tuning and MariaDB database administration.