Applications Azure

WBCE CMS on Ubuntu 24.04 on Azure User Guide

| Product: WBCE CMS on Ubuntu 24.04 LTS on Azure

Overview

WBCE CMS (WebsiteBaker Community Edition) is a lightweight open-source content management system for building and running websites: a tree of pages built from content sections, an admin console, and a droplets and module system, all on the classic LAMP stack. The cloudimg image installs WBCE CMS 1.6.8 on a full LAMP stack from the Ubuntu 24.04 repositories (nginx, PHP 8.3-FPM and MariaDB), drives the entire installation at build time so there is no web setup wizard for you to complete, removes the installer so no visitor can re-run setup, seeds a default home page so a fresh VM serves a real rendered site immediately, stores the MariaDB database and uploaded media on a dedicated Azure data disk, and rotates the database password and the administrator account on the first boot of every VM. Backed by 24/7 cloudimg support.

What is included:

  • WBCE CMS 1.6.8 served on port 80 by nginx via the PHP 8.3-FPM FastCGI socket
  • A seeded default home page so the front end renders immediately
  • The web installer removed after setup so it can never be re-run by a visitor
  • MariaDB on loopback with its data directory on a dedicated Azure data disk
  • A dedicated Azure data disk at /var/lib/wbce for the MariaDB database and uploaded media
  • A per-VM database password and a unique administrator account generated on first boot
  • nginx.service, php8.3-fpm.service and mariadb.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. NSG inbound: allow 22/tcp from your management network and 80/tcp for the WBCE CMS 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 WBCE CMS 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 with the Azure CLI

az vm create \
  --resource-group <your-rg> --name wbce-cms \
  --image <cloudimg-wbce-cms-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 wbce-cms --port 80 --priority 1010

Step 3 - Connect to your VM

ssh azureuser@<vm-public-ip>

Step 4 - Confirm the LAMP stack is running

On first boot WBCE CMS rotates its database password, resets the administrator account to a fresh per-VM password, clears the cache and starts the stack.

systemctl is-active nginx php8.3-fpm mariadb

All three report active.

You can confirm the component versions and that the site answers on port 80:

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

The site home returns HTTP 200. The bundled MariaDB listens only on the loopback interface (127.0.0.1:3306); only the web server is exposed on the network.

WBCE CMS services, versions and exposed ports

Step 5 - Retrieve the administrator password

The administrator account is unique to your VM and is generated on first boot. Read it as root:

sudo cat /root/wbce-credentials.txt

The file contains the login (admin), the admin console URL and a unique password, plus the database name, user and password. It is 0600 and owned by root, and the web installer has been removed, so there is no default login and no way for a visitor to re-run setup. Change the email and password from the admin console after your first sign-in.

WBCE CMS per-VM credentials and rejected default logins

Step 6 - Browse to your site

Browse to http://<vm-public-ip>/. The image ships with a seeded default home page, so you see a complete, rendered site immediately and can start editing rather than facing a blank "under construction" page.

WBCE CMS rendered front-end home page

Step 7 - Sign in to the admin console

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

WBCE CMS administrator sign-in page

After signing in you land on the admin dashboard, the control centre for your site - Pages, Media, Add-ons, Preferences, Settings and Access.

WBCE CMS administration dashboard

Step 8 - Manage pages, sections and content

Open Pages to see your page tree. From here you can add, move and delete pages, set each page's visibility, and edit page content in the built-in WYSIWYG editor. Each page is built from one or more sections, and the Add Page form lets you choose the page type (WYSIWYG by default), the parent and the visibility.

WBCE CMS Pages section and page tree

Media files are managed under Media, and additional functionality (modules, templates and languages) is installed under Add-ons.

Step 9 - The dedicated data disk and per-VM security

The MariaDB database and WBCE CMS's uploaded media live on a dedicated Azure data disk mounted at /var/lib/wbce, separate from the OS disk. This keeps your content independent of the OS image and lets you resize the disk as your site grows. The first-boot service that rotates the per-VM secrets is enabled to run once on the first boot of every VM.

df -h /var/lib/wbce
findmnt /var/lib/wbce

WBCE CMS first-boot rotation and the dedicated data disk

Step 10 - Installer removed and internals not web-served

The web installer is deleted after the image is built, and the database credential file and PHP framework internals are never served over HTTP. You can confirm the installer is gone while the site and admin still serve normally:

curl -s -o /dev/null -w '/install/ -> HTTP %{http_code}\n' http://127.0.0.1/install/index.php
curl -s -o /dev/null -w '/config.php -> HTTP %{http_code}\n' http://127.0.0.1/config.php
curl -s -o /dev/null -w '/ -> HTTP %{http_code}\n' http://127.0.0.1/

/install/ returns HTTP 404, /config.php returns HTTP 403, and the site home returns HTTP 200.

WBCE CMS installer removed and internals not web-served

Step 11 - Enabling HTTPS

For any public deployment, front WBCE CMS with TLS. Point a DNS A record at your VM's public IP, then install a certificate with Certbot and the nginx plugin. Run the following as prose-driven steps on your VM (replace the placeholders with your real values; do not paste them verbatim):

  • Install Certbot: sudo apt-get update && sudo apt-get install -y certbot python3-certbot-nginx
  • Obtain and install a certificate for your domain, supplying your contact email when prompted, by running certbot with the nginx plugin for your-domain.example.com.
  • WBCE CMS derives its base URL from the request, so it automatically switches generated links to https:// once TLS is terminated in front of it. No configuration change is required.

Certbot installs a renewal timer automatically; certificates renew without further action.

Step 12 - Maintenance

  • Updates: the OS continues to receive unattended security updates. WBCE CMS itself can be updated from the admin console under Add-ons, or with the upstream upgrade script.
  • Backups: back up the MariaDB wbce database (for example with mysqldump) and the /var/lib/wbce/media directory, which together hold your content and uploaded media.
  • Logs: web server logs are under /var/log/nginx/; PHP-FPM logs are under /var/log/php8.3-fpm.log.

Support

This image is maintained by cloudimg and backed by 24/7 support. If you need help deploying or operating WBCE CMS on Azure, contact the cloudimg team through the cloudimg website.