Claroline
Overview
Claroline Connect is the open source learning management system (LMS) and e-learning platform used by schools, universities and training organizations 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 SecureAnyCloud image ships Claroline Connect 15.0.15, a Symfony back end with a React front end. It is 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. The platform is ready as soon as the instance boots, and 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).
What you get:
- Claroline Connect 15.0.15 (Symfony and React), served by nginx with PHP 8.3 FPM and managed by systemd
- A bundled MySQL 8.0 server that holds the Claroline database, already installed, migrated and ready
- A React front end precompiled 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 application's database password is rotated to a discarded random value
- MySQL bound to
127.0.0.1only, never exposed to the network - A dedicated Azure data disk that carries 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 that you point at it
nginx.service,php8.3-fpm.serviceandmysql.serviceas enabled systemd units- An unauthenticated
/healthzendpoint for Azure Load Balancer health probes - 24/7 SecureAnyCloud support
Prerequisites
You need 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. For bigger cohorts or heavy usage, move up to Standard_D2s_v3 or larger.
In the NSG, allow inbound 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 SecureAnyCloud, and select Create. Pick your subscription, resource group and region, and 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
# Accept the Marketplace terms once per subscription (required before the first CLI deploy)
az vm image terms accept --urn sac1647283583153:claroline-ubuntu-24-04:default:latest
az vm create \
--resource-group <your-rg> \
--name claroline \
--image sac1647283583153:claroline-ubuntu-24-04:default:latest \
--size Standard_B2ms \
--admin-username azureuser \
--generate-ssh-keys \
--public-ip-sku StandardThen open ports 80 and 443:
az vm open-port --resource-group <your-rg> --name claroline --port 80,443Step 3 - Confirm the services are running
Connect to the VM over SSH as azureuser. Confirm that nginx, PHP-FPM and MySQL are active, and then check the installed Claroline version.
systemctl is-active nginx php8.3-fpm mysqlhead -1 /var/www/claroline/VERSION.txtExpected output:
active active active 15.0.15Step 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. Confirm both behaviors:
ss -ltn 'sport = :3306 or sport = :80'curl -s -o /dev/null -w 'healthz -> %{http_code}\n' http://127.0.0.1/healthzExpected output:
healthz -> 200Step 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 that the file exists (it is 0600 root), and then read it over SSH:
ls -l /root/claroline-credentials.txtsudo cat /root/claroline-credentials.txtCLAROLINE_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 value is usually the private address. Browsing to the public IP shown in the Azure portal works identically, because Claroline derives its links from the request host instead of 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.
After you sign in, you land on your Claroline desktop. This personal home area has the toolbar and navigation for your workspaces, courses and account. From here, an administrator reaches the platform administration tools.
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 enroll your learners. Claroline links these items together, so a learning path can chain resources and activities and track each learner's progress.
Step 8 - Verify that no known or default credentials exist
This image ships with no usable login. No admin administrator account exists in the shipped image. The first-boot service creates the admin administrator with a fresh password unique to your VM. It also generates a fresh Symfony application secret and rotates the application's database password, all before Claroline serves a single request.
The following check 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.shExpected output:
OK per-VM administrator authenticates via POST /login; blank + weak guesses rejectedChange 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 stays off the operating system disk.
head -1 /var/www/claroline/VERSION.txtdf -h /data && findmnt -no SOURCE,TARGET /var/lib/mysqlStep 10 - Enable HTTPS (optional)
Claroline derives its links from the request, so 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.comCertbot obtains a certificate, configures the nginx virtual host for port 443 and sets up automatic renewal. After TLS is in place, browse to https://your-domain.example.com/.
Support
24/7 SecureAnyCloud support backs this product. For help with deployment, workspace and course configuration, learning path and activity setup, version upgrades, performance tuning or MySQL database administration, contact sales@secureanycloud.com.
About SecureAnyCloud
SecureAnyCloud publishes hardened, ready-to-run open source images, patched at build time, 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 deployment 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.
Deploy on Azure
Launch Claroline Connect 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