LimeSurvey on Ubuntu 24.04 on Azure User Guide
Overview
LimeSurvey is the leading free and open source online survey and questionnaire platform, used to build and run everything from a quick customer feedback form to a large multilingual research study. It offers dozens of question types, conditions and branching, quotas, assessments, printable and public survey links, and rich response statistics and exports. The cloudimg image ships LimeSurvey 6.17 Community Edition served by nginx and PHP 8.3 FPM on a hardened, fully patched Ubuntu 24.04 LTS base, together with a bundled local MariaDB server so the appliance is complete and useful on its own. LimeSurvey runs behind an nginx reverse proxy on port 80. The bundled MariaDB listens only on the loopback interface (127.0.0.1:3306) and keeps its data on a dedicated Azure data disk. A unique administrator password is generated on the first boot of every VM. Backed by 24/7 cloudimg support.
What is included:
- LimeSurvey 6.17 Community Edition served by nginx and PHP 8.3 FPM, managed by systemd
- A bundled MariaDB server holding the LimeSurvey database, already installed and ready
- A ready to use, freshly installed LimeSurvey served on
:80, waiting for your first survey - A per VM administrator password generated on first boot and recorded in a root only file
- No shipped default login: the first superadmin is created with a unique per VM secret, and no known or blank credential authenticates
- nginx hardening that denies direct access to the application, framework, vendor and other internal directories
- MariaDB bound to
127.0.0.1only, never exposed to the network - A dedicated Azure data disk carrying both the MariaDB database and LimeSurvey's uploads and temporary files
nginx.service,php8.3-fpm.serviceandmariadb.serviceas enabled systemd units- An unauthenticated
/healthzendpoint for Azure Load Balancer health probes - 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 sensible starting point; size up for larger studies or busier surveys. NSG inbound: allow 22/tcp from your management network and 80/tcp for the survey site. LimeSurvey serves plain HTTP on port 80; for production, terminate TLS in front of it with your own domain. The bundled MariaDB is never exposed: it listens on 127.0.0.1 only, so port 3306 stays off the network.
Step 1 - Deploy from the Azure Marketplace
Sign in to the Azure Portal, choose Create a resource, search the Marketplace for LimeSurvey 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 then Create.
Step 2 - Deploy from the Azure CLI
az vm create \
--resource-group <your-rg> \
--name limesurvey \
--image <marketplace-image-urn> \
--size Standard_B2s \
--admin-username azureuser \
--generate-ssh-keys \
--public-ip-sku Standard
Then open port 80 to the survey site:
az vm open-port --resource-group <your-rg> --name limesurvey --port 80
Step 3 - Confirm the services are running
SSH in as azureuser and confirm nginx, PHP FPM and MariaDB are all active. Note that MariaDB listens only on 127.0.0.1:3306 while nginx serves LimeSurvey on port 80.
systemctl is-active nginx php8.3-fpm mariadb limesurvey-firstboot
ss -tlnp | grep -E ':80 |:3306 ' | sed 's/ */ /g'

Step 4 - Retrieve the per VM administrator password
Every VM generates its own LimeSurvey administrator password on first boot and writes it, along with the login user and the admin console URL, to a root only credentials file. Read it with sudo:
sudo cat /root/limesurvey-credentials.txt

You sign in to the administration console as user admin with the LIMESURVEY_ADMIN_PASSWORD from this file. On the box itself you can also run sudo mariadb to reach the database directly over the local socket without a password.
Step 5 - Sign in to the administration console
Browse to http://<vm-public-ip>/index.php/admin. You land on the LimeSurvey administration sign in page. Enter username admin and the password from Step 4.

Once signed in you land on the survey list dashboard, where you can create surveys, search and manage existing ones, and reach the global settings.

Step 6 - Build a survey
Click Create survey, give it a title and a welcome message, then add question groups and questions. LimeSurvey offers dozens of question types (single and multiple choice, arrays, free text, ratings, uploads and more), along with conditions and branching, quotas, assessments and multilingual versions. The survey structure editor below shows a survey's settings, text elements and sharing options; the Structure tab is where you organise groups and questions.

Step 7 - Activate and share the survey
When your survey is ready, use Activate survey to open it for responses, then share the public participation link. Respondents complete the survey in a clean, mobile friendly theme, and you collect and analyse the results with LimeSurvey's built in statistics and exports. The participant view below shows a public survey being taken.

Step 8 - No known or default credentials
LimeSurvey is installed non interactively so no default web installer login ships. The cloudimg image goes further: the first superadmin account is created with a unique per VM secret on first boot, and no known or blank password authenticates. You can prove this with the built in round-trip check, which confirms the per VM administrator signs in through LimeSurvey's own login form while a blank password and common weak guesses are all rejected:
mariadb --protocol=socket -uroot -N -e "SELECT CONCAT(users_name,' (superadmin account)') FROM limesurvey.lime_users WHERE users_name='admin'"
sudo bash /usr/local/sbin/limesurvey-cred-roundtrip.sh

Step 9 - Verify the stack and where your data lives
Confirm the LimeSurvey version, the health endpoint and the dedicated data disk. The MariaDB database lives on the data disk mounted at /data (bind mounted onto /var/lib/mysql), and LimeSurvey's uploaded survey resources and temporary files live on the same disk, so all of your survey content is kept separate from the operating system disk and rides with the VM:
php -r "require '/var/www/limesurvey/application/config/version.php'; echo 'LimeSurvey CE '.\$config['versionnumber'].'+'.\$config['buildnumber'].PHP_EOL;"
curl -sI http://127.0.0.1/healthz | head -1
findmnt -no SOURCE,TARGET,FSTYPE,SIZE /data; findmnt -no SOURCE,TARGET /var/lib/mysql

Adding your own domain and TLS
The appliance serves plain HTTP on port 80. For production you should set your own address: front LimeSurvey with your domain and a TLS certificate. LimeSurvey builds its links from the request host, so once you reach it through your domain the admin and public survey URLs follow automatically. You can terminate TLS with Azure Application Gateway, an nginx or Caddy reverse proxy, or a managed load balancer with a certificate for your domain.
Security notes
- LimeSurvey serves plain HTTP on port 80. For anything beyond a trusted network, put it behind your own TLS terminating reverse proxy or Azure Application Gateway with a certificate for your domain.
- The bundled MariaDB listens on
127.0.0.1only and is never reachable from the network. Administer it through LimeSurvey or over SSH. - The administrator password is unique per VM and no known or blank credential authenticates. Keep
/root/limesurvey-credentials.txtprotected and change the password from within LimeSurvey if you share access. - nginx denies direct web access to the application, framework, vendor, third party and other internal directories.
- Restrict inbound
80/tcpin your NSG to the networks that need the survey site.
Trademark
LimeSurvey is a trademark of LimeSurvey GmbH. This image is an independent packaging of the free GPL licensed LimeSurvey Community Edition by cloudimg and is not affiliated with, sponsored by, or endorsed by LimeSurvey GmbH.
Support
This image is maintained by cloudimg with 24/7 support. If you need help deploying or operating LimeSurvey on Azure, contact us at cloudimg.co.uk.