Sylius on Ubuntu 24.04 on Azure User Guide
Overview
Sylius is a modern, open-source e-commerce platform built on the Symfony framework. It gives you a fully customisable, API-first storefront and a powerful administration panel for managing products, catalogues, orders, customers, promotions and shipping, all hosted on your own infrastructure. The cloudimg image installs Sylius 2.2.2 on a full LEMP stack from the Ubuntu 24.04 repositories (nginx, PHP 8.3-FPM and MySQL 8), runs the entire headless install at build time so there is no web wizard, stores the MySQL database and Sylius media uploads 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:
- Sylius 2.2.2 served on port 80 by nginx via the PHP 8.3-FPM FastCGI socket
- MySQL 8 on loopback with its data directory on a dedicated Azure data disk
- A dedicated Azure data disk at
/var/lib/syliusfor the MySQL database and Sylius media uploads - Per-VM database credentials, application secret and a unique administrator password generated on first boot
- The storefront at
/and the administration panel at/admin nginx.service,php8.3-fpm.serviceandmysql.serviceas 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_B4ms (4 vCPU / 16 GiB RAM) is a good starting point for Sylius. NSG inbound: allow 22/tcp from your management network and 80/tcp for the Sylius 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 Sylius 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 sylius \
--image <marketplace-image-urn> \
--size Standard_B4ms \
--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 sylius --port 80 --priority 1010
Step 3 - Connect to your VM
ssh azureuser@<vm-public-ip>
Step 4 - Confirm the LEMP stack is running
On first boot Sylius 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 storefront 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/
The health endpoint and the storefront home 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/sylius-credentials.txt

The file contains the storefront URL, the admin panel URL, the login (sylius), the email (admin@cloudimg.local) and a unique password. Change the email and password from the admin panel after your first sign-in.
Step 6 - Browse the storefront
Browse to http://<vm-public-ip>/ to view the Sylius storefront, pre-loaded with the default demo catalogue so you can see a working shop immediately.

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

Step 8 - Explore the administration dashboard
The admin dashboard summarises your store - total sales, new orders, new customers and the latest order activity - with the full management menu down the left for catalogue, orders, customers, marketing and configuration.

Step 9 - Manage the product catalogue
Under Catalog -> Products you manage every product, its variants, pricing, taxons (categories), images and inventory. From here you can add new products, edit existing ones and organise your catalogue.

Data on the dedicated data disk
The MySQL data directory (/var/lib/sylius/mysql) and the Sylius media uploads (/var/lib/sylius/media) live on a dedicated Azure data disk mounted at /var/lib/sylius. This keeps all of your store data, orders and product images on a managed disk you can snapshot, resize and back up independently of the OS disk.
df -h /var/lib/sylius | tail -1

Enabling HTTPS
For production, put Sylius 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, add your HTTPS hostname to the TRUSTED_HOSTS regex in /var/www/sylius/.env.local and reload PHP-FPM and nginx with sudo systemctl reload php8.3-fpm nginx.
Maintenance
Sylius periodically ships new releases. To upgrade, follow the official Sylius upgrade guide (update the sylius/sylius constraint in /var/www/sylius/composer.json, run sudo composer update as appropriate, then sudo -u www-data php /var/www/sylius/bin/console doctrine:migrations:migrate --no-interaction and rebuild assets with yarn build). The OS continues to receive unattended security updates. The MySQL database and Sylius media persist on the data disk across reboots and upgrades.
Support
This image is maintained by cloudimg with 24/7 support. Sylius is open-source software licensed under the MIT License. "Sylius" is a trademark of Sylius sp. z o.o.; cloudimg is not affiliated with or endorsed by Sylius sp. z o.o. For help with this image, contact support@cloudimg.co.uk.