Sylius
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.
This SecureAnyCloud 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. The headless install runs at build time, so there is no web wizard. On the first boot of every VM, the image rotates the database password, the application secret and the administrator password.
What you get:
- Sylius 2.2.2 served on port 80 by nginx through 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 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_B4ms (4 vCPU / 16 GiB RAM) is a good starting size for Sylius.
Configure the network security group (NSG) to allow inbound 22/tcp from your management network and 80/tcp for the Sylius web interface. For public exposure, put TLS in front of it (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 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:sylius-ubuntu-24-04:default:latest
az vm create \
--resource-group <your-rg> \
--name sylius \
--image sac1647283583153:sylius-ubuntu-24-04:default:latest \
--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 1010Step 3 - Connect to your VM
Connect over SSH as azureuser:
ssh azureuser@<vm-public-ip>Step 4 - Confirm the LEMP stack is running
On first boot, Sylius regenerates its database credentials and application secret, sets a unique administrator password and starts the stack. Check that all three services are active:
systemctl is-active nginx php8.3-fpm mysqlAll three report active.
Next, 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
Your VM generates a unique administrator password on first boot. Read the credentials file as root:
sudo cat /root/sylius-credentials.txtThe file contains the storefront URL, the admin panel URL, the login (sylius), the email (admin@sac.local) and a unique password. After your first sign-in, change the email and password from the admin panel.
Step 6 - Browse the storefront
Browse to http://<vm-public-ip>/ to view the Sylius storefront. It is pre-loaded with the default demo catalogue, so you see a working shop immediately.
Step 7 - Sign in to the admin panel
Browse to http://<vm-public-ip>/admin. 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. The management menu down the left covers catalogue, orders, customers, marketing and configuration.
Step 9 - Manage the product catalogue
Open Catalog -> Products to 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. Your store data, orders and product images therefore sit on a managed disk that you can snapshot, resize and back up independently of the OS disk. Confirm the mount:
df -h /var/lib/sylius | tail -1Enabling HTTPS
For production, put Sylius behind TLS. The simplest approach is a free Let's Encrypt certificate from Certbot, once a DNS name 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, add your HTTPS hostname to the TRUSTED_HOSTS regex in /var/www/sylius/.env.local. Then reload PHP-FPM and nginx with sudo systemctl reload php8.3-fpm nginx.
Maintenance
Sylius ships new releases periodically. To upgrade, follow the official Sylius upgrade guide:
- Update the
sylius/syliusconstraint in/var/www/sylius/composer.json. - Run
sudo composer updateas appropriate. - Run
sudo -u www-data php /var/www/sylius/bin/console doctrine:migrations:migrate --no-interaction. - Rebuild assets with
yarn build.
The OS keeps receiving unattended security updates. The MySQL database and Sylius media persist on the data disk across reboots and upgrades.
Support
SecureAnyCloud maintains this image and provides 24/7 support. Sylius is open-source software licensed under the MIT License. "Sylius" is a trademark of Sylius sp. z o.o., and SecureAnyCloud is not affiliated with or endorsed by Sylius sp. z o.o. For help with this image, contact sales@secureanycloud.com.
Deploy on Azure
Launch Sylius 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
Overview
Sylius is an open-source, API-first e-commerce platform built on the Symfony framework. Developers and agencies choose it for full control over their store, instead of a rigid hosted template. This image delivers Sylius as a production LEMP application, so the storefront, the admin panel and the REST API are running within minutes of launch.
Sylius runs as a PHP 8.3 application under php-fpm, served by nginx on port 80. A MySQL 8 database stores every product, taxon, order, customer and admin user, and Sylius media and uploads are stored alongside it. Systemd manages MySQL, the PHP FastCGI workers and nginx, starting them on boot and restarting them on failure.
What you get:
- A dedicated, independently resizable EBS data volume at
/var/lib/syliusthat holds the MySQL data directory and the media, and survives instance replacement - Sylius' own administrator login protecting the admin panel
- A fresh MySQL password, Symfony application secret and administrator password on the first boot of every instance. A one-shot service generates them, recreates a clean database schema and creates the store administrator account, so two instances launched from the same Amazon Machine Image never share credentials.
- A per-instance application secret that signs sessions and CSRF tokens, which keeps every deployment cryptographically independent
- The administrator password in
/root/sylius-credentials.txtwith mode 0600, readable only by root - The Sylius demo credential (
sylius/sylius) from the platform fixtures scrambled during the image build, so it can never sign in to a deployed instance
Prerequisites
Before you deploy this image, make sure you have:
- An Amazon Web Services account where you can launch EC2 instances
- IAM permissions to launch instances, create security groups and subscribe to AWS Marketplace products
- An EC2 key pair in the target Region for SSH access to the instance
- A VPC and subnet in the target Region, with a security group that allows inbound port 22 from your management network and port 80 for the store
- The AWS CLI (version 2) installed locally, if you plan to deploy from the command line
Launch the Instance from the AWS Marketplace
Sign in to the AWS Management Console, open the EC2 service, and select Launch instance. Under Application and OS Images, choose AWS Marketplace AMIs and search for Sylius. Select the SecureAnyCloud listing and choose Select, then Continue on the subscription summary.
Pick an instance type of m5.large or larger. Choose your EC2 key pair under Key pair (login). Under Network settings, select your VPC and subnet, then create or select a security group that opens port 22 from your management network and port 80 for the store. Leave the root volume at the default size or larger.
Select Launch instance. After the instance state becomes Running and the status checks pass, first-boot initialisation takes a short time. During it, the per-instance database password, application secret and administrator password are generated and a clean store schema is created.
Launch the Instance from the AWS CLI
This command launches an instance from the SecureAnyCloud Sylius Marketplace AMI into an existing subnet and security group. Replace <ami-id> with the AMI ID shown on the Marketplace listing. Replace <key-name> with your EC2 key pair name and <subnet-id> with your subnet ID. Replace <security-group-id> with a security group that opens ports 22 and 80 as described above.
aws ec2 run-instances \
--image-id <ami-id> \
--instance-type m5.large \
--key-name <key-name> \
--subnet-id <subnet-id> \
--security-group-ids <security-group-id> \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=sylius}]'When the instance reaches the Running state and its status checks pass, note its public IP address or DNS name. You can read it from the EC2 console or with aws ec2 describe-instances.
Connect to Your Instance
Connect over SSH using your key pair. On the Ubuntu 24.04 variant, the SSH login user is ubuntu.
ssh -i /path/to/your-key.pem ubuntu@<public-ip>Retrieve the Administrator Password
The store administrator password is generated on first boot and written to a root-only file. Read it with sudo:
sudo cat /root/sylius-credentials.txtThe file shows the store URL, the admin URL, the login and the generated password:
# Sylius 2.2.6 — generated on first boot by sylius-firstboot.service.
# These credentials are unique to this instance. Store them somewhere safe. SYLIUS_URL=http://<instance-public-ip>/ SYLIUS_ADMIN_URL=http://<instance-public-ip>/admin SYLIUS_ADMIN_LOGIN=sylius SYLIUS_ADMIN_EMAIL=admin@sac.local SYLIUS_ADMIN_PASSWORD=<generated-password>Confirm Sylius Is Running
Confirm that the three services are active and that the store answers on port 80. The storefront home redirects to the localised path (for example /en_US/) and returns 200. The admin login page also returns 200.
systemctl is-active mysql php8.3-fpm nginx curl -s -o /dev/null -w 'storefront: %{http_code}\n' -L http://127.0.0.1/ curl -s -o /dev/null -w 'admin login: %{http_code}\n' http://127.0.0.1/admin/loginactive active active storefront: 200 admin login: 200Sign In to the Admin Panel
Browse to http://<instance-public-ip>/admin. Sign in with the username sylius and the password from Step 4.
The dashboard shows your channels, sales and paid orders. The image ships with the Sylius demo catalogue (the Fashion Web Store), so every screen has data to explore. You replace it with your own catalogue later.
Manage Your Catalogue
Open Catalog -> Products in the admin panel to manage products, variants, options, taxons and attributes. From here you create and edit products, assign them to taxons, set prices per channel and manage stock.
View the Storefront
The storefront is served on port 80. Browse to http://<instance-public-ip>/ to see the shop your customers use. The demo storefront shows the channel, categories, product listings and cart that ship with the fixtures.
Use the REST API
Sylius is API-first. The catalogue and checkout that power the storefront are also exposed over a documented REST API on port 80 under /api/v2. You can build a custom storefront, a mobile app or a headless frontend against it. The interactive OpenAPI documentation is served at /api/v2/docs.
The public shop endpoints need no authentication. List the catalogue over the API:
curl -s -H 'Accept: application/ld+json' \
'http://127.0.0.1/api/v2/shop/products?itemsPerPage=3' \
| python3 -c 'import sys,json;d=json.load(sys.stdin);print("total products:",d.get("hydra:totalItems"));[print(" -",m["code"]) for m in d.get("hydra:member",[])[:3]]'total products: 87 - Adventurous_Aurora_Cap - Apollo_T_Shirt - Aurora_Surge_T_ShirtThe admin API under /api/v2/admin is protected. Request a JSON Web Token from /api/v2/admin/administrators/token with your administrator email and password, then send it as a Bearer token. An unauthenticated admin request correctly returns 401:
curl -s -o /dev/null -w 'admin api (no token): %{http_code}\n' \
-H 'Accept: application/ld+json' http://127.0.0.1/api/v2/admin/productsadmin api (no token): 401Take Your Store Live
The image is the platform, ready for you to make into your own store. Before you take real orders, sign in to the admin panel and complete these tasks:
- Build your own catalogue under Catalog, and remove or replace the demo products.
- Configure your shipping methods and zones, and your tax rates.
- Connect your payment gateways under Configuration -> Payment methods. Sylius integrates with Stripe, PayPal, Mollie and others.
- Set your store's channels, currencies and locales.
- Configure a mail transport so order confirmations and password resets are delivered. Sylius reads the mailer from the
MAILER_DSNvalue in/var/www/sylius/.env.local. Set it to your SMTP provider, then clear the cache withsudo -u www-data APP_ENV=prod php /var/www/sylius/bin/console cache:clear.
The Data Volume
The MySQL database and the Sylius media and uploads live on a dedicated EBS data volume mounted at /var/lib/sylius. It is separate from the operating system disk, so you can resize or snapshot your store data independently. Confirm the mount:
findmnt /var/lib/sylius df -h /var/lib/syliusThe MySQL data directory is /var/lib/sylius/mysql and the media directory is /var/lib/sylius/media. To grow the store, expand the EBS volume in the AWS console, then grow the filesystem with sudo resize2fs.
Enable HTTPS with a Custom Domain
For production, serve the store over HTTPS on your own domain. Point a DNS A record at the instance's public IP, and allocate an Elastic IP so the address is stable. Open port 443 in the security group, then install a certificate with Certbot:
sudo apt-get update
sudo apt-get install -y certbot python3-certbot-nginx
sudo certbot --nginx -d store.your-domain.comAfter the certificate is issued, add your domain to the TRUSTED_HOSTS value. Then set the channel hostname to your domain in the admin panel under Configuration -> Channels, and clear the cache so Sylius serves your domain.
Backup and Maintenance
Back up the MySQL database regularly with mysqldump. Snapshot the /var/lib/sylius EBS volume to capture both the database and the uploaded media. For example:
sudo mysqldump --single-transaction sylius > /var/lib/sylius/sylius-backup.sqlApply operating system security updates with sudo apt-get update && sudo apt-get upgrade. Update Sylius itself with Composer inside /var/www/sylius, following the official Sylius upgrade guide. Always take a database and volume snapshot before you upgrade.
Support
SecureAnyCloud supports this image. If you need help deploying or operating Sylius, contact SecureAnyCloud support by email and chat, 24/7. We can help with deployment, catalogue and channel configuration, the REST API, payment and shipping integrations, mail setup, TLS and custom domains, database tuning and scaling.
Deploy on AWS
Launch Sylius on AWS with 24/7 support from SecureAnyCloud.
View on Marketplace
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com