[{"data":1,"prerenderedAt":185},["ShallowReactive",2],{"seo-verification":3,"blog-how-to-host-limesurvey-on-a-vps-en":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-how-to-host-limesurvey-on-a-vps-en",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":30,"intro":33,"sections":34,"ctaTitle":130,"ctaBody":131,"ctaButton":132,"ctaUrl":133,"relatedPosts":134},387,"how-to-host-limesurvey-on-a-vps",{"fr":12,"en":10,"ar":13,"es":14},"heberger-limesurvey-vps","كيفية-استضافة-limesurvey-على-خادم-vps","como-alojar-limesurvey-en-un-vps","How to host LimeSurvey on a VPS","Deploy LimeSurvey Community Edition on your own VPS with Docker, Nginx and MariaDB. A self-hosted alternative to Typeform and SurveyMonkey, with no SaaS subscription.",8,0,false,"2026-09-29T00:00:00+00:00","2026-09-29T14:40:42+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},7,"Self-hosting","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-limesurvey-vps-poster.svg","Typeform raised its prices by 34% in July 2026. SurveyMonkey also adjusted its pricing in 2026. For an agency collecting data across several clients, those increases add up fast. LimeSurvey Community Edition is a GPL-2 alternative: you host it on your own VPS, your data never leaves your infrastructure, and the cost comes down to the price of the machine. Here is how to deploy it cleanly with Docker Compose, Nginx and MariaDB.",[35,39,50,53,81,117,121,124,127],{"type":36,"title":37,"body":38},"h2","Why switch to self-hosted LimeSurvey","SaaS survey platforms charge per response, per seat, or per unlocked feature. That model works when volume is low and the team is small — it becomes costly as soon as an agency manages several clients at once, builds surveys with advanced conditional logic, or handles sensitive data (HR, health, market research). LimeSurvey Community Edition reverses this dynamic: the licence is GPL-2, the code is on GitHub, and an instance runs on any Linux VPS. You pay for infrastructure, not for usage. In return, you handle updates, backups and security — all of which this guide covers step by step.",{"type":40,"title":41,"items":42},"ul","What self-hosting actually changes",[43,44,45,46,47,48,49],"**Fixed, predictable cost** — a single monthly VPS price covers all your projects, with no end-of-month surprises tied to response volume.","**Data under your control** — your respondents' answers do not transit through a SaaS vendor's servers, which simplifies GDPR obligations towards your clients.","**No response cap** — LimeSurvey Community Edition imposes no quota: you collect as many responses as your database can store.","**Full conditional logic** — branching, regular expressions and equations are available in the community edition, with no upgrade required.","**Multi-client on a single instance** — one installation lets you create separate user groups per client, each restricted to their own surveys.","**Open integrations** — the LimeSurvey REST API and community plugins connect to your CRM, ERP or reporting tools at no connector cost.","**Updates on your schedule** — you choose when to apply a new version, without being pushed through a forced migration mid-project.",{"type":36,"title":51,"body":52},"Requirements: what you need before you start","LimeSurvey Community Edition is a standard PHP-MariaDB application. For resources, budget at least 1 vCPU and 2 GB of RAM for testing or a light load (a few surveys, a few hundred responses per day). For an agency with 5 to 10 active clients, a VPS with 2 vCPU and 4 GB of RAM is more appropriate — MariaDB grows its in-memory cache over time. Plan for 20 GB of disk: LimeSurvey stores survey media (images, files uploaded by respondents) in its data volume.\n\nOn the software side, you need Docker and Docker Compose installed, a domain or subdomain pointing to the VPS IP (e.g. `surveys.your-domain.com`), and ports 80 and 443 open in your firewall. Root or sudo SSH access to the machine is required for the installation.",{"type":54,"title":55,"steps":56},"steps","Install LimeSurvey with Docker Compose, Nginx and HTTPS",[57,60,63,66,69,72,75,78],{"title":58,"body":59},"Connect to the VPS and update the system","Open a terminal and connect via SSH: `ssh root@\u003Cvps-ip>`. Update the packages: `apt update && apt upgrade -y`. Install Docker if it is not already present: `curl -fsSL https:\u002F\u002Fget.docker.com | sh`. Verify Docker Compose is available: `docker compose version`.",{"title":61,"body":62},"Create the project directory","Create a dedicated directory: `mkdir -p \u002Fopt\u002Flimesurvey && cd \u002Fopt\u002Flimesurvey`. This folder will hold the `docker-compose.yml` file, the `.env` environment file and, later, the Nginx configuration.",{"title":64,"body":65},"Write the docker-compose.yml file","Define three services in your `docker-compose.yml`: MariaDB (image `mariadb:10.11`, named volume `db_data` for persistence), LimeSurvey (official image `martialblog\u002Flimesurvey:latest`, internal port `8080`, environment variables `DB_HOST`, `DB_USERNAME`, `DB_PASSWORD`, `DB_NAME`, and `ADMIN_USER` \u002F `ADMIN_PASSWORD` for first-run setup), and an Nginx service (image `nginx:alpine`, ports `80:80` and `443:443`, volumes on `\u002Fetc\u002Fnginx\u002Fconf.d` and `\u002Fetc\u002Fletsencrypt`). Declare an internal network `limesurvey-net` shared by all three services.",{"title":67,"body":68},"Configure the environment variables","Create a `.env` file in `\u002Fopt\u002Flimesurvey` and fill in the sensitive values: `DB_ROOT_PASSWORD`, `DB_USERNAME`, `DB_PASSWORD`, `DB_NAME=limesurvey`, `ADMIN_USER`, `ADMIN_PASSWORD` and `ADMIN_EMAIL`. The LimeSurvey image reads these variables on first startup to initialise the database. Never commit this file to a Git repository.",{"title":70,"body":71},"Obtain a TLS certificate with Certbot","Before starting Nginx in HTTPS mode, get a Let's Encrypt certificate: `apt install certbot -y` then `certbot certonly --standalone -d surveys.your-domain.com`. The certificate is placed in `\u002Fetc\u002Fletsencrypt\u002Flive\u002Fsurveys.your-domain.com\u002F`. Mount this path as a volume in the Nginx container.",{"title":73,"body":74},"Write the Nginx configuration","In `\u002Fopt\u002Flimesurvey\u002Fnginx\u002Fconf.d\u002Flimesurvey.conf`, create a virtual host that redirects port 80 to 443, then forwards HTTPS traffic to the LimeSurvey container at `http:\u002F\u002Flimesurvey:8080`. Add the headers `X-Frame-Options SAMEORIGIN`, `X-Content-Type-Options nosniff` and `Strict-Transport-Security` to harden the configuration from the start. The internal hostname `limesurvey` is resolved by the Docker network.",{"title":76,"body":77},"Start the containers","From `\u002Fopt\u002Flimesurvey`, launch everything: `docker compose up -d`. Check that all three services are running: `docker compose ps`. If LimeSurvey takes a few seconds to start while MariaDB finishes initialising its schema, wait until `docker compose logs limesurvey` shows `Application is ready`.",{"title":79,"body":80},"Open the admin interface and create your first survey","Navigate to `https:\u002F\u002Fsurveys.your-domain.com\u002Fadmin`. Log in with the `ADMIN_USER` and `ADMIN_PASSWORD` credentials set in your `.env`. On first access, LimeSurvey guides you through setting the default language and general parameters. Create a test survey to confirm that responses are being recorded in the database.",{"type":82,"title":83,"headers":84,"rows":89},"comparison","LimeSurvey self-hosted vs Typeform vs LimeSurvey Cloud",[85,86,87,88],"Criterion","LimeSurvey self-hosted","Typeform Basic+","LimeSurvey Cloud Business",[90,94,99,103,108,113],[91,92,93,93],"Licence","GPL-2, free","Proprietary SaaS",[95,96,97,98],"Annual cost (agency, 5 projects)","VPS cost only (299 DH\u002Fmonth)","Around 900 €\u002Fyear (after July 2026 increase)","Around ~65 $\u002Fmonth",[100,101,102,102],"Response quota","No limit (local storage)","Capped by plan",[104,105,106,107],"Data control","Total — data stays on your server","At Typeform","At LimeSurvey GmbH",[109,110,111,112],"Conditional logic","Full in the community edition","Limited on Basic+","Full",[114,115,116,116],"Updates","On your schedule","Automatic (imposed)",{"type":118,"title":119,"body":120},"tip","Post-installation hardening","Once LimeSurvey is running, apply these security settings immediately. In the administration interface, disable public registration (`Global settings → Security → No public registration`) unless you need third parties to create accounts. Change the default MariaDB table prefix (`lime_`) to something specific to your deployment — this limits the impact of generic SQL injection attempts. On the Docker side, keep the MariaDB container isolated on the internal `limesurvey-net` network with no port 3306 exposed externally: `docker inspect limesurvey-db` should show no port bound on `0.0.0.0`. Finally, schedule a daily backup of the `db_data` volume with `docker run --rm -v limesurvey_db_data:\u002Fdata -v \u002Fopt\u002Fbackups:\u002Fbackup alpine tar czf \u002Fbackup\u002Flimesurvey-db-$(date +%F).tar.gz \u002Fdata`.",{"type":36,"title":122,"body":123},"Post-installation configuration: essential settings","After the first start, a few settings make LimeSurvey ready for professional use. Start with user management: create one account per client (or per project manager), and assign it only the survey groups that belong to that client. Rights are granular: a user can create and edit their own surveys without accessing another client's statistics.\n\nThen configure email sending (`Global settings → Email`) for invitations and reminders. LimeSurvey can relay through an external SMTP server — use a transactional relay (Postmark, Mailgun, Amazon SES) rather than the machine's own mail server, to ensure invitation deliverability.\n\nFinally, enable Nginx access log rotation and configure logrotate to prevent log files from filling the disk over the months. A widely distributed survey can generate several gigabytes of logs within a few weeks.",{"type":36,"title":125,"body":126},"Troubleshooting: common errors on first installation","A few error messages come up regularly on a first LimeSurvey Docker installation.\n\n**`SQLSTATE[HY000] [2002] Connection refused`** — LimeSurvey is attempting to reach MariaDB before it has finished initialising. Add a `depends_on` with `condition: service_healthy` in your `docker-compose.yml`, paired with a `healthcheck` on the MariaDB container (`mysqladmin ping -h localhost`). Without this guard, LimeSurvey starts too early and displays a blank page.\n\n**`403 Forbidden` on the admin interface** — The Nginx virtual host is not forwarding requests to LimeSurvey. Check that the hostname in `proxy_pass` matches exactly the service name declared in `docker-compose.yml`. A Windows-style line ending in the Nginx configuration file can also trigger this on Linux.\n\n**`Error: Could not connect to the database server`** — The database name or credentials in the `.env` file do not match those passed to the MariaDB container. Remove the `db_data` volume, fix the `.env`, then restart: `docker compose down -v && docker compose up -d`. Warning: this erases all data — only do this before your first real survey.\n\n**`413 Request Entity Too Large`** — A respondent is trying to upload a file larger than Nginx's default threshold (1 MB). Add `client_max_body_size 20m;` to your `server` block in Nginx and restart the container: `docker compose restart nginx`.",{"type":36,"title":128,"body":129},"Next steps and related reading","Self-hosted LimeSurvey fits well into a broader ecosystem of self-hosted tools. If you already run several clients on a single VPS, the article \u003Ca href=\"\u002Fblog\u002Fwordpress-multisite-vps-agence\">WordPress multisite for agencies\u003C\u002Fa> covers data separation and access patterns for a similar multi-client setup. For notifications and mailing lists tied to your survey campaigns, \u003Ca href=\"\u002Fblog\u002Fheberger-listmonk\">self-hosted Listmonk\u003C\u002Fa> complements LimeSurvey by handling bulk sending from the same infrastructure. Finally, if your agency manages invoicing and project tracking alongside its research work, \u003Ca href=\"\u002Fblog\u002Fheberger-odoo-17-community-vps\">self-hosted Odoo 17 Community\u003C\u002Fa> can run on the same VPS or on a dedicated machine depending on your volume.","Manage surveys for all your clients from a single VPS","A VPS Power from ServOrbit is enough to run LimeSurvey and serve multiple clients at the same time. Root access, Docker pre-installed, dedicated resources — your instance is up in under an hour.","Deploy LimeSurvey on a VPS","\u002Fsolutions\u002Fagences",[135,150,168],{"id":136,"slug":137,"slugs":138,"title":142,"excerpt":143,"readTime":144,"views":18,"isPinned":19,"publishedAt":145,"updatedAt":21,"category":146,"categories":147,"featuredImage":30,"bgImage":31,"posterImage":149,"relatedSolution":30},383,"host-odoo-17-community-on-vps",{"fr":139,"en":137,"ar":140,"es":141},"heberger-odoo-17-community-vps","استضافة-odoo-17-community-على-vps","alojar-odoo-17-community-en-vps","Host Odoo 17 Community on VPS: complete Docker installation","Step-by-step guide to deploying Odoo 17 Community Edition on a VPS with Docker Compose: configuration, backups, security and performance tuning.",10,"2026-09-26T00:00:00+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[148],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-odoo-17-community-vps-poster.svg",{"id":151,"slug":152,"slugs":153,"title":157,"excerpt":158,"readTime":144,"views":18,"isPinned":19,"publishedAt":159,"updatedAt":160,"category":161,"categories":162,"featuredImage":30,"bgImage":31,"posterImage":164,"relatedSolution":165},368,"wordpress-multisite-vps-manage-n-client-sites-one-install",{"fr":154,"en":152,"ar":155,"es":156},"wordpress-multisite-vps-agence","ووردبريس-متعدد-المواقع-على-vps-ادارة-مواقع-العملاء","wordpress-multisite-vps-gestiona-n-sitios-en-una-instalacion","WordPress Multisite on a VPS: run N client sites from one install","Enable WordPress Multisite on a dedicated VPS to centralize N client sites under one codebase, one update cycle, and isolated subdomains. Full guide for agencies.","2026-09-20T00:00:00+00:00","2026-09-20T21:13:51+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[163],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fwordpress-multisite-vps-agence-poster.svg",{"categorySlug":166,"appSlug":167},"cms-websites","wordpress",{"id":169,"slug":170,"slugs":171,"title":175,"excerpt":176,"readTime":23,"views":18,"isPinned":19,"publishedAt":177,"updatedAt":178,"category":179,"categories":180,"featuredImage":30,"bgImage":31,"posterImage":182,"relatedSolution":183},87,"host-listmonk-on-your-own-vps",{"fr":172,"en":170,"ar":173,"es":174},"heberger-listmonk","استضافة-listmonk-على-خادمك-الافتراضي-الخاص-vps","alojar-listmonk-en-un-vps","Host Listmonk on Your Own VPS","Deploy Listmonk on your VPS: Docker installation, advanced SMTP configuration, bounce management, updates, common troubleshooting and PostgreSQL backups.","2026-03-25T00:00:00+00:00","2026-09-20T21:13:53+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[181],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-listmonk-poster.svg",{"categorySlug":25,"appSlug":184},"listmonk",1790693258432]