Wie diese Seite gemacht ist

Dieser Blog folgt einem minimalistischen Ansatz und wurde bewusst ohne komplexe Frameworks oder Content-Management-Systeme (CMS) erstellt. Das Ziel war eine schnelle, sichere und wartungsarme Webseite, die vollständig unter meiner Kontrolle ist.

Technologie-Stack

  • Static Site Generator: Ein selbst geschriebenes Python-Skript (build.py) bildet das Herzstück. Es liest alle Blogbeiträge aus dem content/-Ordner, wandelt sie von Markdown in HTML um und fügt sie in Jinja2-Vorlagen ein
  • Markdown: Alle Beiträge werden in einfachem Markdown mit einem YAML-Front-Matter für Metadaten (wie Titel und Datum) geschrieben
  • Jinja2: Eine leistungsstarke Template-Engine für Python, die verwendet wird, um die finalen HTML-Seiten aus den Markdown-Inhalten und den HTML-Grundgerüsten (templates/) zusammenzusetzen
  • HTML5 & CSS3: Die Seite besteht aus reinem, semantischem HTML5. Das Styling wird durch eine einzige CSS-Datei gesteuert, die auf modernen Features wie CSS-Variablen für den Dark Mode basiert
  • Kein JavaScript (fast): Das einzige JavaScript auf dieser Seite ist ein winziges Skript, das den Dark Mode umschaltet und die Benutzereinstellung im localStorage des Browsers speichert

Deployment-Prozess

Die Seite wird vollautomatisch über eine Gitea Action gebaut und veröffentlicht:

  1. Jeder git push auf den main-Branch startet den Workflow
  2. Ein Docker-Image wird gebaut. In diesem Prozess führt das Python-Skript aus und generiert die statische Webseite
  3. Die fertigen HTML-, CSS- und Schrift-Dateien werden auf einen schlanken Nginx-Webserver im selben Docker-Image kopiert
  4. Das fertige Image wird auf den Server hochgeladen und automatisch deployed

Dieser Ansatz sorgt für maximale Performance, Sicherheit und einen extrem einfachen Veröffentlichungsprozess.