4. MoodleBox erweitern

4.9. URL-Verkürzer YOURLS


Kurze URLs für den einfachen Zugriff, für QR-Codes und für iBeacons

Für einen Workshop mit Lehrkräften habe ich für die MoodleBox eine Verkürzung von URLs gebraucht, und zwar auf maximal 17 Zeichen.  Aber alles der Reihe nach ...

Aufgabenstellung

Für meinen Workshop "MoodleBox im Wald" im Auftrag von LiGa Sachsen-Anhalt sollte ich Lehrkräften verschiedene Ideen für digitale Unterichtssituationen im freien Gelände vermitteln. Mit der OpenSource-App OsmAnd (iOS, Android) und der digitalen Landkarte OpenStreetMap sollten die Lehrkräfte mehrere GPS-Koordinaten im Umfeld des Tagungshauses finden und aufsuchen. An den Zielpunkten sollte jeweils eine MoodleBox versteckt sein, auf der verschiedene Aufgaben erledigt werden sollten. Die URLs zu den Aufgaben sollten digital über iBeacons bereitgestellt werden. Eigentlich war meine erste Idee, QR-Codes zu verwenden, um die Lehrkräfte auf die zu erledigenden Aufgaben zu lenken. Um aber eine "vandalismussichere" Idee zeigen zu können, fielen die QR-Codes schnell aus, denn QR-Codes auf Papier können in einer realen Umsetzung durchaus verloren gehen, weil sie nass regnen, stark verschmutzen oder abgerissen werden können. So fand ich schnell Gefallen an den iBeacons zur Bereitstellung der URLs.

Umsetzung

Für eine MoodleBox mit einfacher Spannungsversorgung kommt eigentlich nur der Raspberry Pi 3B in Frage. Die meisten PowerBanks haben einen USB-Anschluss mit 5V/2A ... nicht genug für einen Raspberry Pi 3B+ mit 5.1V/2.5A oder einen Raspberry Pi 4B mit 5.1V/3.0A. Das WLAN der MoodleBox ist so konfiguriert, dass es kein Kennwort braucht. Alle können sich mit ihrem digitalen Endgerät mit der MoodleBox verbinden.

Um konkrete Aufgaben zu erfüllen, brauchen die Teilnehmer/innen jeweils eine URL zur Aufgabe. Wie oben erwähnt, sollten iBeacons zum Einsatz kommen. Mit dem Calliope mini oder dem Micro:bit lassen sich iBeacon sehr einfach im schulischen Umfeld erstellen. In der Programmierumgebung MakeCode gibt es die passenden Befehle dafür ... siehe http://moodlebox.home/mod/page/view.php?id=231, aber nur mit maximal 17 Zeichen langen URLs. Die Materialien auf der MoodleBox werden normalerweise über einen Link wie eben genannt aufgerufen. Ein iBeacon kann aber nur URLs mit maximal 17 Zeichen verarbeiten, so dass der genannte Link auf http://moodlebox.home/mo abgeschnitten und nicht funktionieren würde.

Alleine die URL zur Startseite http://moodlebox.home/ hat 15 Zeichen, wobei die Protokollangabe http:// natürlich ebenfalls gespeichert werden muss, aber bei den 17 Zeichen nicht mitzählt ... siehe https://makecode.microbit.org/reference/bluetooth/advertise-url. Okay, die MoodleBox lässt sich auch über http://moodlebox/ mit nur 10 Zeichen aufrufen ... 5 Zeichen gespart ... und es bleiben 7 weitere Zeichen für die Weiterleitung. Für eine Moodle-URL reicht das in der Regel immer noch nicht. Bei der Vorbereitung auf den Workshop mit zwei Teams habe ich die MoodleBox so konfiguriert, dass die Teambereiche über die Adressen http://moodlebox/x/t1 für Team 1 und http://moodlebox/u/t2 für Team 2 aufgerufen werden konnten. Dafür musste ich im Moodle-Quellcode ein Unterverzeichnis u und darin zwei weitere Unterverzeichnisse t1 und t2 anlegen ... die darin jeweils enthaltenen Weiterleitungsdateien index.php habe ich für den Workshop händisch codiert. Dies erfordert aber den direkten Zugriff auf den Moodle-Quellcode und Kenntnisse zum Erstellen einer PHP-Weiterleitung. 

Für eine Umsetzung im normalen Unterricht kann ein solcher technischer Eingriff nicht erwartet werden, zumal er sehr unflexibel und fehleranfällig ist. Keine Lehrkraft würde sich damit nebenbei beschäftigen wollen, weswegen ich nach einer leicht bedienbaren Lösung gesucht habe.

URL-Verkürzer im Internet

Die üblichen Online-Dienste https://kurzelinks.de, https://t1p.de, https://is.gd, https://bit.ly, https:/goo.gl, https://tiny.cc oder https://tinyurl.com im Internet kommen nicht in Frage, weil der URL-Verkürzer auch offline funktionieren und die URLs ohne Internetverbindung bereitstellen können muss. Wenn wie beim Workshop "MoodleBox im Wald" keine Internetverbindung besteht, würde mit diesen URL-Verkürzern kein Kurzlink dekodiert werden.

