Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:webapps:mrbs:mrbs24]] 

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
anwenderwiki:webapps:mrbs:mrbs24 [2024/06/15 14:59] – [MRBS Raumbuchung in Version > 1.11.x in docker] tobiasanwenderwiki:webapps:mrbs:mrbs24 [2024/06/15 21:05] (aktuell) – [Docker Image von MRBS] tobias
Zeile 6: Zeile 6:
 ===== Docker Image+Theme von Dorian ===== ===== Docker Image+Theme von Dorian =====
  
-Hier: https://ask.linuxmuster.net/t/mrbs-docker-allgemein/8039 stellt @dorian vor, dass er einen Dockercontainer bereitgestellt hat, der seinen Source-code hier: https://github.com/dorianim/mrbs-docker hat und sehr einfach über docker-compose zu starten ist, wenn man bereits die Infrastruktur eines Docker-hosts und der SSL-Termination dazu hat.+== Vorbemerkung == 
 + 
 +Hier: https://ask.linuxmuster.net/t/modernes-mrbs-template/6918 stellt @dorian vor, dass er einen Dockercontainer bereitgestellt hat, der seinen Source-code hier: https://github.com/dorianim/mrbs-docker hat und sehr einfach über docker-compose zu starten ist, wenn man bereits die Infrastruktur eines Docker-hosts und der SSL-Termination dazu hat.
  
 Zusätzlich zur neueren Version von mrbs (und php) ist darin auch ein von ihm erstelltes neueres Theme eingebaut, source code: https://github.com/dorianim/modern-mrbs-theme . Einziger Nachteil ist, dass MRBS keine theme-engine hat und eventuell neuere Versionen von mrbs immer auch mit dem im modernere Theme passen müssen. Man eventuell also irgendwann auf das Theme verzichten muss, wenn man sich selbst ein noch neueres MRBS baut, als es dorian zur Verfügung stellt. Zusätzlich zur neueren Version von mrbs (und php) ist darin auch ein von ihm erstelltes neueres Theme eingebaut, source code: https://github.com/dorianim/modern-mrbs-theme . Einziger Nachteil ist, dass MRBS keine theme-engine hat und eventuell neuere Versionen von mrbs immer auch mit dem im modernere Theme passen müssen. Man eventuell also irgendwann auf das Theme verzichten muss, wenn man sich selbst ein noch neueres MRBS baut, als es dorian zur Verfügung stellt.
  
-Siehe https://github.com/dorianim/mrbs-docker wie man vorzugehen hat. Nach laufendem Dockercontainer wurde die Datei ''config/config.inc.php'' erstellt, die es anzupassen gilt.+==== Diskussion ==== 
 + 
 +  * https://ask.linuxmuster.net/t/mrbs-docker-allgemein/8039 
 +  * https://ask.linuxmuster.net/t/modernes-mrbs-template/6918 
 + 
 + 
 +==== Konfiguration ==== 
 + 
 + 
 +Siehe https://github.com/dorianim/mrbs-docker wie man vorzugehen hat. Nach laufendem Dockercontainer wurde die Datei ''config/www/config.inc.php'' erstellt, die es anzupassen gilt.
  
 ==== LDAP Konfiguration für linuxmuster ==== ==== LDAP Konfiguration für linuxmuster ====
  
-Das ist der Teil, der in ''config.inc.php'' sollte.+Das ist der Teil für LDAP, der in ''config.inc.php'' sollte.
  
 <code> <code>
Zeile 22: Zeile 33:
  
 $auth["type"] = "ldap"; $auth["type"] = "ldap";
-// Many of the LDAP parameters can be specified as arrays, in order to 
-// specify multiple LDAP directories to search within. Each item below 
-// will specify whether the item can be specified as an array. If any 
-// parameter is specified as an array, then EVERY array configuration 
-// parameter must have the same number of elements. You can specify a 
-// parameter as an array as in the following example: 
-// 
-// $ldap_host = array('localhost', 'otherhost.example.com'); 
  
 $ldap_host = "10.0.0.1"; $ldap_host = "10.0.0.1";
