Roadiz
Overview
Roadiz is a modern, open source content management system built on the Symfony framework and Doctrine ORM. Instead of a fixed page model, it uses a polymorphic node system. You define your own content types, compose your site or app from typed, reusable nodes, and deliver the content however you like: as a headless API for JavaScript front ends and native apps, or through server-rendered themes. Editors work in Rozier, Roadiz's back-office.
This SecureAnyCloud image installs Roadiz 2.7.5, the current v2 line from the actively maintained roadiz/skeleton distribution. It runs on a full stack from the Ubuntu 24.04 repositories: nginx, PHP 8.3-FPM, MySQL 8 and Redis. The entire install runs at build time, so there is no web wizard.
What you get:
- Roadiz 2.7.5 (v2, headless) served on port 80 by nginx through the PHP 8.3-FPM FastCGI socket
- MySQL 8 and Redis on loopback, with the MySQL data directory on a dedicated Azure data disk
- A dedicated Azure data disk at
/var/lib/roadizfor the MySQL database and uploaded documents - A database password, application secret, JWT keypair and administrator password that are unique to each VM and rotated on first boot
- The Rozier back-office at
/rz-adminand the headless content API under/api nginx.service,php8.3-fpm.service,mysql.serviceandredis-server.serviceas enabled, active systemd units- 24/7 SecureAnyCloud support
Prerequisites
You need an active Azure subscription, an SSH key pair, and a VNet with a subnet in the target region.
Standard_B2s (2 vCPU / 4 GiB RAM) is a good starting size for a small Roadiz site. Step up to B2ms or B4ms for busier workloads.
Configure the network security group (NSG) to allow inbound 22/tcp from your management network and 80/tcp for the Roadiz web interface. For public exposure, put TLS in front of the site (see Enabling HTTPS).
Step 1 - Deploy from the Azure Marketplace
Sign in to the Azure Portal, choose Create a resource, search the Marketplace for Roadiz by SecureAnyCloud, and select Create.
On the Basics tab, 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 select Review + create and Create.
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:roadiz-ubuntu-24-04:default:latest
az vm create \
--resource-group <your-rg> \
--name roadiz \
--image sac1647283583153:roadiz-ubuntu-24-04:default:latest \
--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 roadiz --port 80 --priority 1010Step 3 - Connect to your VM
ssh azureuser@<vm-public-ip>Step 4 - Confirm the stack is running
On first boot, Roadiz regenerates its database credentials, application secret and JWT keypair, rotates the administrator password to a unique value, and starts the stack. Check that all four services are active.
systemctl is-active nginx php8.3-fpm mysql redis-serverAll four report active.
Then 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/rz-admin/loginThe health endpoint and the Rozier login page both return HTTP 200.
Step 5 - Retrieve the administrator password
Your VM generates a unique administrator password on first boot. Read the credentials file as root:
sudo cat /root/roadiz-credentials.txtThe file contains the Rozier back-office URL, the API URL, the login (admin), the email (admin@sac.local) and the unique password.
After your first sign-in, change the email and password in the back-office.
Step 6 - Sign in to the Rozier back-office
Browse to http://<vm-public-ip>/rz-admin and sign in with the username admin and the password from the credentials file.
Step 7 - Explore the Rozier dashboard
After you sign in, you land on the Rozier dashboard. The left-hand menu gives you the node tree, node-types, tags, documents, users, settings and translations. Together they cover everything you need to model and manage your content.
Step 8 - Manage your content nodes
Roadiz content lives in a tree of typed nodes. Open the node tree to browse, create, reorder and edit nodes. Each node is an instance of a node-type that you define, so your content model is entirely your own.
The image ships with the default node-types and settings installed, so the back-office is populated and ready to build on.
Step 9 - Use the headless content API
Roadiz v2 is headless. Your published content is available as a JSON API under /api, ready to power a decoupled front end. The API is documented and browsable, and JWT authentication (with keys generated per VM) protects write access.
curl -s -o /dev/null -w 'HTTP %{http_code}\n' http://127.0.0.1/apiData on the dedicated data disk
The MySQL data directory (/var/lib/roadiz/mysql) and Roadiz's uploaded documents (/var/lib/roadiz/files, surfaced at /var/www/roadiz/public/files) live on a dedicated Azure data disk mounted at /var/lib/roadiz. This keeps your content, media and database on a managed disk that you can snapshot, resize and back up independently of the OS disk.
df -h /var/lib/roadiz | tail -1Enabling HTTPS
For production, put Roadiz behind TLS. The simplest approach is a free Let's Encrypt certificate from Certbot, once you have a DNS name that points at the VM:
sudo snap install --classic certbot
sudo ln -sf /snap/bin/certbot /usr/bin/certbot
sudo certbot --nginx -d your-domain.example.comCertbot edits the nginx site to serve HTTPS and sets up automatic renewal. After you enable TLS, reload PHP-FPM and nginx with sudo systemctl reload php8.3-fpm nginx.
Maintenance
Roadiz periodically ships new releases in the v2 line. To upgrade, follow the official Roadiz upgrade guide. In outline, update the constraints in /var/www/roadiz/composer.json and run sudo -u www-data composer update as appropriate. Then run sudo -u www-data php /var/www/roadiz/bin/console doctrine:migrations:migrate --no-interaction and sudo -u www-data php /var/www/roadiz/bin/console cache:clear.
The OS continues to receive unattended security updates. The MySQL database and uploaded documents persist on the data disk across reboots and upgrades.
Support
SecureAnyCloud maintains this image with 24/7 support. For help, contact sales@secureanycloud.com.
Roadiz is open source software licensed under the MIT License and developed by REZO ZERO. SecureAnyCloud is not affiliated with or endorsed by the Roadiz project or REZO ZERO.
Deploy on Azure
Launch Roadiz 2 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