Applications Azure

Ibexa OSS on Ubuntu 24.04 on Azure User Guide

| Product: Ibexa OSS 5 on Ubuntu 24.04 LTS on Azure

Overview

Ibexa OSS is the open-source edition of the Ibexa DXP content-management platform (the successor to eZ Platform / eZ Publish). It is a full, standalone CMS built on the Symfony framework: you model your own content types, author and translate content in a modern back-office, and deliver it through server-rendered pages or the built-in REST and GraphQL content APIs. This image ships the GPL-2.0 open-source edition (ibexa/oss) - not the commercial Ibexa DXP - so there is no subscription, licence key or phone-home activation required to run it.

The cloudimg image installs Ibexa OSS 5.0.9 from the official ibexa/oss-skeleton distribution on a full stack from the Ubuntu 24.04 repositories (nginx, PHP 8.3-FPM and MySQL 8), compiles the back-office assets at build time so there is no web wizard, uses the built-in legacy (database-backed) search engine, stores the MySQL database and uploaded media on a dedicated Azure data disk, and rotates the database password, the application secret and the administrator password on the first boot of every VM. Backed by 24/7 cloudimg support.

What is included:

  • Ibexa OSS 5.0.9 (GPL open-source edition) served on port 80 by nginx via the PHP 8.3-FPM FastCGI socket
  • MySQL 8 on loopback, with the database data directory on a dedicated Azure data disk
  • A dedicated Azure data disk at /var/lib/ibexa for the MySQL database and Ibexa's uploaded media (public/var)
  • Per-VM database credentials, application secret and a unique administrator password generated on first boot
  • The back-office at /admin, the rendered public site at /, and the REST/GraphQL content APIs
  • nginx.service, php8.3-fpm.service and mysql.service as systemd units, enabled and active
  • 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 good starting point for evaluation and small sites; step up to a B2ms/B4ms or a D-series for busier workloads. NSG inbound: allow 22/tcp from your management network and 80/tcp for the Ibexa web interface (front with TLS for public exposure - see Enabling HTTPS).

Step 1 - Deploy from the Azure Marketplace

Sign in to the Azure Portal, choose Create a resource, search the Marketplace for Ibexa OSS 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 HTTP (80). Review the dedicated data disk on the Disks tab, then Review + create -> Create.

Step 2 - Deploy from the Azure CLI

az vm create \
  --resource-group <your-rg> \
  --name ibexa-oss \
  --image <marketplace-image-urn> \
  --size Standard_B2s \
  --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 ibexa-oss --port 80 --priority 1010

Step 3 - Connect to your VM

ssh azureuser@<vm-public-ip>

Step 4 - Confirm the stack is running

On first boot Ibexa regenerates its database credentials and application secret, rotates a unique administrator password and starts the stack.

systemctl is-active nginx php8.3-fpm mysql

All three report active.

You can confirm the component versions and that the site answers:

php -v | head -1
mysql --version
curl -s -o /dev/null -w 'HTTP %{http_code}\n' http://127.0.0.1/health
curl -s -o /dev/null -w 'HTTP %{http_code}\n' http://127.0.0.1/admin/login

The health endpoint and the back-office login page both return HTTP 200.

Step 5 - Retrieve the administrator password

The administrator password is unique to your VM and is generated on first boot. Read the credentials file as root:

sudo cat /root/ibexa-credentials.txt

The file contains the back-office URL, the site URL, the REST API URL, the login (admin), the email (admin@cloudimg.local) and a unique password. Change the email and password from the back-office after your first sign-in.

Step 6 - Sign in to the back-office

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

Ibexa OSS back-office sign-in page

Step 7 - Explore the dashboard

After signing in you land on the back-office dashboard. The left-hand menu gives you Content structure, Media, Drafts and the Settings area (Sections, Content types, Object States) - everything you need to model and manage your content.

Ibexa OSS back-office dashboard

Step 8 - Manage your content

Ibexa content lives in a tree of typed content items. Open Content structure to browse the content tree, create and edit items, add translations and manage sub-items. Each item is an instance of a content type you define under Settings -> Content types, so your content model is entirely your own.

Ibexa OSS content structure

Step 9 - View the rendered site

The public site is served at / by the bundled standard design. A freshly deployed VM already serves a real rendered page; as you publish content it is rendered here, and you can also consume it through the built-in REST API (/api/ibexa/v2) and GraphQL endpoint for decoupled front ends.

curl -s -o /dev/null -w 'HTTP %{http_code}\n' http://127.0.0.1/

Ibexa OSS rendered public site

Data on the dedicated data disk

The MySQL data directory (/var/lib/ibexa/mysql) and Ibexa's uploaded media (/var/lib/ibexa/var, surfaced at /var/www/ibexa/public/var) live on a dedicated Azure data disk mounted at /var/lib/ibexa. This keeps all of your content, media and database on a managed disk you can snapshot, resize and back up independently of the OS disk.

df -h /var/lib/ibexa | tail -1

Enabling HTTPS

For production, put Ibexa behind TLS. The simplest approach is a free Let's Encrypt certificate with Certbot once you have a DNS name pointing at the VM:

sudo snap install --classic certbot
sudo ln -sf /snap/bin/certbot /usr/bin/certbot
sudo certbot --nginx -d your-domain.example.com

Certbot edits the nginx site to serve HTTPS and sets up automatic renewal. After enabling TLS, reload PHP-FPM and nginx with sudo systemctl reload php8.3-fpm nginx.

Maintenance

Ibexa periodically ships new releases in the 5.0 line. To upgrade, follow the official Ibexa upgrade guide (adjust the constraints in /var/www/ibexa/composer.json, run sudo -u www-data composer update as appropriate, then sudo -u www-data php /var/www/ibexa/bin/console ibexa:migrations:migrate and sudo -u www-data php /var/www/ibexa/bin/console cache:clear). The OS continues to receive unattended security updates. The MySQL database and uploaded media persist on the data disk across reboots and upgrades.

Support

This image is maintained by cloudimg with 24/7 support. Ibexa OSS is open-source software licensed under GPL-2.0-only and is developed by Ibexa AS; cloudimg is not affiliated with or endorsed by Ibexa AS. This image ships the open-source ibexa/oss edition, not the commercial Ibexa DXP. For help with this image, contact support@cloudimg.co.uk.