Applications Azure

Zenario on Ubuntu 24.04 on Azure User Guide

| Product: Zenario on Ubuntu 24.04 LTS on Azure

Overview

Zenario is a mature open-source content management system for building and running websites, including sites that serve content in many languages: page and layout management, a central image and document library, an "Organizer" admin back-end, and a module ecosystem, all on the classic LAMP stack. The cloudimg image installs Zenario 10.4 on a full LAMP stack from the Ubuntu 24.04 repositories (nginx, PHP 8.3-FPM and MySQL 8.0), drives the entire installation at build time so there is no web setup wizard for you to complete, ships a starter site and skin so a fresh VM serves a real rendered site immediately, stores the MySQL database and Zenario's file stores 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:

  • Zenario 10.4 served on port 80 by nginx via the PHP 8.3-FPM FastCGI socket
  • A starter site and skin so the front end renders immediately
  • MySQL 8.0 on loopback with its data directory on a dedicated Azure data disk
  • A dedicated Azure data disk at /var/lib/zenario for the database, uploaded media and document store
  • A per-VM database password and a unique administrator account generated on first boot
  • 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. NSG inbound: allow 22/tcp from your management network and 80/tcp for the Zenario 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 Zenario 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 zenario \
  --image <cloudimg-zenario-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 zenario --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 Zenario rotates its database password, resets the administrator account to a fresh per-VM password, clears the cache and starts the stack. Confirm the three services are active and note the component versions and exposed ports - MySQL listens on loopback only, and PHP-FPM is on a unix socket rather than a TCP port:

systemctl is-active nginx php8.3-fpm mysql
php -v | head -1
mysql --version
curl -s -o /dev/null -w 'HTTP %{http_code}\n' http://127.0.0.1/

All three services report active and the site home returns HTTP 200.

Zenario appliance 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/zenario-credentials.txt

The file contains the login (admin), the admin console URL and a unique password, plus the database name, user and password. The file is 0600 and owned by root, the values are unique to this VM, and blank or weak passwords are rejected by Zenario's own verifier. Change the email and password from the Organizer after your first sign-in.

Zenario per-VM credentials, weak guesses rejected

Step 6 - Browse to your site

Browse to http://<vm-public-ip>/. The image ships with a starter site and skin, so you see a complete, rendered site immediately and can start editing rather than facing a blank page or a setup wizard.

Zenario starter site home page

Step 7 - Sign in to the Organizer admin console

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

Zenario administrator sign-in page

After signing in you land on the Organizer, the "under-the-hood" control centre for your site - content and pages, menu navigation, the image and document library, layouts, users and contacts, and site configuration.

Zenario Organizer dashboard

Step 8 - Manage content, pages and layouts

Open the Content panel in the Organizer to see your pages. From here you can create, edit, move and publish pages, and edit page content in the built-in editor.

Zenario Organizer content panel

Menu structure is managed under Menu navigation, images and downloads under Library, and page layouts (including the Gridmaker grid and CSS) under Layouts. Additional functionality is installed and configured through the module system under Configuration.

Step 9 - Security: no re-runnable installer

Because the whole installation is completed at build time, once the database has tables Zenario serves the administrator login at /admin.php and never the installer wizard. The build-time installer helper is deleted, and zenario_siteconfig.php (which holds the database credential) is denied over HTTP, as is the private file store:

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

/admin.php returns HTTP 200 (the login screen) and /zenario_siteconfig.php returns HTTP 403.

Zenario no re-runnable installer, DB credential not web-served

Step 10 - The dedicated data disk

The MySQL database and Zenario's file stores (the public and private file trees, plus the document store) live on a dedicated Azure data disk mounted at /var/lib/zenario, separate from the OS disk. This keeps your content independent of the OS image and lets you resize the disk as your site grows.

df -h /var/lib/zenario
findmnt /var/lib/zenario

Zenario per-VM first-boot rotation and the dedicated data disk

Step 11 - Enabling HTTPS

For any public deployment, front Zenario 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.
  • Zenario 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. Zenario itself can be updated by following the upstream upgrade guide at zenar.io.
  • Backups: back up the MySQL zenario database (for example with mysqldump) and the /var/lib/zenario/public and /var/lib/zenario/private directories, 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 Zenario on Azure, contact the cloudimg team through the cloudimg website.