Tutoriel

Héberger LimeSurvey sur votre propre VPS

Self-hosting8 min de lecture8 étapes

Typeform a relevé ses prix de 34 % en juillet 2026. SurveyMonkey a également ajusté ses tarifs en 2026. Pour une agence qui collecte des données pour plusieurs clients, ces hausses s'accumulent vite. LimeSurvey Community Edition est une alternative GPL-2 : vous l'hébergez sur votre propre VPS, vos données ne quittent pas votre infrastructure, et le coût se réduit au prix de la machine. Voici comment le déployer proprement avec Docker Compose, Nginx et MariaDB.

Sommaire· Pourquoi passer à LimeSurvey self-hosted1/9
  1. 01Pourquoi passer à LimeSurvey self-hosted
  2. 02Ce que l'hébergement propre change concrètement
  3. 03Prérequis : ce qu'il faut avant de commencer
  4. 04Installer LimeSurvey avec Docker Compose, Nginx et HTTPS
  5. 05LimeSurvey self-hosted vs Typeform vs LimeSurvey Cloud
  6. 06Durcissement post-installation
  7. 07Configuration post-installation : paramètres essentiels
  8. 08Dépannage : erreurs fréquentes à la première installation
  9. 09Prochaines étapes et lectures liées

Pourquoi passer à LimeSurvey self-hosted

Les plateformes SaaS de sondages facturent par réponse, par siège ou par fonctionnalité déverrouillée. Ce modèle convient quand le volume est faible et l'équipe réduite — il devient pénalisant dès qu'une agence gère plusieurs clients simultanément, que les formulaires embarquent de la logique conditionnelle avancée ou que les données collectées sont sensibles (RH, santé, études de marché). LimeSurvey Community Edition renverse ce rapport : la licence est GPL-2, le code est sur GitHub, et une instance tourne sur n'importe quel VPS Linux. Vous payez l'infrastructure, pas les usages. En contrepartie, vous gérez les mises à jour, les sauvegardes et la sécurité — ce que ce guide couvre étape par étape.

Ce que l'hébergement propre change concrètement

  • Coût fixe et prévisible — un seul prix VPS mensuel couvre l'ensemble des projets, sans surprises en fin de mois liées au volume de réponses.
  • Données sous votre contrôle — les réponses de vos répondants ne transitent pas par les serveurs d'un éditeur SaaS, ce qui simplifie les obligations RGPD vis-à-vis de vos clients.
  • Aucun plafond de réponses — LimeSurvey Community Edition n'impose pas de quota : vous collectez autant de réponses que votre base de données peut en stocker.
  • Logique conditionnelle complète — les branchements, expressions régulières et équations sont disponibles dans l'édition communautaire, sans passer à un plan supérieur.
  • Multi-clients avec un seul espace — une instance permet de créer des groupes d'utilisateurs distincts par client, chacun n'accédant qu'à ses propres sondages.
  • Intégrations libres — l'API REST de LimeSurvey et les plugins communautaires s'intègrent à vos CRM, ERP ou outils de reporting sans frais de connecteur.
  • Mise à jour à votre rythme — vous choisissez quand appliquer une nouvelle version, sans subir une migration forcée en milieu de projet client.

Prérequis : ce qu'il faut avant de commencer

LimeSurvey Community Edition est une application PHP-MariaDB classique. Côté ressources, comptez au minimum 1 vCPU et 2 Go de RAM pour un usage de test ou une charge légère (quelques sondages, quelques centaines de réponses par jour). Pour une agence avec 5 à 10 clients actifs, un VPS à 2 vCPU et 4 Go de RAM est plus approprié — MariaDB consomme de la RAM en cache au fil des requêtes. Prévoyez 20 Go de disque : LimeSurvey stocke les médias des sondages (images, fichiers uploadés par les répondants) dans le volume de données.

Sur le plan logiciel, vous avez besoin de Docker et Docker Compose installés, d'un nom de domaine ou sous-domaine pointant vers l'IP du VPS (ex. surveys.votre-domaine.com), et des ports 80 et 443 ouverts dans votre pare-feu. Un accès SSH root ou sudo à la machine est nécessaire pour l'installation.

