Aller au contenu

Limesurvey#

Limesurvey est un service très puissant pour créer des sondages à envoyer aux participants.

On peut en trouver une instance ici : survey.tfjm.org

La documentation du service est accessible ici : www.limesurvey.org/fr/

Installation#

Le Dockerfile#

L'installation est assurée par une image Docker : github.com/martialblog/docker-limesurvey

On suppose que le dépôt est cloné dans /srv/sources/limesurvey, que les données sont dans /srv/data et les variables d'environnement dans /srv/secrets/limesurvey.env. La configuration Dockerfile :

  limesurvey:
    build: /srv/sources/limesurvey/4.0/apache/
    links:
      - database
    volumes:
      - type: bind
        source: "/srv/data/limesurvey/application/config/security.php"
        target: "/var/www/html/application/config/security.php"
      - "/srv/data/limesurvey/uploads:/app/upload"
      - "/etc/localtime:/etc/localtime:ro"
    env_file:
      - /srv/secrets/limesurvey.env
    restart: always
    labels:
      - "traefik.http.routers.survey.rule=Host(`survey.example.com`)"
      - "traefik.http.routers.survey.entrypoints=websecure"
      - "traefik.http.routers.survey.tls.certresolver=mytlschallenge"

On a besoin de définir les variables d'environnement suivantes :

DB_TYPE=
DB_HOST=
DB_NAME=
DB_USERNAME=
DB_PASSWORD=
DB_TABLE_PREFIX=
ADMIN_USER=
ADMIN_NAME=
ADMIN_EMAIL=
ADMIN_PASSWORD=
PUBLIC_URL=survey.example.com

Les variables préfixées par DB_ concernent la connexion à la base de données, celles par ADMIN_ la connexion à l'interface administrateur pour le premier compte. La variable PUBLIC_URL contient l'adresse principale à laquelle est accessible le service.

Les volumes#

Le dossier /app/upload contient les fichiers envoyés lors de sondages, ce dossier doit alors être un volume, possédé par www-data:www-data.

Le volume /etc/localtime sert uniquement à dire quel est le fuseau horaire utilisé.

Le premier volume est plus complexe. Pour chiffrer les données, tel que le mot de passe du serveur mail ou les données de certains formulaires, Limesurvey utilise une paire de clés de chiffrement. Afin de pouvoir déchiffrer les informations, les clés ne doivent pas être perdues. Elles sont stockées dans /var/www/html/application/config.php.

Cependant, ce fichier est généré automatiquement lors du premier lancement et ne doit pas être créé à la main. Il n'est à l'heure actuelle pas possible de monter ce fichier en volume et qu'il soit rempli automatiquement. Lors de la première installation, voici la procédure à suivre :

  • Commenter les 3 lignes liant le fichier security.php
  • Lancer Limesurvey : docker-compose up -d survey
  • Copier le fichier généré : docker cp docker_limesurvey_1:/var/www/html/application/config/security.php /srv/data/limesurvey/application/config/security.php
  • S'assurer des bonnes permissions : sudo chown -R www-data:www-data /srv/data/limesurvey/*
  • Décommenter les 3 lignes dans le fichier docker-compose.yml et relancer le service

De la sorte, on a généré une paire de clés auxquelles il ne faut plus toucher.

Limesurvey est désormais prêt à l'emploi.

La mise à jour#

La mise à jour de Limesurvey est facilité par l'image. Un script est prévu dans /srv/upgrade/limesurvey.sh, qui effectue les opérations suivantes :

cd /srv/sources/limesurvey
git pull
docker-compose up -f /srv/docker/docker-compose.yml -d --build limesurvey
docker-compose -f /srv/docker/docker-compose.yml exec limesurvey php application/commands/console.php updatedb

On met alors à jour le dépôt Git, on reconstruit l'image Docker puis on met à jour la base de données si besoin.


Dernière mise à jour: 11 juillet 2020