From f350927711776ca5535e63551e818c536347d25a Mon Sep 17 00:00:00 2001 From: Jakob Frank Date: Thu, 13 Jul 2023 10:28:16 +0200 Subject: [PATCH] MORE-1010: Document Development-Setup --- .gitignore | 1 + README.md | 15 +++++++++++++-- doc/img/json-rpc.png | Bin 0 -> 36455 bytes docker-compose.yaml | 41 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 .gitignore create mode 100644 doc/img/json-rpc.png create mode 100644 docker-compose.yaml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..62c8935 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea/ \ No newline at end of file diff --git a/README.md b/README.md index b9a7078..a398312 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,19 @@ # MORE Limesurvey MORE-Specific Repackaging of Limesurvey +--- +## Development + +This repository contains a `docker-compose.yaml` to launch Limesurvey locally for development and testing. + +After starting the Compose using `docker compose up -d`, Limesurvey is available at http://localhost:8080. +To access the configuration backend, login via http://localhost:8080/index.php/admin/authentication/sa/login. + ## Authentication For authentication in MORE we use SSO based on OAuth with Keycloak. With the plugin https://github.com/BDSU/limesurvey-oauth2, we can use our account we use for the -MORE studymanager to sign into Limesurvey. +MORE Study-Manager to sign in to Limesurvey. The OAuth-plugin is shipped within this docker-image, but needs to be "loaded" before it can be enabled and configured. @@ -31,12 +39,15 @@ it can be added as a global role for new users. Finally, enable the plugin in the Overview. +**NOTE**: Even if you enable OAuth2 as the _default login_ mechanism, you can always switch to the default +(local database) login by directly going to `${BASE_URL}/index.php/admin/authentication/sa/login/authMethod/Authdb`. + ## Limesurvey API (Remote Control) Limesurvey uses JSON-RPC. This has to be enabled first before it can be used in `Configuration > Settings > Global > Interfaces` as such: -image +JSON-RPC Configuration To use the API, you first need to get a session key. Only then you can use it. The most important requests for us are: diff --git a/doc/img/json-rpc.png b/doc/img/json-rpc.png new file mode 100644 index 0000000000000000000000000000000000000000..b6fdeea63820f4163584f471f9d83a616220fc72 GIT binary patch literal 36455 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 literal 0 HcmV?d00001 diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..0afb8d6 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,41 @@ +name: more-limesurvey + +services: + limesurvey: + image: ghcr.io/more-platform/limesurvey:develop + build: + context: . + ports: + - '8080:8080' + depends_on: + database: + condition: service_healthy + healthcheck: + test: [ "CMD-SHELL", "curl -sfI -m5 http://localhost:8080 || exit 1"] + interval: 15s + timeout: 5s + retries: 3 + environment: + DB_TYPE: pgsql + DB_PORT: 5432 + DB_HOST: database + DB_PASSWORD: lime + DB_NAME: lime + DB_USERNAME: lime + ADMIN_NAME: Super-Admin + ADMIN_USER: admin + # Initial Password, will be changed on setup + ADMIN_PASSWORD: admin + + database: + image: postgres:14-alpine + restart: unless-stopped + healthcheck: + test: [ "CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}" ] + interval: 10s + timeout: 1s + retries: 5 + environment: + POSTGRES_USER: lime + POSTGRES_DB: lime + POSTGRES_PASSWORD: lime