In meinem letzten Artikel habe ich ein Awk-Script von Omar Polo angepasst, um damit meine Gemini-Text-Seiten nach HTML zu konvertieren:
➤ Gemini Textformat nach HTML umwandelnInzwischen habe ich auf meinem Arch-Linux-Server einen Lighttpd-Server installiert ...
pacman -S lighttpd
Jetzt sollten wir noch die Konfiguration /etc/lighttpd/lighttpd.conf vom Webserver so anpassen, dass es für uns passt:
# This is a minimal example config server.port = 80 server.username = "http" server.groupname = "http" server.document-root = "/srv/http" server.errorlog = "/var/log/lighttpd/error.log" dir-listing.activate = "enable" index-file.names = ( "index.html" ) mimetype.assign = ( ".html" => "text/html" )
In diesem Fall kann der Webserver wirklich nur HTML-Dateien ausliefern, sonst nichts.
Nun starten wir den Webserver und konfigurieren ihn so, dass er auch bei einem Reboot automatisch startet:
systemctl start lighttpd.service systemctl enable lighttpd.service
Damit ist dieser Teil abgeschlossen. Nun müssen wir natürlich noch HTML-Dateien haben, die wir anzeigen können.
Ich habe mein gem2html Konverter-Script so angepasst, dass es das HTML gleich in den Ordner vom Lighttpd abwirft. Dieses Verzeichnis ist bei Arch-Linux /srv/http.
Meine Gemini-Dateien liegen in /srv/gemini/content, aber das kann man halten, wie man will. Das angepasste Shell-Script sieht jetzt so aus, in der dritten und vierten Zeile sind die Anpassungen:
#!/bin/bash htmldir="/srv/http" cd /srv/gemini/content/ for file in `find . -mtime -1 -type f -name "*.gmi"` do barefile=`basename -s .gmi $file` outfile="$htmldir/$file" outdir=`dirname $outfile` mkdir -p $outdir outfile="$outdir/$barefile.html" title=$(cat $file|grep -m 1 '^# '|sed 's/#//'|awk '{$1=$1;print}') gem2html.awk $file | sed "s/TITLEEE/$title/" > $outfile done
Ebenso wurde beim find »-mtime -1« ergänzt, damit nur alle HTML-Dateien neu gebaut werden, die neuer als einen Tag sind.
Systemd erlaubt es, mit drei Zeilen unser gem2html Script als Service zu setzen und mit einem weiteren Dreizeiler dieses regelmäßig auszuführen, ganz ohne cron. Das kann zum Beispiel stündlich sein oder einmal am Tag.
Wir müssen also eine Service- und eine Timer-Konfiguration bei systemd eintragen:
Die Service-Datei schreiben:
# Datei /etc/systemd/system/gem2html.service [Unit] Description=Convert Gemini files to HTML [Service] ExecStart=/usr/local/bin/gem2html
Dieser Service wird aber nicht direkt aufgerufen, sondern regelmäßig, in diesem Fall stündlich, von einem Timer:
# Datei /etc/systemd/system/gem2html.timer [Unit] Description=Rebuild html files from Gemini files every hour [Timer] OnCalendar=hourly [Install] WantedBy=basic.target
Nachdem wir nun beide Dateien haben, starten wir den Timer einfach, und zwar so, dass er sofort startet und zu jeder vollen Stunde sein Werk vollbringt:
systemctl enable --now gem2html.timer
Wir können auch mal den Status angucken und schauen, ob alles funktioniert:
systemctl status gem2html.timer
Das sollte dann in etwa so aussehen
● gem2html.timer - Rebuild html files from Gemini files every hour Loaded: loaded (/etc/systemd/system/gem2html.timer; enabled; vendor preset: disabled) Active: active (waiting) since Sat 2021-02-13 17:11:30 CET; 3h 43min ago Trigger: Sat 2021-02-13 21:00:00 CET; 4min 55s left Triggers: ● gem2html.service Feb 13 17:11:30 hubbz systemd[1]: Started Rebuild html files from Gemini files every hour.
Das war es. Die Konvertierung findet nicht sofort statt, sondern erst zu jeder vollen Stunde. Und so erhältst Du jetzt einen Webauftritt mit einem Abklatsch Deiner Gemini-Kapsel (Bezeichnung für eine Gemini-Website). Viel Spaß!
🌐 Die Scripts sind unter der MIT-Lizenz lizenziert.