-$ldap_port = 389+$ldap_port = 636
-$ldap_v3 = true;+$ldap_v3 = false;
 $ldap_tls = false; $ldap_tls = false;
 +ldap_set_option(null, LDAP_OPT_X_TLS_REQUIRE_CERT, LDAP_OPT_X_TLS_NEVER);
  
 $ldap_base_dn = "OU=SCHOOLS,DC=linuxmuster,DC=lan"; $ldap_base_dn = "OU=SCHOOLS,DC=linuxmuster,DC=lan";
Zeile 48: Zeile 52:
 // Schüler oder Lehrer dürfen zugreifen: // Schüler oder Lehrer dürfen zugreifen:
 //$ldap_filter = "|(memberof=CN=role-student,OU=Groups,OU=GLOBAL,DC=linuxmuster,DC=lan)(memberof=CN=role-teacher,OU=Groups,OU=GLOBAL,DC=linuxmuster,DC=lan)"; //$ldap_filter = "|(memberof=CN=role-student,OU=Groups,OU=GLOBAL,DC=linuxmuster,DC=lan)(memberof=CN=role-teacher,OU=Groups,OU=GLOBAL,DC=linuxmuster,DC=lan)";
- 
-// If you need to filter a user by the group a user is in with an LDAP 
-// directory which stores group membership in the group object 
-// (like OpenLDAP) then you need to search for the groups they are 
-// in. If you want to do this, define the following two variables, an 
-// an appropriate $ldap_filter. e.g.: 
-// $ldap_filter_base_dn = "ou=Groups,dc=example,dc=com"; 
-// $ldap_filter_user_attr = "member"; 
-// $ldap_filter = "cn=MRBS Users"; 
- 
-// If you need to disable client referrals, this should be set to true. 
-// Note: Active Directory for Windows 2003 forward requires this. 
-// $ldap_disable_referrals = true; 
- 
-// LDAP option for dereferencing aliases 
-// LDAP_DEREF_NEVER = 0 - (default) aliases are never dereferenced. 
-// LDAP_DEREF_SEARCHING = 1 - aliases should be dereferenced during the search 
-//      but not when locating the base object of the search. 
-// LDAP_DEREF_FINDING = 2 - aliases should be dereferenced when locating the base object but not during the search. 
-// LDAP_DEREF_ALWAYS = 3 - aliases should be dereferenced always. 
-//$ldap_deref = LDAP_DEREF_ALWAYS; 
  
 // Set to true to tell MRBS to look up a user's email address in LDAP. // Set to true to tell MRBS to look up a user's email address in LDAP.
 // Utilises $ldap_email_attrib below // Utilises $ldap_email_attrib below
 $ldap_get_user_email = true; $ldap_get_user_email = true;
-// The LDAP attribute which holds a user's email address 
-// This can be an array. 
 $ldap_email_attrib = 'mail'; $ldap_email_attrib = 'mail';
-// The LDAP attribute which holds a user's name. Another common attribute 
-// to use (with Active Directory) is 'displayname'. 
-// This can be an array. 
 $ldap_name_attrib = 'displayName'; $ldap_name_attrib = 'displayName';
- 
-// The DN of the LDAP group that MRBS admins must be in. If this is defined 
-// then the $auth["admin"] is not used. 
-// This can be an array. 
  
 // Hier wären alle Lehrer auch Admins: // Hier wären alle Lehrer auch Admins:
