Linuxmuster-survey

umfrage
survey
limesurvey
docker
#1

linuxmuster-limesurvey:

was es tut:

  • lmn v62 support
  • legt eine Datenbank (im docker-container) an, initialisiert die limesurvey-installation
  • Unterstützt Umfragenteilnehmer die aus LDAP geladen werden, momentan mit den Vorlagen: “Schüler”, “Lehrer” und “Schüler & Lehrer” und für jede einzelne Klasse und Projekt aus LDAP (BUG in limesurvey sortiert allerdings falsch: https://bugs.limesurvey.org/view.php?id=14793#c51553 gefixt in nächster Version, die sind echt schnell)
  • sowohl LDAP als auch LDAPs konfigurierbar, letzteres mit oder ohne validem Zertifikat konfigurierbar
  • Automatische Konfiguration, dass Lehrer sich als Umfragenersteller aus LDAP anmelden können
  • getestet werden von jemand der ein docker-ext-linuxmuster im Einsatz hat
  • schön aussehen:

oder dann mit Schullogo:

was es noch nicht tut:

so sieht es aus. Jemand aus dem CI-Team (@MachtDochNix? @Michael ?) könnte vorschlagen, wie ich in obigem Bild das linuxmuster.net logo unterbringen könnte. So?

ist ein bisschen komisch. Danke, erledigt!
VG, Tobias

2 Like
Docker KISS + linuxmuster-mrbs
#2

Hallo Tobias!

Welchen Einfluss hast du auf die Farben? Bezüglich der Anpassung der Farben an eure Schulpages (CI).

Erste Idee: Ich würde das Logo links oben durch das lmn-Logo ersetzen und das große in der Mitte durch das Schullogo. “Powered by” würde ich dort so lassen.

Beste Grüße

Thorsten

1 Like
#3

gute idee. werde ich machen, wenn ich noch Zeit habe dafür. Das Schullogo ist nicht so einfach in den dockerhost zu bekommen, oder? Da muss man ja schon ssh bedienen :wink:

#4

Hi @baumhof,

wenn du schon einen docker-host von der Sorte von Frank erstellt hast, hättest du nicht Lust zu schauen, ob linuxmuster-survey auch in 5 Minuten installierbar ist?

Das fände ich super.

VG, Tobias

#5

Hallo Tobias,

linuxmuster-limesurvey:

https://github.com/jolly-jump/linuxmuster-survey

wenn du schon einen docker-host von der Sorte von Frank erstellt hast,
hättest du nicht Lust zu schauen, ob linuxmuster-survey auch in 5
Minuten installierbar ist?

… hat leider länger gedauert, weil:

  1. ich erst das falsche github repo genommen habe (und dann erst gesehen
    habe,a ls es nicht ging, dass es ja noch in deinem jollyjumper liegt)
  2. ich zu den Klassen in der limesurvey.ini noch die 35 Klassen der
    Realschule hinzufügen mußte (das war 35 Zeilen kopieren und 35mal ein r
    davor schreiben … das dauert).

Und dann hats nicht geklappt :frowning:

Hier ist der Fehler:
root@docker:/srv/docker/linuxmuster-survey# ./deploy/bin/turnkey -c
limesurvey.ini
Traceback (most recent call last):
File “./deploy/bin/turnkey”, line 15, in
import ldap3
ModuleNotFoundError: No module named ‘ldap3’

In deiner Anleitung steht nicht dabei, dass man limesurvey bei
dehydratet eintragen muß: macht turnkey das? und fürht dehydratet -c aus?

LG

Holger

#6

Hi Holger,

vielen Dank fürs Testen!

ok, das ist doof. Ich weiß nicht, wie ich das automatisiseren könnte. Jeder nennt seine Klassen anders. hm…

Ok. fair enough. Mal sehn, ob das Frank im ansible playbook übernimmt, oder ob ich es in meine Anleitung packen muss.

apt install python3-ldap3

Eigentlich habe ich den Teil des Skriptes von Frank übernommen, wenn es das für dich bei mrbs gemacht hat, dann sollte es das auch für dich hier tun. Aber ich finde leider nirgends, wo dehydrated ausgeführt wird außer im daily-cronjob.
Der wird tatsächlich nicht extra angeschmissen, d.h. bis @ironiemix etwas Gegenteiliges sagt, musst du noch von Hand dehydrated -c aufrufen, um das Zertifikat erstmalig zu holen.

VG, Tobias

#7

Hallo Tobias,

  * ich erst das falsche github repo genommen habe (und dann erst
    gesehen
    habe,a ls es nicht ging, dass es ja noch in deinem jollyjumper
    liegt)
  * ich zu den Klassen in der limesurvey.ini noch die 35 Klassen der
    Realschule hinzufügen mußte (das war 35 Zeilen kopieren und
    35mal ein r
    davor schreiben … das dauert).

ok, das ist doof. Ich weiß nicht, wie ich das automatisiseren könnte.
Jeder nennt seine Klassen anders. hm…

… macht ja nix: das ist ja bei mir halt auch komplizierter.

Hier ist der Fehler:
root@docker:/srv/docker/linuxmuster-survey# ./deploy/bin/turnkey -c
limesurvey.ini
Traceback (most recent call last):
File “./deploy/bin/turnkey”, line 15, in
import ldap3
ModuleNotFoundError: No module named ‘ldap3’

apt install python3-ldap3|

das hat den Fehler behoben.

In deiner Anleitung steht nicht dabei, dass man limesurvey bei
dehydratet eintragen muß: macht turnkey das? und fürht dehydratet -c
aus?

Eigentlich habe ich den Teil des Skriptes von Frank übernommen, wenn es
das für dich bei mrbs gemacht hat, dann sollte es das auch für dich hier
tun. Aber ich finde leider nirgends, wo dehydrated ausgeführt wird außer
im daily-cronjob.
Der wird tatsächlich nicht extra angeschmissen, d.h. bis @ironiemix
https://ask.linuxmuster.net/u/ironiemix etwas Gegenteiliges sagt,
musst du noch von Hand dehydrated -c aufrufen, um das Zertifikat
erstmalig zu holen.

bei Frank steht in der Anleitung, dass man die
/etc/dehydratet/domain.txt bearbeiten muss.

Jetzt bricht das turnkey script woanders ab:

root@docker:/srv/docker/linuxmuster-survey# deploy/bin/turnkey -c
limesurvey.ini
Reading setup data ...
Creating LDAP participant groups configuration from template.
  + Added group p_wifi
  + Added group p_sudo
  + Added group 5a
  + Added group 5b
  + Added group 5c
  - group 5d not found in LDAP
  - group 5e not found in LDAP
  - group 5f not found in LDAP
  + Added group 6a
  + Added group 6b
  + Added group 6c
  + Added group 6d
  - group 6e not found in LDAP
  - group 6f not found in LDAP
  + Added group 7a
  + Added group 7b
  + Added group 7c
  - group 7d not found in LDAP
  - group 7e not found in LDAP
  - group 7f not found in LDAP
  + Added group 8a
  + Added group 8b
  + Added group 8c
  - group 8d not found in LDAP
  - group 8e not found in LDAP
  - group 8f not found in LDAP
  + Added group 9a
  + Added group 9b
  + Added group 9c
  - group 9d not found in LDAP
  - group 9e not found in LDAP
  - group 9f not found in LDAP
  + Added group 10a
  + Added group 10b
  + Added group 10c
  - group 10d not found in LDAP
  - group 10e not found in LDAP
  - group 10f not found in LDAP
  + Added group 11a
  + Added group 11b
  + Added group 11c
  + Added group 11d
  - group 11e not found in LDAP
  - group 11f not found in LDAP
  + Added group 12a
  + Added group 12b
  + Added group 12d
  - group 12e not found in LDAP
  - group 12f not found in LDAP
  + Added group r5a
  + Added group r5b
  + Added group r5c
  - group r5d not found in LDAP
  - group r5e not found in LDAP
  - group r5f not found in LDAP
  + Added group r6a
  + Added group r6b
  + Added group r6c
  - group r6d not found in LDAP
  - group r6e not found in LDAP
  - group r6f not found in LDAP
  + Added group r7a
  + Added group r7b
  + Added group r7c
  - group r7d not found in LDAP
  - group r7e not found in LDAP
  - group r7f not found in LDAP
  + Added group r8a
  + Added group r8b
  + Added group r8c
  - group r8d not found in LDAP
  - group r8e not found in LDAP
  - group r8f not found in LDAP
  + Added group r9a
  + Added group r9b
  + Added group r9c
  + Added group r9d
  - group r9e not found in LDAP
  - group r9f not found in LDAP
  + Added group r10a
  + Added group r10b
  + Added group r10c
  - group r10d not found in LDAP
  - group r10e not found in LDAP
Creating initial configuration from templates.
 Infile: ./deploy/templates/AuthLDAP.php-template -> ./config/AuthLDAP.php
Failed to write ./config/AuthLDAP.php!

Script finished with error!

LG

Holger

#9

grrr, sorry.
entweder einfach git pull aufrufen oder von hand das Verzeichnis mkdir config erstellen.
Ich war irgendwie zu blöd zu sehen, dass git ein Problem hatte einfach ein leeres Verzeichnis aufzunehmen.
Vg, Tobias

#10

sorry, gefunden: https://github.com/linuxmuster-ext-docker/linuxmuster-mrbs
Hatte das vergessen zu übernehmen. Gilt genauso auch bei meinem Docker-image.

Vg, Tobias

#11

Hallo Tobias,

entweder einfach |git pull| aufrufen oder von hand das Verzeichnis

mkdir config| erstellen.

ich habe es erstellt und turnkey -c limesurvey.ini
noch mal laufen lassen.

Meldung ist folgende:

  + Added group r5a
  + Added group r5b
  + Added group r5c
  - group r5d not found in LDAP
  - group r5e not found in LDAP
  - group r5f not found in LDAP
  + Added group r6a
  + Added group r6b
  + Added group r6c
  - group r6d not found in LDAP
  - group r6e not found in LDAP
  - group r6f not found in LDAP
  + Added group r7a
  + Added group r7b
  + Added group r7c
  - group r7d not found in LDAP
  - group r7e not found in LDAP
  - group r7f not found in LDAP
  + Added group r8a
  + Added group r8b
  + Added group r8c
  - group r8d not found in LDAP
  - group r8e not found in LDAP
  - group r8f not found in LDAP
  + Added group r9a
  + Added group r9b
  + Added group r9c
  + Added group r9d
  - group r9e not found in LDAP
  - group r9f not found in LDAP
  + Added group r10a
  + Added group r10b
  + Added group r10c
  - group r10d not found in LDAP
  - group r10e not found in LDAP
Creating initial configuration from templates.
 Infile: ./deploy/templates/AuthLDAP.php-template -> ./config/AuthLDAP.php
 Infile: ./deploy/templates/ldap.php-template -> ./config/ldap-feedback.php
 Infile: ./deploy/templates/docker-compose.yml-template ->
./docker-compose.yml
 Infile: ./deploy/templates/limesurvey.nginx.config-template ->
./config/nginx.limesurvey.conf
 Infile: ./deploy/templates/config.php-template ->
./config/config-feedback.php
 Infile: ./deploy/templates/changes.sql-template -> ./config/changes.sql
 Infile: ./deploy/templates/ldap.group.php-template ->
./config/ldap-groups.php
[....] Restarting nginx (via systemctl): nginx.serviceJob for
nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xe" for details.
 failed!

Script finished successfully!

Danach hab ich trotzdem docker-compose up -d gemacht und siehe da: es
startet nicht … 5 min später … weil die site config für nginx nicht
korrekt war: da kannst du aber nix für.
Ich hab sie korrigiert und schwupps geht es.

Sach ma: wie log ich mich da als admin ein?
Einfach nur
https://limesuvey.meine.tdl geht nicht: da ist kein Loginbutton …

LG

Holger

#12

Guter Punkt.

https://limesurvey.meine.tld/admin

Du hast ja “limeadmin” und passwort in der ini-Datei vergeben, dann mit “LimeSurvey internal database” anmelden.

oder als lehrer + Schulkonto mit LDAP.

Danke für den Hinweis, fixed in der Doku…
Tobias

#13

Hi Holger,
der Rest funktioniert nun wohl?
Wenn du noch den Nerv hast, schau mal, ob ein “docker-compose -d up” jetzt das neue Image zieht, das ich auf dockerhub hochgeladen hab, oder, was ich eher glaube, dass du ein docker-compose pull ausführen musst.
Dann bekommst du ein (um 200MB reduziertes) Image mit dem Bugfix und dem linuxmuster logo :slight_smile:
VG, Tobias

#14

Hallo Tobias,

der Rest funktioniert nun wohl?

… noch nicht getestet…
Ich brauch erst einen Büttel in der Schule, der das dann auch verwendet :slight_smile:
(Büttel ist ein geiles Wort, oder? :slight_smile: )

Wenn du noch den Nerv hast, schau mal, ob ein “docker-compose -d up”
jetzt das neue Image zieht, dass ich auf dockerhub hochgeladen hab,

docker-compose up -d
linuxmuster-survey_db_1 is up-to-date
feedback is up-to-date

Nö, er meint es sei aktuelle (wohl gemerkt: das ist ein
docker-compose up -d
währen die docker laufen).

oder, was ich eher glaube, dass du ein |docker-compose pull| ausführen
musst.

dann halt ich sie mal an, pull und starte sie wieder.

Das passiert:
docker-compose pull
Pulling db … done
Pulling feedback … done

Alles klar also:
Anhalten
Pullen
Starten

linuxmuster.net Logo sehe ich auf der (nichtadmin) Seite aber noch nicht
(nicht dass das wichtig wäre)

LG

Holger

#15

super… geil
mir reicht schon die aussage, dass du dich als Lehrer anmelden kannst. Alles andere ist eh limesurvey-kram. Das ist schon anstrengend genug als Werkzeug…da braucht man wirklich einen Büttel.

komisch, ein docker-compose pull müsste das Image in dieser Version (so eben hochgeladen) runterladen:

docker-compose pull
docker image inspect hgkvplan/limesurvey:latest  | grep -A 2 RepoTags
        "RepoTags": [
            "hgkvplan/limesurvey:7.3.4-dd4810bb",
            "hgkvplan/limesurvey:latest"

VG, Tobias

#16

Hallo Tobias,

mir reicht schon die aussage, dass du dich als Lehrer anmelden kannst.

Ah: da ist das linumxuter.net Logo :slight_smile:

Login als Lehrer geht leider nciht.
Er sagt: cant contact LDAP Server.
Ich hab nachgeschaut: im IPFire ist von Rot auf 10.16.1.1 Port 636 erlaubt.
Ich hab mal noch eine Regel für den dockerhost Port 389 hinzugefügt:
bringt nix.
Seltsam, weil er beim turnkey ja erkannt hat, welche Klassen es gibt und
welche nicht…
Ich such mal.

komisch, ein docker-compose pull müsste das Image in dieser Version (so
eben hochgeladen) runterladen:

docker-compose pull docker image inspect hgkvplan/limesurvey:latest |
grep -A 2 RepoTags “RepoTags”: [ “hgkvplan/limesurvey:7.3.4-dd4810bb”,
“hgkvplan/limesurvey:latest” |

bei mir:

docker image inspect hgkvplan/limesurvey:latest | grep -A 2 RepoTags "RepoTags": [ "hgkvplan/limesurvey:latest" ],

LG

Holger

#17

Hallo Tobias,

ich hab jetzt mal /config weggeschoben und leer erschaffen und
docker-compose.yml weggeschoben und turnkey nochmal ausgeführt.
Dabei ist mir folgendes aufgefallen:
es hat wieder nicht geklappt nginx am Ende zu starten.
Die Gründe sind:

  1. du verwendest in der nginx config in der ersten und letzten Zeile als
    Backend den Namen “backend”… geht bei mir nicht, weil den schon der
    mrbs Container verwednet.
    Beide sollten “personalisierte” backendnamen verwenden.
    Das gleiche trifft auf den cache zu
    Orginalzeile aus deiner config (nach turnkey)
proxy_cache_path /var/cache/nginx levels=1:2
keys_zone=limesurvey_cache:10m max_size=3g inactive=120m use_temp_path=off;

geändert von mir:

proxy_cache_path /var/cache/nginx-limesurvey levels=1:2
keys_zone=limesurvey_cache:10m max_size=3g inactive=120m use_temp_path=off;

Es kommt aber noch imemr “cant contact LDAP Server”.
Das kann aber an meinem Setup liegen (docker ist in Rot).
Ich werd da mal in die logs schauen (aber nicht jetzt :slight_smile: )

LG

Holger

#18

Hi Holger,

ok, auch gut zu wissen. Die Nummerierung scheint nur bei mir zu sein…

ok, danke dass du das gefunden hast. Es hilft nix. Ich werde selber meinen dockerhost neu aufsetzen müssen (ohne Mehrwert habe ich immer nur mehrarbeit…)

Das hat tatsächlich weder mit dem nginx noch mit dem Finden der klassen zu tun, das hat damit zu tun, ob die richtige LDAP-Configuration in der mysql-db gelandet ist.
wenn du dich als “limeadmin” anmelden kannst (nicht via LDAP), dann kannst du nachschauen, wie die Konfig unter Konfiguration/Plugin Manager/LDAP authentication - konfigurieren ausssieht.

Oder noch elementarer:

docker exec -it linuxmuster-survey_feedback_1 /bin/bash
mysql -uroot -p$MYSQL_ROOT_PASSWORD -hdb lime_feedback -e "SELECT * from lime_plugin_settings;"
+----+-----------+-------+----------+-------------------------+--------------------------------------------------------------+
| id | plugin_id | model | model_id | key                     | value                                                        |
+----+-----------+-------+----------+-------------------------+--------------------------------------------------------------+
|  1 |         4 | NULL  |     NULL | server                  | "ldaps:\/\/server.humboldt-gymnasium.ka.schule-bw.de"        |
|  2 |         4 | NULL  |     NULL | ldapport                | "636"                                                        |
|  3 |         4 | NULL  |     NULL | ldapversion             | "3"                                                          |
|  4 |         4 | NULL  |     NULL | ldapoptreferrals        | "0"                                                          |
|  5 |         4 | NULL  |     NULL | ldaptls                 | "1"                                                          |
|  6 |         4 | NULL  |     NULL | ldapmode                | "searchandbind"                                              |
|  7 |         4 | NULL  |     NULL | userprefix              | null                                                         |
|  8 |         4 | NULL  |     NULL | domainsuffix            | null                                                         |
|  9 |         4 | NULL  |     NULL | searchuserattribute     | "uid"                                                        |
| 10 |         4 | NULL  |     NULL | usersearchbase          | "ou=accounts,dc=humboldt-gymnasium,dc=ka,dc=schule-bw,dc=de" |
| 11 |         4 | NULL  |     NULL | extrauserfilter         | ""                                                           |
| 12 |         4 | NULL  |     NULL | binddn                  | ""                                                           |
| 13 |         4 | NULL  |     NULL | bindpwd                 | ""                                                           |
| 14 |         4 | NULL  |     NULL | mailattribute           | "mail"                                                       |
| 15 |         4 | NULL  |     NULL | fullnameattribute       | "displayName"                                                |
| 16 |         4 | NULL  |     NULL | is_default              | "1"                                                          |
| 17 |         4 | NULL  |     NULL | autocreate              | "1"                                                          |
| 18 |         4 | NULL  |     NULL | automaticsurveycreation | "1"                                                          |
| 19 |         4 | NULL  |     NULL | groupsearchbase         | "ou=groups,dc=humboldt-gymnasium,dc=ka,dc=schule-bw,dc=de"   |
| 20 |         4 | NULL  |     NULL | groupsearchfilter       | "(&(cn=teachers)(memberUid=$username))"                      |
| 21 |         4 | NULL  |     NULL | allowInitialUser        | "1"                                                          |
+----+-----------+-------+----------+-------------------------+--------------------------------------------------------------+