Hier möchte ich einen kleinen Überblick darüber geben, wie ich meinen Blog hier aufgesetzt und gestaltet habe. Wer nicht technisch sattelfest ist, empfehle ich auf das Lesen dieses Posts zu verzichten. An alle anderen: ich werde zuerst auf meine Ziele, die ich mit meinem Blog erfüllen eingehen, und dann noch über die Umsetzung dieser Ziele schreiben.
Ziele
Für meine Website hatte ich ein paar Ziele, die ich jedenfalls erfüllt sehen wollte. Meine Website sollte:
- keine Werbung an Besucher*innen schicken
- keine unnötigen Verbindungen zu Dritten aufbauen
- keine Tracker verwenden
- dabei einen möglichst kleinen Fußabdruck haben, also möglichst wenige Daten übertragen
- möglichst geringen Aufwand für mich haben wenn ich einen neuen Artikel schreiben möchte, der folgendes beinhalten kann:
- Bilder
- Überschrift, Listen, kursiven Text, …
- eine eingebundenen Karte der gegangenen Route des Tages, über den ich berichte
- statisch sein, also nicht dynamisch abhängig von den Besucher*innen und deren Anfragen sein
- auf FOSS (Free Open Source Software, also freie, quelloffene Software) basieren
Umsetzung
Die Mehrheit dieser Ziele konnte ich relativ einfach mittels Pelican erreichen. Pelican ist ein Programm, das in Python programmiert ist, und aus .rst und/oder .md Dateien, die jeweils die Inhalte eines Blogeintrags enthalten können einen fertigen statischen Blog erstellen. Das war einmal der erste Anfang. Mit Pelican war es mir schon möglich, eine Werbefreie, statische und relativ schlanke Website mit Bildern, und vielen Formatierungsmöglichkeiten zu erstellen. Und noch dazu ist Pelican FOSS und in einer Programmiersprache geschrieben, die ich sowohl lesen und verstehen, als auch schreiben kann.
Damit war ich schon ziemlich nah an meinen Zielen, aber es stellte sich schon bald heraus, dass es nicht so einfach sein sollte: es gab keine Möglichkeit mit geringem Aufwand einen GPS-Track in Blogposts einzubinden. Weil mir das allerdings ein großes Anliegen war, dass die Leser*innen meines Blogs (also DU) nachvollziehen können wo ich an einem Tag gegangen bin, und so unmittelbar die Fotos und Erzählungen mit einem Bild auf der Landkarte verknüpfen können, habe ich mich selbst dran gemacht. Glücklicherweise ist Pelican so konzipiert, dass man Plugins installieren kann, die es ermöglichen die Funktionen von Pelican zu erweitern. So gibt es beispielsweise ein Plugin mit dem man automatisch eine sogenannte Sitemap erstellen kann, über die man Google und anderen Suchmaschinen mitteilen kann, welche Seiten es auf meiner Website gibt, und wie oft die Suchmaschinen mit Updates zu rechnen haben.
Über viele Stunden habe ich mich als eingelesen, wie man ein Plugin für Pelican programmieren kann, und habe dann über ein verlängertes Wochenende, in dem ich mehr oder weniger durchgehend programmiert habe, Pelitrack auf die Beine gestellt. Mit Pelitrack ist es möglich an des Ende eines Blogeintrags einen GPS-Track auf einer interaktiven Karte darstellen zu lassen. Knapp unter 400 Zeilen Code habe ich dafür gebraucht. Diese Zahl konnte ich so gering halten, weil ich nur gewissermaßen nur die richtigen Programme (Pelican, GPSBabel, Leaflet.js, OpenStreetMap und Derivate und andere) zusammenführen musste. Danke an der Stelle an all diejenigen, die unermüdlich so großartige Programme frei zur Verfügung stellen.
Damit hatte ich dann schon fast alle meine Ziele erfüllt. Ich habe trotzdem noch einige andere Pelican-Plugins in Verwendung:
- Photos: damit ich meine Fotos automatisch in der richtigen Größe zur Verfügung stellen kann, ohne mir darüber Gedanken machen zu müssen
- Sitemap: für die Suchmaschinen
- Series: damit ich Artikel in einer Serie anordnen kann, und dabei die Einträge auch anachronistisch anordnen kann
- Webassets: um meine JS und CSS Dateien in optimierter Größe (Kleine) anbieten zu können
Für Pelican gibt es sogenannte Themes, mit denen es möglich ist, den Aufbau und “Look” eines mit Pelican erstellten Blogs massiv zu verändern. Ich habe mich durch einige Themes, die frei zur Verfügung stehen durchprobiert, allerdings recht bald festgestellt, dass beinahe alle dieser Themes Ressourcen einsetzen, die ich nicht einsetzen möchte. Das könnten beispielsweise veraltete und ressourcenintensive JavaScript Bibliotheken sein, oder auch Schriften die von Google gehostet werden. Letzteres ist übrigens eine Praxis, die vor einem Monat als nicht rechtskonform bestätigt wurde. Ich habe mich deshalb für das Standardtheme von Pelican entschieden, weil das zwar altmodisch, aber gut aussieht, und recht minimal gehalten ist. Und dann habe ich noch einiges an dem Standardtheme von Pelican, notmyidea herumgedreht, damit der Footprint wirklich klein ist und noch ein paar andere kleinere Änderungen. Ich habe es geschafft, dass abgesehen von den Maptiles, also den Karten die hinter den GPS-Tracks sind, alles von meinem eigenen Server kommt. Und Stand jetzt habe ich es geschafft, dass gerade einmal 7,5 Kilobyte für den ersten Besuch meines Blogs geladen werden müssen. Das wird sich zwar noch ein wenig füllen, sobald ich mehr Einträge habe, aber mit diesem Wert bin ich sehr zufrieden.
Mit diesem Setup ist es mir jetzt möglich mit Markdown Einträge zu schreiben. Um dabei die Metadaten zu liefern (also bspw. den Autor, den Titel, den einzubindenden GPS-Track usw) reicht es einen kurzen Header zu schreiben. Für meinen ersten Blogpost habe ich zum Beispiel folgenden Header:
---
Title: Ich gehe den Kungsleden - Der Anfang
Date: 2022-02-09 18:30
track: content/tracks/kungsleden.gpx;gpx;gpsbabel_filters=>{"simplify": "error=0.02k"}
tags: DiscoverEU, Planung, Kungsleden, Schweden, Trekking, Wandern
Summary: Ich habe von der EU Kommission ein Interrail Ticket geschenkt bekommen und werde diesen Sommer hoffentlich einen der schönsten Sommer meines Lebens haben.
Image: {photo}Misc/Screenshot_20220216_014547.jpg
---
Mit diesem Header habe ich schon eine ganze Menge für meinen Artikel vorbestimmt, und muss mich danach wirklich nur mehr um den Inhalt kümmern. Den ganzen Rest habe ich automatisiert. Derzeit wird meine Website noch stündlich neu generiert. Sollte das irgendwann länger dauern als die paar Sekunden die es derzeit braucht (das wird schnell der Fall werden, wenn ich beginne mehr und größere Fotos einzubinden), werde ich das Intervall wohl verlängern. Dann dauert es zwar etwas länger, bis ein neuer Post sichtbar ist, aber das sollte nicht wirklich ins Gewicht fallen.
Hosting
Nachdem ich jetzt also schon eine Website hatte, die meine Voraussetzungen erfüllt, musste ich nur noch einen Weg finden, die noch ins Internet zu stellen. Das habe ich relativ simpel gehalten. Aber nachdem ich nichts darüber wusste, als ich angefangen habe, mir Gedanken über einen Blog zu machen, habe ich hier im Laufe der Einrichtung wirklich sehr viel über Webhosting, nginx und apache gelernt. Da möchte ich jetzt aber nicht unbedingt näher drauf eingehen. Wer mehr wissen möchte, kann mir gerne eine E-Mail schreiben, und nachfragen.