URL-Verkürzer YOURLS lokal auf der MoodleBox

Auf der MoodleBox habe ich nach mehreren Funktionstests zusätzlich die Open-Source-Software YOURLS - Your Own URL Shortener http://yourls.org installiert. Zusätzlich habe ich in der Datei /etc/hosts ermöglicht, die MoodleBox über die Kurz-URL http://mb/ aufrufen zu können. Jetzt sind kurze URLs der Form http://mb/u/c7s2/ ... das sind nur 10 Zeichen von den 17 maximal möglichen ... und jetzt funktionieren auch die iBeacons problemlos.

Die Software YOURLS kann frei über die Adresse https://github.com/YOURLS/ heruntergeladen werden. Das Verzeichnis yourls liegt auf der MoodleBox im Verzeichnis /var/www/yourls neben /var/www/moodle und ist mit einen symbolischen Link x in Moodle eingebunden.

Meine Konfiguration besteht aus drei Teilen, der Änderung in der Datei /etc/hosts, den Einstellungen in der Datei /var/www/yourls/user/config.txt und der Ergänzung in der Datei /etc/nginx/sites-available/default.

Dies ist alles! Die Datenbank yourls wurde automatisch beim ersten Aufruf der Administrationsseite http://mb/x/admin/ angelegt.

Ich habe mehrere Kurzlinks erzeugt, z.B. die URL http://moodlebox.home/course/view.php?id=2 mit dem Kurzlink http://mb/x/c2/ ... sehr kurz und sehr einprägsam! Die nächste getestete URL http://moodlebox.home/course/view.php?id=7&section=2 hat den Kurzlink http://mb/u/c7s2/.

Weitere Verweise zur Projektumsetzung

https://bildungsportal.magdeburg.de/moodle2/course/view.php?id=34
https://discuss.moodlebox.net/d/269-using-an-url-shortener-on-the-moodlebox
https://github.com/moodlebox/moodlebox/issues/90 
https://ckblog2016.wordpress.com/2017/08/11/calliope-mini-als-ble-beacon/ 
https://makecode.microbit.org/v1/reference/bluetooth/advertise-url 
https://yourls.org 

MoodleBox mit Yourls



Konfigurationsdateien

sudo nano /etc/hosts

127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

10.0.0.1        moodlebox  mb

sudo nano /etc/nginx/sites-available/default

# Default server configuration
#
server {
	listen 80 default_server;
	listen [::]:80 default_server;

#	listen 443 ssl;
#	listen [::]:443 ssl;
#	ssl_certificate /etc/nginx/ssl/moodlebox.pem;
#	ssl_certificate_key /etc/nginx/ssl/moodlebox.key;

	root /var/www/moodle;

	index index.php index.html index.htm index.nginx-debian.html;

	server_name moodlebox;

	location / {
		try_files $uri $uri/ =404;
	}

	location /dataroot/ {
		internal;
		alias /var/www/moodledata/;
	}

	location ~ [^/]\.php(/|$) {
		include fastcgi_params;
		fastcgi_split_path_info	^(.+\.php)(/.+)$;
		fastcgi_read_timeout	300;
		fastcgi_pass	unix:/var/run/php/php7.4-fpm.sock;
		fastcgi_index	index.php;
		fastcgi_param	PATH_INFO	$fastcgi_path_info;
		fastcgi_param	SCRIPT_FILENAME	$document_root$fastcgi_script_name;
		fastcgi_param	PHP_VALUE "max_execution_time=300\n upload_max_filesize=50M\n post_max_size=50M\n max_input_vars=5000";
		client_max_body_size	50M;
	}

       ### for yourls url shortener
        location /x/ {
                try_files $uri $uri/ /x/yourls-loader.php$is_args$args;
        }
       ###

}

sudo nano /var/www/yourls/user/config.txt

/** MySQL database settings */
define( 'YOURLS_DB_USER', 'moodlebox' );

/** MySQL database password */
define( 'YOURLS_DB_PASS', 'Moodlebox4$' );

/** The name of the database for YOURLS */
define( 'YOURLS_DB_NAME', 'yourls' );

/** MySQL hostname.
 ** If using a non standard port, specify it like 'hostname:port', 
 ** eg. 'localhost:9999' or '127.0.0.1:666' */
define( 'YOURLS_DB_HOST', 'localhost' );

/** MySQL tables prefix */
define( 'YOURLS_DB_PREFIX', 'yourls_' );

/** MySQL database engine */
define( 'YOURLS_DB_DRIVER', 'mysqli' );

/** YOURLS installation URL -- all lowercase and with no trailing slash. */
define( 'YOURLS_SITE', 'http://mb/x' );


CC BY-SA - Ralf Krause, moodleSCHULE e.V. - 20230115