Cc
Applications Azure

Claroline Connect LMS on Ubuntu 24.04 on Azure User Guide

| Product: Claroline Connect on Ubuntu 24.04 LTS on Azure

Overview

Claroline Connect is the open source learning management system (LMS) and e-learning platform used by schools, universities and training organisations to build and deliver online courses. It brings workspaces, courses, learning paths, activities and exercises, forums, resource libraries and learner tracking together in one web interface. The cloudimg image ships Claroline Connect 15.0.15 — a Symfony back end with a React front end — served by nginx and PHP 8.3 FPM on a hardened, fully patched Ubuntu 24.04 LTS base, together with a bundled local MySQL 8.0 server, so the appliance is complete and useful on its own. The React front end is compiled and the platform is installed and migrated at build time, so the platform is ready the moment the instance boots — no composer, npm or webpack ever runs on your VM. The bundled MySQL listens only on the loopback interface (127.0.0.1:3306) and keeps its data on a dedicated Azure data disk. A unique administrator password, database password and application secret are generated on the first boot of every VM. Claroline Connect is redistributed under the GNU Affero General Public License v3.0 (AGPL-3.0-or-later). Backed by 24/7 cloudimg support.

What is included:

  • Claroline Connect 15.0.15 (Symfony + React) served by nginx with PHP 8.3 FPM, managed by systemd
  • A bundled MySQL 8.0 server holding the Claroline database, already installed, migrated and ready
  • The React front end pre compiled at build time, so no build toolchain (Node, Composer) ships on the customer VM
  • A per VM administrator password, database password and Symfony application secret generated on first boot
  • No shipped default login: the administrator is created only on first boot and the app to database password ships rotated to a discarded random
  • MySQL bound to 127.0.0.1 only, never exposed to the network
  • A dedicated Azure data disk carrying both the MySQL database and Claroline's uploaded files and resources
  • Links generated from the request host, so the site answers correctly on the public IP, the private IP or any DNS name you point at it
  • nginx.service, php8.3-fpm.service and mysql.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_B2ms (2 vCPU / 8 GiB RAM) is a sensible starting point; move up to Standard_D2s_v3 or larger for bigger cohorts or heavy usage. 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 MySQL 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

In the Azure portal choose Create a resource, search for Claroline Connect LMS / e-Learning Platform on Ubuntu 24.04 LTS by cloudimg, and select Create. Pick your subscription, resource group and region, choose the Standard_B2ms size, select SSH public key authentication with the username azureuser, and allow inbound 22, 80 and 443. The image attaches its own 30 GiB data disk for your database and uploaded files, so you do not need to add one.

Step 2 - Deploy from the Azure CLI

az vm create \
  --resource-group <your-rg> \
  --name claroline \
  --image <marketplace-image-urn> \
  --size Standard_B2ms \
  --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 claroline --port 80,443

Step 3 - Confirm the services are running

SSH to the VM as azureuser and confirm nginx, PHP-FPM and MySQL are active, then check the installed Claroline version.

systemctl is-active nginx php8.3-fpm mysql
head -1 /var/www/claroline/VERSION.txt

Expected output:

active
active
active
15.0.15

The nginx, php8.3-fpm and mysql services reporting active, the PHP 8.3 version, and the installed Claroline Connect version 15.0.15

Step 4 - Confirm the network posture and health endpoint

MySQL is bound to 127.0.0.1:3306 only, while nginx serves Claroline on port 80. The unauthenticated /healthz endpoint answers 200 for Azure Load Balancer probes, and the application shell answers 200 at the site root.

ss -ltn 'sport = :3306 or sport = :80'
curl -s -o /dev/null -w 'healthz -> %{http_code}\n' http://127.0.0.1/healthz

Expected output:

healthz -> 200

ss showing MySQL listening on loopback 127.0.0.1:3306 only and nginx on port 80, and the healthz endpoint returning 200

Step 5 - Retrieve the per VM administrator password

The first boot service generates an administrator password unique to your VM and writes it to a root only file. Confirm the file exists (it is 0600 root), then read it over SSH:

ls -l /root/claroline-credentials.txt
sudo cat /root/claroline-credentials.txt

The claroline-credentials.txt file with 0600 root permissions showing the per VM administrator username and the MySQL database coordinates, with the passwords generated uniquely for this VM

CLAROLINE_URL is the VM's own address as seen from inside the VM. Azure does not expose the public IP to the instance, so this is usually the private address. Browsing the public IP shown in the Azure portal works identically, because Claroline derives its links from the request host rather than baking one in at build time.

Step 6 - Sign in

Browse to http://<vm-ip>/ and sign in with the username admin and the password from the credentials file.

The Claroline Connect sign in page showing the username and password fields and the sign in button

After signing in you land on your Claroline desktop, the personal home area with the tool bar and navigation for your workspaces, courses and account. From here an administrator reaches the platform administration tools.

The Claroline Connect desktop after signing in as the administrator, showing the personal home area and navigation

Step 7 - Create your first workspace

Open the administration tools and use the workspaces section to create your first workspace. A workspace is the container for a course: inside it you build learning paths, add activities and exercises, upload resources, open forums and enrol your learners. Claroline links these together, so a learning path can chain resources and activities and track each learner's progress.

The Claroline Connect workspaces administration screen, where a new course workspace is created and managed

Step 8 - No known or default credentials

This image ships with no usable login. No administrator account exists in the shipped image; the first boot service creates the admin administrator with a fresh password unique to your VM, generates a fresh Symfony application secret, and rotates the application to database password, all before Claroline serves a single request. The check below confirms that the per VM administrator password authenticates through the real Claroline login endpoint while a blank password and common weak guesses are all rejected.

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

Expected output:

OK per-VM administrator authenticates via POST /login; blank + weak guesses rejected

Change the administrator password to one of your own from your account settings once you have signed in for the first time.

Step 9 - Verify the release and where your data lives

Confirm the installed release and the data disk layout. Both the MySQL database and Claroline's uploaded files live on the dedicated data disk, bind mounted into place, so your data is kept off the operating system disk.

head -1 /var/www/claroline/VERSION.txt
df -h /data && findmnt -no SOURCE,TARGET /var/lib/mysql

Step 10 - Enable HTTPS (optional)

Claroline derives its links from the request, so putting a TLS terminating proxy in front of it, or a certificate on the VM, upgrades the site to https:// with no reconfiguration. To terminate TLS on the VM itself, point a DNS name at the public IP and use Certbot:

sudo apt-get update && sudo apt-get install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.example.com

Certbot obtains a certificate, configures the nginx virtual host for port 443 and sets up automatic renewal. Once TLS is in front, browse to https://your-domain.example.com/.

Support

This product is backed by 24/7 cloudimg support. For deployment guidance, workspace and course configuration, learning path and activity setup, version upgrades, performance tuning or MySQL database administration, contact support@cloudimg.co.uk.

About cloudimg

cloudimg publishes hardened, fully patched, ready to run open source images for Microsoft Azure and other clouds. Every image is built to a consistent security baseline, ships without default or shared credentials, keeps customer data on a dedicated data disk, and is paired with a step by step deploy guide. Claroline Connect is redistributed under the GNU Affero General Public License v3.0 (AGPL-3.0-or-later). 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.