Deployment guide

LimeSurvey

Overview

LimeSurvey is a leading free, open-source online survey and questionnaire platform. You can use it 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.

This SecureAnyCloud image ships LimeSurvey 6.17 Community Edition, served by nginx and PHP 8.3 FPM on a hardened Ubuntu 24.04 LTS base that is patched at build time. A bundled local MariaDB server makes the appliance complete and useful on its own.

What you get:

  • LimeSurvey 6.17 Community Edition served by nginx and PHP 8.3 FPM, managed by systemd
  • A bundled MariaDB server that holds the LimeSurvey database, already installed and ready
  • A ready-to-use, freshly installed LimeSurvey served on :80 behind an nginx reverse proxy, 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 private directories
  • MariaDB bound to 127.0.0.1 only, never exposed to the network
  • A dedicated Azure data disk that carries the MariaDB database and the LimeSurvey uploads and temporary files
  • nginx.service, php8.3-fpm.service and mariadb.service as enabled systemd units
  • An unauthenticated /healthz endpoint for Azure Load Balancer health probes
  • 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 sensible starting point. Choose a larger size for bigger studies or busier surveys.

Configure the network security group (NSG) to allow 22/tcp inbound from your management network and 80/tcp for the survey site. LimeSurvey serves plain HTTP on port 80, so 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 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:limesurvey-ubuntu-24-04:default:latest
az vm create \
  --resource-group <your-rg> \
  --name limesurvey \
  --image sac1647283583153:limesurvey-ubuntu-24-04:default:latest \
  --size Standard_B2s \
  --admin-username azureuser \
  --generate-ssh-keys \
  --public-ip-sku Standard

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 that nginx, PHP FPM and MariaDB are all active. 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. It writes the password, the login user and the admin console URL to a root-only credentials file. Read the file with sudo:

sudo cat /root/limesurvey-credentials.txt

Sign in to the administration console as user admin with the LIMESURVEY_ADMIN_PASSWORD from this file. On the VM 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. The LimeSurvey administration sign-in page opens. Enter the username admin and the password from Step 4.

After you sign in, the survey list dashboard opens. From there you can create surveys, search and manage existing ones, and reach the global settings.

Step 6 - Build a survey

Select 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 shows the settings, text elements and sharing options of a survey. Use the Structure tab to organise groups and questions.

Step 7 - Activate and share the survey

When your survey is ready, select Activate survey to open it for responses, then share the public participation link. Respondents complete the survey in a clean, mobile-friendly theme. You collect and analyse the results with the built-in LimeSurvey statistics and exports.

Step 8 - No known or default credentials

LimeSurvey is installed non-interactively, so no default web installer login ships. The SecureAnyCloud 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 verify this with the built-in round-trip check. It confirms that the per-VM administrator signs in through the LimeSurvey login form while a blank password and common weak guesses are all rejected:

sudo 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). The uploaded survey resources and temporary files of LimeSurvey live on the same disk, so all of your survey content is kept separate from the operating system disk and travels 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. Front LimeSurvey with your own 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 an Azure Application Gateway with a certificate for your domain.
  • The bundled MariaDB listens on 127.0.0.1 only 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.txt protected, 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 private directories.
  • Restrict inbound 80/tcp in your NSG to the networks that need the survey site.

Trademark

LimeSurvey is a trademark of LimeSurvey GmbH. SecureAnyCloud packages this image independently from the free, GPL-licensed LimeSurvey Community Edition. It is not affiliated with, sponsored by or endorsed by LimeSurvey GmbH.

Support

SecureAnyCloud maintains this image and provides 24/7 support. If you need help deploying or operating LimeSurvey on Azure, contact us at secureanycloud.com.

Deploy on Azure

Launch LimeSurvey 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

Deploy on Azure