Zeile 91: Zeile 65:
 $ldap_suppress_invalid_credentials = true; $ldap_suppress_invalid_credentials = true;
 $ldap_debug = false; $ldap_debug = false;
 +</code>
 +
 +==== Debugging ====
 +
 +Wer Probleme hat, herauszubekommen, warum etwas nicht funktioniert, hier ein paar Tipps:
 +
 +<code>
 +ini_set('display_errors', 'On');                                                                                                                                                  
 +ini_set('html_errors', 0);                                                                                                                                                        
 +error_reporting(-1);     
 +</code>
 +
 +in der config.inc.php wirft ordentlich Fehler aus.
 +Ebenso kann man das Theme von Dorian deaktivieren, in dem man 
 +<code>
 +$theme = "default";
 +</code>
 +setzt. Hat allerdings bei mir nur Nachteile gehabt.
 +
 +Zusätzlich gibt es noch die Problematik mit LDAPs (SSL) und selbst-signierten Zertifikaten des LDAP-Servers. Die obige Zeile ''ldap_set_option(null, LDAP_OPT_X_TLS_REQUIRE_CERT, LDAP_OPT_X_TLS_NEVER);'' sollte das beheben, tut bei mir aber nicht, weswegen ich ''ldap.conf'' in den Container mounte.
 +
 +Die Zeile oben ''$ldap_debug = true'' hat nur in Kombination mit den obigen display_errors etc. für PHP angezeigt, wenn der LDAP-Server nicht erreichbar war (z.B. wegen des SSL-Zertifikats).
 +
 +==== Weitere Anpassungen: Aussehen und Funktionalität ====
 +
 +<code>
 +$override_locale = "de-de";
 +
 +// Bezeichnungen anpassen
 +$vocab_override['de']['mrbs'] = "Mein-Gymnasium Buchung Testserver";
 +$vocab_override['de']['areas'] = "Bereiche";
 +$vocab_override['de']['rooms'] = "Objekte";
 +$vocab_override['de']['period'] = "Stunde";
 +$vocab_override['de']['periods'] = "Stunden";
 +
 +unset($booking_types);
 +$booking_types[] = "E";
 +$booking_types[] = "F";
 +$booking_types[] = "G";
 +$vocab_override["de"]["type.E"] = "spontan";
 +$vocab_override["de"]["type.F"] = "planmäßig";
 +$vocab_override["de"]["type.G"] = "Wartung";
 +
 +// Default type for new bookings 
 +$default_type = "E";
 +
 +$mrbs_company = "Mein-Gymnasium"; 
 +$mrbs_company_logo = "meingymnasiumlogo.png";
 +
 +</code>
 +
 +Auch hier: ''meingymnasiumlogo.png'' ist die Anpassung, die ich noch zusätzlich in den Container mounten muss, dass sie dort gefunden wird
 +
 +==== Weitere Anpassungen: Dorians Modern Theme spezifisch ====
 +<code>
 +$kiosk_mode_enabled = true;
 +$kiosk_QR_code = true;
 +$style_weekends = true;
 +</code>
 +
 +sprechen für sich (man darf halt Sa+So nicht ausblenden, dann sieht man auch, was ''$style_weekends'' macht).
 +
 +
 +==== Weitere Anpassungen (optional) ====
 +
 +Beispielhaft von meiner Schule:
 +<code>
 +
 +// Wochenstart Montags                                                                                                                                                              
 +$weekstarts = 1;
 +// Samstag und Sonntag verstecken                                                                                                                                                   
 +$hidden_days = array("6","0");
 +
 +// should areas be shown as a list or a drop-down select box?                                                                                                                       
 +$area_list_format = "list";
 +//$area_list_format = "select";                                                                                                                                                     
 +
 +// Define default starting view (month, week or day)                                                                                                                                
 +// Default is day                                                                                                                                                                   
 +$default_view = "week";
 +
 +// Damit die Stundeneinteilung verwendet wird, muss in der                                                                                                                          
 +// Weboberfläche der Modus für den entsprechenden Raumbereich auf                                                                                                                   
 +// "series" gestellt werden.                                                                                                                                                        
 +unset($periods);
 +$periods[] = "[1]  08:00-08:45";
 +$periods[] = "[2]  08:50-09:35";
 +$periods[] = "[P]  Grosse Pause";
 +$periods[] = "[3]  09:55-10:40";
 +$periods[] = "[4]  10:45-11:30";
 +$periods[] = "[P]  2. grosse Pause";
 +$periods[] = "[5]  11:45-12:30";
 +$periods[] = "[6]  12:35-13:20";
 +$periods[] = "[P]  Mittagspause";
 +$periods[] = "[7]  13:25-14:10";
 +$periods[] = "[8+9]  14:15-15:50";
 +$periods[] = "[10+11] 15:55-17:30";
 +</code>
 +
 +==== Docker compose Anpassungen ====
 +
 +Neben der Dokumentation von Dorian zum Image hier: https://github.com/dorianim/mrbs-docker?tab=readme-ov-file#installation
 +habe ich noch folgende Anpassungen gemacht:
 +
 +<code>
 +  mrbs-devel-db:
 +    ...
 +    image: mariadb:10.11 # weil ich "latest" nicht mag
 +    ...
 +  mrbs-devel:
 +    ...
 +    image: dorianim/mrbs
 +    ...
 +    environment:
 +        ...
 +    volumes:
 +      ...
 +      - ./config:/config
 +      - ./ldap.conf:/etc/ldap/ldap.conf:ro
 +      - ./meingymnasiumlogo.png:/var/www/html/meingymnasiumlogo.png
 +</code>
 +
 +mit dem Inhalt von ''ldap.conf'':
 +<code>
 +TLS_CACERT      /etc/ssl/certs/ca-certificates.crt
 +PORT            636
 +TLS_REQCERT     never
 </code> </code>
  
