
- AWSAvailable on Amazon Web Services
- AzureAvailable on Microsoft Azure
- GCP· nextGoogle Cloud is next on the roadmap
LEMP Stack (Nginx, MySQL, PHP)
A current LEMP stack: nginx 1.30.4 from the nginx.org stable branch, MySQL 9.7 LTS, PHP 8.5 with the common extensions, plus phpMyAdmin and Webmin - every component the newest stable release of its line. MySQL is pinned to loopback, phpMyAdmin's cookie key is per instance, and the management scripts live outside the web root.
- Version
- nginx 1.30.4 / MySQL 9.7.2 / PHP 8.5.10
- Operating system
- Ubuntu 24.04 LTS
- Architecture
- x86_64
- Support
- Email support
What's installed
Every package and version on the image, identical on every cloud it ships on. Nothing else is installed.
- nginx 1.30.4
- MySQL 9.7.2 LTS
- PHP 8.5.10 (FPM + CLI)
- phpMyAdmin 5.2.3
- Webmin 2.660
LicensingOpen source components (nginx BSD-2, MySQL GPL-2.0, PHP), no licence key required
Deploy anywhere
LEMP Stack (Nginx, MySQL, PHP) on AWS and Azure.
Google Cloud is next on the roadmap. One clean-room build, one first-boot credential model, one patch cadence — identical on every cloud you run. Every identifier below is the real one; copy it and launch.
- AWSAvailable
Amazon Web Services
AMI · nginx 1.30.4 / MySQL 9.7.2 / PHP 8.5.10
AWS AMI IDShown for your region on the AWS Marketplace launch page once you subscribe.
- Released
- Root volume
- gp3 · 10 GiB
Instance types- t3a.medium
- t3.medium
- t3a.large
- m6a.large
Regions34 regions· show all· hide
- us-east-1
- af-south-1
- ap-east-1
- ap-east-2
- ap-northeast-1
- ap-northeast-2
- ap-northeast-3
- ap-south-1
- ap-south-2
- ap-southeast-1
- ap-southeast-2
- ap-southeast-3
- ap-southeast-4
- ap-southeast-5
- ap-southeast-6
- ap-southeast-7
- ca-central-1
- ca-west-1
- eu-central-1
- eu-central-2
- eu-north-1
- eu-south-1
- eu-south-2
- eu-west-1
- eu-west-2
- eu-west-3
- il-central-1
- me-central-1
- me-south-1
- mx-central-1
- sa-east-1
- us-east-2
- us-west-1
- us-west-2
5-day free trial, then from $0.02/hr software charge (larger instance sizes cost more) plus your own EC2 costs, billed by AWS.
Subscriptions are open to AWS India (AISPL) accounts. Outside India? Ask us for a private build.
- AzureAvailable
Microsoft Azure
Compute Gallery image · v8.5.10
Azure Compute Gallery image IDSelected for you when you create the VM from the Azure Marketplace listing.
- Released
- OS disk
- Premium_LRS · 30 GiB
VM sizes- Standard_D2as_v7
- Standard_D2as_v5
- Standard_B2ms
- Standard_D4as_v7
Regions50 regions· show all· hide
- eastus
- australiacentral
- australiaeast
- australiasoutheast
- austriaeast
- belgiumcentral
- brazilsouth
- canadacentral
- canadaeast
- centralindia
- centralus
- chilecentral
- denmarkeast
- eastasia
- eastus2
- francecentral
- germanywestcentral
- indiasouthcentral
- indonesiacentral
- israelcentral
- italynorth
- japaneast
- japanwest
- jioindiawest
- koreacentral
- koreasouth
- malaysiawest
- mexicocentral
- newzealandnorth
- northcentralus
- northeurope
- norwayeast
- polandcentral
- qatarcentral
- southafricanorth
- southcentralus
- southeastasia
- southindia
- spaincentral
- swedencentral
- switzerlandnorth
- uaenorth
- uksouth
- ukwest
- westcentralus
- westeurope
- westindia
- westus
- westus2
- westus3
Getting started on Amazon Web Services
From launch to signed in, step by step.
Subscribe on AWS Marketplace and launch in your region with TCP
22,80and8000open; wait about two minutes for first boot.Open
http://<instance-public-ip>/for the landing page. phpMyAdmin is at/phpmyadminwith usernameroot; Webmin is athttp://<instance-public-ip>:8000with usernameadminorroot. The password for both is your EC2 Instance ID (for examplei-0123456789abcdef0).To publish your site, replace the contents of
/var/www/html. The server block is/etc/nginx/conf.d/provencloud-lemp.conf; for framework routing changetry_filesto$uri $uri/ /index.php?$query_stringand reload nginx.SSH as
ubuntuwith your key pair. Change passwords withsudo bash /home/ubuntu/iscripts/pass_mysql.sh(this is the phpMyAdmin login) orpass_webmin.sh.MySQL (3306) listens on 127.0.0.1 only. Everything is plain HTTP; add a certificate when you have a domain.
Security posture
What this AWS image does and does not ship with, one fact per line.
Clean-room build on Canonical's official Ubuntu 24.04 LTS image: every component comes from its own official repository or release, nothing is copied from any third-party image, and the finished image was scanned for third-party vendor strings before capture.
No usable credential ships in the image; passwords are set on your instance at first boot from EC2 instance metadata (IMDSv2) and the scripts that set them delete themselves afterwards.
SSH is key-only, root login over SSH is refused, and build-time SSH keys, shell history and logs were removed before imaging.
MySQL is pinned to 127.0.0.1 for both the classic and X protocols - Oracle's packages default to binding every interface, which would have exposed port 3306 to the internet.
MySQL administration needs no stored password: a maintenance account authenticates by Unix socket as the OS root user, so nothing secret ships in the image and recovery is always possible over SSH. phpMyAdmin's cookie encryption key is regenerated per instance.
Management scripts live in /home/ubuntu/iscripts, not the web root, so they are never served over HTTP; the landing page deliberately does not print the Instance ID because it is the default password.
The bundled password tools enforce at least 10 characters with upper- and lower-case letters, a number and a symbol, and verify the new credential with a real sign-in before reporting success.
The image is HTTP-only by design so it works at a bare IP with no certificate warnings: terminate TLS at a load balancer or add a certificate before exposing it publicly, and restrict port 22 and any admin ports to trusted IP ranges in your security group.
Getting started on Microsoft Azure
From launch to signed in, step by step.
Create the VM from the Azure Marketplace listing with TCP
22,80and8000open in your network security group. Chooseubuntuas the administrator username so SSH and the script paths match. Wait a few minutes for first boot.Open
http://<vm-public-ip>/for a page confirming nginx, MySQL and PHP are running.phpMyAdmin:
/phpmyadmin(usernameroot). Webmin: port8000(usernameadmin).SSH as
ubuntuwith your key. Change passwords withsudo bash ~/iscripts/pass_mysql.shorpass_webmin.sh.The password for each console is your VM ID. Your VM ID is in the Azure portal: open the virtual machine, choose Properties and copy VM ID - a 36-character value such as
02aab8a4-74ef-476e-8182-f6d2ba4166a6, typed exactly as shown in lower case. Every deployment derives its own passwords from that value on first boot, so no two virtual machines share a credential.
Security posture
What this Azure image does and does not ship with, one fact per line.
Clean-room build on Canonical's official Ubuntu 24.04 LTS image from the Azure Marketplace: every component comes from its own official source and the image was scanned for third-party vendor strings before capture.
Nothing guessable ships in the image - the pre-image cleanup randomises every credential the build set and proves the build's own password no longer authenticates; first boot then sets each password from the new VM's own vmId read from Azure IMDS, and regenerates the per-instance secrets so no encryption key is shared between deployments.
The ubuntu login account ships password-locked with an empty authorized_keys, and cloud-init installs your own SSH key at deploy time.
MySQL listens on 127.0.0.1 only and the phpMyAdmin cookie key is regenerated per instance.
Verified against Microsoft's documented Linux certification test cases on a VM deployed from this exact gallery version - 13 passed, 0 failures - with VM extension provisioning confirmed and the customer sign-in path exercised end to end.
The bundled password tools require at least 10 characters with upper- and lower-case letters, a number and a symbol, and verify the new credential with a real sign-in before reporting success.
The image is HTTP-only by design so it works at a bare IP with no certificate warnings: terminate TLS at a load balancer or add a certificate before exposing it publicly, and restrict port 22 and any admin ports to trusted IP ranges.