Installer LimeSurvey avec Docker Compose, Nginx et HTTPS

  1. Se connecter au VPS et mettre à jour le système

    Ouvrez un terminal et connectez-vous via SSH : ssh root@<ip-du-vps>. Mettez à jour les paquets : apt update && apt upgrade -y. Installez ensuite Docker si ce n'est pas déjà fait : curl -fsSL https://get.docker.com | sh. Vérifiez que Docker Compose est disponible : docker compose version.

  2. Créer l'arborescence du projet

    Créez un répertoire dédié : mkdir -p /opt/limesurvey && cd /opt/limesurvey. Ce dossier accueillera le fichier docker-compose.yml, le fichier d'environnement .env et, plus tard, la configuration Nginx.

  3. Écrire le fichier docker-compose.yml

    Définissez trois services dans votre docker-compose.yml : MariaDB (image mariadb:10.11, volume nommé db_data pour la persistance), LimeSurvey (image officielle martialblog/limesurvey:latest, port interne 8080, variables d'environnement DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME, et ADMIN_USER / ADMIN_PASSWORD pour le premier démarrage), et un service Nginx (image nginx:alpine, ports 80:80 et 443:443, volume sur /etc/nginx/conf.d et /etc/letsencrypt). Déclarez un réseau interne limesurvey-net que les trois services partagent.

  4. Configurer les variables d'environnement

    Créez un fichier .env dans /opt/limesurvey et renseignez-y les valeurs sensibles : DB_ROOT_PASSWORD, DB_USERNAME, DB_PASSWORD, DB_NAME=limesurvey, ADMIN_USER, ADMIN_PASSWORD et ADMIN_EMAIL. L'image LimeSurvey lit ces variables au premier démarrage pour initialiser la base. Ne commitez jamais ce fichier dans un dépôt Git.

  5. Obtenir un certificat TLS avec Certbot

    Avant de démarrer Nginx en HTTPS, obtenez un certificat Let's Encrypt : apt install certbot -y puis certbot certonly --standalone -d surveys.votre-domaine.com. Le certificat est déposé dans /etc/letsencrypt/live/surveys.votre-domaine.com/. Montez ce chemin en volume dans le conteneur Nginx.

  6. Écrire la configuration Nginx

    Dans /opt/limesurvey/nginx/conf.d/limesurvey.conf, créez un vhost qui redirige le port 80 vers 443, puis passe le trafic HTTPS au conteneur LimeSurvey sur http://limesurvey:8080. Ajoutez les en-têtes X-Frame-Options SAMEORIGIN, X-Content-Type-Options nosniff et Strict-Transport-Security pour durcir la configuration dès le départ. Le nom d'hôte interne limesurvey est résolu par le réseau Docker.

  7. Lancer les conteneurs

    Depuis /opt/limesurvey, démarrez l'ensemble : docker compose up -d. Vérifiez que les trois services sont en cours d'exécution : docker compose ps. Si LimeSurvey met quelques secondes à démarrer le temps que MariaDB initialise son schéma, attendez jusqu'à ce que docker compose logs limesurvey affiche Application is ready.

  8. Ouvrir l'interface d'administration et créer votre premier sondage

    Naviguez vers https://surveys.votre-domaine.com/admin. Connectez-vous avec les identifiants ADMIN_USER et ADMIN_PASSWORD définis dans votre .env. Lors du premier accès, LimeSurvey vous guide pour configurer la langue par défaut et les paramètres généraux. Créez ensuite un sondage de test pour vérifier que les réponses sont bien enregistrées en base.

LimeSurvey self-hosted vs Typeform vs LimeSurvey Cloud

Faites défiler le tableau

CritèreLimeSurvey self-hostedTypeform Basic+LimeSurvey Cloud Business
LicenceGPL-2, gratuiteSaaS propriétaireSaaS propriétaire
Coût annuel (agence, 5 projets)Coût VPS seul (299 DH/mois)Environ 900 €/an (post hausse juillet 2026)Environ 65 $/mois
Quota de réponsesSans plafond (stockage local)Limité selon le planLimité selon le plan
Contrôle des donnéesTotal — données sur votre serveurChez TypeformChez LimeSurvey GmbH
Logique conditionnelleComplète dans l'édition communautaireLimité au plan Basic+Complète
Mises à jourÀ votre rythmeAutomatiques (subie)Automatiques (subie)

Durcissement post-installation

Une fois LimeSurvey opérationnel, appliquez ces réglages de sécurité immédiatement. Dans l'interface d'administration, désactivez l'enregistrement public (Paramètres globaux → Sécurité → Aucun enregistrement public) si vous n'avez pas besoin que des tiers créent des comptes. Changez le préfixe par défaut des tables MariaDB (lime_) en quelque chose de spécifique à votre déploiement — cela limite l'impact des injections SQL génériques. Côté Docker, isolez le conteneur MariaDB sur le réseau interne limesurvey-net sans exposer le port 3306 à l'extérieur : docker inspect limesurvey-db ne doit montrer aucun port bindé sur 0.0.0.0. Planifiez enfin une sauvegarde quotidienne du volume db_data via docker run --rm -v limesurvey_db_data:/data -v /opt/backups:/backup alpine tar czf /backup/limesurvey-db-$(date +%F).tar.gz /data.

Configuration post-installation : paramètres essentiels

Après le premier démarrage, quelques réglages rendent LimeSurvey opérationnel pour un usage professionnel. Commencez par la gestion des utilisateurs : créez un compte par client (ou par chef de projet), assignez-lui uniquement les groupes de sondages qui le concernent. Les droits sont granulaires : un utilisateur peut créer et modifier ses sondages sans accéder aux statistiques d'un autre client.

Configurez ensuite l'envoi de courriels (Paramètres globaux → Courriel) pour les invitations et les rappels. LimeSurvey peut passer par un serveur SMTP externe — utilisez un relais transactionnel (Postmark, Mailgun, Amazon SES) plutôt que le serveur mail de la machine, pour garantir la délivrabilité des invitations.

Activez enfin la rotation des logs d'accès Nginx et configurez un logrotate pour éviter que les fichiers de log saturent le disque au fil des mois. Un sondage très distribué peut générer plusieurs gigaoctets de logs en quelques semaines.

Dépannage : erreurs fréquentes à la première installation

Quelques messages d'erreur reviennent régulièrement lors d'une première installation de LimeSurvey sous Docker.

SQLSTATE[HY000] [2002] Connection refused — LimeSurvey tente de joindre MariaDB avant que ce dernier ait terminé son initialisation. Ajoutez un depends_on avec condition: service_healthy dans votre docker-compose.yml, couplé à un healthcheck sur le conteneur MariaDB (mysqladmin ping -h localhost). Sans ce garde, LimeSurvey démarre trop tôt et affiche une page blanche.

403 Forbidden sur l'interface d'administration — Le vhost Nginx ne passe pas les requêtes à LimeSurvey. Vérifiez que le nom d'hôte dans proxy_pass correspond exactement au nom du service déclaré dans docker-compose.yml. Un caractère de fin de ligne Windows dans le fichier de configuration Nginx peut aussi provoquer ce comportement sur Linux.

Error: Could not connect to the database server — Le nom de base de données ou les identifiants dans le fichier .env ne correspondent pas à ceux passés au conteneur MariaDB. Supprimez le volume db_data, corrigez le .env, puis relancez : docker compose down -v && docker compose up -d. Attention : cela efface toutes les données — à ne faire qu'avant le premier sondage réel.

413 Request Entity Too Large — Un répondant tente d'uploader un fichier plus grand que le seuil Nginx (défaut 1 Mo). Ajoutez client_max_body_size 20m; dans votre bloc server Nginx et redémarrez le conteneur : docker compose restart nginx.

Prochaines étapes et lectures liées

LimeSurvey self-hosted s'intègre bien dans un écosystème d'outils auto-hébergés. Si vous gérez déjà plusieurs clients sur un seul VPS, l'article WordPress multisite en agence couvre les patterns de séparation des données et des accès pour un usage multi-clients similaire. Pour les notifications et les listes de diffusion liées à vos campagnes de sondages, Listmonk auto-hébergé complète LimeSurvey en gérant les envois de masse depuis la même infrastructure. Enfin, si votre agence gère la facturation et les projets associés aux études, Odoo 17 Community auto-hébergé s'installe sur le même VPS ou sur une machine dédiée selon le volume.

Gérez les sondages de tous vos clients depuis un seul VPS

Un VPS Power ServOrbit suffit pour héberger LimeSurvey et servir plusieurs clients simultanément. Accès root, Docker préinstallé, ressources dédiées — votre instance tourne en moins d'une heure.

Besoin d'aide ?

Parcourez notre centre d'aide et notre FAQ, ou contactez notre équipe — rappel, WhatsApp ou e-mail. Support en français, anglais et arabe.

Écrire sur WhatsApps'ouvre dans un nouvel onglet