Zeile 102: Zeile 203:
 https://github.com/meeting-room-booking-system/mrbs-code https://github.com/meeting-room-booking-system/mrbs-code
  
 +<code>
 +cd /srv/docker
 +mkdir -p mrbs-devel/mariadb-data
 +touch mrbs-devel/Dockerfile
 +
 +git clone https://github.com/meeting-room-booking-system/mrbs-code
 +touch mrbs-code/ldap.conf mrbs-code/locale.gen
 +</code>
 +
 +
 +Folgendes Dockerfile hilft, einen MRBS-Container zu bekommen, der LDAP-selbst-signierte Zertifikate ignoriert und das standard-theme nutzt.
 +
 +<code>
 +FROM php:8.2-apache
 +
 +RUN a2enmod rewrite
 +RUN apt-get update && apt-get install -y libicu72 libicu-dev locales-all libldap2-dev \
 +    && docker-php-ext-install mysqli pdo pdo_mysql intl \
 +    && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu \
 +    && docker-php-ext-install ldap \
 +    && apt-get clean -y \
 +    && rm -rf /var/lib/apt/lists/*
 +
 +COPY web/ /var/www/html/
 +COPY locale.gen /etc/locale.gen
 +COPY ldap.conf /etc/ldap/ldap.conf
 +COPY docker-config.inc.php /var/www/html/config.inc.php
 +</code>
 +
 +  * zugehöriges ''ldap.conf'' siehe oben.
 +  * zugehöriges ''locale.gen'' könnte so aussehen <code>
 +de_DE.UTF-8 UTF-8
 +en_US.UTF-8 UTF-8
 +</code>
 +
 +Fehlt natürlich noch komplett die LDAP-Konfiguration etc. Die kann man oben abschauen.
 +Zugehöriges docker-compose.yml könnte so aussehen:
 +
 +<code>
 +service... etc.
 +
 +  mrbs-devel-db:
 +    container_name: mrbs-devel-db
 +    restart: always
 +    image: mariadb:10.11
 +    environment:
 +      MYSQL_DATABASE: mrbs_raumbuchung
 +      MYSQL_USER: mrbsdbuser
 +      MYSQL_PASSWORD: XXXXXXXXXXXXx
 +      MYSQL_ROOT_PASSWORD: YYYYYYYYYYYYYYy
 +      MARIADB_AUTO_UPGRADE: 1
 +    volumes:
 +      - ./mrbs-devel/mariadb-data:/var/lib/mysql
 +  mrbs-devel:
 +    depends_on:
 +      - mrbs-devel-db
 +    container_name: raumbuchung-devel
 +    image: linuxmuster/mrbs-1.11.5:latest
 +    build:
 +      dockerfile: Dockerfile
 +      context: ./mrbs-code/
 +    restart: always
 +    environment:
 +        MRBS_DB_HOST: mrbs-devel-db
 +        MRBS_DB_PORT: 3306
 +        MRBS_DB_DATABASE: mrbs_raumbuchung
 +        MRBS_DB_USER: mrbsdbuser
 +        MRBS_DB_PASSWORD: XXXXXXXXXXXX
 +        MRBS_DB_NAME: mrbs_raumbuchung
 +        MRBS_TIMEZONE: Europe/Berlin
 +        MYSQL_ROOT_PASSWORD: YYYYYYYYYYYYYYYYy
 +        
 +</code>
  
 +dazu dann ein 'docker compose build mrbs-devel' etc...
 [[anwenderwiki:webapps:mrbs:mrbs24]] anwenderwiki/webapps/mrbs/mrbs24.1718456348.txt.gz · Zuletzt geändert: 2024/06/15 14:59 von tobias